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

信息检索与抽取

开发平台:

Unix_Linux

  1. #ifndef __defobj_java_h
  2. #define __defobj_java_h
  3. #import <defobj/directory.h> // DIRECTORY_SIZE, ObjectEntry, SelectorEntry
  4. #include <swarmconfig.h>
  5. #ifdef JNI_H_NEEDS_INT64
  6. #define __int64 SWARM_INT64
  7. #endif
  8. #ifdef __osf__
  9. #define _REENTRANT
  10. #endif
  11. #include <jni.h>
  12. extern JNIEnv *jniEnv;
  13. extern jclass java_find_class (const char *name, BOOL failFlag);
  14. extern ObjectEntry *java_instantiate_pair (jclass clazz);
  15. extern const char *java_signature_for_fcall_type (fcall_type_t type);
  16. extern fcall_type_t fcall_type_for_java_class (jclass class);
  17. extern const char *java_ensure_selector_type_signature (jobject jsel);
  18. extern const char *java_get_class_name (jclass class);
  19. extern void java_object_setVariable (jobject javaObject, const char *ivarName,
  20.                                      fcall_type_t type,
  21.                                      unsigned rank, unsigned *dims,
  22.                                      void *inbuf);
  23. extern void map_java_ivars (jobject javaObject,
  24.                             void (*process_object) (const char *name,
  25.                                                     fcall_type_t type,
  26.                                                     void *ptr,
  27.                                                     unsigned rank,
  28.                                                     unsigned *dims));
  29. extern void map_java_class_ivars (jclass class,
  30.                                   void (*process_ivar) (const char *name,
  31.                                                         fcall_type_t type));
  32. extern fcall_type_t java_object_ivar_type (jobject javaObject, const char *ivarName, BOOL *isArrayPtr);
  33. extern void java_create_refs ();
  34. extern void swarm_directory_java_associate_objects_startup (jobject swarmEnvironment);
  35. extern void swarm_directory_java_associate_objects (jobject swarmEnvironment);
  36. extern void swarm_directory_java_associate_objects (jobject swarmEnvironment);
  37. extern unsigned swarm_directory_java_hash_code (jobject javaObject);
  38. extern id swarm_directory_java_ensure_objc (jobject javaObject);
  39. extern id swarm_directory_java_find_objc (jobject javaObject);
  40. extern id swarm_directory_java_find_swarm_objc (jobject javaObject);
  41. extern jobject swarm_directory_java_next_phase (jobject jobj);
  42. extern ObjectEntry *swarm_directory_java_switch_phase (id nextPhase, jobject currentJavaPhase);
  43. extern ObjectEntry *swarm_directory_java_switch_objc (id object, jobject javaObject);
  44. extern ObjectEntry *swarm_directory_java_add_object (jobject lref, id object);
  45. extern ObjectEntry *swarm_directory_java_add_class (jobject lref, Class class);
  46. extern SelectorEntry *swarm_directory_java_add_selector (jobject lref, SEL sel);
  47. extern Class swarm_directory_java_ensure_class (jclass javaClass);
  48. extern Class swarm_directory_java_find_class_named_objc (const char *className);
  49. extern Class swarm_directory_java_class_for_object_objc (jobject jobj);
  50. extern jobject swarm_directory_objc_ensure_java (id object);
  51. extern jobject swarm_directory_objc_find_object_java (id object);
  52. extern jobject swarm_directory_objc_find_selector_java (SEL sel);
  53. extern jobject swarm_directory_objc_ensure_selector_java (jclass jClass, SEL sel);
  54. extern jclass swarm_directory_objc_find_class_java (Class class);
  55. extern SEL swarm_directory_java_ensure_selector (jobject jsel);
  56. extern const char *java_copy_string (jstring javaString);
  57. extern void java_cleanup_strings (const char **stringArray, size_t count);
  58. extern const char **java_convert_string_array (jobjectArray javaString);
  59. extern const char *java_class_name (jobject obj);
  60. extern BOOL java_field_usable_p (jobject field);
  61. extern BOOL java_method_usable_p (jobject method);
  62. extern BOOL java_objc_proxy_p (jclass class);
  63. extern void java_drop (jobject jobj);
  64. #define SD_JAVA_FIND_OBJECT_SWARM_OBJC(jobj)  swarm_directory_java_find_swarm_objc (jobj)
  65. #define SD_JAVA_FIND_OBJECT_OBJC(jobj)  swarm_directory_java_find_objc (jobj)
  66. #define SD_JAVA_ENSURE_OBJECT_OBJC(jobj) swarm_directory_java_ensure_objc (jobj)
  67. #define SD_JAVA_ENSURE_OBJECT_JAVA(objc) swarm_directory_objc_ensure_java (objc)
  68. #define SD_JAVA_FIND_OBJECT_JAVA(objc) swarm_directory_objc_find_object_java (objc)
  69. #define SD_JAVA_FIND_SELECTOR_JAVA(sel) swarm_directory_objc_find_selector_java (sel)
  70. #define SD_JAVA_ENSURE_SELECTOR_JAVA(jClass, sel) swarm_directory_objc_ensure_selector_java (jClass, sel)
  71. #define SD_JAVA_FIND_CLASS_JAVA(objcClass) swarm_directory_objc_find_class_java (objcClass)
  72. #define SD_JAVA_ADD_OBJECT(jObj, oObj) swarm_directory_java_add_object (jObj, oObj)
  73. #define SD_JAVA_ADD_SELECTOR(jsel, sel) swarm_directory_java_add_selector (jsel, sel)
  74. #define SD_JAVA_ADD_STRING(jObj, str) swarm_directory_java_add_object (jObj, (id) str)
  75. #define SD_JAVA_ADD_OBJECT_JAVA(jObj, oObj) swarm_directory_java_add_object (jObj, oObj)->foreignObject.java
  76. #define SD_JAVA_ADD_CLASS_JAVA(jClass, oClass) ((jclass) swarm_directory_java_add_class (jClass, oClass)->foreignObject.java)
  77. #define SD_JAVA_SWITCHPHASE(jobj, objc) swarm_directory_java_switch_phase (objc, jobj)->foreignObject.java
  78. #define SD_JAVA_SWITCHOBJC(jobj, newobjc) swarm_directory_java_switch_objc (newobjc, jobj)
  79. #define SD_JAVA_NEXTPHASE(jobj) swarm_directory_java_next_phase (jobj)
  80. #define SD_JAVA_ENSURE_SELECTOR_OBJC(jobj) swarm_directory_java_ensure_selector (jobj)
  81. #define SD_JAVA_ENSURE_CLASS_OBJC(jclazz) swarm_directory_java_ensure_class (jclazz)
  82. #define SD_JAVA_INSTANTIATE(clazz) java_instantiate_pair (clazz)
  83. #define JAVA_COPY_STRING(javaString) java_copy_string (javaString)
  84. #define JAVA_CLEANUP_STRINGS(stringArray) java_cleanup_strings ((const char **) stringArray, sizeof (stringArray) / sizeof (const char *))
  85. #define JAVA_CONVERT_STRING_ARRAY(jary) java_convert_string_array (jary)
  86. #define JAVA_CLEANUP_STRING_ARRAY(stringArray, name) { java_cleanup_strings ((const char **) stringArray, (*jniEnv)->GetArrayLength (jniEnv, name)); [scratchZone free: (void *) stringArray]; }
  87. #define JAVA_OBJECT_ENTRY(theJavaObject,theObject) [[[[ObjectEntry createBegin: _obj_GCFixedRootZone] setJavaObject: theJavaObject] setObject: theObject] createEnd]
  88. #define JAVA_SELECTOR_ENTRY(theJavaObject,theSel) [[[[SelectorEntry createBegin: _obj_GCFixedRootZone] setJavaObject: theJavaObject] setSelector: theSel] createEnd]
  89. #define JAVA_OBJCENTRY(theObject) JAVA_ENTRY(theObject,0)
  90. #define JAVA_JAVAENTRY(theJavaObject) JAVA_ENTRY(0,theJavaObject)
  91. #define JAVA_FIND_OBJECT_ENTRY(theJavaObject) ({ ObjectEntry *_findEntry  = alloca (sizeof (ObjectEntry)); _findEntry->foreignObject.java = theJavaObject; _findEntry; })
  92. #endif