00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00023 #ifndef VMD_PLUGIN_H
00024 #define VMD_PLUGIN_H
00025
00026
00027
00028
00029
00030
00031 #if !defined(VMDPLUGIN)
00032
00036 #define VMDPLUGIN vmdplugin
00037 #endif
00038
00039 #define xcat(x, y) cat(x, y)
00040
00041 #define cat(x, y) x ## y
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00054 #define VMDPLUGIN_register xcat(VMDPLUGIN, _register)
00055 #define VMDPLUGIN_register_tcl xcat(VMDPLUGIN, _register_tcl)
00056 #define VMDPLUGIN_init xcat(VMDPLUGIN, _init)
00057 #define VMDPLUGIN_fini xcat(VMDPLUGIN, _fini)
00058
00062 #if (defined(WIN32) || defined(WIN64) || defined(_MSC_VER))
00063 #define WIN32_LEAN_AND_MEAN
00064 #include <windows.h>
00065
00066 #if !defined(STATIC_PLUGIN)
00067 #if defined(VMDPLUGIN_EXPORTS)
00068
00072 BOOL APIENTRY DllMain( HANDLE hModule,
00073 DWORD ul_reason_for_call,
00074 LPVOID lpReserved
00075 )
00076 {
00077 return TRUE;
00078 }
00079
00080 #define VMDPLUGIN_API __declspec(dllexport)
00081 #else
00082 #define VMDPLUGIN_API __declspec(dllimport)
00083 #endif
00084 #else
00085 #define VMDPLUGIN_API
00086 #endif
00087 #else
00088
00089 #define VMDPLUGIN_API
00090 #endif
00091
00093 #ifdef __cplusplus
00094 #define VMDPLUGIN_EXTERN extern "C" VMDPLUGIN_API
00095 #else
00096 #define VMDPLUGIN_EXTERN extern VMDPLUGIN_API
00097 #endif
00098
00099
00100
00101
00102
00103
00109 VMDPLUGIN_EXTERN int VMDPLUGIN_init(void);
00110
00124 #define vmdplugin_HEAD \
00125 int abiversion; \
00126 const char *type; \
00127 const char *name; \
00128 const char *prettyname; \
00129 const char *author; \
00130 int majorv; \
00131 int minorv; \
00132 int is_reentrant;
00133
00140 typedef struct {
00141 vmdplugin_HEAD
00142 } vmdplugin_t;
00143
00147 #define vmdplugin_ABIVERSION 18
00148
00151 #define VMDPLUGIN_THREADUNSAFE 0
00152 #define VMDPLUGIN_THREADSAFE 1
00153
00157 #define VMDPLUGIN_SUCCESS 0
00158 #define VMDPLUGIN_ERROR -1
00159
00164 typedef int (*vmdplugin_register_cb)(void *, vmdplugin_t *);
00165
00175 VMDPLUGIN_EXTERN int VMDPLUGIN_register(void *, vmdplugin_register_cb);
00176
00182 VMDPLUGIN_EXTERN int VMDPLUGIN_register_tcl(void *, void *tcl_interp,
00183 vmdplugin_register_cb);
00184
00189 VMDPLUGIN_EXTERN int VMDPLUGIN_fini(void);
00190
00191 #endif