#ifndef _utl_AugerUnitParser_h #define _utl_AugerUnitParser_h /*! \file AugerUnitParser.h \brief Auger Unit evaluating Singleton \author Roland Sipos */ #include #include #include #include namespace utl { class AugerUnitParser : public utl::Singleton { public: typedef UnitEvaluator::SymbolTable SymbolTable; double Parse(const std::string& parsExp) const { return fEvaluator.Evaluate(parsExp); } UnitGrammar::EErrors Status() const { return fEvaluator.GetStatus(); } std::string GetFormattedError() const { return fEvaluator.GetError(); } const SymbolTable& GetUnitTable() const { return fEvaluator.GetSymbolTable(); } private: AugerUnitParser(); ~AugerUnitParser() { } SymbolTable MakeSymbolTable(); const SymbolTable fSymbolTable; const UnitEvaluator fEvaluator; friend class utl::Singleton; }; } #endif