ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/traits.h
Revision: 1.1
Committed: Thu Aug 31 09:19:34 2006 UTC (17 years, 8 months ago) by root
Content type: text/plain
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

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