#if !defined(__E_STATIC_LIB)
#include "include_javalib_header.h"

//TODO 静态库需要的部分,会记录所有的函数名到数组里,静态编译的时候需要取回命令名
static ARG_INFO g_argumentInfo_javalib_global_var[] = 
{
    // 1=参数名称, 2=参数详细解释, 3=指定图像索引,从1开始,0表示无, 4=图像数目(用作动画)
    // 5=参数类型, 6=参数默认值,   7=参数标志 AS_ 开头常量
    // AS_HAS_DEFAULT_VALUE         有默认值,倒数第二个参数是默认值
    // AS_DEFAULT_VALUE_IS_EMPTY    默认值为空,有可空标志
    // AS_RECEIVE_VAR               只能传递变量,相当于传引用,传递过来的肯定不是数组
    // AS_RECEIVE_VAR_ARRAY         传递过来的肯定是数组变量引用
    // AS_RECEIVE_VAR_OR_ARRAY      传递变量或者数组变量引用
    // AS_RECEIVE_ARRAY_DATA        传递数组
    // AS_RECEIVE_ALL_TYPE_DATA     传递数组/非数组
    // AS_RECEIVE_VAR_OR_OTHER      可以传递 变量/数据/返回值数据

    /*000*/ {"参数1", NULL, 0, 0, SDT_INT, 0, NULL},
    /*001*/ {"参数2", NULL, 0, 0, SDT_TEXT, 0, NULL},

    /*002*/ {"用户类路径", "指定java.class.path属性，各路径间以半角分号;分隔，如“c:\\myclasses;d:\\xx.jar”。", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*003*/ {"本地库路径", "指定java.library.path属性，各路径间以半角分号;分隔，如“c:\\myclasses”。此类目录下一般存放实现了JNI接口的dll或so文件。", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*004*/ {"要加载的类名称", "必须使用完整类名称，可用字符.或/分隔，如：“java.lang.String”“java/lang/String”等。", 0, 0, SDT_TEXT, 0, NULL},

    /*005*/ {"类名称", "使用带包名称的类时，可用字符.或/分隔，如：“java.lang.String”“java/lang/String”等。", 0, 0, SDT_TEXT, 0, NULL},
    /*006*/ {"类加载器", "分派给所定义的类的类加载器（的对象标志符）。注：如果本参数为0，默认使用系统类加载器java.lang.ClassLoader.getSystemClassLoader()。", 0, 0, SDT_INT, 0, AS_HAS_DEFAULT_VALUE},
    /*007*/ {"类文件数据", "包含 .class 文件数据的字节集数据。", 0, 0, SDT_BIN, 0, NULL},

    /*008*/ {"类标志符", "指定欲取其超类的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},

    /*009*/ {"类标志符", "指定要分配的对象所属类型。", 0, 0, SDT_INT, 0, NULL},

    /*010*/ {"类标志符", "指定欲创建其对象的Java类。该标志符可通过调用“加载类()”等方法获得。", 0, 0, SDT_INT, 0, NULL},
    /*011*/ {"构造函数的方法标志符", "指定应调用的构造函数方法。该标志符必须通过调用“取方法标志符()”方法获得，且调用时的方法名必须为<init>，而返回类型必须为void (V)。", 0, 0, SDT_INT, 0, NULL},
    /*012*/ {"参数值", "对应于被调用的Java类构造函数的参数值，注意传入的类型要与实际需要的类型一致。本参数可重复添加。", 0, 0, SDT_INT, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*013*/ {"对象标志符", "指定欲取其类的对象。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},

    /*014*/ {"对象标志符", "指定一个对象。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*015*/ {"类标志符", "指定一个类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},

    /*016*/ {"对象一标志符", "指定一个对象。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*017*/ {"对象二标志符", "指定一个对象。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},

    /*018*/ {"将被转换的类标志符", "指定将被转换的类", 0, 0, SDT_INT, 0, NULL},
    /*019*/ {"将被转换到的类标志符", "指定将被转换到的类", 0, 0, SDT_INT, 0, NULL},

    /*020*/ {"被引用的对象标志符", "该参数所指定的对象既可以是全局引用，也可以是局部引用。", 0, 0, SDT_INT, 0, NULL},

    /*021*/ {"欲销毁的全局引用对象标志符", NULL, 0, 0, SDT_INT, 0, NULL},

    /*022*/ {"欲销毁的局部引用对象标志符", NULL, 0, 0, SDT_INT, 0, NULL},

    /*023*/ {"类标志符", "指定欲取其成员(Field)标志符的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*024*/ {"成员名称", "欲取其标志符的成员名称。", 0, 0, SDT_TEXT, 0, NULL},
    /*025*/ {"成员签名", "欲取其标志符的成员签名。使用Java中的“类型签名(Type Signature)”协助前一参数“成员名称”唯一标识欲访问的成员。关于“类型签名”的更多信息，请点击易语言[工具]菜单“JavaLib: 查询Java类的类型签名”；或参考相关文档。", 0, 0, SDT_TEXT, 0, NULL},

    /*026*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*027*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*028*/ {"结果", "存放取出的成员值。注意：要提供与成员的数据类型相一致的变量。", 0, 0, _SDT_ALL, 0, AS_RECEIVE_VAR},

    /*029*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*030*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*031*/ {"值", "欲赋于成员的值。", 0, 0, _SDT_ALL, 0, NULL},

    /*032*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*033*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*034*/ {"结果", "存放取出的成员值——对象标志符。", 0, 0, SDT_INT, 0, AS_RECEIVE_VAR},

    /*035*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*036*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*037*/ {"对象标志符", "指定欲赋于该成员的对象。", 0, 0, SDT_INT, 0, NULL},

    /*038*/ {"类标志符", "指定欲取其成员(Field)标志符的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*039*/ {"成员名称", "欲取其标志符的成员名称。", 0, 0, SDT_TEXT, 0, NULL},
    /*040*/ {"成员签名", "欲取其标志符的成员签名。使用Java中的“类型签名(Type Signature)”协助前一参数“成员名称”唯一标识欲访问的成员。关于“类型签名”的更多信息，请点击易语言[工具]菜单“JavaLib: 查询Java类的类型签名”；或参考相关文档。", 0, 0, SDT_TEXT, 0, NULL},

    /*041*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*042*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*043*/ {"结果", "存放取出的成员值。注意：要提供与成员的数据类型相一致的变量。", 0, 0, _SDT_ALL, 0, AS_RECEIVE_VAR},

    /*044*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*045*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*046*/ {"值", "欲赋于成员的值。", 0, 0, _SDT_ALL, 0, NULL},

    /*047*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*048*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*049*/ {"结果", "存放取出的成员值——对象标志符。", 0, 0, SDT_INT, 0, AS_RECEIVE_VAR},

    /*050*/ {"对象标志符", "指定欲取其成员(Field)的类。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*051*/ {"成员标志符", "欲取其值的成员。该标志符不应为0。", 0, 0, SDT_INT, 0, NULL},
    /*052*/ {"对象标志符", "指定欲赋于该成员的对象。", 0, 0, SDT_INT, 0, NULL},

    /*053*/ {"类标志符", "指定欲取其方法的类。可为“加载类()”等方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*054*/ {"方法名称", "欲调用的方法名称", 0, 0, SDT_TEXT, 0, NULL},
    /*055*/ {"方法签名", "欲调用的方法签名。使用Java中的“类型签名(Type Signature)”协助前一参数“方法名称”唯一标识欲调用的类方法——Java类方法可能被重载，仅“方法名称”不能唯一标识之。关于“类型签名”的更多信息，请点击易语言[工具]菜单“JavaLib: 查询Java类的类型签名”；或参考相关文档。", 0, 0, SDT_TEXT, 0, NULL},

    /*056*/ {"对象标志符", "指定欲调用其方法的对象。", 0, 0, SDT_INT, 0, NULL},
    /*057*/ {"方法标志符", "指定欲调用的方法。应为“取方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*058*/ {"返回结果", "存放方法调用后的返回值。注意，提供的变量的数据类型要与方法的实际返回值数据类型一致。", 0, 0, _SDT_ALL, 0, AS_RECEIVE_VAR},
    /*059*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*060*/ {"对象标志符", "指定欲调用其方法的对象。", 0, 0, SDT_INT, 0, NULL},
    /*061*/ {"方法标志符", "指定欲调用的方法。应为“取方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*062*/ {"返回结果", "存放方法调用后的返回值——对象标志符。", 0, 0, SDT_INT, 0, AS_RECEIVE_VAR},
    /*063*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*064*/ {"对象标志符", "指定欲调用其方法的对象。", 0, 0, SDT_INT, 0, NULL},
    /*065*/ {"方法标志符", "指定欲调用的方法。应为“取方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*066*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*067*/ {"对象标志符", "指定欲调用其方法的对象。", 0, 0, SDT_INT, 0, NULL},
    /*068*/ {"类标志符", "指定欲调用其方法的类。可为“加载类()”等方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*069*/ {"方法标志符", "指定欲调用的方法。应为“取方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*070*/ {"返回结果", "存放方法调用后的返回值。注意，提供的变量的数据类型要与方法的实际返回值数据类型一致。", 0, 0, _SDT_ALL, 0, AS_RECEIVE_VAR},
    /*071*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*072*/ {"对象标志符", "指定欲调用其方法的对象。", 0, 0, SDT_INT, 0, NULL},
    /*073*/ {"类标志符", "指定欲调用其方法的类。可为“加载类()”等方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*074*/ {"方法标志符", "指定欲调用的方法。应为“取方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*075*/ {"返回结果", "存放方法调用后的返回值——对象标志符。", 0, 0, SDT_INT, 0, AS_RECEIVE_VAR},
    /*076*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*077*/ {"对象标志符", "指定欲调用其方法的对象。", 0, 0, SDT_INT, 0, NULL},
    /*078*/ {"类标志符", "指定欲调用其方法的类。可为“加载类()”等方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*079*/ {"方法标志符", "指定欲调用的方法。应为“取方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*080*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*081*/ {"类标志符", "“欲取其静态方法的”类的标志符，可为“查询类()”的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*082*/ {"静态方法名称", "欲调用的静态方法名称", 0, 0, SDT_TEXT, 0, NULL},
    /*083*/ {"静态方法签名", "欲调用的方法签名。使用Java中的“类型签名(Type Signature)”协助前一参数“静态方法名称”唯一标识欲调用的类方法——Java类方法可能被重载，仅“方法名称”不能唯一标识之。关于“类型签名”的更多信息，请点击易语言[工具]菜单“JavaLib: 查询Java类的类型签名”；或参考相关文档。", 0, 0, SDT_TEXT, 0, NULL},

    /*084*/ {"类标志符", "指定欲调用其静态方法的类。可为“加载类()”等方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*085*/ {"方法标志符", "指定欲调用的静态方法。应为“取静态方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*086*/ {"返回结果", "存放静态方法调用后的返回值。注意，提供的变量的数据类型要与方法的实际返回值数据类型一致。", 0, 0, _SDT_ALL, 0, AS_RECEIVE_VAR},
    /*087*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*088*/ {"类标志符", "指定欲调用其静态方法的类。可为“加载类()”等方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*089*/ {"方法标志符", "指定欲调用的静态方法。应为“取静态方法标志符()”方法的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*090*/ {"返回结果", "存放静态方法调用后的返回值——对象标志符。", 0, 0, SDT_INT, 0, AS_RECEIVE_VAR},
    /*091*/ {"参数值", "对应于被调用静态方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*092*/ {"类标志符", "“欲调用其静态方法的类”的类标志符，可为“加载类()”的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*093*/ {"方法标志符", "“欲调用的静态方法”的方法标志符，应为“取静态方法标志符()”的返回值。", 0, 0, SDT_INT, 0, NULL},
    /*094*/ {"参数值", "对应于被调用方法的参数值，注意传入的类型要与该方法实际需要的类型一致。本参数可重复添加。", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*095*/ {"文本", "将被转换到Java字符串的易语言文本。", 0, 0, SDT_TEXT, 9538252, AS_HAS_DEFAULT_VALUE},

    /*096*/ {"字符串标志符", "指定欲取其长度的Java字符串对象", 0, 0, SDT_INT, 0, NULL},

    /*097*/ {"字符串标志符", "指定欲取其文本的Java字符串对象", 0, 0, SDT_INT, 0, NULL},
    /*098*/ {"执行结果", "如果提供本参数，则在方法执行后存放执行结果：执行成功，其值为“真”；执行失败，其值为“假”。", 0, 0, SDT_BOOL, 0, AS_DEFAULT_VALUE_IS_EMPTY | AS_RECEIVE_VAR},

    /*099*/ {"字符串标志符", "指定欲释放其字符串文本的Java字符串对象", 0, 0, SDT_INT, 0, NULL},
    /*100*/ {"欲释放的文本", "该文本应是“取字符串文本()”方法的返回值。", 0, 0, SDT_TEXT, 0, NULL},

    /*101*/ {"文本", "将被转换到Java字符串的易语言文本(UTF-8格式)", 0, 0, SDT_TEXT, 0, NULL},

    /*102*/ {"字符串标志符", "指定欲取其文本的Java字符串对象", 0, 0, SDT_INT, 0, NULL},
    /*103*/ {"执行结果", "如果提供本参数，则在方法执行后存放执行结果：执行成功，其值为“真”；执行失败，其值为“假”。", 0, 0, SDT_BOOL, 0, AS_DEFAULT_VALUE_IS_EMPTY | AS_RECEIVE_VAR},

    /*104*/ {"字符串标志符", "指定欲释放其字符串文本的Java字符串对象", 0, 0, SDT_INT, 0, NULL},
    /*105*/ {"欲释放的文本", "该文本应是“取UTF字符串文本()”方法的返回值。", 0, 0, SDT_TEXT, 0, NULL},

    /*106*/ {"数组标志符", "指定欲取其长度的Java数组", 0, 0, SDT_INT, 0, NULL},

    /*107*/ {"数组长度", NULL, 0, 0, SDT_INT, 0, NULL},
    /*108*/ {"数组类型", "指定该数组容纳的基本数据类型。请为本参数提供枚举类型“数组类型”中的常量值，如：“#数组类型.数据型”。", 0, 0, SDT_INT, 0, NULL},

    /*109*/ {"数组标志符", "指定要取其数据成员的Java数组。为“创建数组()”方法的返回值，注意不要混用不同数据类型的数组。", 0, 0, SDT_INT, 0, NULL},
    /*110*/ {"成员索引", "指定欲取其值的数组成员的索引。索引值从0开始。", 0, 0, SDT_INT, 0, NULL},
    /*111*/ {"取出的值", "存放从数组中取出的值。注意：要保证本参数的数据类型与数组所能容纳的数据类型一致。", 0, 0, _SDT_ALL, 0, AS_RECEIVE_VAR},

    /*112*/ {"数组标志符", "指定要对其数据成员赋值的Java数组。可为“创建数组()”方法的返回值，注意不要混用不同基本数据类型的数组。", 0, 0, SDT_INT, 0, NULL},
    /*113*/ {"成员索引", "指定欲对其赋值的数组成员的索引。索引值从0开始。", 0, 0, SDT_INT, 0, NULL},
    /*114*/ {"值", "欲赋给指定数组成员的值。注意：要保证本参数的数据类型与数组所能容纳的数据类型一致。", 0, 0, _SDT_ALL, 0, NULL},

    /*115*/ {"数组大小", NULL, 0, 0, SDT_INT, 0, NULL},
    /*116*/ {"类标志符", "指定该数组用于存放何种“类(class)”。", 0, 0, SDT_INT, 0, NULL},
    /*117*/ {"初始对象标志符", "指定该数组所有成员的初始值。", 0, 0, SDT_INT, 0, NULL},

    /*118*/ {"数组标志符", "指定欲取其成员的Java对象数组", 0, 0, SDT_INT, 0, NULL},
    /*119*/ {"成员索引", "指定欲取数组的第几个成员。索引值从0开始。", 0, 0, SDT_INT, 0, NULL},

    /*120*/ {"数组标志符", "指定欲赋值的Java对象数组", 0, 0, SDT_INT, 0, NULL},
    /*121*/ {"成员索引", "指定欲对其赋值的成员索引。索引值从0开始。", 0, 0, SDT_INT, 0, NULL},
    /*122*/ {"欲赋值的对象标志符", "指定欲赋值的对象", 0, 0, SDT_INT, 0, NULL},

    /*123*/ {"异常对象标志符", "指定欲抛出的Java异常对象。", 0, 0, SDT_INT, 0, NULL},

    /*124*/ {"异常类标志符", "指定欲创建的异常类，应为java.lang.Throwable或其子类。如果本参数为0，默认使用java.lang.Throwable。", 0, 0, SDT_INT, 0, AS_HAS_DEFAULT_VALUE},
    /*125*/ {"异常描述文本", NULL, 0, 0, SDT_TEXT, 9538252, AS_HAS_DEFAULT_VALUE},

    /*126*/ {"错误描述文本", NULL, 0, 0, SDT_TEXT, 9538252, AS_HAS_DEFAULT_VALUE},

    /*127*/ {"对象标志符", "可为常规Java对象或类对象。", 0, 0, SDT_INT, 0, NULL},

};

#ifdef _DEBUG    // 这里是为了确认参数序号是否正确, 成员数比最后一个序号大1就是正确
const int dbg_cmd_arg_count__ = sizeof(g_argumentInfo_javalib_global_var) / sizeof(g_argumentInfo_javalib_global_var[0]);
#endif


#define JAVALIB_DEF_CMDINFO(_index, _szName, _szEgName, _szExplain, _shtCategory, _wState, _dtRetValType, _wReserved, _shtUserLevel, _shtBitmapIndex, _shtBitmapCount, _nArgCount, _pBeginArgInfo) \
    { _szName, ______E_FNENAME(_szEgName), _szExplain, _shtCategory, _wState, _dtRetValType, _wReserved, _shtUserLevel, _shtBitmapIndex, _shtBitmapCount, _nArgCount, _pBeginArgInfo },


// 易语言每个命令的定义, 会把信息显示在支持库列表里, 这里每个成员都是详细的描述一个命令的信息
CMD_INFO g_cmdInfo_javalib_global_var[] = 
{
    JAVALIB_DEF(JAVALIB_DEF_CMDINFO)
};

int g_cmdInfo_javalib_global_var_count = sizeof(g_cmdInfo_javalib_global_var) / sizeof(g_cmdInfo_javalib_global_var[0]);

#endif

