core/module.h

00001 /* module.h
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 }; /* MODULE */
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

GridLAB-DTM Version 1.0
An open-source project initiated by the US Department of Energy