ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/traits.h
Revision: 1.9
Committed: Thu Dec 21 01:33:50 2006 UTC (17 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.8: +1 -0 lines
Log Message:
- reduce map memory consumption by reserving space for only the 3 existing layers
- factorise out some functions into mapspace and object

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