ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/traits.h
Revision: 1.8
Committed: Wed Dec 20 09:14:22 2006 UTC (17 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.7: +1 -0 lines
Log Message:
- minor cleanups
- minor optimisations (in_player vs. is_player_inv)
- added P_PLAYER map flag
- some (dead) concept code

File Contents

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