IPhreeqc
IPhreeqc.hpp
Go to the documentation of this file.
1 
5 #ifndef INC_IPHREEQC_HPP
6 #define INC_IPHREEQC_HPP
7 
8 #include <exception>
9 #include <list>
10 #include <vector>
11 #include <map>
12 #include <cstdarg>
13 #include "IPhreeqcCallbacks.h" /* PFN_PRERUN_CALLBACK, PFN_POSTRUN_CALLBACK, PFN_CATCH_CALLBACK */
14 #include "Var.h" /* VRESULT */
15 #include "PHRQ_io.h"
16 
17 #if defined(_WINDLL)
18 #define IPQ_DLL_EXPORT __declspec(dllexport)
19 #else
20 #define IPQ_DLL_EXPORT
21 #endif
22 
23 class Phreeqc;
24 class IErrorReporter;
25 class CSelectedOutput;
26 class SelectedOutput;
27 
34 class IPQ_DLL_EXPORT IPhreeqcStop : public std::exception
35 {
36 public:
37  virtual const char *what() const throw () {return "Failure in IPhreeqc\n";}
38 };
39 
48 class IPQ_DLL_EXPORT IPhreeqc : public PHRQ_io
49 {
50 public:
57  IPhreeqc(void);
58 
62  virtual ~IPhreeqc(void);
63 
64 public:
65 
73  VRESULT AccumulateLine(const char *line);
74 
82  size_t AddError(const char* error_msg);
83 
91  size_t AddWarning(const char* warning_msg);
92 
97  void ClearAccumulatedLines(void);
98 
105  const std::string& GetAccumulatedLines(void);
106 
114  const char* GetComponent(int n);
115 
121  size_t GetComponentCount(void);
122 
128  int GetCurrentSelectedOutputUserNumber(void)const;
129 
136  const char* GetDumpFileName(void)const;
137 
144  bool GetDumpFileOn(void)const;
145 
153  const char* GetDumpString(void)const;
154 
163  const char* GetDumpStringLine(int n);
164 
171  int GetDumpStringLineCount(void)const;
172 
179  bool GetDumpStringOn(void)const;
180 
186  const char* GetErrorFileName(void)const;
187 
194  bool GetErrorFileOn(void)const;
195 
201  const char* GetErrorString(void);
202 
209  const char* GetErrorStringLine(int n);
210 
216  int GetErrorStringLineCount(void)const;
217 
224  bool GetErrorStringOn(void)const;
225 
231  int GetId(void)const;
232 
238  const char* GetLogFileName(void)const;
239 
248  bool GetLogFileOn(void)const;
249 
257  const char* GetLogString(void)const;
258 
267  const char* GetLogStringLine(int n)const;
268 
275  int GetLogStringLineCount(void)const;
276 
283  bool GetLogStringOn(void)const;
284 
291  int GetNthSelectedOutputUserNumber(int n)const;
292 
298  const char* GetOutputFileName(void)const;
299 
306  bool GetOutputFileOn(void)const;
307 
315  const char* GetOutputString(void)const;
316 
325  const char* GetOutputStringLine(int n)const;
326 
333  int GetOutputStringLineCount(void)const;
334 
341  bool GetOutputStringOn(void)const;
342 
348  int GetSelectedOutputColumnCount(void)const;
349 
355  int GetSelectedOutputCount(void)const;
356 
363  const char* GetSelectedOutputFileName(void)const;
364 
371  bool GetSelectedOutputFileOn(void)const;
372 
378  int GetSelectedOutputRowCount(void)const;
379 
387  const char* GetSelectedOutputString(void)const;
388 
397  const char* GetSelectedOutputStringLine(int n);
398 
405  int GetSelectedOutputStringLineCount(void)const;
406 
413  bool GetSelectedOutputStringOn(void)const;
414 
567  VRESULT GetSelectedOutputValue(int row, int col, VAR* pVAR);
568 
588  VRESULT GetSelectedOutputValue2(int row, int col, int *vtype, double* dvalue, char* svalue, unsigned int svalue_length);
589 
594  static const char* GetVersionString(void);
595 
601  const char* GetWarningString(void);
602 
609  const char* GetWarningStringLine(int n);
610 
616  int GetWarningStringLineCount(void)const;
617 
623  std::list< std::string > ListComponents(void);
624 
635  int LoadDatabase(const char* filename);
636 
645  int LoadDatabaseString(const char* input);
646 
651  void OutputAccumulatedLines(void);
652 
658  void OutputErrorString(void);
659 
664  void OutputWarningString(void);
665 
675  int RunAccumulated(void);
676 
685  int RunFile(const char* filename);
686 
695  int RunString(const char* input);
696 
706  void SetBasicCallback(double (*fcn)(double x1, double x2, const char *str, void *cookie), void * cookie1);
707 
716 #ifdef IPHREEQC_NO_FORTRAN_MODULE
717  void SetBasicFortranCallback(double (*fcn)(double *x1, double *x2, char *str, size_t l));
718 #else
719  void SetBasicFortranCallback(double (*fcn)(double *x1, double *x2, const char *str, int l));
720 #endif
721 
733 
740  void SetDumpFileName(const char *filename);
741 
750  void SetDumpFileOn(bool bValue);
751 
759  void SetDumpStringOn(bool bValue);
760 
766  void SetErrorFileName(const char *filename);
767 
775  void SetErrorFileOn(bool bValue);
776 
783  void SetErrorStringOn(bool bValue);
784 
790  void SetLogFileName(const char *filename);
791 
800  void SetLogFileOn(bool bValue);
801 
808  void SetLogStringOn(bool bValue);
809 
815  void SetOutputFileName(const char *filename);
816 
824  void SetOutputFileOn(bool bValue);
825 
832  void SetOutputStringOn(bool bValue);
833 
840  void SetSelectedOutputFileName(const char *filename);
841 
849  void SetSelectedOutputFileOn(bool bValue);
850 
859  void SetSelectedOutputStringOn(bool bValue);
860 
861 public:
862  // overrides
863  virtual void error_msg(const char *str, bool stop=false);
864  virtual void log_msg(const char * str);
865  virtual void output_msg(const char *str);
866  virtual void punch_msg(const char *str);
867  virtual void screen_msg(const char *str);
868  virtual void warning_msg(const char *str);
869 
870  virtual void fpunchf(const char *name, const char *format, double d);
871  virtual void fpunchf(const char *name, const char *format, char * d);
872  virtual void fpunchf(const char *name, const char *format, int d);
873  virtual void fpunchf_end_row(const char *format);
874 
875  virtual bool output_open(const char *file_name, std::ios_base::openmode mode = std::ios_base::out);
876  virtual bool punch_open(const char *file_name, std::ios_base::openmode mode = std::ios_base::out, int n_user = 1);
877 
878 protected:
879  int EndRow(void);
880  void AddSelectedOutput(const char* name, const char* format, va_list argptr);
881  void UnLoadDatabase(void);
882 
883  void check_database(const char* sz_routine);
884  int close_input_files(void);
885  int close_output_files(void);
886  void open_output_files(const char* sz_routine);
887 
888  void do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALLBACK pfn_pre, PFN_POSTRUN_CALLBACK pfn_post, void *cookie);
889 
890  void update_errors(void);
891 
892  int load_db(const char* filename);
893  int load_db_str(const char* filename);
894  int test_db(void);
895 
896  bool get_sel_out_file_on(int n)const;
897  std::string sel_file_name(int n_user);
898 
899  std::string create_file_name(const char *prefix, const char *suffix);
900 
901  bool get_sel_out_string_on(int n)const;
902 
903 protected:
904 #if defined(_MSC_VER)
905 /* disable warning C4251: 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' */
906 #pragma warning(disable:4251)
907 #endif
908 
909  bool DatabaseLoaded;
910  bool ClearAccumulated;
911  bool UpdateComponents;
912  std::map< int, bool > SelectedOutputFileOnMap;
913 
914  bool OutputFileOn;
915 
916  bool LogFileOn;
917  bool ErrorFileOn;
918  bool DumpOn;
919 
920  bool DumpStringOn;
921 
922  bool OutputStringOn;
923  std::string OutputString;
924  std::vector< std::string > OutputLines;
925 
926  bool LogStringOn;
927  std::string LogString;
928  std::vector< std::string > LogLines;
929 
930  bool ErrorStringOn;
931  IErrorReporter *ErrorReporter;
932  std::string ErrorString;
933  std::vector< std::string > ErrorLines;
934 
935  bool WarningStringOn;
936  IErrorReporter *WarningReporter;
937  std::string WarningString;
938  std::vector< std::string > WarningLines;
939 
940  int CurrentSelectedOutputUserNumber;
941  std::map< int, CSelectedOutput* > SelectedOutputMap;
942  std::string StringInput;
943 
944  std::string DumpString;
945  std::vector< std::string > DumpLines;
946 
947  std::list< std::string > Components;
948 
949  std::map< int, std::string > SelectedOutputFileNameMap;
950 
951  std::string OutputFileName;
952  std::string ErrorFileName;
953  std::string LogFileName;
954  std::string DumpFileName;
955 
956  std::map< int, bool > SelectedOutputStringOn;
957  std::map< int, std::string > SelectedOutputStringMap;
958  std::map< int, std::vector< std::string > > SelectedOutputLinesMap;
959 
960 protected:
961  Phreeqc* PhreeqcPtr;
962  FILE *input_file;
963  FILE *database_file;
964 
965  friend class IPhreeqcLib;
966  static std::map<size_t, IPhreeqc*> Instances;
967  static size_t InstancesIndex;
968  size_t Index;
969 
970  static std::string Version;
971 
972 #if defined(_MSC_VER)
973 /* reset warning C4251 */
974 #pragma warning(default:4251)
975 #endif
976 
977 #if defined(CPPUNIT)
978  friend class TestIPhreeqc;
979  friend class TestSelectedOutput;
980 #endif
981 
982 private:
986  IPhreeqc(const IPhreeqc&);
987 
991  IPhreeqc& operator=(const IPhreeqc&);
992 };
993 
994 #endif // INC_IPHREEQC_HPP
IPQ_RESULT SetLogFileName(int id, const char *filename)
IPQ_RESULT SetSelectedOutputFileName(int id, const char *filename)
int RunAccumulated(int id)
int GetSelectedOutputCount(int id)
int GetNthSelectedOutputUserNumber(int id, int n)
const char * GetVersionString(void)
int GetSelectedOutputColumnCount(int id)
int GetOutputFileOn(int id)
const char * GetSelectedOutputStringLine(int id, int n)
const char * GetOutputStringLine(int id, int n)
int GetErrorStringLineCount(int id)
IPQ_RESULT GetSelectedOutputValue(int id, int row, int col, VAR *pVAR)
const char * GetDumpFileName(int id)
const char * GetWarningString(int id)
IPQ_RESULT SetDumpFileName(int id, const char *filename)
int GetErrorFileOn(int id)
IPQ_RESULT SetCurrentSelectedOutputUserNumber(int id, int n)
IPQ_RESULT SetOutputFileName(int id, const char *filename)
const char * GetOutputString(int id)
int LoadDatabase(int id, const char *filename)
int GetWarningStringLineCount(int id)
int GetDumpStringLineCount(int id)
const char * GetComponent(int id, int n)
IPQ_RESULT SetLogFileOn(int id, int log_on)
IPQ_RESULT SetErrorFileName(int id, const char *filename)
const char * GetSelectedOutputString(int id)
IPQ_RESULT SetSelectedOutputFileOn(int id, int sel_on)
int GetComponentCount(int id)
IPQ_RESULT SetErrorStringOn(int id, int error_string_on)
const char * GetErrorString(int id)
int GetSelectedOutputStringLineCount(int id)
IPQ_RESULT SetBasicFortranCallback(int id, double(*fcn)(double *x1, double *x2, const char *str, int l))
int GetLogFileOn(int id)
const char * GetDumpStringLine(int id, int n)
int GetOutputStringOn(int id)
int RunFile(int id, const char *filename)
const char * GetErrorStringLine(int id, int n)
int RunString(int id, const char *input)
int GetCurrentSelectedOutputUserNumber(int id)
IPQ_RESULT SetDumpFileOn(int id, int dump_on)
int LoadDatabaseString(int id, const char *input)
const char * GetOutputFileName(int id)
IPQ_RESULT SetSelectedOutputStringOn(int id, int sel_string_on)
IPQ_RESULT SetErrorFileOn(int id, int error_on)
IPQ_RESULT SetDumpStringOn(int id, int dump_string_on)
const char * GetLogString(int id)
int GetSelectedOutputStringOn(int id)
int GetOutputStringLineCount(int id)
IPhreeqc VARIANT Documentation
void OutputWarningString(int id)
const char * GetErrorFileName(int id)
const char * GetLogFileName(int id)
const char * GetLogStringLine(int id, int n)
IPQ_RESULT SetOutputStringOn(int id, int output_string_on)
int GetErrorStringOn(int id)
IPQ_RESULT SetLogStringOn(int id, int log_string_on)
int AddWarning(int id, const char *warn_msg)
IPQ_RESULT ClearAccumulatedLines(int id)
void OutputAccumulatedLines(int id)
int GetDumpFileOn(int id)
Datatype used to store SELECTED_OUTPUT values.
Definition: Var.h:44
const char * GetDumpString(int id)
int GetLogStringLineCount(int id)
IPQ_RESULT SetBasicCallback(int id, double(*fcn)(double x1, double x2, const char *str, void *cookie), void *cookie1)
IPQ_RESULT SetOutputFileOn(int id, int output_on)
int AddError(int id, const char *error_msg)
int GetSelectedOutputFileOn(int id)
const char * GetSelectedOutputFileName(int id)
IPQ_RESULT AccumulateLine(int id, const char *line)
int GetSelectedOutputRowCount(int id)
int GetLogStringOn(int id)
VRESULT
Enumeration used to return error codes.
Definition: Var.h:33
int GetDumpStringOn(int id)
void OutputErrorString(int id)
This class is derived from std::exception and is thrown when an unrecoverable error has occured...
Definition: IPhreeqc.hpp:34
IPQ_RESULT GetSelectedOutputValue2(int id, int row, int col, int *vtype, double *dvalue, char *svalue, unsigned int svalue_length)
const char * GetWarningStringLine(int id, int n)
Provides an interface to PHREEQC (Version 3)–A Computer Program for Speciation, Batch-Reaction, One-Dimensional Transport, and Inverse Geochemical Calculations.
Definition: IPhreeqc.hpp:48