00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __CLASSAD_XMLSOURCE_H__
00022 #define __CLASSAD_XMLSOURCE_H__
00023
00024 #include "classad/xmlLexer.h"
00025
00026 BEGIN_NAMESPACE( classad )
00027
00028 class ClassAd;
00029
00030 class ClassAdXMLParser
00031 {
00032 public:
00033 ClassAdXMLParser();
00034 ~ClassAdXMLParser();
00035 ClassAd *ParseClassAd(const std::string &buffer);
00036 ClassAd *ParseClassAd(const std::string &buffer, int &offset);
00037 ClassAd *ParseClassAd(FILE *file);
00038 ClassAd *ParseClassAd(std::istream& stream);
00039 bool ParseClassAd(const std::string &buffer, ClassAd &ad, int &offset);
00040 bool ParseClassAd(const std::string &buffer, ClassAd &ad);
00041 bool ParseClassAd(FILE *file, ClassAd &ad);
00042 bool ParseClassAd(std::istream& stream, ClassAd &ad);
00043 private:
00044
00045
00046
00047
00048 ClassAdXMLParser(const ClassAdXMLParser &) { return; }
00049 ClassAdXMLParser &operator=(const ClassAdXMLParser &) { return *this; }
00050
00051 ClassAd *ParseClassAd(void);
00052 ExprTree *ParseAttribute(std::string &attribute_name);
00053 ExprTree *ParseThing(void);
00054 ExprTree *ParseList(void);
00055 ExprTree *ParseNumberOrString(XMLLexer::TagID tag_id);
00056 ExprTree *ParseBool(void);
00057 ExprTree *ParseUndefinedOrError(XMLLexer::TagID tag_id);
00058 ExprTree *ParseAbsTime(void);
00059 ExprTree *ParseRelTime(void);
00060 ExprTree *ParseExpr(void);
00061 void SwallowEndTag(XMLLexer::TagID tag_id);
00062
00063 XMLLexer lexer;
00064 };
00065
00066 END_NAMESPACE
00067
00068 #endif//__CLASSAD_XMLSOURCE_H__