00001
00002
00003
00004
00005 #ifndef _MODULE_H
00006 #define _MODULE_H
00007
00008 #include <stdio.h>
00009 #include <float.h>
00010 #include "object.h"
00011
00012 #include "test_callbacks.h"
00013
00014 struct s_module_list {
00015 void *hLib;
00016 char name[1024];
00017 CLASS *oclass;
00018 unsigned short major;
00019 unsigned short minor;
00020 void* (*getvar)(char *varname,char *value,unsigned int size);
00021 int (*setvar)(char *varname,char *value);
00022 int (*import_file)(char *file);
00023 int (*export_file)(char *file);
00024 int (*check)();
00025 #ifndef _NO_CPPUNIT
00026 int (*module_test)(TEST_CALLBACKS *callbacks,int argc,char* argv[]);
00027 #endif
00028 int (*cmdargs)(int,char**);
00029 int (*kmldump)(FILE*fp,OBJECT*);
00030 MODULE *(*subload)(char *, MODULE **, CLASS **, int, char **);
00031 PROPERTY *globals;
00032 struct s_module_list *next;
00033 };
00034
00035 #ifndef _MODULE_DEFINED_
00036 #define _MODULE_DEFINED_
00037 typedef struct s_module_list MODULE;
00038 #endif
00039
00040 typedef CLASS *(*LIBINIT)(const CALLBACKS*,void*,int,char*[]);
00041
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045 int module_get_exe_path(char *buf, int len);
00046 int module_get_path(char *buf, int len, MODULE *mod);
00047 MODULE *module_find(char *module_name);
00048 MODULE *module_load(const char *file, int argc, char *argv[]);
00049 void* module_getvar(MODULE *mod, char *varname, char *value, unsigned int size);
00050 double *module_getvar_addr(MODULE *mod, char *varname);
00051 int module_setvar(MODULE *mod, char *varname, char *value);
00052 int module_import(MODULE *mod, char *filename);
00053 int module_check(MODULE *mod);
00054 int module_checkall();
00055 int module_saveall(FILE *fp);
00056 int module_saveall_xml(FILE *fp);
00057 int module_dumpall();
00058 void module_libinfo(char *module_name);
00059 #ifndef _NO_CPPUNIT
00060 int module_test(TEST_CALLBACKS *callbacks,int argc,char* argv[]);
00061 #endif
00062 int module_cmdargs(int argc, char **argv);
00063 int module_saveobj_xml(FILE *fp, MODULE *mod);
00064 MODULE *module_get_first();
00065 #ifdef __cplusplus
00066 }
00067 #endif
00068
00069 #endif