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

# Content
1 #ifndef TRAITS_H__
2 #define TRAITS_H__
3
4 struct client_container;
5 struct client;
6 struct player;
7 struct object;
8 struct maptile;
9 struct mapspace;
10 struct archetype;
11 struct region;
12 struct party;
13 struct treasurelist;
14
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 DT_CLIENT,
29 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 static const data_type dt = DT_INT;
43 };
44
45 template<>
46 struct cftype<sint64> {
47 static const data_type dt = DT_INT64;
48 };
49
50 template<>
51 struct cftype<double> {
52 static const data_type dt = DT_DOUBLE;
53 };
54
55 template<>
56 struct cftype<const char *> {
57 static const data_type dt = DT_STRING;
58 };
59
60 template<>
61 struct cftype<object> {
62 static const data_type dt = DT_OBJECT;
63 };
64
65 template<>
66 struct cftype<client> {
67 static const data_type dt = DT_CLIENT;
68 };
69
70 template<>
71 struct cftype<player> {
72 static const data_type dt = DT_PLAYER;
73 };
74
75 template<>
76 struct cftype<maptile> {
77 static const data_type dt = DT_MAP;
78 };
79
80 template<>
81 struct cftype<archetype> {
82 static const data_type dt = DT_ARCH;
83 };
84
85 template<>
86 struct cftype<party> {
87 static const data_type dt = DT_PARTY;
88 };
89
90 template<>
91 struct cftype<region> {
92 static const data_type dt = DT_REGION;
93 };
94
95 template<>
96 struct cftype<treasurelist> {
97 static const data_type dt = DT_REGION;
98 };
99
100 #endif
101