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

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