1 |
// Represent |
2 |
// |
3 |
// Douglas Thrift |
4 |
// |
5 |
// $Id$ |
6 |
|
7 |
#include "DataType.hpp" |
8 |
|
9 |
const ext::Vector<DataType>& DataType::enumerate() |
10 |
{ |
11 |
if (enumeration.IsEmpty()) |
12 |
{ |
13 |
_for (unsigned, type, TYPE_bool, TYPE_ext_String + 1) enumeration.InsertLast(Type(type)); |
14 |
} |
15 |
|
16 |
return enumeration; |
17 |
} |
18 |
|
19 |
ext::Vector<DataType> DataType::enumeration; |
20 |
|
21 |
DataType& DataType::operator=(const ext::String& string) |
22 |
{ |
23 |
if (enumeration.IsEmpty()) enumerate(); |
24 |
|
25 |
ext::Vector<DataType>::ConstIterator found(ext::FindFirstAll(enumeration, string)); |
26 |
|
27 |
if (found != enumeration.End()) type = *found; |
28 |
|
29 |
return *this; |
30 |
} |
31 |
|
32 |
DataType::operator ext::String() const |
33 |
{ |
34 |
switch (type) |
35 |
{ |
36 |
default: |
37 |
return "bool"; |
38 |
case TYPE_char: |
39 |
return "char"; |
40 |
case TYPE_short: |
41 |
return "short"; |
42 |
case TYPE_unsigned_short: |
43 |
return "unsigned short"; |
44 |
case TYPE_int: |
45 |
return "int"; |
46 |
case TYPE_unsigned_int: |
47 |
return "unsigned int"; |
48 |
case TYPE_long: |
49 |
return "long"; |
50 |
case TYPE_unsigned_long: |
51 |
return "unsigned long"; |
52 |
case TYPE_float: |
53 |
return "float"; |
54 |
case TYPE_double: |
55 |
return "double"; |
56 |
case TYPE_std_string: |
57 |
return "std::string"; |
58 |
case TYPE_ext_String: |
59 |
return "ext::String"; |
60 |
} |
61 |
} |