00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00023 #ifndef _ELEMENT_PARSER
00024 #define _ELEMENT_PARSER
00025 #include<sstream>
00026 #include "helper_funs.h"
00027
00034 template<typename P>
00035 class element_parser {};
00036
00041 template<>
00042 class element_parser<int>
00043 {
00044
00045 public:
00046
00047 typedef int OBJ_T;
00048 typedef int HASH_TYPE;
00049 typedef eqint COMP_FUNC;
00050
00056 static inline OBJ_T parse_element(char* word) {
00057 return atoi(word);
00058 }
00059
00060 static const OBJ_T& convert(const int& i) {
00061
00062 return i;
00063 }
00064
00065 static bool notEq(const int& i1, const int& i2) {
00066 return !(i1 == i2);
00067 }
00068
00069 static const HASH_TYPE& conv_hash_type(const OBJ_T& s) {
00070 return s;
00071 }
00072
00073
00074 };
00075
00079 template<>
00080 class element_parser<std::string>
00081 {
00082
00083 public:
00084
00085 typedef std::string OBJ_T;
00086 typedef const char* HASH_TYPE;
00087 typedef eqstr COMP_FUNC;
00088
00094 static inline OBJ_T parse_element(const char* word) {
00095 return std::string(word);
00096 }
00097
00098 static OBJ_T convert(const char* s) {
00099 return parse_element(s);
00100 }
00101
00102 static OBJ_T convert(const int i) {
00103 std::ostringstream t_ss;
00104 t_ss << i;
00105
00106 return t_ss.str();
00107 }
00108
00109 static bool notEq(const std::string s1, const std::string s2) {
00110 return !(s1 == s2);
00111 }
00112
00113 static HASH_TYPE conv_hash_type(const OBJ_T& s) {
00114 return s.c_str();
00115 }
00116
00117 };
00118
00119 #endif