54#ifndef DOXYGEN_SHOULD_SKIP_THIS
60 template <
typename GUM_ELEMENT >
62 std::string_view filename) :
64 GUM_CONSTRUCTOR(FMDPDatReader);
67 _streamName_ = filename;
70 _factory_ =
new FMDPFactory< GUM_ELEMENT >(_fmdp_);
77 _scanner_ =
new MDPDAT::Scanner(_streamName_.c_str());
78 _parser_ =
new MDPDAT::Parser(_scanner_);
79 _parser_->setFactory((AbstractFMDPFactory*)_factory_);
80 }
catch (
const IOError&) { _ioerror_ =
true; }
83 template <
typename GUM_ELEMENT >
84 FMDPDatReader< GUM_ELEMENT >::~FMDPDatReader() {
85 GUM_DESTRUCTOR(FMDPDatReader);
87 if (_parser_)
delete (_parser_);
88 if (_scanner_)
delete (_scanner_);
90 if (_factory_)
delete (_factory_);
93 template <
typename GUM_ELEMENT >
94 MDPDAT::Scanner& FMDPDatReader< GUM_ELEMENT >::scanner() {
95 if (_ioerror_) {
GUM_ERROR(gum::IOError,
"No such file " + streamName()) }
100 template <
typename GUM_ELEMENT >
101 const std::string& FMDPDatReader< GUM_ELEMENT >::streamName()
const {
105 template <
typename GUM_ELEMENT >
106 bool FMDPDatReader< GUM_ELEMENT >::trace()
const {
107 return _traceScanning_;
110 template <
typename GUM_ELEMENT >
111 void FMDPDatReader< GUM_ELEMENT >::trace(
bool b) {
113 scanner().setTrace(b);
116 template <
typename GUM_ELEMENT >
117 Size FMDPDatReader< GUM_ELEMENT >::proceed() {
118 if (_ioerror_) {
GUM_ERROR(gum::IOError,
"No such file " + streamName()) }
126 return 1 + _parser_->errors().error_count;
130 return (_parser_->errors().error_count);
135 template <
typename GUM_ELEMENT >
136 Idx FMDPDatReader< GUM_ELEMENT >::errLine(Idx i) {
137 if (_parseDone_)
return _parser_->errors().error(i).line;
141 template <
typename GUM_ELEMENT >
142 Idx FMDPDatReader< GUM_ELEMENT >::errCol(Idx i) {
143 if (_parseDone_)
return _parser_->errors().error(i).column;
147 template <
typename GUM_ELEMENT >
148 bool FMDPDatReader< GUM_ELEMENT >::errIsError(Idx i) {
149 if (_parseDone_)
return _parser_->errors().error(i).is_error;
153 template <
typename GUM_ELEMENT >
154 std::string FMDPDatReader< GUM_ELEMENT >::errMsg(Idx i) {
155 if (_parseDone_)
return _parser_->errors().error(i).msg;
159 template <
typename GUM_ELEMENT >
160 void FMDPDatReader< GUM_ELEMENT >::showElegantErrors(std::ostream& o) {
161 if (_parseDone_) _parser_->errors().elegantErrors(o);
165 template <
typename GUM_ELEMENT >
166 void FMDPDatReader< GUM_ELEMENT >::showElegantErrorsAndWarnings(std::ostream& o) {
167 if (_parseDone_) _parser_->errors().elegantErrorsAndWarnings(o);
171 template <
typename GUM_ELEMENT >
172 void FMDPDatReader< GUM_ELEMENT >::showErrorCounts(std::ostream& o) {
173 if (_parseDone_) _parser_->errors().syntheticResults(o);
177 template <
typename GUM_ELEMENT >
178 Size FMDPDatReader< GUM_ELEMENT >::errors() {
179 return (!_parseDone_) ? (Size)0 : _parser_->errors().error_count;
182 template <
typename GUM_ELEMENT >
183 Size FMDPDatReader< GUM_ELEMENT >::warnings() {
184 return (!_parseDone_) ? (Size)0 : _parser_->errors().warning_count;
Base class for all aGrUM's exceptions.
FMDPDatReader(FMDP< GUM_ELEMENT > *fmdp, std::string_view filename)
Pure virtual class for reading a FMDP from a file.
This class is used to implement factored decision process.
Exception : input/output problem.
Exception : operation not allowed.
#define GUM_ERROR(type, msg)
Definition of templatized reader of dat files for Factored Markov Decision Process.
gum is the global namespace for all aGrUM entities