00001 #include <stdlib.h>
00002 #include <stdio.h>
00003 #include <errno.h>
00004 #include <jni.h>
00005
00006 #include "gridlabd.h"
00007
00008
00009 #define MODULENAME "JavaModule"
00010 #define MAJOR 1
00011 #define MINOR 0
00012
00013 static JNIEnv *jnienv = NULL;
00014
00015 EXPORT CLASS *javainit(CALLBACKS *fntable, MODULE *module, int argc, char *argv[], JNIEnv *env)
00016 {
00017
00018 callback = fntable;
00019
00020
00021 jnienv = env;
00022
00023 jclass cls = jnienv->FindClass(MODULENAME);
00024
00025
00026 jmethodID init_mid = env->GetStaticMethodID(cls, "init", "(JI[Ljava/lang/String;)I");
00027
00028 if(cls == NULL)
00029 return NULL;
00030
00031 if(init_mid == NULL)
00032 return NULL;
00033
00034 jobjectArray args = env->NewObjectArray(argc, jnienv->FindClass("[Ljava/lang/String;"), NULL);
00035 if(args == NULL)
00036 return NULL;
00037
00038 jstring jargv[argc];
00039 for(int i = 0; i < argc; ++i){
00040 jargv[i] = env->NewStringUTF(argv[i]);
00041 jnienv->SetObjectArrayElement(jargv[i], i, args);
00042 }
00043
00044 jnienv->CallStaticIntMethod(cls, init_mid, (long long)module, argc, jargv);
00045
00046
00047
00048
00049
00050
00051
00052
00053 jnienv->DeleteLocalRef(jobjectArray);
00054 for(int i = 0; i < argc; ++i)
00055 ;
00056
00057 return NULL;
00058 }
00059
00060 CDECL int do_kill()
00061 {
00062
00063 return 0;
00064 }
00065
00066 #if 0
00067
00068 public static int check(){
00069 return 0;
00070 }
00071 public static int import_file(String filename){
00072 return 0;
00073 }
00074 public static int export_file(String filename){
00075 return 0;
00076 }
00077 public static int setvar(String varname, String value){
00078 return 0;
00079 }
00080 public static int module_test(int argc, String[] argv){
00081 return 0;
00082 }
00083 public static int cmdargs(int argc, String[] argv){
00084 return 0;
00085 }
00086
00087 public static String kmldump(long object_addr){
00088 return "";
00089 }
00090
00091 #endif
00092
00093