17 #pragma warning(disable: 4661)
22 #define IMPLEMENT_GLOBAL(base, name) \
23 template<> base * GlobalBase< base >::globPtr = 0; \
24 template<> size_t GlobalBase< base >::usage_count = 0; \
25 template<> const char * GlobalBase< base >::m_globalName = name;
27 #define IMPLEMENT_NAMED_GLOBAL(base, name) \
28 template<> base * nGlobalBase< base, name>::globPtr = 0; \
29 template<> size_t nGlobalBase< base, name>::usage_count = 0;
38 static unsigned int systemID;
39 static unsigned int productInfo;
41 void static Init(
void);
45 return (systemID & LWSYS_TYPEBITS);
51 #define LWSYS_NEW_SERIALBITS 0x0000FFFF // redefine, this seems to be a bug in the SDK ... or modeler
58 return (
Context() == LWSYS_LAYOUT);
63 return (
Context() == LWSYS_MODELER);
68 return (
Context() == LWSYS_SCREAMERNET);
73 return LWINF_GETMAJOR(productInfo);
78 return LWINF_GETMINOR(productInfo);
84 return LWINF_GETBUILD(productInfo);
87 static bool isAtLeast(
const unsigned int major,
const unsigned int minor)
89 if (major <
Major())
return true;
90 if (major >
Major())
return false;
91 if (minor <=
Minor())
return true;
94 static bool is(
const unsigned int major,
const unsigned int minor)
96 return (major ==
Major()) && (minor ==
Minor());
99 static bool isAtLeast(
const unsigned int major,
const unsigned int minor,
const unsigned build)
103 return (build >=
Build());
127 static const char *m_globalName;
128 static size_t usage_count;
133 return (
globPtr = reinterpret_cast<G *> (
SuperGlobal(m_globalName, GFUSE_ACQUIRE))) != 0;
159 if (usage_count == 0)
185 template<
typename G, const
char *globalName>
189 static size_t usage_count;
214 if (usage_count == 0)
250 return static_cast<T *
> (
SuperGlobal(globalName, GFUSE_TRANSIENT));
260 const char *
ID(LWMemChunk chunk) {
return globPtr->ID(chunk);}
268 return static_cast<T *
>(
globPtr->find(ID));
273 return static_cast<T *
>(
globPtr->create(ID,
sizeof(T)));
296 bool Get(
const char *
ID, T*& type, T& defaultVal)
301 if (type)
return true;
302 type = Create<T>(
ID);
317 const char *
getPath(std::string server_class, std::string server_name)
319 if (
available())
return globPtr->path(server_class.c_str(), server_name.c_str());
339 const char* (*path) (
const char* server_class,
const char* server_name);
340 const char** (*list) (
const char* server_class);
347 const char *
getPath(std::string server_class, std::string server_name)
352 std::vector<std::string>
getList (std::string server_class)
354 std::vector<std::string> pList;
355 const char **plugList =
globPtr->
list(server_class.c_str());
361 pList.push_back(plugList[i]);
371 #endif // LWPP_GLOBAL