/* Load Netscape-specific Java extension classes, methods, and fields */ static JSBool init_netscape_java_classes(JSJavaVM *jsjava_vm, JNIEnv *jEnv) { LOAD_CLASS(netscape/javascript/JSObject, njJSObject); LOAD_CLASS(netscape/javascript/JSException, njJSException); LOAD_CLASS(netscape/javascript/JSUtil, njJSUtil); #if !defined(OJI) JSObject_RegisterNativeMethods(jEnv); #endif #ifndef OJI LOAD_CONSTRUCTOR(netscape.javascript.JSObject, JSObject, "(I)V", njJSObject); #endif LOAD_CONSTRUCTOR(netscape.javascript.JSException, JSException, "(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V", njJSException); /* Load second constructor for wrapping JS exception objects inside JSExceptions */ _LOAD_METHOD(netscape.javascript.JSException,<init>, JSException_wrap, "(ILjava/lang/Object;)V", njJSException, JS_FALSE); #ifndef OJI LOAD_FIELDID(netscape.javascript.JSObject, internal, "I", njJSObject); #endif LOAD_FIELDID(netscape.javascript.JSException, lineno, "I", njJSException); LOAD_FIELDID(netscape.javascript.JSException, tokenIndex, "I", njJSException); LOAD_FIELDID(netscape.javascript.JSException, source, "Ljava/lang/String;", njJSException); LOAD_FIELDID(netscape.javascript.JSException, filename, "Ljava/lang/String;", njJSException); LOAD_FIELDID(netscape.javascript.JSException, wrappedExceptionType, "I", njJSException); LOAD_FIELDID(netscape.javascript.JSException, wrappedException, "Ljava/lang/Object;", njJSException); LOAD_STATIC_METHOD(netscape.javascript.JSUtil, getStackTrace, "(Ljava/lang/Throwable;)Ljava/lang/String;", njJSUtil); return JS_TRUE; }
int main(void) { ndmem_start(); ndmem_pond(); NDClass_Init(); LOAD_CLASS(ConcreteProduct); LOAD_CLASS(ConcreteFactory); AbstractFactoryRef factory = NDClass_Auto(ConcreteFactory); ProductRef product = AbstractFactory_createProduct(factory); Product_serve(product); NDClass_Delete(product); ndmem_drain(); ndmem_finish(); return EXIT_SUCCESS; }
/* Load Netscape-specific Java extension classes, methods, and fields */ static JSBool init_netscape_java_classes(JSJavaVM *jsjava_vm, JNIEnv *jEnv) { LOAD_CLASS(netscape/javascript/JSObject, njJSObject); LOAD_CLASS(netscape/javascript/JSException, njJSException); LOAD_CLASS(netscape/javascript/JSUtil, njJSUtil); #if defined(XP_MAC) || !defined(OJI) JSObject_RegisterNativeMethods(jEnv); #endif #ifndef OJI LOAD_CONSTRUCTOR(netscape.javascript.JSObject, JSObject, "(I)V", njJSObject); #endif LOAD_CONSTRUCTOR(netscape.javascript.JSException, JSException, "(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)V", njJSException); /* Load second constructor for wrapping JS exception objects inside JSExceptions */ _LOAD_METHOD(netscape.javascript.JSException,<init>, JSException_wrap, "(ILjava/lang/Object;)V", njJSException, JS_FALSE); #ifndef OJI LOAD_FIELDID(netscape.javascript.JSObject, internal, "I", njJSObject); #endif LOAD_FIELDID(netscape.javascript.JSException, lineno, "I", njJSException); LOAD_FIELDID(netscape.javascript.JSException, tokenIndex, "I", njJSException); LOAD_FIELDID(netscape.javascript.JSException, source, "Ljava/lang/String;", njJSException); LOAD_FIELDID(netscape.javascript.JSException, filename, "Ljava/lang/String;", njJSException); LOAD_FIELDID(netscape.javascript.JSException, wrappedExceptionType, "I", njJSException); LOAD_FIELDID(netscape.javascript.JSException, wrappedException, "Ljava/lang/Object;", njJSException); LOAD_STATIC_METHOD(netscape.javascript.JSUtil, getStackTrace, "(Ljava/lang/Throwable;)Ljava/lang/String;", njJSUtil); #ifdef AIX # define JAVA_STATIC_INITIALIZER_BUG #endif #ifdef JAVA_STATIC_INITIALIZER_BUG /* The following is used to work around a bug in AIX JDK1.1.6 (See * #331620), in which static initializers are not run when a * static field is referenced from native code. The problem does * not manifest itself if the field is accessed from Java code, so * we first call some Java code to access the fields of interest * before attempting to read them from native code. */ LOAD_STATIC_METHOD(netscape.javascript.JSUtil, workAroundAIXJavaBug,"()V", njJSUtil); (*jEnv)->CallStaticObjectMethod(jEnv, njJSUtil, njJSUtil_workAroundAIXJavaBug); #endif /* JAVA_STATIC_INITIALIZER_BUG */ return JS_TRUE; }
/* * Load the Java classes, and the method and field descriptors required for Java reflection. * Returns JS_TRUE on success, JS_FALSE on failure. */ static JSBool init_java_VM_reflection(JSJavaVM *jsjava_vm, JNIEnv *jEnv) { /* Load Java system classes and method, including java.lang.reflect classes */ LOAD_CLASS(java/lang/Object, jlObject); LOAD_CLASS(java/lang/Class, jlClass); LOAD_CLASS(java/lang/reflect/Method, jlrMethod); LOAD_CLASS(java/lang/reflect/Constructor, jlrConstructor); LOAD_CLASS(java/lang/reflect/Field, jlrField); LOAD_CLASS(java/lang/reflect/Array, jlrArray); LOAD_CLASS(java/lang/Throwable, jlThrowable); LOAD_CLASS(java/lang/System, jlSystem); LOAD_CLASS(java/lang/Boolean, jlBoolean); LOAD_CLASS(java/lang/Double, jlDouble); LOAD_CLASS(java/lang/String, jlString); LOAD_CLASS(java/lang/Void, jlVoid); LOAD_METHOD(java.lang.Class, getMethods, "()[Ljava/lang/reflect/Method;",jlClass); LOAD_METHOD(java.lang.Class, getConstructors, "()[Ljava/lang/reflect/Constructor;",jlClass); LOAD_METHOD(java.lang.Class, getFields, "()[Ljava/lang/reflect/Field;", jlClass); LOAD_METHOD(java.lang.Class, getName, "()Ljava/lang/String;", jlClass); LOAD_METHOD(java.lang.Class, isArray, "()Z", jlClass); LOAD_METHOD(java.lang.Class, getComponentType, "()Ljava/lang/Class;", jlClass); LOAD_METHOD(java.lang.Class, getModifiers, "()I", jlClass); LOAD_METHOD(java.lang.reflect.Method, getName, "()Ljava/lang/String;", jlrMethod); LOAD_METHOD(java.lang.reflect.Method, getParameterTypes, "()[Ljava/lang/Class;", jlrMethod); LOAD_METHOD(java.lang.reflect.Method, getReturnType, "()Ljava/lang/Class;", jlrMethod); LOAD_METHOD(java.lang.reflect.Method, getModifiers, "()I", jlrMethod); LOAD_METHOD(java.lang.reflect.Constructor, getParameterTypes, "()[Ljava/lang/Class;", jlrConstructor); LOAD_METHOD(java.lang.reflect.Constructor, getModifiers, "()I", jlrConstructor); LOAD_METHOD(java.lang.reflect.Field, getName, "()Ljava/lang/String;", jlrField); LOAD_METHOD(java.lang.reflect.Field, getType, "()Ljava/lang/Class;", jlrField); LOAD_METHOD(java.lang.reflect.Field, getModifiers, "()I", jlrField); LOAD_STATIC_METHOD(java.lang.reflect.Array, newInstance, "(Ljava/lang/Class;I)Ljava/lang/Object;",jlrArray); LOAD_METHOD(java.lang.Throwable, toString, "()Ljava/lang/String;", jlThrowable); LOAD_METHOD(java.lang.Throwable, getMessage, "()Ljava/lang/String;", jlThrowable); LOAD_METHOD(java.lang.Double, doubleValue, "()D", jlDouble); LOAD_METHOD(java.lang.Boolean, booleanValue, "()Z", jlBoolean); LOAD_STATIC_METHOD(java.lang.System, identityHashCode, "(Ljava/lang/Object;)I", jlSystem); LOAD_CONSTRUCTOR(java.lang.Boolean, Boolean, "(Z)V", jlBoolean); LOAD_CONSTRUCTOR(java.lang.Double, Double, "(D)V", jlDouble); LOAD_FIELD_OBJ(java.lang.Void, TYPE, "Ljava/lang/Class;", jlVoid); return JS_TRUE; }
{ if(NULL == m_lstClass.Find(pClass)) { if(m_lstClass.IsFull()) { m_lstClass.SetMaxCount(m_lstClass.GetCount() + 1); } m_lstClass.AddTail(pClass); } return S_OK; } void ClassInitialize() { //摄像机控制命令模块 LOAD_CLASS(CSWCameralControlMSG) LOAD_CLASS(CSWCameraControl2AMSG) //球机控制命令模块 LOAD_CLASS(CSWDomeCameraControlMSG) //信号匹配模块 LOAD_CLASS(CSWMatchTransformFilter) //后处理模块 LOAD_CLASS(CSWResultFilter) //JPEG压缩模块 LOAD_CLASS(CSWJPEGEncodeTransformFilter) //自动化控制模块 LOAD_CLASS(CSWAutoControlRenderFilter) //H264保存模块