Подписаться через 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
Оставьте, пожалуйста, свой комментарий к публикации
|