ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/traits.h
Revision: 1.4
Committed: Sat Sep 16 22:24:12 2006 UTC (17 years, 8 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.3: +17 -18 lines
Log Message:
mapstruct => maptile
removed many ytypedefs in favor of structure tags

File Contents

# Content
1 #ifndef TRAITS_H__
2 #define TRAITS_H__
3
4 struct player;
5 struct object;
6 struct maptile;
7 struct archetype;
8 struct region;
9 struct party;
10 struct treasurelist;
11
12 // could have used templates, but a more traditional C api
13 // uses more explicit typing which is ok for this purpose.
14 enum data_type
15 {
16 DT_END, // no further arguments
17 DT_AV, // perl-only av that needs to be flattened out
18 DT_INT,
19 DT_INT64,
20 DT_DOUBLE,
21 DT_STRING, // 0-terminated string
22 DT_DATA, // string + length
23 DT_OBJECT,
24 DT_MAP,
25 DT_PLAYER,
26 DT_ARCH,
27 DT_PARTY,
28 DT_REGION,
29
30 NUM_DATA_TYPES
31 };
32
33 template<typename T>
34 struct cftype { };
35
36 template<>
37 struct cftype<int> {
38 static const data_type dt = DT_INT;
39 };
40
41 template<>
42 struct cftype<sint64> {
43 static const data_type dt = DT_INT64;
44 };
45
46 template<>
47 struct cftype<double> {
48 static const data_type dt = DT_DOUBLE;
49 };
50
51 template<>
52 struct cftype<const char *> {
53 static const data_type dt = DT_STRING;
54 };
55
56 template<>
57 struct cftype<object> {
58 static const data_type dt = DT_OBJECT;
59 };
60
61 template<>
62 struct cftype<player> {
63 static const data_type dt = DT_PLAYER;
64 };
65
66 template<>
67 struct cftype<maptile> {
68 static const data_type dt = DT_MAP;
69 };
70
71 template<>
72 struct cftype<archetype> {
73 static const data_type dt = DT_ARCH;
74 };
75
76 template<>
77 struct cftype<party> {
78 static const data_type dt = DT_PARTY;
79 };
80
81 template<>
82 struct cftype<region> {
83 static const data_type dt = DT_REGION;
84 };
85
86 template<>
87 struct cftype<treasurelist> {
88 static const data_type dt = DT_REGION;
89 };
90
91 #endif
92