Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Руководство разработчика на IDL

Руководство разработчика на IDL - Генерируемые заголовки

Простейший интерфейс

/* начало интерфейса nsIFoo */
class nsIFoo {
 public:
};

Декларация родительского интерфейса

/* начало интерфейса nsIFoo */
class nsIFoo : public nsIParent {
 public:
};

Интерфейс с IID

/* начало интерфейса nsIFoo */

/* {00000000-0000-0000-c000-000000000046} */
#define NS_IFOO_IID_STR "00000000-0000-0000-c000-000000000046"
#define NS_IFOO_IID \
  {0x00000000, 0x0000, 0x0000, \
    { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 }}

class nsIFoo : public nsIParent {
 public:
  static const nsIID& IID() {
    static nsIID iid = NS_IFOO_IID;
    return iid;
  }
};

Опережающая декларация интерфейса

class nsIForward; /* опережающая декларация */

Метод и свойство

/* начало интерфейса nsIFoo */
class nsIFoo {
 public:

  /* attribute long attr; */
  NS_IMETHOD GetAttr(PRInt32 *aAttr) = 0;
  NS_IMETHOD SetAttr(PRInt32 aAttr) = 0;

  /* void fun (); */
  NS_IMETHOD Fun() = 0;
};

Типы параметров метода

/* начало интерфейса nsIStringStuff */
class nsIStringStuff {
 public:

  /* void findStringLength (in string str, out long l); */
  NS_IMETHOD FindStringLength(char *str, PRInt32 *l) = 0;

  /* void concatenateStrings (in string str1, in string str2, out string result); */
  NS_IMETHOD ConcatenateStrings(char *str1, char *str2, char **result) = 0;

  /* void replaceChar (inout string str, in char from, in char to, in boolean foldCase); */
  NS_IMETHOD ReplaceChar(char **str, char from, char to, PRBool foldCase) = 0;
};

Возвращаемые типы, отличные от void

/* начало интерфейса nsINonVoidReturn */
class nsINonVoidReturn {
 public:

  /* string gimmeString (in string str, in long count); */
  NS_IMETHOD GimmeString(char *str, PRInt32 count, char **_retval) = 0;

  /* long gimmeLong (in boolean prime); */
  NS_IMETHOD GimmeLong(PRBool prime, PRInt32 *_retval) = 0;
};

Свойство только для чтения (readonly)

/* начало интерфейса nsIThing */
class nsIThing {
 public:

  /* readonly attribute string lookButDontTouch; */
  NS_IMETHOD GetLookButDontTouch(char * *aLookButDontTouch) = 0;
};

Mike Shaver

Перевод: Д. Скоробогатов (12.10.2009)
Оригинальный текст: IDL Author's Guide - Generated Headers

Документация по смежным темам на xBB.uz:

XPIDL
Общая информация об XPIDL (XP Interface Description Language - Кросплатформенный язык описания интерфейсов). Этот язык основан на спецификации OMG IDL, который используется для описания интерфейсов CORBA. Является одной из составных частей технологии XPCOM.
XPCOM
Общая информация об XPCOM (XP Component Object Model - Кроссплатформенная Компонентная Объектная Модель). Эта модель схожа с Microsoft COM в ОС Windows, и представляет собой механизм создания и динамической загрузки компонентов для Вашего приложения.
XUL XPCOM
Инструкция по созданию нового компонента XPCOM на языке программирования C++ для очень простого тестового приложения XUL. Описывается создание простого интерфейса с помощью XPIDL, генерация заголовочного файла C++, написание реализации интерфейса, создание точки доступа к созданному компоненту из JavaScript, создание собственно приложения XUL.
XUL XPCOM JavaScript
Инструкция по созданию нового компонента XPCOM на языке программирования JavaScript. Статья опирается на предыдущую. Процесс создания интерфейса не описывается, так как он не отличается от описанного в предыдущей статье. Заголовочный файл для JS не нужен. Описывается только собственно программный код, реализующий данный интерфейс.
Языковые Связки XPCOM
Общая информация по так называемым "языковым связкам" XPCOM, которые являются мостами между конкретными языками программирования и XPCOM, и позволяют создавать на этих языках компоненты XPCOM а также получать доступ к компонентам XPCOM из кода, написанного на этих языках.
Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2009-10-12 16:44:30

Метки материала: XPIDL, IDL, C++, производный класс, метод, исходные файлы, define, class, файлы интерфейсов, методы, классы xpcom, исходники, языки программирования, члены класса, синтаксис, заголовочный файл, язык описаниния интерфейсов, описание интерфейсов

Оставьте, пожалуйста, свой комментарий к публикации

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

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


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