PolyBoRi
|
00001 // -*- c++ -*- 00002 //***************************************************************************** 00033 //***************************************************************************** 00034 00035 // include basic definitions 00036 #include "pbori_defs.h" 00037 00038 // get standard string capability 00039 #include <string> 00040 00041 // get literal codes (enumeration) 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