Back to index

nordugrid-arc-nox  1.1.0~rc6
XRSLParser.h
Go to the documentation of this file.
00001 // -*- indent-tabs-mode: nil -*-
00002 
00003 #ifndef __ARC_XRSLPARSER_H__
00004 #define __ARC_XRSLPARSER_H__
00005 
00006 #include <list>
00007 #include <string>
00008 
00009 #include "JobDescriptionParser.h"
00010 
00017 namespace Arc {
00018 
00019   class RSL;
00020   class RSLCondition;
00021 
00022   class XRSLParser
00023     : public JobDescriptionParser {
00024   public:
00025     XRSLParser();
00026     ~XRSLParser();
00027     JobDescription Parse(const std::string& source) const;
00028     std::string UnParse(const JobDescription& job) const;
00029   private:
00030     bool Parse(const RSL *r, JobDescription& job) const;
00031     static bool SingleValue(const RSLCondition *c,
00032                             std::string& value);
00033     static bool ListValue(const RSLCondition *c,
00034                           std::list<std::string>& value);
00035     static bool SeqListValue(const RSLCondition *c,
00036                              std::list<std::list<std::string> >& value,
00037                              int seqlength = -1);
00038     static bool cached;
00039   };
00040 
00041 } // namespace Arc
00042 
00043 #endif // __ARC_XRSLPARSER_H__