xBB – бесплатные скрипты PHP и доки для вебмастеров

Подписаться через 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

Оставьте свой комментарий:

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2010, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.