Go to the documentation of this file.00001
00002
00033
00034
00035
00036 #include "pbori_defs.h"
00037
00038
00039 #include <string>
00040
00041
00042 #include "CLiteralCodes.h"
00043
00044 #ifndef CStringLiteral_h_
00045 #define CStringLiteral_h_
00046
00047 BEGIN_NAMESPACE_PBORI
00048
00054 template <unsigned LitCode = CLiteralCodes::first_code>
00055 class CStringLiteral {
00056 public:
00057
00059 typedef std::string literal_type;
00060
00062 CStringLiteral() {};
00063
00065 ~CStringLiteral() {};
00066
00068 literal_type operator()() const;
00069 };
00070
00071
00072 #define GENERATE_CSTRINGLITERAL(CODE, STRING) \
00073 template <> inline CStringLiteral<>::literal_type \
00074 CStringLiteral<CLiteralCodes::CODE>::operator()() const{ return STRING; }
00075
00076 GENERATE_CSTRINGLITERAL(empty, "")
00077 GENERATE_CSTRINGLITERAL(space, " ")
00078 GENERATE_CSTRINGLITERAL(plus, "+")
00079 GENERATE_CSTRINGLITERAL(term_separator, " + ")
00080 GENERATE_CSTRINGLITERAL(times, "*")
00081 GENERATE_CSTRINGLITERAL(comma, ",")
00082 GENERATE_CSTRINGLITERAL(list_separator, ", ")
00083 GENERATE_CSTRINGLITERAL(default_variable_name, "x")
00084 GENERATE_CSTRINGLITERAL(variable_head, "(")
00085 GENERATE_CSTRINGLITERAL(variable_tail, ")")
00086 GENERATE_CSTRINGLITERAL(between_list_separator, "}, {")
00087
00088 #undef GENERATE_CSTRINGLITERAL
00089
00090 END_NAMESPACE_PBORI
00091
00092 #endif