00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef restcgi_ctmpl_h
00023 #define restcgi_ctmpl_h
00024 #include "apidefs.h"
00025 #include "status_code_e.h"
00026 #include <string>
00027 #include <map>
00028 #ifdef _WIN32
00029 #pragma warning (disable: 4251)
00030 #endif
00031 namespace restcgi {
00032 class env;
00074 class RESTCGI_API ctmpl {
00075 public:
00076 typedef std::map<std::string, std::string> map_type;
00077
00078 ctmpl(const std::string& s, const std::string& content_type = "text/plain");
00081 std::string eval(const env& e, const map_type& map = map_type()) const;
00084 std::string eval(const map_type& map) const;
00085 const std::string& content_type() const {return content_type_;}
00086
00087 static bool find(const std::string& name, std::string& value, const env* e, const map_type& map);
00088 static const char ESCAPE_CHAR;
00089 private:
00090 std::string eval(const env* e, const map_type& map) const;
00091 std::string string_;
00092 std::string content_type_;
00093 static const char ctypes_[256];
00094 };
00096 typedef std::map<status_code_e, ctmpl> sc_ctmpls;
00097 }
00098 #endif