00001
00002
00003
00004
00005
00006
00007
00008
00013 #ifndef _ATX_MODULE_H_
00014 #define _ATX_MODULE_H_
00015
00016
00017
00018
00019 #include "AtxDefs.h"
00020 #include "AtxTypes.h"
00021 #include "AtxInterfaces.h"
00022 #include "AtxProperties.h"
00023
00024
00025
00026
00027 ATX_DECLARE_INTERFACE(ATX_Module)
00035 ATX_BEGIN_INTERFACE_DEFINITION(ATX_Module)
00044 ATX_Result (*CreateInstance)(ATX_Module* self,
00045 ATX_String parameters,
00046 const ATX_InterfaceId* interface_id,
00047 ATX_Object* object);
00048 ATX_END_INTERFACE_DEFINITION
00049
00050
00051
00052
00057 #define ATX_Module_CreateObject(self, parameters, interface_id, result) \
00058 ATX_INTERFACE(object)->CreateObject(self, \
00059 parameters, \
00060 interface_id, \
00061 result)
00062
00063
00064
00065
00066 #define ATX_DEFINE_NULL_MODULE_INSTANCE(_prefix) \
00067 static ATX_ModuleInstance* const _prefix##ModuleInstance = NULL;
00068
00069 #define ATX_IMPLEMENT_SIMPLE_MODULE_INTERFACE(_refix) \
00070 static const ATX_ModuleInterface _prefix##ModuleATX_ModuleInterface = { \
00071 _prefix##Module_GetInterface, \
00072 _prefix##Module_CreateInstance \
00073 };
00074
00075 #define ATX_IMPLEMENT_SIMPLE_MODULE_PROPERTIES(_prefix) \
00076 ATX_DECLARE_SIMPLE_GET_INTERFACE_IMPLEMENTATION(_prefix##Module) \
00077 ATX_IMPLEMENT_SIMPLE_STATIC_PROPERTIES_INTERFACE(_prefix##Module, \
00078 _prefix##ModuleProperties)
00079
00080 #endif
00081
00082
00083
00084