ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/traits.h
Revision: 1.2
Committed: Thu Aug 31 17:54:14 2006 UTC (17 years, 8 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.1: +17 -11 lines
Log Message:
rewrote object serialiser, parser is next

File Contents

# User Rev Content
1 root 1.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 root 1.2 struct treasureliststruct;
12 root 1.1
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 root 1.2 static const data_type dt = DT_INT;
40 root 1.1 };
41    
42     template<>
43     struct cftype<sint64> {
44 root 1.2 static const data_type dt = DT_INT64;
45 root 1.1 };
46    
47     template<>
48     struct cftype<double> {
49 root 1.2 static const data_type dt = DT_DOUBLE;
50 root 1.1 };
51    
52     template<>
53     struct cftype<const char *> {
54 root 1.2 static const data_type dt = DT_STRING;
55 root 1.1 };
56    
57     template<>
58     struct cftype<object> {
59 root 1.2 static const data_type dt = DT_OBJECT;
60 root 1.1 };
61    
62     template<>
63     struct cftype<struct pl> {
64 root 1.2 static const data_type dt = DT_PLAYER;
65 root 1.1 };
66    
67     template<>
68     struct cftype<mapstruct> {
69 root 1.2 static const data_type dt = DT_MAP;
70 root 1.1 };
71    
72     template<>
73 root 1.2 struct cftype<archt> {
74     static const data_type dt = DT_ARCH;
75 root 1.1 };
76    
77     template<>
78     struct cftype<party> {
79 root 1.2 static const data_type dt = DT_PARTY;
80 root 1.1 };
81    
82     template<>
83     struct cftype<region> {
84 root 1.2 static const data_type dt = DT_REGION;
85     };
86    
87     template<>
88     struct cftype<treasureliststruct> {
89     static const data_type dt = DT_REGION;
90 root 1.1 };
91    
92     #endif
93