00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef BITFIELDTYPE_H
00020 #define BITFIELDTYPE_H
00021
00022 namespace bit {
00023
00024 typedef enum Type { TYPE_NONE, TYPE_INTEGER, TYPE_FLOATING, TYPE_ASCII, TYPE_UTF8, TYPE_BCD } Type;
00025
00026 typedef enum ByteOrder { BYTEORDER_NETWORK, BYTEORDER_BIG_ENDIAN, BYTEORDER_LITTLE_ENDIAN } ByteOrder;
00027
00028 typedef enum Sign { SIGN_UNSIGNED, SIGN_TWOS_COMPLEMENT, SIGN_ONES_COMPLEMENT, SIGN_BIT } Sign;
00029
00033 class FieldType{
00034 public:
00035
00036 FieldType(Type type=TYPE_NONE, ByteOrder byte_order=BYTEORDER_NETWORK, Sign sign=SIGN_UNSIGNED);
00037
00038 ~FieldType();
00039
00040 Type type() const;
00041 void set_type(Type);
00042 const char* type_string() const;
00043
00044 ByteOrder byte_order() const;
00045 void set_byte_order(ByteOrder);
00046 const char* byte_order_string() const;
00047
00048 Sign sign() const;
00049 void set_sign(Sign);
00050 const char* sign_string() const;
00051
00052 static const char* type_string(Type);
00053 static const char* byte_order_string(ByteOrder);
00054 static const char* sign_string(Sign);
00055
00056 protected:
00057 Type m_type;
00058 ByteOrder m_byte_order;
00059 Sign m_sign;
00060
00061 static const char* m_type_string[];
00062 static const char* m_byte_order_string[];
00063 static const char* m_sign_string[];
00064 };
00065
00066 }
00067
00068 #endif