00001 #ifndef PythonParseTree_h 00002 #define PythonParseTree_h 00003 00004 #include <string> 00005 #include <boost/python.hpp> 00006 #include "FWCore/ParameterSet/interface/ParseTree.h" 00007 #include "FWCore/Utilities/interface/EDMException.h" 00008 00009 class PythonParseTree 00010 { 00011 public: 00012 PythonParseTree(const std::string & filename); 00013 00015 boost::python::list modules() const; 00016 00018 boost::python::list modulesOfType(const std::string & type) const; 00019 00020 boost::python::list outputModules() const; 00021 00023 void process(); 00024 00026 void replaceValue(const std::string & dotDelimitedNode, 00027 const std::string & value); 00028 00030 void replaceValues(const std::string & dotDelimitedNode, 00031 boost::python::list & values); 00032 00033 void dump(const std::string & dotDelimitedNode) const; 00034 00035 std::string typeOf(const std::string & dotDelimitedNode) const; 00036 00038 std::string value(const std::string & dotDelimitedNode) const; 00039 00041 boost::python::list values(const std::string & dotDelimitedNode) const; 00042 00044 boost::python::list children(const std::string & dotDelimitedNode) const; 00045 00047 std::string dumpTree() const; 00048 00050 static void exceptionTranslator(const edm::Exception & e); 00051 00052 private: 00053 00054 edm::pset::ParseTree theTree; 00055 00056 }; 00057 00058 #endif 00059