52#ifndef DOXYGEN_SHOULD_SKIP_THIS
58 template <
typename GUM_SCALAR >
60 const std::string& filename) :
62 GUM_CONSTRUCTOR(FMDPDatReader);
65 _streamName_ = filename;
68 _factory_ =
new FMDPFactory< GUM_SCALAR >(_fmdp_);
73 _scanner_ =
new MDPDAT::Scanner(_streamName_.c_str());
74 _parser_ =
new MDPDAT::Parser(_scanner_);
75 _parser_->setFactory((AbstractFMDPFactory*)_factory_);
76 }
catch (
const IOError&) { _ioerror_ =
true; }
79 template <
typename GUM_SCALAR >
80 FMDPDatReader< GUM_SCALAR >::~FMDPDatReader() {
81 GUM_DESTRUCTOR(FMDPDatReader);
85 if (_parser_)
delete (_parser_);
87 if (_scanner_)
delete (_scanner_);
90 if (_factory_)
delete (_factory_);
93 template <
typename GUM_SCALAR >
94 INLINE MDPDAT::Scanner& FMDPDatReader< GUM_SCALAR >::scanner() {
95 if (_ioerror_) {
GUM_ERROR(gum::IOError,
"No such file " + streamName()) }
100 template <
typename GUM_SCALAR >
101 INLINE
const std::string& FMDPDatReader< GUM_SCALAR >::streamName()
const {
105 template <
typename GUM_SCALAR >
106 INLINE
bool FMDPDatReader< GUM_SCALAR >::trace()
const {
107 return _traceScanning_;
110 template <
typename GUM_SCALAR >
111 INLINE
void FMDPDatReader< GUM_SCALAR >::trace(
bool b) {
113 scanner().setTrace(b);
116 template <
typename GUM_SCALAR >
117 Size FMDPDatReader< GUM_SCALAR >::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_SCALAR >
136 INLINE Idx FMDPDatReader< GUM_SCALAR >::errLine(Idx i) {
137 if (_parseDone_)
return _parser_->errors().error(i).line;
141 template <
typename GUM_SCALAR >
142 INLINE Idx FMDPDatReader< GUM_SCALAR >::errCol(Idx i) {
143 if (_parseDone_)
return _parser_->errors().error(i).column;
147 template <
typename GUM_SCALAR >
148 INLINE
bool FMDPDatReader< GUM_SCALAR >::errIsError(Idx i) {
149 if (_parseDone_)
return _parser_->errors().error(i).is_error;
153 template <
typename GUM_SCALAR >
154 INLINE std::string FMDPDatReader< GUM_SCALAR >::errMsg(Idx i) {
155 if (_parseDone_)
return _parser_->errors().error(i).msg;
159 template <
typename GUM_SCALAR >
160 INLINE
void FMDPDatReader< GUM_SCALAR >::showElegantErrors(std::ostream& o) {
161 if (_parseDone_) _parser_->errors().elegantErrors(o);
165 template <
typename GUM_SCALAR >
166 INLINE
void FMDPDatReader< GUM_SCALAR >::showElegantErrorsAndWarnings(std::ostream& o) {
167 if (_parseDone_) _parser_->errors().elegantErrorsAndWarnings(o);
171 template <
typename GUM_SCALAR >
172 INLINE
void FMDPDatReader< GUM_SCALAR >::showErrorCounts(std::ostream& o) {
173 if (_parseDone_) _parser_->errors().syntheticResults(o);
177 template <
typename GUM_SCALAR >
178 INLINE Size FMDPDatReader< GUM_SCALAR >::errors() {
179 return (!_parseDone_) ? (Size)0 : _parser_->errors().error_count;
182 template <
typename GUM_SCALAR >
183 INLINE Size FMDPDatReader< GUM_SCALAR >::warnings() {
184 return (!_parseDone_) ? (Size)0 : _parser_->errors().warning_count;
Base class for all aGrUM's exceptions.
FMDPDatReader(FMDP< GUM_SCALAR > *fmdp, const std::string &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