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

//TODO 静态库需要的部分,会记录所有的函数名到数组里,静态编译的时候需要取回命令名
static ARG_INFO g_argumentInfo_ewizard_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*/ {"欲复制项类型", NULL, 0, 0, MAKELONG(0x01, 0), 0, NULL},
    /*001*/ {"欲复制项名称", NULL, 0, 0, SDT_TEXT, 0, NULL},
    /*002*/ {"新项目名称", "必须确保该名称合法且不重复", 0, 0, SDT_TEXT, 0, NULL},

    /*003*/ {"子程序名称", "可以“子程序名称”或“程序集名.子程序名”格式来表示", 0, 0, SDT_TEXT, 0, NULL},
    /*004*/ {"标记名", "标记可以在易语言程序中任何可以输入备注的地方设置，譬如程序语句、变量、窗口组件、自定义数据类型等等，所设置标记在易向导最终所生成的程序中将被自动删除。标记的定义格式为“$(标记名称)”或“$(标记名称/)”加“$(/标记名称)”，后两个只能在程序语句中成对使用，用作定义具有多行语句的代码块标记，定义方法为在所选定程序块首语句的备注中加上“$(标记名称/)”，在所选定程序块末语句的备注中加上“$(/标记名称)”，两者名称必须相同。在程序语句备注中使用“$(标记名称)”格式设置标记，可定义该单行语句为一个代码块。同一个地方可以连续设置多个标记，譬如“$(标记名称1)$(标记名称2)”。标记可以与正常备注信息混合排放。", 0, 0, SDT_TEXT, 0, NULL},
    /*005*/ {"复制到标记名", "本标记提供所选择程序段在本子程序内的目的复制位置", 0, 0, SDT_TEXT, 0, NULL},

    /*006*/ {"欲删除项类型", NULL, 0, 0, MAKELONG(0x01, 0), 0, NULL},
    /*007*/ {"欲删除项名称", NULL, 0, 0, SDT_TEXT, 0, NULL},

    /*008*/ {"子程序名称", "可以“子程序名称”或“程序集名.子程序名”格式来表示", 0, 0, SDT_TEXT, 0, NULL},
    /*009*/ {"标记名", "标记可以在易语言程序中任何可以输入备注的地方设置，譬如程序语句、变量、窗口组件、自定义数据类型等等，所设置标记在易向导最终所生成的程序中将被自动删除。标记的定义格式为“$(标记名称)”或“$(标记名称/)”加“$(/标记名称)”，后两个只能在程序语句中成对使用，用作定义具有多行语句的代码块标记，定义方法为在所选定程序块首语句的备注中加上“$(标记名称/)”，在所选定程序块末语句的备注中加上“$(/标记名称)”，两者名称必须相同。在程序语句备注中使用“$(标记名称)”格式设置标记，可定义该单行语句为一个代码块。同一个地方可以连续设置多个标记，譬如“$(标记名称1)$(标记名称2)”。标记可以与正常备注信息混合排放。", 0, 0, SDT_TEXT, 0, NULL},

    /*010*/ {"标记名", "标记可以在易语言程序中任何可以输入备注的地方设置，譬如程序语句、变量、窗口组件、自定义数据类型等等，所设置标记在易向导最终所生成的程序中将被自动删除。标记的定义格式为“$(标记名称)”或“$(标记名称/)”加“$(/标记名称)”，后两个只能在程序语句中成对使用，用作定义具有多行语句的代码块标记，定义方法为在所选定程序块首语句的备注中加上“$(标记名称/)”，在所选定程序块末语句的备注中加上“$(/标记名称)”，两者名称必须相同。在程序语句备注中使用“$(标记名称)”格式设置标记，可定义该单行语句为一个代码块。同一个地方可以连续设置多个标记，譬如“$(标记名称1)$(标记名称2)”。标记可以与正常备注信息混合排放。", 0, 0, SDT_TEXT, 0, NULL},

    /*011*/ {"欲修改项类型", NULL, 0, 0, MAKELONG(0x01, 0), 0, NULL},
    /*012*/ {"欲修改项名称", NULL, 0, 0, SDT_TEXT, 0, NULL},
    /*013*/ {"欲修改属性", "合法的修改属性与与修改项类型相关，具体如下：\r\n程序集： 名称、备注、公开\r\n子程序： 名称、备注、数据类型、公开、收缩\r\n全局变量、程序集变量、局部变量、子程序参数、数据类型成员、DLL命令参数： 名称、备注、数据类型、数组类型、静态、参考、可空、公开\r\n数据类型： 名称、备注、公开\r\nDLL命令： 名称、备注、公开、DLL库文件名、DLL库命令名、数据类型\r\n窗口： 名称、备注\r\n窗口组件： 名称、备注\r\n常量或资源： 名称、备注、公开、常量或资源值\r\n", 0, 0, MAKELONG(0x02, 0), 0, NULL},
    /*014*/ {"修改值", "修改值的数据类型必须与指定欲修改属性的数据类型一致，修改值具体所需要的数据类型请见“程序项属性”中各成员常量的解释", 0, 0, _SDT_ALL, 0, NULL},

    /*015*/ {"组件属性名", "组件属性名以“窗口名.组件名.属性名”或“窗口名.属性名”格式表示，注意窗口组件包括菜单项", 0, 0, SDT_TEXT, 0, NULL},
    /*016*/ {"属性值", "属性值的数据类型必须与指定组件属性的数据类型一致", 0, 0, _SDT_ALL, 0, NULL},

    /*017*/ {"子程序名称", "可以“子程序名称”或“程序集名.子程序名”格式来表示", 0, 0, SDT_TEXT, 0, NULL},
    /*018*/ {"标记名", "标记可以在易语言程序中任何可以输入备注的地方设置，譬如程序语句、变量、窗口组件、自定义数据类型等等，所设置标记在易向导最终所生成的程序中将被自动删除。标记的定义格式为“$(标记名称)”或“$(标记名称/)”加“$(/标记名称)”，后两个只能在程序语句中成对使用，用作定义具有多行语句的代码块标记，定义方法为在所选定程序块首语句的备注中加上“$(标记名称/)”，在所选定程序块末语句的备注中加上“$(/标记名称)”，两者名称必须相同。在程序语句备注中使用“$(标记名称)”格式设置标记，可定义该单行语句为一个代码块。同一个地方可以连续设置多个标记，譬如“$(标记名称1)$(标记名称2)”。标记可以与正常备注信息混合排放。", 0, 0, SDT_TEXT, 0, NULL},
    /*019*/ {"备注", "如果本参数被省略，默认值为空文本", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*020*/ {"程序名称", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*021*/ {"程序类型", "具体值为： 1、Windows窗口程序； 2、Windows控制台程序； 3、Windows动态链接库； 4、Windows易语言模块； 5、Linux控制台程序； 6、Linux易语言模块。 如果本参数被省略，则不改动此项", 0, 0, SDT_INT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*022*/ {"备注", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*023*/ {"版本", "版本文本格式为“主版本号.次版本号”，如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*024*/ {"图标", "如果本参数被省略，则不改动此项", 0, 0, SDT_BIN, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*025*/ {"作者名称", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*026*/ {"邮政编码", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*027*/ {"联系地址", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*028*/ {"电话", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*029*/ {"传真", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*030*/ {"电子信箱", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*031*/ {"主页地址", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},
    /*032*/ {"其它信息", "如果本参数被省略，则不改动此项", 0, 0, SDT_TEXT, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*033*/ {"模板变量名称", NULL, 0, 0, SDT_TEXT, 0, NULL},
    /*034*/ {"模板变量值", "只能是系统基本数据类型数据。如果本参数被省略，默认值为空文本", 0, 0, _SDT_ALL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*035*/ {"模板程序数据", "此数据为用作模板程序的完整易源程序", 0, 0, SDT_BIN, 0, NULL},
    /*036*/ {"是否关闭源程序", "如果本参数为真，则当执行写出程序时，先将现行易语言编辑环境中的源程序关闭，然后将所写出程序作为新的完整程序载入。如果本参数为假，当执行写出程序时，会将所生成程序与现行易语言编辑环境中的源程序合并（合并前“_启动窗口”及其窗口程序集、“启动子程序”代码将被抛弃）。如果本参数被省略，默认值为真", 0, 0, SDT_BOOL, 0, AS_DEFAULT_VALUE_IS_EMPTY},

    /*037*/ {"模块文件路径名", "本参数提供欲添加引用的模块文件路径名。如果以“$”字符开始，表示后面是基于易语言系统模块目录的相对路径。如：$classlib\\d3d.ec，代表在易语言系统模块目录下classlib子目录中的d3d.ec模块文件", 0, 0, SDT_TEXT, 0, NULL},

    /*038*/ {"模块文件名", "本参数提供欲删除引用的不带路径易模块文件名", 0, 0, SDT_TEXT, 0, NULL},

};

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


#define EWIZARD_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_ewizard_global_var[] = 
{
    EWIZARD_DEF(EWIZARD_DEF_CMDINFO)
};

int g_cmdInfo_ewizard_global_var_count = sizeof(g_cmdInfo_ewizard_global_var) / sizeof(g_cmdInfo_ewizard_global_var[0]);

#endif

