My Project
 
Loading...
Searching...
No Matches
typedefine.h
Go to the documentation of this file.
1#pragma once
2
3#include <map>
4#include <list>
5#include <set>
6#include <string>
7
8typedef std::string String;
9typedef bool boolean;
10
11// 与boost中某些final定义冲突
12//#define final const
13#define null NULL
14
15template<class T>
16class HashSet :public std::set<T>{
17public:
18 bool contains(T t){
19 return this->find(t) != this->end();
20 }
21 void add(T t){
22 this->insert(t);
23 }
24 void remove(T t){
25 iterator itr = this->find(t);
26 if (itr != this->end()){
27 this->erase(itr);
28 }
29 }
30};
31
32template<class T>
33class List :public std::list<T>{
34public:
35 bool contains(T t){
36 return std::find(this->begin(), this->end(), t) != this->end();
37 }
38};
39
40template<class K, class V>
41class HashMap :public std::map<K, V>{
42public:
43 bool containsKey(const K& k){
44 return this->find(k) != this->end();
45 }
46 V get(const K& k){
47 return this->operator[](k);
48 }
49 std::list<V> values(){
50 std::list<V> re;
51 for (iterator itr = this->begin(); itr != this->end(); itr++){
52 re.push_back(itr->second);
53 }
54 return re;
55 }
56};
57
58template<class T>
59class ArrayList :public std::list<T>{
60public:
61 bool contains(T t){
62 return std::find(this->begin(), this->end(), t) != this->end();
63 }
64 void add(T t){
65 this->push_back(t);
66 }
67};
68
69class Object{
70public:
71 virtual std::string getObject() = 0;
72};
73
74#define CLASSOBJECT(name) virtual std::string getObject() { return #name;}
75#define CLASSNAME(name) virtual std::string getClassName() { return #name;}
76
77#define __FACTORY__(name, cls) \
78class Factory##name{ \
79public:\
80 static cls* Create(const std::string& clsName)\
81 {\
82 return facs[clsName]->Create();\
83 }\
84protected:\
85 virtual cls* Create() = 0; \
86 static std::map<std::string, Factory##name*> facs;\
87};
88
89#define FACTORY(name) __FACTORY__(name, name)
90
91#define FACTORYIMPL(name) std::map<std::string, Factory##name*> Factory##name::facs;
92
93#define REFLECT(name, clsName, type) \
94class Factory##type##name:public Factory##type{ \
95public: \
96 Factory##type##name(){\
97 facs.insert(std::make_pair(#name, this)); \
98 }\
99protected:\
100 virtual clsName* Create(){\
101 return new clsName(); \
102 }\
103}; \
104namespace{ Factory##type##name reg##name; }
105
106//#define REFLECTBUFF(name) REFLECT(name, name, Buff)
107//#define REFLECTBUFF2(name, clsName) REFLECT(name, clsName, Buff)
108//#define REFLECTBLOB(name) REFLECT(name, name, Blob)
109//#define REFLECTITEM(name) REFLECT(name, name, Item)
110//#define REFLECMOB(name) REFLECT(name, name, Mob)
111//#define REFLECTGLYPH(name) REFLECT(name, name, Glyph)
112
113#define REFLECTBUFF(name)
114#define REFLECTBUFF2(name, clsName)
115#define REFLECTBLOB(name)
116#define REFLECTITEM(name)
117#define REFLECMOB(name)
118#define REFLECTGLYPH(name)
119
120#define RECYCLE(var, parent, cls) \
121 var = (cls*)(parent)->recycle(#cls);\
122 if (var == NULL) \
123 { \
124 var = new cls(); \
125 (parent)->add(var); \
126 }
127
128#define RECYCLE2(var, parent, cls) \
129 cls* var = (cls*)(parent)->recycle(#cls); \
130 if (var == NULL) \
131 { \
132 var = new cls(); \
133 (parent)->add(var); \
134 }
Definition typedefine.h:59
void add(T t)
Definition typedefine.h:64
bool contains(T t)
Definition typedefine.h:61
Definition typedefine.h:41
std::list< V > values()
Definition typedefine.h:49
bool containsKey(const K &k)
Definition typedefine.h:43
V get(const K &k)
Definition typedefine.h:46
Definition typedefine.h:16
bool contains(T t)
Definition typedefine.h:18
void remove(T t)
Definition typedefine.h:24
void add(T t)
Definition typedefine.h:21
Definition typedefine.h:33
bool contains(T t)
Definition typedefine.h:35
Definition typedefine.h:69
virtual std::string getObject()=0
bool boolean
Definition typedefine.h:9
std::string String
Definition typedefine.h:8