ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/traits.h
Revision: 1.3
Committed: Fri Sep 8 16:53:57 2006 UTC (17 years, 8 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.2: +2 -2 lines
Log Message:
archt => archetype

File Contents

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