ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/traits.h
Revision: 1.5
Committed: Thu Dec 14 05:09:32 2006 UTC (17 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.4: +7 -0 lines
Log Message:
- remove some old socket mode cruft
- preliminarily added attachable client_socket interface to perl
  (untested but also unreachable from perl code atm)

File Contents

# Content
1 #ifndef TRAITS_H__
2 #define TRAITS_H__
3
4 struct client_socket;
5 struct player;
6 struct object;
7 struct maptile;
8 struct archetype;
9 struct region;
10 struct party;
11 struct treasurelist;
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_SOCKET,
27 DT_PLAYER,
28 DT_ARCH,
29 DT_PARTY,
30 DT_REGION,
31
32 NUM_DATA_TYPES
33 };
34
35 template<typename T>
36 struct cftype { };
37
38 template<>
39 struct cftype<int> {
40 static const data_type dt = DT_INT;
41 };
42
43 template<>
44 struct cftype<sint64> {
45 static const data_type dt = DT_INT64;
46 };
47
48 template<>
49 struct cftype<double> {
50 static const data_type dt = DT_DOUBLE;
51 };
52
53 template<>
54 struct cftype<const char *> {
55 static const data_type dt = DT_STRING;
56 };
57
58 template<>
59 struct cftype<object> {
60 static const data_type dt = DT_OBJECT;
61 };
62
63 template<>
64 struct cftype<client_socket> {
65 static const data_type dt = DT_SOCKET;
66 };
67
68 template<>
69 struct cftype<player> {
70 static const data_type dt = DT_PLAYER;
71 };
72
73 template<>
74 struct cftype<maptile> {
75 static const data_type dt = DT_MAP;
76 };
77
78 template<>
79 struct cftype<archetype> {
80 static const data_type dt = DT_ARCH;
81 };
82
83 template<>
84 struct cftype<party> {
85 static const data_type dt = DT_PARTY;
86 };
87
88 template<>
89 struct cftype<region> {
90 static const data_type dt = DT_REGION;
91 };
92
93 template<>
94 struct cftype<treasurelist> {
95 static const data_type dt = DT_REGION;
96 };
97
98 #endif
99