#ifndef _INC_IPHREEQC2_HPP #define _INC_IPHREEQC2_HPP #include #include #include #include "IPhreeqcCallbacks.h" /* PFN_PRERUN_CALLBACK, PFN_POSTRUN_CALLBACK, PFN_CATCH_CALLBACK */ #include "Var.h" /* VRESULT */ // COMMENT: {3/31/2010 4:21:28 PM}#include "SelectedOutput.hxx" class Phreeqc; class IErrorReporter; class CSelectedOutput; class IPhreeqcStop : std::exception { }; class IPhreeqc2 { public: IPhreeqc2(void); ~IPhreeqc2(void); public: const char* GetLastErrorString(void); const char* GetLastWarningString(void); const char* GetDumpString(void); int LoadDatabase(const char* filename); int LoadDatabaseString(const char* input); void UnLoadDatabase(void); size_t AddError(const char* error_msg); size_t AddWarning(const char* warning_msg); int RunAccumulated(void); int RunFile(const char* filename); int RunString(const char* input); int GetSelectedOutputRowCount(void)const; int GetSelectedOutputColumnCount(void)const; VRESULT GetSelectedOutputValue(int row, int col, VAR* pVAR); void OutputLines(void); const std::string& GetAccumulatedLines(void); void ClearAccumulatedLines(void); VRESULT AccumulateLine(const char *line); int GetDumpLineCount(void)const; const char* GetDumpLine(int n); int GetErrorLineCount(void)const; const char* GetErrorLine(int n); std::list< std::string > ListComponents(void); size_t GetComponentCount(void); const char* GetComponent(int n); bool GetDumpOn(void)const; void SetDumpOn(bool bValue); bool GetDumpStringOn(void)const; void SetDumpStringOn(bool bValue); bool GetErrorOn(void)const; void SetErrorOn(bool bValue); bool GetLogOn(void)const; void SetLogOn(bool bValue); bool GetOutputOn(void)const; void SetOutputOn(bool bValue); bool GetSelectedOutputOn(void)const; void SetSelectedOutputOn(bool bValue); // IPhreeqc.cpp static int handler2(const int action, const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args); int output_handler2(const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args); int open_handler2(const int type, const char *file_name); // module_files.c static int module_handler2(const int action, const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args); int module_isopen_handler2(const int type); int module_open_handler2(const int type, const char *file_name); // module_output.c int output_isopen2(const int type); virtual int EndRow(void); void AddSelectedOutput(const char* name, const char* format, va_list argptr); void check_database(const char* sz_routine); void do_run(const char* sz_routine, std::istream* pis, FILE* fp, PFN_PRERUN_CALLBACK pfn_pre, PFN_POSTRUN_CALLBACK pfn_post, void *cookie); protected: void update_errors(void); protected: bool DatabaseLoaded; bool SelectedOutputOn; bool OutputOn; bool LogOn; bool ErrorOn; bool DumpOn; bool DumpStringOn; IErrorReporter *ErrorReporter; std::string LastErrorString; std::vector< std::string > ErrorLines; IErrorReporter *WarningReporter; std::string LastWarningString; std::vector< std::string > WarningLines; CSelectedOutput *SelectedOutput; std::string PunchFileName; std::string StringInput; std::string DumpString; std::vector< std::string > DumpLines; std::list < std::string > Components; private: friend class TestIPhreeqc; Phreeqc* PhreeqcPtr; }; #endif // _INC_IPHREEQC2_HPP