iphreeqc/include/IPhreeqc2.h
Scott R Charlton 4463d41703 passes all tests on win32; before changing to multiple instances
git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/branches/class@4201 1feff8c3-07ed-0310-ac33-dd36852eb9cd
2010-04-02 00:14:16 +00:00

134 lines
3.8 KiB
C++

#ifndef _INC_IPHREEQC2_HPP
#define _INC_IPHREEQC2_HPP
#include <exception>
#include <list>
#include <vector>
#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