COM.h
上传用户:shenzhenrh
上传日期:2013-05-12
资源大小:2904k
文件大小:10k
源码类别:

信息检索与抽取

开发平台:

Unix_Linux

  1. #ifndef __defobj_COM_h
  2. #define __defobj_COM_h
  3. #include <defobj.h>
  4. #include <objc/objc.h>
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. typedef void *COMclass;
  9. typedef void *COMobject;
  10. typedef void *COMselector;
  11. typedef void *COMmethod;
  12. struct COMInterface;
  13. typedef const struct COMInterface COMEnv;
  14. typedef void (*COM_collect_variable_func_t) (COMmethod getterMethod, COMmethod setterMethod);
  15. typedef void (*COM_collect_method_func_t) (COMmethod method);
  16. typedef void (*JS_collect_func_t) (const char *name);
  17. struct COMInterface {
  18.   COMclass (*COMcopyComponentID) (COMclass cClass);
  19.   COMclass (*COMgetClass) (COMobject cObj);
  20.   COMclass (*COMfindComponent) (const char *componentName);
  21.   const char *(*COMgetComponentName) (COMclass cClass);
  22.   
  23.   COMobject (*COMcreateComponent) (COMclass cClass);
  24.   const char *(*COMgetName) (COMobject cObj);
  25.   COMobject (*COMnormalize) (COMobject);
  26.   const char *(*COMcopyString) (const char *str);
  27.   COMselector (*selectorCreate) (COMmethod cMethod);
  28.   COMmethod (*selectorMethod) (COMselector cSel);
  29.   COMselector (*selectorQuery) (COMobject cObj);
  30.   BOOL (*selectorIsJavaScript) (COMselector cSel);
  31.   BOOL (*selectorIsVoidReturn) (COMselector cSel);
  32.   BOOL (*selectorIsBooleanReturn) (COMselector cSel);
  33.   const char *(*selectorName) (COMselector cSel);
  34.   unsigned (*selectorArgCount) (COMselector cSel);
  35.   fcall_type_t (*selectorArgFcallType) (COMselector cSel, unsigned index);
  36.   void *(*COMcreateParams) (unsigned size);
  37.   void (*COMsetArg) (void *params, unsigned pos, val_t *val);
  38.   void (*COMsetReturn) (void *params, unsigned pos, val_t *val);
  39.   void (*COMfreeParams) (void *params);
  40.   void (*collectMethods) (COMclass cClass, COM_collect_variable_func_t variableFunc, COM_collect_method_func_t methodFunc);
  41.   const char *(*COMmethodName) (COMmethod cMethod);
  42.   unsigned (*COMmethodArgCount) (COMmethod cMethod);
  43.   fcall_type_t (*COMmethodParamFcallType) (COMmethod cMethod, unsigned index);
  44.   void (*COMmethodSetReturn) (COMmethod cMethod, void *params, void *value);
  45.   void (*COMmethodInvoke) (COMobject target, COMmethod cMethod, void *params);
  46.   BOOL (*isJavaScript) (COMobject cObj);
  47.   void *(*JScreateParams) (unsigned size);
  48.   void (*JSsetArg) (void *params, unsigned pos, val_t *val);
  49.   void (*JSsetReturn) (void *params, unsigned pos, val_t *val);
  50.   void (*JSfreeParams) (void *params);
  51.   
  52.   BOOL (*JSprobeVariable) (COMobject cObj, const char *variableName, val_t *ret);
  53.   void (*JSsetVariable) (COMobject cObj, const char *variableName, val_t *ret);
  54.   void (*JSmethodInvoke) (COMobject cObj, const char *methodName, void *params);
  55.   unsigned (*JSmethodArgCount) (COMobject cObj, const char *methodName);
  56.   void (*collectJSProperties) (COMobject cObj, JS_collect_func_t variableFunc, JS_collect_func_t methodFunc);
  57. };
  58. extern void initCOM (COMEnv *env);
  59. extern BOOL COM_init_p ();
  60. extern COMobject swarm_directory_objc_find_object_COM (id oObject);
  61. extern id swarm_directory_COM_find_object_objc (COMobject cobj);
  62. extern COMclass swarm_directory_objc_find_class_COM (Class oClass);
  63. extern Class swarm_directory_COM_find_class_objc (COMclass cClass);
  64. extern COMobject swarm_directory_objc_ensure_object_COM (id object);
  65. extern id swarm_directory_COM_ensure_object_objc (COMobject cObject);
  66. extern SEL swarm_directory_COM_ensure_selector (COMselector cSelector);
  67. extern Class swarm_directory_COM_ensure_class_objc (COMclass cClass);
  68. extern COMobject swarm_directory_COM_add_object_COM (COMobject cObject, id oObject);
  69. extern COMclass swarm_directory_COM_add_class_COM (COMclass cClass, Class oClass);
  70. extern id swarm_directory_COM_add_object_objc (COMobject cObject, id oObject);
  71. extern const char *COM_copy_string (const char *str);
  72. extern const char *COM_class_name (COMobject cObj);
  73. extern const char *COM_get_class_name (COMclass cClass);
  74. extern COMclass COM_get_class (COMobject cObj);
  75. extern COMclass COM_find_class (const char *className);
  76. extern BOOL COM_selector_is_javascript (COMselector cSel);
  77. extern BOOL COM_selector_is_boolean_return (COMselector cSel);
  78. extern COMselector COM_selector_create (COMmethod cMethod);
  79. extern COMmethod COM_selector_method (COMselector cSel);
  80. extern void *COM_create_params (unsigned size);
  81. extern void COM_set_arg (void *params, unsigned pos, val_t *val);
  82. extern void COM_set_return (void *params, unsigned pos, val_t *val);
  83. extern void COM_free_params (void *params);
  84. extern BOOL COM_is_javascript (COMobject cObj);
  85. extern void *JS_create_params (unsigned size);
  86. extern void JS_set_arg (void *params, unsigned pos, val_t *val);
  87. extern void JS_set_return (void *params, unsigned pos, val_t *val);
  88. extern void JS_free_params (void *params);
  89. extern BOOL JS_probe_variable (COMobject cObj, const char *variableName, val_t *ret);
  90. extern void JS_set_variable (COMobject cObj, const char *variableName, val_t *val);
  91. extern void JS_method_invoke (COMobject cObj, const char *methodName, void *params);
  92. extern unsigned JS_method_arg_count (COMobject cObj, const char *methodName);
  93. extern COMobject swarm_directory_objc_find_selector_COM (SEL oSel);
  94. extern void swarm_directory_COM_add_selector (COMselector cSel, SEL oSel);
  95. extern COMobject swarm_directory_update_phase_COM (id oObj);
  96. extern void COM_collect_variables (COMclass cClass, COM_collect_variable_func_t variableFunc);
  97. extern void COM_collect_methods (COMclass cClass, COM_collect_method_func_t methodFunc);
  98. extern void JS_collect_variables (COMobject cObj, JS_collect_func_t variableFunc);
  99. extern void JS_collect_methods (COMobject cObj, JS_collect_func_t methodsFunc);
  100. extern const char *COM_method_name (COMmethod cMethod);
  101. extern void COM_method_set_return (COMmethod cMethod, void *params, void *value);
  102. extern void COM_method_invoke (COMobject target, COMmethod cMethod, void *params);
  103. extern fcall_type_t COM_method_param_fcall_type (COMmethod cMethod, unsigned index);
  104. #ifdef __cplusplus
  105. }
  106. #endif
  107. #define SD_COM_FIND_CLASS_COM(oClass) swarm_directory_objc_find_class_COM (oClass)
  108. #define SD_COM_FIND_CLASS_COM_RETURN(type,oClass) *ret = NS_STATIC_CAST(type, SD_COM_FIND_CLASS_COM (oClass))
  109. #define SD_COM_FIND_CLASS_OBJC(cClass) swarm_directory_COM_find_class_objc (cClass)
  110. #define SD_COM_FIND_OBJECT_COM(oObject) swarm_directory_objc_find_object_COM (oObject)
  111. #define SD_COM_FIND_OBJECT_OBJC(cObject) swarm_directory_COM_find_object_objc (cObject)
  112. #define SD_COM_FIND_SELECTOR_COM(sel) swarm_directory_objc_find_selector_COM (sel)
  113. #define SD_COM_FIND_SELECTOR_COM_RETURN(type,oSelector) *ret = NS_STATIC_CAST(type, SD_COM_FIND_SELECTOR_COM (oSelector))
  114. #define SD_COM_ENSURE_OBJECT_OBJC(cObject) swarm_directory_COM_ensure_object_objc (cObject)
  115. #define SD_COM_ENSURE_SELECTOR_OBJC(cSelector) swarm_directory_COM_ensure_selector (cSelector)
  116. #define SD_COM_ENSURE_CLASS_OBJC(cClass) swarm_directory_COM_ensure_class_objc ((COMclass) cClass)
  117. #define SD_COM_ADD_OBJECT_OBJC(cObject, oObject) swarm_directory_COM_add_object_objc (cObject, oObject)
  118. #define SD_COM_ADD_CLASS_COM(cClass, oClass) swarm_directory_COM_add_class_COM (cClass, oClass)
  119. #define SD_COM_ADD_SELECTOR(cSel, oSel) swarm_directory_COM_add_selector (cSel, oSel)
  120. #define SD_COM_COPY_STRING(str) COM_copy_string (str)
  121. #define COM_FIND_OBJECT_ENTRY(theCOMObject) ({ ObjectEntry *_findEntry  = alloca (sizeof (ObjectEntry)); _findEntry->foreignObject.COM = (COMOBJECT) theCOMObject; _findEntry; })
  122. #define COM_OBJECT_ENTRY(theCOMObject, theObject) [[[[ObjectEntry createBegin: globalZone] setCOMObject: (COMOBJECT) theCOMObject] setObject: theObject] createEnd]
  123. #define COM_SELECTOR_ENTRY(theCOMObject, theSelector) [[[[SelectorEntry createBegin: globalZone] setCOMObject: (COMOBJECT) theCOMObject] setSelector: theSelector] createEnd]
  124. #if 0
  125. #define COM_ENTRY(theObject,theCOMObject) swarm_directory_COM_entry (theCOMObject, theObject)
  126. #define COM_OBJCENTRY(theObject) COM_ENTRY(theObject,0)
  127. #define COM_COMENTRY(theCOMObject) COM_ENTRY(0,theCOMObject)
  128. #define COM_FINDENTRY(theCOMObject) ({ DirectoryEntry *_findEntry  = alloca (sizeof (DirectoryEntry)); _findEntry->foreignObject.COM = theCOMObject; _findEntry; })
  129. #endif
  130. #if 0
  131. extern fcall_type_t fcall_type_for_COM_class (COMclass clazz);
  132. extern void map_COM_ivars (COMobject cobj,
  133.                            void (*process_object) (const char *name,
  134.                                                    fcall_type_t type,
  135.                                                    void *ptr,
  136.                                                    unsigned rank,
  137.                                                    unsigned *dims));
  138. extern fcall_type_t COM_object_ivar_type (COMobject cobj, const char *ivarName, BOOL *isArrayPtr);
  139. extern unsigned COM_object_getVariableElementCount (COMobject cobj,
  140.                                                     const char *ivarName,
  141.                                                     fcall_type_t itype,
  142.                                                     unsigned irank,
  143.                                                     unsigned *idims);
  144. extern BOOL COM_selector_p (COMselector csel);
  145. extern const char *COM_ensure_selector_type_signature (COMselector csel);
  146. extern void COM_object_setVariable (COMobject obj, const char *ivarName, void *inbuf);
  147. extern void swarm_directory_COM_associate_objects (COMobject swarmEnvironment);
  148. extern void swarm_directory_COM_switch_phase (id nextPhase, COMobject currentPhase);
  149. extern void swarm_directory_COM_switch_objc (id object, COMobject cobj);
  150. extern COMobject swarm_directory_COM_next_phase (COMobject cobj);
  151. extern Class swarm_directory_COM_find_class_named (const char *className);
  152. #define SD_COM_FINDOBJC(cobj)  swarm_directory_COM_find_objc (cobj)
  153. #define SD_COM_SWITCHPHASE(cobj, objc) swarm_directory_COM_switch_phase (objc, cobj)
  154. #define SD_COM_SWITCHOBJC(cobj, newobjc) swarm_directory_COM_switch_objc (newobjc, cobj)
  155. #define SD_COM_NEXTPHASE(cobj) swarm_directory_COM_next_phase (cobj)
  156. extern void COM_drop (COMobject cobj);
  157. extern Class swarm_directory_COM_class_for_object (COMobject cobj);
  158. #endif
  159. #endif