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

# User Rev Content
1 root 1.1 #ifndef TRAITS_H__
2     #define TRAITS_H__
3    
4 root 1.4 struct player;
5 root 1.1 struct object;
6 root 1.4 struct maptile;
7 root 1.3 struct archetype;
8 root 1.1 struct region;
9     struct party;
10 root 1.4 struct treasurelist;
11 root 1.1
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 root 1.4 static const data_type dt = DT_INT;
39 root 1.1 };
40    
41     template<>
42     struct cftype<sint64> {
43 root 1.4 static const data_type dt = DT_INT64;
44 root 1.1 };
45    
46     template<>
47     struct cftype<double> {
48 root 1.4 static const data_type dt = DT_DOUBLE;
49 root 1.1 };
50    
51     template<>
52     struct cftype<const char *> {
53 root 1.4 static const data_type dt = DT_STRING;
54 root 1.1 };
55    
56     template<>
57     struct cftype<object> {
58 root 1.4 static const data_type dt = DT_OBJECT;
59 root 1.1 };
60    
61     template<>
62 root 1.4 struct cftype<player> {
63     static const data_type dt = DT_PLAYER;
64 root 1.1 };
65    
66     template<>
67 root 1.4 struct cftype<maptile> {
68     static const data_type dt = DT_MAP;
69 root 1.1 };
70    
71     template<>
72 root 1.3 struct cftype<archetype> {
73 root 1.4 static const data_type dt = DT_ARCH;
74 root 1.1 };
75    
76     template<>
77     struct cftype<party> {
78 root 1.4 static const data_type dt = DT_PARTY;
79 root 1.1 };
80    
81     template<>
82     struct cftype<region> {
83 root 1.4 static const data_type dt = DT_REGION;
84 root 1.2 };
85    
86     template<>
87 root 1.4 struct cftype<treasurelist> {
88     static const data_type dt = DT_REGION;
89 root 1.1 };
90    
91     #endif
92