ZFFramework
 
Loading...
Searching...
No Matches
ZFNamespace.h
Go to the documentation of this file.
1
5#ifndef _ZFI_ZFNamespace_h_
6#define _ZFI_ZFNamespace_h_
7
8#include "ZFCoreEnvDef.h"
9
10// ============================================================
11class ZFLIB_ZFCore _ZFP_ZFNamespaceHolder {
12public:
13 _ZFP_ZFNamespaceHolder(const char *parent, const char *child);
14 ~_ZFP_ZFNamespaceHolder(void);
15public:
16 const char *ns(void) const {
17 return _ns;
18 }
19private:
20 const char *_ns;
21};
22
40#define ZF_NAMESPACE_BEGIN(NameSpace) \
41 namespace NameSpace { \
42 template<typename T> \
43 const char *_ZFP_ZF_NAMESPACE_NOT_REGISTERED(void);
44
48#define ZF_NAMESPACE_BEGIN_REGISTER(NameSpace, ParentNameSpace) \
49 \
50 namespace NameSpace { \
51 template<typename T> \
52 const char *_ZFP_ZF_NAMESPACE_NOT_REGISTERED(void) { \
53 static _ZFP_ZFNamespaceHolder d(ParentNameSpace::_ZFP_ZF_NAMESPACE_NOT_REGISTERED<T>(), #NameSpace); \
54 return d.ns(); \
55 }
56
60#define ZF_NAMESPACE_END(NameSpace) \
61 }
62
66#define ZF_NAMESPACE_USE(NameSpace) \
67 using namespace NameSpace;
68
72#define ZF_NAMESPACE_GLOBAL_ID ZF
76#define ZF_NAMESPACE_GLOBAL_NAME ZFM_TOSTRING(ZF_NAMESPACE_GLOBAL_ID)
80#define ZF_NAMESPACE_GLOBAL_ABBR_ID zf
84#define ZF_NAMESPACE_GLOBAL_ABBR_NAME ZFM_TOSTRING(ZF_NAMESPACE_GLOBAL_ABBR_ID)
95#if !ZF_ENV_NAMESPACE_GLOBAL_DISABLE
96 #define ZF_NAMESPACE_GLOBAL ZF_NAMESPACE_GLOBAL_ID
97 #define ZF_NAMESPACE_GLOBAL_BEGIN ZF_NAMESPACE_BEGIN(ZF_NAMESPACE_GLOBAL)
98 #define ZF_NAMESPACE_GLOBAL_END ZF_NAMESPACE_END(ZF_NAMESPACE_GLOBAL)
99 #define ZF_NAMESPACE_GLOBAL_USE ZF_NAMESPACE_USE(ZF_NAMESPACE_GLOBAL)
100#else
101 #define ZF_NAMESPACE_GLOBAL
102 #define ZF_NAMESPACE_GLOBAL_BEGIN
103 #define ZF_NAMESPACE_GLOBAL_END
104 #define ZF_NAMESPACE_GLOBAL_USE
105#endif
106
108 template<typename T>
109 const char *_ZFP_ZF_NAMESPACE_NOT_REGISTERED(void) {
110 return 0;
111 }
114
115#endif // #ifndef _ZFI_ZFNamespace_h_
116
used to define the env used by ZFFramework
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_USE
use namespace ZFFramework
Definition ZFNamespace.h:99
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98