00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __MOD__DEFS__H__
00013 #define __MOD__DEFS__H__
00014
00015 #include <wx/tokenzr.h>
00016 #include <wx/string.h>
00017 #include <wx/event.h>
00018 #include <wx/log.h>
00019
00020
00021 namespace VRUT
00022 {
00024 enum SERVER_ID
00025 {
00026 MANIP_MANAGER = 1,
00027 IO_MANAGER = 2,
00028 RENDER_MANAGER = 3,
00029 GENERAL_MANAGER = 4,
00030 SERVER_ID_NONE = 0xf
00031 };
00032
00034 const wxString SERVER_CLASS_NAMES[] =
00035 {
00036 wxEmptyString,
00037 wxT("<EventManager>"),
00038 wxT("<IOManager>"),
00039 wxT("<RenderManager>"),
00040 wxT("<GeneralManager>")
00041 };
00042
00044 const wxString MODULE_PATHS[] =
00045 {
00046 wxEmptyString,
00047 wxT("modules/manip"),
00048 wxT("modules/io"),
00049 wxT("modules/render"),
00050 wxT("modules")
00051 };
00052
00054 enum MODULE_TYPE
00055 {
00056 MODULE_TYPE_IO = 0x01,
00057 MODULE_TYPE_SCENE = 0x02,
00058 MODULE_TYPE_RENDER = 0x04,
00059 MODULE_TYPE_MANIPULATOR = 0x08,
00060 MODULE_TYPE_CAMERA = 0x10,
00061 MODULE_TYPE_KERNEL = 0x11
00062 };
00063
00065 const int MODULES_VER_SUPP = 1;
00066
00068 typedef unsigned short _SHORT_ID;
00070 typedef unsigned _ID;
00071
00072 #ifndef ID_TO_STRING
00073 #define ID_TO_STRING(id) wxString::Format(wxT("%i"), id)
00074 #endif
00075
00076 typedef _ID NODE_ID;
00078 const NODE_ID NODE_ID_NONE = (NODE_ID)~(NODE_ID(0));
00079
00080 typedef _SHORT_ID RENDER_WINDOW_ID;
00082 const RENDER_WINDOW_ID RENDER_WINDOW_ID_NONE = (RENDER_WINDOW_ID)~(RENDER_WINDOW_ID(0));
00083
00084 typedef _SHORT_ID SCENE_ID;
00086 const SCENE_ID SCENE_ID_NONE = (SCENE_ID)~(SCENE_ID(0));
00087
00088 typedef _ID MATERIAL_ID;
00090 const MATERIAL_ID MATERIAL_ID_NONE = (MATERIAL_ID)~(MATERIAL_ID(0));
00091
00092 typedef _ID GEOMETRY_ID;
00094 const GEOMETRY_ID GEOMETRY_ID_NONE = (GEOMETRY_ID)~(GEOMETRY_ID(0));
00095
00096 typedef _SHORT_ID MODULE_HANDLE_ID;
00098 const MODULE_HANDLE_ID MODULE_HANDLE_ID_NONE = (MODULE_HANDLE_ID)~(MODULE_HANDLE_ID(0));
00099
00100 typedef _SHORT_ID MODULE_INSTANCE_ID;
00102 const MODULE_INSTANCE_ID MODULE_INSTANCE_ID_NONE = (MODULE_INSTANCE_ID)~(MODULE_INSTANCE_ID(0));
00103
00105 class MODULE_ID
00106 {
00107 private:
00109 unsigned id;
00110
00111 public:
00113 MODULE_ID(SERVER_ID server = SERVER_ID_NONE, MODULE_HANDLE_ID hid = MODULE_HANDLE_ID_NONE, MODULE_INSTANCE_ID iid = MODULE_INSTANCE_ID_NONE)
00114 {
00115 id = (iid & 0xffff) | ( (hid << 16) & 0xfff0000 ) | ( (server << 28) & 0xf0000000 );
00116 }
00117
00119 MODULE_ID(unsigned _id) : id(_id) {}
00120
00122 MODULE_ID(const MODULE_ID & mid)
00123 {
00124 id = mid.id;
00125 }
00126
00128 bool operator==(const MODULE_ID & mid) const
00129 {
00130 return id == mid.id;
00131 }
00132
00134 bool operator!=(const MODULE_ID & mid) const
00135 {
00136 return !operator==(mid);
00137 }
00138
00140 unsigned GetID() const
00141 {
00142 return id;
00143 }
00144
00146 SERVER_ID GetServerID() const
00147 {
00148 return SERVER_ID( (id >> 28) & 0xf );
00149 }
00150
00152 MODULE_HANDLE_ID GetHandleID() const
00153 {
00154 return MODULE_HANDLE_ID( (id >> 16) & 0xfff );
00155 }
00156
00158 MODULE_INSTANCE_ID GetInstanceID() const
00159 {
00160 return MODULE_INSTANCE_ID( id & 0xffff );
00161 }
00162
00164 wxString ToString() const
00165 {
00166 return wxString::Format(wxT("%i:%i:%i"), GetServerID(), GetHandleID(), GetInstanceID());
00167 }
00168
00170 static MODULE_ID FromString(const wxString & str)
00171 {
00172 wxStringTokenizer tkz(str, wxT(" :;|"));
00173 SERVER_ID server = SERVER_ID_NONE;
00174 MODULE_HANDLE_ID hid = MODULE_HANDLE_ID_NONE;
00175 MODULE_INSTANCE_ID iid = MODULE_INSTANCE_ID_NONE;
00176 if (tkz.CountTokens() == 3)
00177 {
00178 unsigned long tmp;
00179 if (!tkz.GetNextToken().ToULong(&tmp))
00180 return MODULE_ID();
00181 server = SERVER_ID(tmp);
00182 if (!tkz.GetNextToken().ToULong(&tmp))
00183 return MODULE_ID();
00184 hid = MODULE_HANDLE_ID(tmp);
00185 if (!tkz.GetNextToken().ToULong(&tmp))
00186 return MODULE_ID();
00187 iid = MODULE_INSTANCE_ID(tmp);
00188 }
00189 return MODULE_ID(server, hid, iid);
00190 }
00191 };
00192
00194 const MODULE_ID MODULE_ID_NONE(SERVER_ID_NONE, MODULE_HANDLE_ID_NONE, MODULE_INSTANCE_ID_NONE);
00195
00197 class ModuleIdHash
00198 {
00199 public:
00200 ModuleIdHash() {}
00201
00202 unsigned long operator()(const MODULE_ID & k) const
00203 {
00204 return k.GetID();
00205 }
00206
00207 ModuleIdHash & operator=(const ModuleIdHash &)
00208 {
00209 return *this;
00210 }
00211 };
00212
00214 class ModuleIdEqual
00215 {
00216 public:
00217 ModuleIdEqual() {}
00218
00219 bool operator()(const MODULE_ID & a, const MODULE_ID & b) const
00220 {
00221 return a == b;
00222 }
00223
00224 ModuleIdEqual & operator=(const ModuleIdEqual &)
00225 {
00226 return *this;
00227 }
00228 };
00229 };
00230
00231
00232 #endif