]> git.stg.codes - stg.git/blobdiff - stglibs/srvconf.lib/parsers/get_container.h
Added parser factories.
[stg.git] / stglibs / srvconf.lib / parsers / get_container.h
index 31bb425032ad892ef63cb33e9f7a79e0bc825fb4..cbfd1eaddc32afb61cbefee8b328a00e91847a5d 100644 (file)
@@ -25,6 +25,8 @@
 
 #include <string>
 
 
 #include <string>
 
+#include <strings.h>
+
 namespace STG
 {
 namespace GET_CONTAINER
 namespace STG
 {
 namespace GET_CONTAINER
@@ -36,9 +38,9 @@ class PARSER: public STG::PARSER
 public:
     typedef std::vector<typename ELEMENT_PARSER::INFO> INFO;
     typedef void (* CALLBACK)(bool result, const std::string & reason, const INFO & info, void * data);
 public:
     typedef std::vector<typename ELEMENT_PARSER::INFO> INFO;
     typedef void (* CALLBACK)(bool result, const std::string & reason, const INFO & info, void * data);
-    PARSER(const std::string & t, CALLBACK f, void * d)
-        : tag(t), callback(f), data(d),
-          elementParser(&PARSER<ELEMENT_PARSER>::ElementCallback, this),
+    PARSER(const std::string & t, CALLBACK f, void * d, const std::string & e)
+        : tag(t), callback(f), data(d), encoding(e),
+          elementParser(&PARSER<ELEMENT_PARSER>::ElementCallback, this, e),
           depth(0), parsingAnswer(false)
     {}
     int  ParseStart(const char * el, const char ** attr)
           depth(0), parsingAnswer(false)
     {}
     int  ParseStart(const char * el, const char ** attr)
@@ -67,11 +69,13 @@ public:
         parsingAnswer = false;
         }
     }
         parsingAnswer = false;
         }
     }
+    void Failure(const std::string & reason) { callback(false, reason, info, data); }
 
 private:
     std::string tag;
     CALLBACK callback;
     void * data;
 
 private:
     std::string tag;
     CALLBACK callback;
     void * data;
+    std::string encoding;
     ELEMENT_PARSER elementParser;
     INFO info;
     int depth;
     ELEMENT_PARSER elementParser;
     INFO info;
     int depth;