⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nsisupportsimpl.h

📁 gcj java applet的web browser 插件
💻 H
📖 第 1 页 / 共 5 页
字号:
/** * This implements query interface with two assumptions: First, the * class in question implements nsISupports and its own interface and * nothing else. Second, the implementation of the class's primary * inheritance chain leads to its own interface. * * @param _class The name of the class implementing the method * @param _classiiddef The name of the #define symbol that defines the IID * for the class (e.g. NS_ISUPPORTS_IID) */#define NS_IMPL_QUERY_HEAD(_class)                                            \NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr)      \{                                                                             \  NS_ASSERTION(aInstancePtr,                                                  \               "QueryInterface requires a non-NULL destination!");            \  nsISupports* foundInterface;#define NS_IMPL_QUERY_BODY(_interface)                                        \  if ( aIID.Equals(NS_GET_IID(_interface)) )                                  \    foundInterface = NS_STATIC_CAST(_interface*, this);                       \  else#define NS_IMPL_QUERY_BODY_CONDITIONAL(_interface, condition)                 \  if ( (condition) && aIID.Equals(NS_GET_IID(_interface)))                    \    foundInterface = NS_STATIC_CAST(_interface*, this);                       \  else#define NS_IMPL_QUERY_BODY_AMBIGUOUS(_interface, _implClass)                  \  if ( aIID.Equals(NS_GET_IID(_interface)) )                                  \    foundInterface = NS_STATIC_CAST(_interface*,                              \                                    NS_STATIC_CAST(_implClass*, this));       \  else#define NS_IMPL_QUERY_BODY_AGGREGATED(_interface, _aggregate)                 \  if ( aIID.Equals(NS_GET_IID(_interface)) )                                  \    foundInterface = NS_STATIC_CAST(_interface*, _aggregate);                 \  else#define NS_IMPL_QUERY_TAIL_GUTS                                               \    foundInterface = 0;                                                       \  nsresult status;                                                            \  if ( !foundInterface )                                                      \    status = NS_NOINTERFACE;                                                  \  else                                                                        \    {                                                                         \      NS_ADDREF(foundInterface);                                              \      status = NS_OK;                                                         \    }                                                                         \  *aInstancePtr = foundInterface;                                             \  return status;                                                              \}#define NS_IMPL_QUERY_TAIL_INHERITING(_baseclass)                             \    foundInterface = 0;                                                       \  nsresult status;                                                            \  if ( !foundInterface )                                                      \    status = _baseclass::QueryInterface(aIID, (void**)&foundInterface);       \  else                                                                        \    {                                                                         \      NS_ADDREF(foundInterface);                                              \      status = NS_OK;                                                         \    }                                                                         \  *aInstancePtr = foundInterface;                                             \  return status;                                                              \}#define NS_IMPL_QUERY_TAIL_USING_AGGREGATOR(_aggregator)                      \    foundInterface = 0;                                                       \  nsresult status;                                                            \  if ( !foundInterface ) {                                                    \    NS_ASSERTION(_aggregator, "null aggregator");                             \    status = _aggregator->QueryInterface(aIID, (void**)&foundInterface);      \  } else                                                                      \    {                                                                         \      NS_ADDREF(foundInterface);                                              \      status = NS_OK;                                                         \    }                                                                         \  *aInstancePtr = foundInterface;                                             \  return status;                                                              \}#define NS_IMPL_QUERY_TAIL(_supports_interface)                               \  NS_IMPL_QUERY_BODY_AMBIGUOUS(nsISupports, _supports_interface)              \  NS_IMPL_QUERY_TAIL_GUTS  /*    This is the new scheme.  Using this notation now will allow us to switch to    a table driven mechanism when it's ready.  Note the difference between this    and the (currently) underlying NS_IMPL_QUERY_INTERFACE mechanism.  You must    explicitly mention |nsISupports| when using the interface maps.  */#define NS_INTERFACE_MAP_BEGIN(_implClass)      NS_IMPL_QUERY_HEAD(_implClass)#define NS_INTERFACE_MAP_ENTRY(_interface)      NS_IMPL_QUERY_BODY(_interface)#define NS_INTERFACE_MAP_ENTRY_CONDITIONAL(_interface, condition)             \  NS_IMPL_QUERY_BODY_CONDITIONAL(_interface, condition)#define NS_INTERFACE_MAP_ENTRY_AGGREGATED(_interface,_aggregate)              \  NS_IMPL_QUERY_BODY_AGGREGATED(_interface,_aggregate)#define NS_INTERFACE_MAP_END                    NS_IMPL_QUERY_TAIL_GUTS#define NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_interface, _implClass)              \  NS_IMPL_QUERY_BODY_AMBIGUOUS(_interface, _implClass)#define NS_INTERFACE_MAP_END_INHERITING(_baseClass)                           \  NS_IMPL_QUERY_TAIL_INHERITING(_baseClass)#define NS_INTERFACE_MAP_END_AGGREGATED(_aggregator)                          \  NS_IMPL_QUERY_TAIL_USING_AGGREGATOR(_aggregator)#define NS_IMPL_QUERY_INTERFACE0(_class)                                      \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(nsISupports)                                       \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE1(_class, _i1)                                 \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE2(_class, _i1, _i2)                            \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE3(_class, _i1, _i2, _i3)                       \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE4(_class, _i1, _i2, _i3, _i4)                  \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY(_i4)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE5(_class, _i1, _i2, _i3, _i4, _i5)             \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY(_i4)                                               \    NS_INTERFACE_MAP_ENTRY(_i5)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE6(_class, _i1, _i2, _i3, _i4, _i5, _i6)        \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY(_i4)                                               \    NS_INTERFACE_MAP_ENTRY(_i5)                                               \    NS_INTERFACE_MAP_ENTRY(_i6)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)   \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY(_i4)                                               \    NS_INTERFACE_MAP_ENTRY(_i5)                                               \    NS_INTERFACE_MAP_ENTRY(_i6)                                               \    NS_INTERFACE_MAP_ENTRY(_i7)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE8(_class, _i1, _i2, _i3, _i4, _i5, _i6,        \                                 _i7, _i8)                                    \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY(_i4)                                               \    NS_INTERFACE_MAP_ENTRY(_i5)                                               \    NS_INTERFACE_MAP_ENTRY(_i6)                                               \    NS_INTERFACE_MAP_ENTRY(_i7)                                               \    NS_INTERFACE_MAP_ENTRY(_i8)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE9(_class, _i1, _i2, _i3, _i4, _i5, _i6,        \                                 _i7, _i8, _i9)                               \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY(_i4)                                               \    NS_INTERFACE_MAP_ENTRY(_i5)                                               \    NS_INTERFACE_MAP_ENTRY(_i6)                                               \    NS_INTERFACE_MAP_ENTRY(_i7)                                               \    NS_INTERFACE_MAP_ENTRY(_i8)                                               \    NS_INTERFACE_MAP_ENTRY(_i9)                                               \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE10(_class, _i1, _i2, _i3, _i4, _i5, _i6,       \                                  _i7, _i8, _i9, _i10)                        \  NS_INTERFACE_MAP_BEGIN(_class)                                              \    NS_INTERFACE_MAP_ENTRY(_i1)                                               \    NS_INTERFACE_MAP_ENTRY(_i2)                                               \    NS_INTERFACE_MAP_ENTRY(_i3)                                               \    NS_INTERFACE_MAP_ENTRY(_i4)                                               \    NS_INTERFACE_MAP_ENTRY(_i5)                                               \    NS_INTERFACE_MAP_ENTRY(_i6)                                               \    NS_INTERFACE_MAP_ENTRY(_i7)                                               \    NS_INTERFACE_MAP_ENTRY(_i8)                                               \    NS_INTERFACE_MAP_ENTRY(_i9)                                               \    NS_INTERFACE_MAP_ENTRY(_i10)                                              \    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \  NS_INTERFACE_MAP_END#define NS_IMPL_QUERY_INTERFACE11(_class, _i1, _i2, _i3, _i4, _i5, _i6,       \                                  _i7, _i8, _i9, _i10, _i11)                  \  NS_INTERFACE_MAP_BEGIN(_class)                                              \

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -