• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

CStringLiteral.h

Go to the documentation of this file.
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

Generated on Thu Feb 10 2011 for PolyBoRi by  doxygen 1.7.1