30 #ifndef GUM_PRM_O3PRM_O3PRM_FACTORY_H 31 #define GUM_PRM_O3PRM_O3PRM_FACTORY_H 40 #include <agrum/PRM/PRM.h> 41 #include <agrum/PRM/o3prm/O3ClassFactory.h> 42 #include <agrum/PRM/o3prm/O3InterfaceFactory.h> 43 #include <agrum/PRM/o3prm/O3NameSolver.h> 44 #include <agrum/PRM/o3prm/O3SystemFactory.h> 45 #include <agrum/PRM/o3prm/O3TypeFactory.h> 46 #include <agrum/PRM/o3prm/O3prm.h> 47 #include <agrum/PRM/o3prm/cocoR/Parser.h> 48 #include <agrum/PRM/o3prm/cocoR/Scanner.h> 49 #include <agrum/agrum.h> 50 #include <agrum/tools/core/errorsContainer.h> 51 #include <agrum/tools/core/utils_string.h> 67 template <
typename GUM_SCALAR >
71 explicit O3prmReader(PRM< GUM_SCALAR >& prm);
72 O3prmReader(
const O3prmReader& src);
73 O3prmReader(O3prmReader&& src);
75 O3prmReader& operator=(
const O3prmReader& src);
76 O3prmReader& operator=(O3prmReader&& src);
80 Size readFile(
const std::string& file,
const std::string& module =
"");
84 Size readString(
const std::string& string);
86 void parseStream(std::istream& input,
88 std::string module =
"");
97 void setClassPath(
const std::string& class_path);
107 void addClassPath(
const std::string& class_path);
109 gum::prm::PRM< GUM_SCALAR >* prm() {
return prm__; }
110 const gum::prm::PRM< GUM_SCALAR >* prm()
const {
return prm__; }
118 Size warnings()
const;
121 const ErrorsContainer& errorsContainer()
const;
124 Idx errLine(Idx i)
const;
126 Idx errCol(Idx i)
const;
128 std::wstring errFilename(Idx i)
const;
130 bool errIsError(Idx i)
const;
132 std::string errMsg(Idx i)
const;
135 void showElegantErrors(std::ostream& o = std::cerr)
const;
138 void showElegantErrorsAndWarnings(std::ostream& o = std::cerr)
const;
141 void showErrorCounts(std::ostream& o = std::cerr)
const;
145 PRM< GUM_SCALAR >* prm__;
146 std::unique_ptr< O3PRM > o3_prm__;
147 std::vector< std::string > class_path__;
148 Set< std::string > imported__;
151 ErrorsContainer errors__;
153 void readStream__(std::istream& input,
154 const std::string& file,
155 std::string module =
"");
157 void parseImport__(
const O3Import& i,
const std::string& module_path);
159 void parseStream__(std::istream& input,
160 const std::string& filename,
161 const std::string& module);
163 std::vector<
const O3Import* > copyImports__();
165 std::string clean__(std::string text)
const;
166 std::string print__(
const ParseError& err)
const;
167 std::string readStream__(std::istream& input);
175 #include <agrum/PRM/o3prm/O3prmReader_tpl.h> 178 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 179 extern template class gum::prm::o3prm::O3prmReader<
double >;