Подписаться через RSS2Email.ru
|
Руководство разработчика на IDL
Ключевые слова XPIDL
XPIDL определяет много ключевых слов, некоторые из которых должны быть
заключены в квадратные скобки ([]).
| Ключевое слово |
Назначение |
Пример |
| interface |
Декларация интерфейса |
interface foo : public nsISupports {
}; |
| attribute |
Для "свойств" (генерируются геттер и сеттер - методы для получения и
установки значений свойства) |
inteface foo {
attribute short bar; |
| readonly |
Запрещает изменение свойства. В коде C++ не генерируется сеттер и свойство
становится неизменяемым из JavaScript'а. |
readonly attribute short myAttribute; |
| [uuid()] |
Сопоставляет интерфейсу UUID.
Замечание: UUID'ы должны генерироваться с помощью утилит
uuidgen или guidgen. Не занимайтесь
копированием / вставкой UUID'ов.
|
[uuid(00000000-0000-0000-c000-000000000046)]
interface foo {
}; |
| [scriptable] |
Помечает интерфейс, как доступный для использования в скриптах |
[scriptable]
interface foo {
}; |
| const |
Декларирует константное значение в интерфейсе. |
interface foo {
const short bar = 5;
}; |
| [const] |
Помечает параметр как const |
void foo([const] in voidStar bar);
|
| native |
Используется для декларации нативных типов |
native myName(nsFileSpec);
|
| [ptr] |
Используется для описания типа указателей на значения нативного типа |
[ptr] native nsFileSpecPtr(nsFileSpec);
|
| [ref] |
Используется для описания ссылочного типа в C++ на значения нативного
типа |
[ref] native nsNativeFileRef(nsFileSpec);
|
| [nsid] |
Используется для описания nsID, ссылающегося на значения нативного типа |
Из nsrootidl.idl:
[ref, nsid] native nsIDRef(nsID);
|
| [retval] |
Декларирует, что выходной параметр является "возвращаемым значением" для
метода. Эта информация может быть использована с помощью подключающих
технологий, таких как XPConnect, для того чтобы получать возвращаемое методом
значение передавая ему этот возвращаемый параметр.
Единственный способ сопроводить возвращаемое значение другими метками - это
использовать комбинацию [retval] с этими метками.
|
QueryInterface из
nsISupports.idl:
interface nsISupports {
void QueryInterface(in nsIIDRef uuid,
[iid_is(uuid),retval] out nsQIResult result);
[...]
};
|
| [shared] |
Используется для указания того, что этот выходной параметр ссылочного типа
не подлежит обычному применению правил учета принадлежности. |
|
| [iid_is] |
Используется для указания того, что какие-то другие параметры указывают (во
время выполнения) тип интерфейса для данного выходного параметра. Вам
практически никогда это не понадобится. |
QueryInterface из
nsISupports.idl:
interface nsISupports {
void QueryInterface(in nsIIDRef uuid,
[iid_is(uuid),retval] out nsQIResult result);
[...]
};
|
| [notxpcom] |
Указывает, что этот метод не возвращает значений типа nsresult. При
использовании этой пометки предполагается, что вы отказываетесь от правил XPCOM.
Поэтому не следует использовать эту метку. |
AddRef и Release из
nsISupports.idl:
interface nsISupports {
[...]
[noscript, notxpcom] nsrefcnt AddRef();
[noscript, notxpcom] nsrefcnt Release();
};
|
| [noscript] |
Помечает метод как недоступный для использования в скриптах. Это должно
использоваться в случаях, когда методы не должны быть доступны для использования
в скриптах (например, при использовании нативных типов), хотя интерфейс в целом
помечен как scriptable. |
|
| in |
Помечает "входной" параметр. |
|
| out |
Помечает "выходной" параметр. |
|
| inout |
Помечает "входной и выходной" параметр. |
|
%{C++
%} |
Текст, заключенный в ограничители %{C++ %}, копируется
непосредственно в заголовочный файл C++. Начальная "%{C++" и конечная "%}"
последовательности должны находиться каждая в
начале отдельной строки. |
%{C++
// Этот текст будет скопирован в генерируемый файл .h
%}
|
[Правила и синтаксис]
[Устоявшаяся
практика] [Ключевые слова]
Mike Ang
Перевод: Д. Скоробогатов (09.10.2009)
Оригинальный текст: IDL Author's Guide - XPIDL keywords
Последнее редактирование: 2009-10-22 19:11:04
Метки материала:
ключевые слова, кейворды, метка, языки программирования, синтаксис, правила, заголовочный файл, language, описание интерфейсов, язык описаниния интерфейсов, компонент, метки, интерфейс, syntax, interface description language, interface, IDL, XPIDL, XPCOM
Оставьте свой комментарий:
|