00001 00002 00003 00004 00005 #ifndef _TYPES_H 00006 #define _TYPES_H 00007 00008 #include <map> 00009 #include <string> 00010 #include <boost/smart_ptr.hpp> 00011 #include <boost/random.hpp> 00012 00013 #if defined _WIN32 00014 # include "Windows.h" 00015 # if defined GetMessage 00016 # undef GetMessage 00017 # endif 00018 #else 00019 // [aondi 04/21/2009] TODO: include proper header for Linux 00020 #endif 00021 00024 namespace YansCoreNS 00025 { 00026 #if defined _WIN32 00027 typedef HMODULE SysModule; 00028 #else 00029 // [aondi 04/21/2009] TODO: define SysModule for Linux 00030 #endif 00031 00034 typedef boost::mt19937 RandomNumberGenerator; 00035 00038 typedef uint32_t RngSeed; 00039 00042 typedef double Time; 00043 } 00044 namespace TopologyNS 00045 { 00048 typedef std::string UID; 00049 00052 typedef unsigned short HopCount; 00053 } 00054 namespace NodeNS 00055 { 00064 typedef size_t IPAddress; 00065 00069 typedef unsigned short Port; 00070 } 00071 00072 namespace YansCoreNS 00073 { 00076 enum VarType 00077 { 00078 VT_Unknown, 00079 VT_Import, 00080 VT_Def, 00081 VT_Str, 00082 VT_Int, 00083 VT_UInt, 00084 VT_Double 00085 }; 00086 00087 typedef long VT_IntT; 00088 typedef size_t VT_UIntT; 00089 typedef double VT_DoubleT; 00090 typedef std::string VT_StrT; 00091 00095 struct VarVal 00096 { 00101 struct VarVal_Base 00102 { 00105 virtual ~VarVal_Base (void) 00106 { 00107 } 00108 00111 virtual operator VT_IntT (void) const = 0; 00112 00115 virtual operator VT_UIntT (void) const = 0; 00116 00119 virtual operator VT_DoubleT (void) const = 0; 00120 00123 virtual operator VT_StrT (void) const = 0; 00124 }; 00125 00128 VarVal (void); 00129 00133 // NOTE: non-explicit 00134 VarVal (VT_DoubleT d); 00135 00139 // NOTE: non-explicit 00140 VarVal (VT_IntT i); 00141 00145 // NOTE: non-explicit 00146 VarVal (VT_UIntT i); 00147 00151 // NOTE: non-excplicit 00152 VarVal (VT_StrT str); 00153 00154 boost::shared_ptr<VarVal_Base> val; 00155 }; 00156 00160 // <name, type, value> tuple 00161 typedef std::map<std::string, std::pair<VarType, VarVal> > VariableTable; 00162 00166 struct VersionInfo 00167 { 00168 size_t release; 00169 size_t major; 00170 size_t minor; 00171 }; 00172 } 00173 00174 #endif /* _TYPES_H */ 00175