diff --git a/IPhreeqc.f.inc b/IPhreeqc.f.inc new file mode 100644 index 00000000..532f58af --- /dev/null +++ b/IPhreeqc.f.inc @@ -0,0 +1,85 @@ +C +C GetSelectedOutputValue TYPES +C + INTEGER :: TT_EMPTY + PARAMETER (TT_EMPTY=0) + + INTEGER :: TT_ERROR + PARAMETER (TT_ERROR=1) + + INTEGER :: TT_DOUBLE + PARAMETER (TT_DOUBLE=3) + + INTEGER :: TT_STRING + PARAMETER (TT_STRING=4) + +C +C IPQ_RESULT TYPES +C + + INTEGER :: IPQ_OK + PARAMETER (IPQ_OK=0) + + INTEGER :: IPQ_OUTOFMEMORY + PARAMETER (IPQ_OUTOFMEMORY=-1) + + INTEGER :: IPQ_BADVARTYPE + PARAMETER (IPQ_BADVARTYPE=-2) + + INTEGER :: IPQ_INVALIDARG + PARAMETER (IPQ_INVALIDARG=-3) + + INTEGER :: IPQ_INVALIDROW + PARAMETER (IPQ_INVALIDROW=-4) + + INTEGER :: IPQ_INVALIDCOL + PARAMETER (IPQ_INVALIDCOL=-5) + + INTEGER :: IPQ_BADINSTANCE + PARAMETER (IPQ_BADINSTANCE=-6) + +C +C function prototypes +C + + INTEGER(KIND=4) AccumulateLine + INTEGER(KIND=4) AddError + INTEGER(KIND=4) AddWarning + INTEGER(KIND=4) ClearAccumulatedLines + INTEGER(KIND=4) CreateIPhreeqc + INTEGER(KIND=4) DestroyIPhreeqc + INTEGER(KIND=4) GetComponentCount + LOGICAL(KIND=4) GetDumpFileOn + INTEGER(KIND=4) GetDumpStringLineCount + LOGICAL(KIND=4) GetDumpStringOn + LOGICAL(KIND=4) GetErrorFileOn + INTEGER(KIND=4) GetErrorStringLine + INTEGER(KIND=4) GetErrorStringLineCount + LOGICAL(KIND=4) GetLogFileOn + LOGICAL(KIND=4) GetLogStringLineCount + LOGICAL(KIND=4) GetLogStringOn + LOGICAL(KIND=4) GetOutputFileOn + INTEGER(KIND=4) GetOutputStringLineCount + LOGICAL(KIND=4) GetOutputStringOn + INTEGER(KIND=4) GetSelectedOutputColumnCount + LOGICAL(KIND=4) GetSelectedOutputFileOn + INTEGER(KIND=4) GetSelectedOutputRowCount + INTEGER(KIND=4) GetSelectedOutputValue + INTEGER(KIND=4) GetWarningStringLine + INTEGER(KIND=4) GetWarningStringLineCount + INTEGER(KIND=4) LoadDatabase + INTEGER(KIND=4) LoadDatabaseString + INTEGER(KIND=4) RunAccumulated + INTEGER(KIND=4) RunFile + INTEGER(KIND=4) RunString + INTEGER(KIND=4) SetDumpFileName + INTEGER(KIND=4) SetDumpFileOn + INTEGER(KIND=4) SetDumpStringOn + INTEGER(KIND=4) SetErrorFileOn + INTEGER(KIND=4) SetLogFileName + INTEGER(KIND=4) SetLogFileOn + INTEGER(KIND=4) SetLogStringOn + INTEGER(KIND=4) SetOutputFileName + INTEGER(KIND=4) SetOutputFileOn + INTEGER(KIND=4) SetOutputStringOn + INTEGER(KIND=4) SetSelectedOutputFileOn diff --git a/IPhreeqc.f90.inc b/IPhreeqc.f90.inc new file mode 100644 index 00000000..566e33bd --- /dev/null +++ b/IPhreeqc.f90.inc @@ -0,0 +1,448 @@ + ! GetSelectedOutputValue TYPES + INTEGER(KIND=4),PARAMETER :: TT_EMPTY = 0 + INTEGER(KIND=4),PARAMETER :: TT_ERROR = 1 + INTEGER(KIND=4),PARAMETER :: TT_DOUBLE = 3 + INTEGER(KIND=4),PARAMETER :: TT_STRING = 4 + + + ! ERROR RETURN TYPES + INTEGER(KIND=4),PARAMETER :: IPQ_OK = 0 + INTEGER(KIND=4),PARAMETER :: IPQ_OUTOFMEMORY = -1 + INTEGER(KIND=4),PARAMETER :: IPQ_BADVARTYPE = -2 + INTEGER(KIND=4),PARAMETER :: IPQ_INVALIDARG = -3 + INTEGER(KIND=4),PARAMETER :: IPQ_INVALIDROW = -4 + INTEGER(KIND=4),PARAMETER :: IPQ_INVALIDCOL = -5 + INTEGER(KIND=4),PARAMETER :: IPQ_BADINSTANCE = -6 + + + INTERFACE + FUNCTION AccumulateLine(ID,LINE) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: LINE + INTEGER(KIND=4) :: AccumulateLine + END FUNCTION AccumulateLine + END INTERFACE + + + INTERFACE + FUNCTION AddError(ID,ERROR_MSG) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: ERROR_MSG + INTEGER(KIND=4) :: AddError + END FUNCTION AddError + END INTERFACE + + + INTERFACE + FUNCTION AddWarning(ID,WARN_MSG) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: WARN_MSG + INTEGER(KIND=4) :: AddWarning + END FUNCTION AddWarning + END INTERFACE + + + INTERFACE + FUNCTION ClearAccumulatedLines(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: ClearAccumulatedLines + END FUNCTION ClearAccumulatedLines + END INTERFACE + + + INTERFACE + FUNCTION CreateIPhreeqc() + INTEGER(KIND=4) :: CreateIPhreeqc + END FUNCTION CreateIPhreeqc + END INTERFACE + + + INTERFACE + FUNCTION DestroyIPhreeqc(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: DestroyIPhreeqc + END FUNCTION DestroyIPhreeqc + END INTERFACE + + + INTERFACE + SUBROUTINE GetComponent(ID,N,COMP) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4), INTENT(IN) :: N + CHARACTER(LEN=*), INTENT(OUT) :: COMP + END SUBROUTINE GetComponent + END INTERFACE + + + INTERFACE + FUNCTION GetComponentCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetComponentCount + END FUNCTION GetComponentCount + END INTERFACE + + + INTERFACE + SUBROUTINE GetDumpFileName(ID,FNAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(OUT) :: FNAME + END SUBROUTINE GetDumpFileName + END INTERFACE + + + INTERFACE + FUNCTION GetDumpFileOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetDumpFileOn + END FUNCTION GetDumpFileOn + END INTERFACE + + + INTERFACE + SUBROUTINE GetDumpStringLine(ID,N,LINE) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4), INTENT(IN) :: N + CHARACTER(LEN=*), INTENT(OUT) :: LINE + END SUBROUTINE + END INTERFACE + + + INTERFACE + FUNCTION GetDumpStringLineCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetDumpStringLineCount + END FUNCTION GetDumpStringLineCount + END INTERFACE + + + INTERFACE + FUNCTION GetDumpStringOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetDumpStringOn + END FUNCTION GetDumpStringOn + END INTERFACE + + + INTERFACE + FUNCTION GetErrorFileOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetErrorFileOn + END FUNCTION GetErrorFileOn + END INTERFACE + + + INTERFACE + SUBROUTINE GetErrorStringLine(ID,N,LINE) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4), INTENT(IN) :: N + CHARACTER(LEN=*), INTENT(OUT) :: LINE + END SUBROUTINE + END INTERFACE + + + INTERFACE + FUNCTION GetErrorStringLineCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetErrorStringLineCount + END FUNCTION GetErrorStringLineCount + END INTERFACE + + + INTERFACE + SUBROUTINE GetLogFileName(ID,FNAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(OUT) :: FNAME + END SUBROUTINE GetLogFileName + END INTERFACE + + + INTERFACE + FUNCTION GetLogFileOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetLogFileOn + END FUNCTION GetLogFileOn + END INTERFACE + + + INTERFACE + SUBROUTINE GetLogStringLine(ID,N,LINE) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4), INTENT(IN) :: N + CHARACTER(LEN=*), INTENT(OUT) :: LINE + END SUBROUTINE + END INTERFACE + + + INTERFACE + FUNCTION GetLogStringLineCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetLogStringLineCount + END FUNCTION GetLogStringLineCount + END INTERFACE + + + INTERFACE + FUNCTION GetLogStringOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetLogStringOn + END FUNCTION GetLogStringOn + END INTERFACE + + + INTERFACE + SUBROUTINE GetOutputFileName(ID,FNAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(OUT) :: FNAME + END SUBROUTINE GetOutputFileName + END INTERFACE + + + INTERFACE + FUNCTION GetOutputFileOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetOutputFileOn + END FUNCTION GetOutputFileOn + END INTERFACE + + + INTERFACE + SUBROUTINE GetOutputStringLine(ID,N,LINE) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4), INTENT(IN) :: N + CHARACTER(LEN=*), INTENT(OUT) :: LINE + END SUBROUTINE + END INTERFACE + + + INTERFACE + FUNCTION GetOutputStringLineCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetOutputStringLineCount + END FUNCTION GetOutputStringLineCount + END INTERFACE + + + INTERFACE + FUNCTION GetOutputStringOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetOutputStringOn + END FUNCTION GetOutputStringOn + END INTERFACE + + + INTERFACE + FUNCTION GetSelectedOutputColumnCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetSelectedOutputColumnCount + END FUNCTION GetSelectedOutputColumnCount + END INTERFACE + + + INTERFACE + FUNCTION GetSelectedOutputFileOn(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4) :: GetSelectedOutputFileOn + END FUNCTION GetSelectedOutputFileOn + END INTERFACE + + + INTERFACE + FUNCTION GetSelectedOutputRowCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetSelectedOutputRowCount + END FUNCTION GetSelectedOutputRowCount + END INTERFACE + + + INTERFACE + FUNCTION GetSelectedOutputValue(ID,ROW,COL,VTYPE,DVALUE,SVALUE) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4), INTENT(IN) :: ROW + INTEGER(KIND=4), INTENT(IN) :: COL + INTEGER(KIND=4), INTENT(OUT) :: VTYPE + REAL(KIND=8), INTENT(OUT) :: DVALUE + CHARACTER(LEN=*), INTENT(OUT) :: SVALUE + INTEGER(KIND=4) :: GetSelectedOutputValue + END FUNCTION GetSelectedOutputValue + END INTERFACE + + + INTERFACE + SUBROUTINE GetWarningStringLine(ID,N,LINE) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4), INTENT(IN) :: N + CHARACTER(LEN=*), INTENT(OUT) :: LINE + END SUBROUTINE + END INTERFACE + + + INTERFACE + FUNCTION GetWarningStringLineCount(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: GetWarningStringLineCount + END FUNCTION GetWarningStringLineCount + END INTERFACE + + + INTERFACE + FUNCTION LoadDatabase(ID,FILENAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: FILENAME + INTEGER(KIND=4) :: LoadDatabase + END FUNCTION LoadDatabase + END INTERFACE + + + INTERFACE + FUNCTION LoadDatabaseString(ID,INPUT) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: INPUT + INTEGER(KIND=4) :: LoadDatabaseString + END FUNCTION LoadDatabaseString + END INTERFACE + + + INTERFACE + SUBROUTINE OutputAccumulatedLines(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + END SUBROUTINE OutputAccumulatedLines + END INTERFACE + + + INTERFACE + SUBROUTINE OutputErrorString(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + END SUBROUTINE OutputErrorString + END INTERFACE + + + INTERFACE + SUBROUTINE OutputWarningString(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + END SUBROUTINE OutputWarningString + END INTERFACE + + + INTERFACE + FUNCTION RunAccumulated(ID) + INTEGER(KIND=4), INTENT(IN) :: ID + INTEGER(KIND=4) :: RunAccumulated + END FUNCTION RunAccumulated + END INTERFACE + + + INTERFACE + FUNCTION RunFile(ID,FNAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: FNAME + INTEGER(KIND=4) :: RunFile + END FUNCTION RunFile + END INTERFACE + + + INTERFACE + FUNCTION RunString(ID,INPUT) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: INPUT + INTEGER(KIND=4) :: RunString + END FUNCTION RunString + END INTERFACE + + + INTERFACE + FUNCTION SetDumpFileName(ID,FNAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: FNAME + INTEGER(KIND=4) :: SetDumpFileName + END FUNCTION SetDumpFileName + END INTERFACE + + + INTERFACE + FUNCTION SetDumpFileOn(ID,DUMP_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: DUMP_ON + INTEGER(KIND=4) :: SetDumpFileOn + END FUNCTION SetDumpFileOn + END INTERFACE + + + INTERFACE + FUNCTION SetDumpStringOn(ID,DUMP_STRING_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: DUMP_STRING_ON + INTEGER(KIND=4) :: SetDumpStringOn + END FUNCTION SetDumpStringOn + END INTERFACE + + + INTERFACE + FUNCTION SetErrorFileOn(ID,ERR_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: ERR_ON + INTEGER(KIND=4) :: SetErrorFileOn + END FUNCTION SetErrorFileOn + END INTERFACE + + + INTERFACE + FUNCTION SetLogFileName(ID,FNAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: FNAME + INTEGER(KIND=4) :: SetLogFileName + END FUNCTION SetLogFileName + END INTERFACE + + + INTERFACE + FUNCTION SetLogFileOn(ID,LOG_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: LOG_ON + INTEGER(KIND=4) :: SetLogFileOn + END FUNCTION SetLogFileOn + END INTERFACE + + + INTERFACE + FUNCTION SetLogStringOn(ID,LOG_STRING_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: LOG_STRING_ON + INTEGER(KIND=4) :: SetLogStringOn + END FUNCTION SetLogStringOn + END INTERFACE + + + INTERFACE + FUNCTION SetOutputFileName(ID,FNAME) + INTEGER(KIND=4), INTENT(IN) :: ID + CHARACTER(LEN=*), INTENT(IN) :: FNAME + INTEGER(KIND=4) :: SetOutputFileName + END FUNCTION SetOutputFileName + END INTERFACE + + + INTERFACE + FUNCTION SetOutputFileOn(ID,OUT_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: OUT_ON + INTEGER(KIND=4) :: SetOutputFileOn + END FUNCTION SetOutputFileOn + END INTERFACE + + + INTERFACE + FUNCTION SetOutputStringOn(ID,OUT_STRING_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: OUT_STRING_ON + INTEGER(KIND=4) :: SetOutputStringOn + END FUNCTION SetOutputStringOn + END INTERFACE + + + INTERFACE + FUNCTION SetSelectedOutputFileOn(ID,SEL_ON) + INTEGER(KIND=4), INTENT(IN) :: ID + LOGICAL(KIND=4), INTENT(IN) :: SEL_ON + INTEGER(KIND=4) :: SetSelectedOutputFileOn + END FUNCTION SetSelectedOutputFileOn + END INTERFACE diff --git a/IPhreeqc.h b/IPhreeqc.h new file mode 100644 index 00000000..98bdd1e9 --- /dev/null +++ b/IPhreeqc.h @@ -0,0 +1,1504 @@ +/*! @file IPhreeqc.h + @brief C/Fortran Documentation +*/ +#ifndef INC_IPHREEQC_H +#define INC_IPHREEQC_H + +#include "Var.h" + +/** + * @mainpage IPhreeqc Library Documentation + * + * @htmlonly + *
| IPhreeqc.h | C/Fortran Documentation |
| IPhreeqc.hpp | C++ Documentation |
| Var.h | IPhreeqc VARIANT Documentation |
+ *
+ * FUNCTION AccumulateLine(ID,LINE)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(IN) :: LINE
+ * INTEGER(KIND=4) :: AccumulateLine
+ * END FUNCTION AccumulateLine
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * \include AccumulateLine.c
+ *
+ * @par Fortran90 Example:
+ * see \ref GetDumpStringLine_f90 "GetDumpStringLine"
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT AccumulateLine(int id, const char *line);
+
+
+/**
+ * Appends the given error message and increments the error count.
+ * Internally used to create an error condition.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param error_msg The error message to display.
+ * @returns The current error count if successful; otherwise a negative value indicates an error occured (see \ref IPQ_RESULT).
+ * @see GetErrorString, GetErrorStringLine, GetErrorStringLineCount, OutputErrorString
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION AddError(ID,ERROR_MSG)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(IN) :: ERROR_MSG
+ * INTEGER(KIND=4) :: AddError
+ * END FUNCTION AddError
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int AddError(int id, const char* error_msg);
+
+
+/**
+ * Appends the given warning message and increments the warning count.
+ * Internally used to create a warning condition.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param warn_msg The warning message to display.
+ * @returns The current warning count if successful; otherwise a negative value indicates an error occured (see \ref IPQ_RESULT).
+ * @see GetWarningString, GetWarningStringLine, GetWarningStringLineCount, OutputWarningString
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION AddWarning(ID,WARN_MSG)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(IN) :: WARN_MSG
+ * INTEGER(KIND=4) :: AddWarning
+ * END FUNCTION AddWarning
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int AddWarning(int id, const char* warn_msg);
+
+
+
+/**
+ * Clears the accumulated input buffer. Input buffer is accumulated from calls to \ref AccumulateLine.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see AccumulateLine, OutputAccumulatedLines, RunAccumulated
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION ClearAccumulatedLines(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: ClearAccumulatedLines
+ * END FUNCTION ClearAccumulatedLines
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT ClearAccumulatedLines(int id);
+
+
+/**
+ * Create a new IPhreeqc instance.
+ * @return A non-negative value if successful; otherwise a negative value indicates an error occured (see \ref IPQ_RESULT).
+ * @see DestroyIPhreeqc
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION CreateIPhreeqc()
+ * INTEGER(KIND=4) :: CreateIPhreeqc
+ * END FUNCTION CreateIPhreeqc
+ *
+ *
+ * @endhtmlonly
+ *
+ * \anchor CreateIPhreeqc_c
+ * @par C Example:
+ * \include CreateIPhreeqc.c
+ *
+ * \anchor CreateIPhreeqc_f90
+ * @par Fortran90 Example:
+ * \include F90CreateIPhreeqc.f90
+ */
+ IPQ_DLL_EXPORT int CreateIPhreeqc(void);
+
+
+/**
+ * Release an IPhreeqc instance from memory.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @retval IPQ_OK Success
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see CreateIPhreeqc
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION DestroyIPhreeqc(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: DestroyIPhreeqc
+ * END FUNCTION DestroyIPhreeqc
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref CreateIPhreeqc_c "CreateIPhreeqc"
+ *
+ * @par Fortran90 Example:
+ * see \ref CreateIPhreeqc_f90 "CreateIPhreeqc"
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT DestroyIPhreeqc(int id);
+
+
+/**
+ * Retrieves the given component.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param n The zero-based index of the component to retrieve.
+ * @return A null terminated string containing the given component.
+ * Returns an empty string if n is out of range.
+ * @see GetComponentCount
+ * @par Fortran90 Interface:
+ * (Note: N is one-based for the Fortran interface)
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE GetComponent(ID,N,COMP)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4), INTENT(IN) :: N
+ * CHARACTER(LEN=*), INTENT(OUT) :: COMP
+ * END SUBROUTINE GetComponent
+ *
+ *
+ * @endhtmlonly
+ *
+ * \anchor GetComponent_c
+ * @par C Example:
+ * \include GetComponent.c
+ *
+ * \anchor GetComponent_f90
+ * @par Fortran90 Example:
+ * \include F90GetComponent.f90
+ */
+ IPQ_DLL_EXPORT const char* GetComponent(int id, int n);
+
+
+/**
+ * Retrieves the number of components in the current component list.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The current count of components.
+ * A negative value indicates an error occured (see \ref IPQ_RESULT).
+ * @see GetComponent
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetComponentCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetComponentCount
+ * END FUNCTION GetComponentCount
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref GetComponent_c "GetComponent"
+ *
+ * @par Fortran90 Example:
+ * see \ref GetComponent_f90 "GetComponent"
+ */
+ IPQ_DLL_EXPORT int GetComponentCount(int id);
+
+
+/**
+ * Retrieves the name of the dump file. This file name is used if not specified within DUMP input.
+ * The default value is dump.id.out.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return filename The name of the file to write DUMP output to.
+ * @see GetDumpFileOn, GetDumpString, GetDumpStringOn, GetDumpStringLine, GetDumpStringLineCount, SetDumpFileName, SetDumpFileOn, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE GetDumpFileName(ID,FILENAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(OUT) :: FILENAME
+ * END SUBROUTINE GetDumpFileName
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT const char* GetDumpFileName(int id);
+
+
+/**
+ * Retrieves the current value of the dump file switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if output is written to the DUMP (dump.id.out if unspecified) file, 0 (zero) otherwise.
+ * @see GetDumpString, GetDumpStringLine, GetDumpStringLineCount, GetDumpStringOn, SetDumpFileOn, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetDumpFileOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetDumpFileOn
+ * END FUNCTION GetDumpFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetDumpFileOn(int id);
+
+
+/**
+ * Retrieves the string buffer containing DUMP output.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return A null terminated string containing DUMP output.
+ * @pre \ref SetDumpStringOn must have been set to true (non-zero) in order to recieve DUMP output.
+ * @see GetDumpFileOn, GetDumpStringLine, GetDumpStringLineCount, SetDumpFileOn, GetDumpStringOn, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * Not implemented. (see \ref GetDumpStringLineCount, \ref GetDumpStringLine)
+ *
+ * \anchor GetDumpString_c
+ * @par C Example:
+ * \include GetDumpString.c
+ */
+ IPQ_DLL_EXPORT const char* GetDumpString(int id);
+
+
+/**
+ * Retrieves the given dump line.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param n The zero-based index of the line to retrieve.
+ * @return A null terminated string containing the given line.
+ * Returns an empty string if n is out of range.
+ * @pre \ref SetDumpStringOn must have been set to true (non-zero).
+ * @see GetDumpFileOn, GetDumpString, GetDumpStringLineCount, GetDumpStringOn, SetDumpFileOn, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ * (Note: N is one-based for the Fortran interface.)
+ *
+ *
+ * SUBROUTINE GetDumpStringLine(ID,N,LINE)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4), INTENT(IN) :: N
+ * CHARACTER(LEN=*), INTENT(OUT) :: LINE
+ * END SUBROUTINE GetDumpStringLine
+ *
+ *
+ * @endhtmlonly
+ *
+ * \anchor GetDumpStringLine_f90
+ * @par Fortran90 Example:
+ * \include F90GetDumpStringLine.f90
+ */
+ IPQ_DLL_EXPORT const char* GetDumpStringLine(int id, int n);
+
+
+/**
+ * Retrieves the number of lines in the current dump string buffer.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of lines.
+ * @pre \ref SetDumpStringOn must have been set to true (non-zero).
+ * @see GetDumpFileOn, GetDumpString, GetDumpStringLine, GetDumpStringOn, SetDumpFileOn, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetDumpStringLineCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetDumpStringLineCount
+ * END FUNCTION GetDumpStringLineCount
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par Fortran90 Example:
+ * see \ref GetDumpStringLine_f90 "GetDumpStringLine"
+ */
+ IPQ_DLL_EXPORT int GetDumpStringLineCount(int id);
+
+
+/**
+ * Retrieves the current value of the dump string switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if output defined by the DUMP keyword is stored, 0 (zero) otherwise.
+ * @see GetDumpFileOn, GetDumpString, GetDumpStringLine, GetDumpStringLineCount, SetDumpFileOn, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetDumpStringOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetDumpStringOn
+ * END FUNCTION GetDumpStringOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetDumpStringOn(int id);
+
+
+/**
+ * Retrieves the current value of the error file switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if errors are written to the phreeqc.id.err file, 0 (zero) otherwise.
+ * @see SetErrorFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetErrorFileOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetErrorFileOn
+ * END FUNCTION GetErrorFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetErrorFileOn(int id);
+
+
+/**
+ * Retrieves the error messages from the last call to \ref RunAccumulated, \ref RunFile, \ref RunString, \ref LoadDatabase, or \ref LoadDatabaseString.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return A null terminated string containing error messages.
+ * @see GetErrorFileOn, GetErrorStringLine, GetErrorStringLineCount, OutputErrorString, SetErrorFileOn
+ * @par Fortran90 Interface:
+ * Not implemented. (see \ref GetErrorStringLineCount, \ref GetErrorStringLine, \ref OutputErrorString)
+ */
+ IPQ_DLL_EXPORT const char* GetErrorString(int id);
+
+
+/**
+ * Retrieves the given error line.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param n The zero-based index of the line to retrieve.
+ * @return A null terminated string containing the given line of the error string buffer.
+ * @see GetErrorFileOn, GetErrorString, GetErrorStringLineCount, OutputErrorString, SetErrorFileOn
+ * @par Fortran90 Interface:
+ * (Note: N is one-based for the Fortran interface.)
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE GetErrorStringLine(ID,N,LINE)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4), INTENT(IN) :: N
+ * CHARACTER(LEN=*), INTENT(OUT) :: LINE
+ * END SUBROUTINE GetErrorStringLine
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT const char* GetErrorStringLine(int id, int n);
+
+
+/**
+ * Retrieves the number of lines in the current error string buffer.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of lines.
+ * @see GetErrorFileOn, GetErrorString, GetErrorStringLine, OutputErrorString, SetErrorFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetErrorStringLineCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetErrorStringLineCount
+ * END FUNCTION GetErrorStringLineCount
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetErrorStringLineCount(int id);
+
+/**
+ * Retrieves the name of the log file. The default name is phreeqc.id.log.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return filename The name of the log file.
+ * @see GetLogFileOn, GetLogString, GetLogStringOn, GetLogStringLine, GetLogStringLineCount, SetLogFileName, SetLogFileOn, SetLogStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE GetLogFileName(ID,FILENAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(OUT) :: FILENAME
+ * END SUBROUTINE GetLogFileName
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT const char* GetLogFileName(int id);
+
+
+/**
+ * Retrieves the current value of the log file switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if log messages are written to the phreeqc.id.log file, 0 (zero) otherwise.
+ * @remarks Logging must be enabled through the use of the KNOBS -logfile option in order to receive any log messages.
+ * @see SetLogFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetLogFileOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetLogFileOn
+ * END FUNCTION GetLogFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetLogFileOn(int id);
+
+
+/**
+ * Retrieves the string buffer containing log output.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return A null terminated string containing log output.
+ * @remarks Logging must be enabled through the use of the KNOBS -logfile option in order to receive any log messages.
+ * @pre \ref SetLogStringOn must have been set to true (non-zero) in order to recieve log output.
+ * @see GetLogFileOn, GetLogStringLine, GetLogStringLineCount, SetLogFileOn, GetLogStringOn, SetLogStringOn
+ * @par Fortran90 Interface:
+ * Not implemented. (see \ref GetLogStringLineCount, \ref GetLogStringLine)
+ *
+ * \anchor GetOutputString_c
+ * @par C Example:
+ * \include GetOutputString.c
+ */
+ IPQ_DLL_EXPORT const char* GetLogString(int id);
+
+
+/**
+ * Retrieves the given log line.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param n The zero-based index of the line to retrieve.
+ * @return A null terminated string containing the given line.
+ * Returns an empty string if n is out of range.
+ * @pre \ref SetLogStringOn must have been set to true (non-zero).
+ * @see GetLogFileOn, GetLogString, GetLogStringLineCount, GetLogStringOn, SetLogFileOn, SetLogStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ * (Note: N is one-based for the Fortran interface.)
+ *
+ *
+ * SUBROUTINE GetLogStringLine(ID,N,LINE)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4), INTENT(IN) :: N
+ * CHARACTER(LEN=*), INTENT(OUT) :: LINE
+ * END SUBROUTINE GetLogStringLine
+ *
+ *
+ * @endhtmlonly
+ *
+ * \anchor GetLogStringLine_f90
+ * @par Fortran90 Example:
+ * \include F90GetLogStringLine.f90
+ */
+ IPQ_DLL_EXPORT const char* GetLogStringLine(int id, int n);
+
+/**
+ * Retrieves the number of lines in the current log string buffer.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of lines.
+ * @pre \ref SetLogStringOn must have been set to true (non-zero).
+ * @see GetLogFileOn, GetLogString, GetLogStringLine, GetLogStringOn, SetLogFileOn, SetLogStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetLogStringLineCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetLogStringLineCount
+ * END FUNCTION GetLogStringLineCount
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par Fortran90 Example:
+ * see \ref GetLogStringLine_f90 "GetLogStringLine"
+ */
+ IPQ_DLL_EXPORT int GetLogStringLineCount(int id);
+
+
+/**
+ * Retrieves the current value of the log string switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if output is stored, 0 (zero) otherwise.
+ * @see GetLogFileOn, GetLogString, GetLogStringLine, GetLogStringLineCount, SetLogFileOn, SetLogStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetLogStringOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetLogStringOn
+ * END FUNCTION GetLogStringOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetLogStringOn(int id);
+
+
+/**
+ * Retrieves the name of the output file. The default name is phreeqc.id.out.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return filename The name of the output file.
+ * @see GetOutputFileOn, GetOutputString, GetOutputStringOn, GetOutputStringLine, GetOutputStringLineCount, SetOutputFileName, SetOutputFileOn, SetOutputStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE GetOutputFileName(ID,FILENAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(OUT) :: FILENAME
+ * END SUBROUTINE GetOutputFileName
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT const char* GetOutputFileName(int id);
+
+
+/**
+ * Retrieves the current value of the output file switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if output is written to the phreeqc.id.out file, 0 (zero) otherwise.
+ * @see SetOutputFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetOutputFileOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetOutputFileOn
+ * END FUNCTION GetOutputFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetOutputFileOn(int id);
+
+/**
+ * Retrieves the string buffer containing phreeqc output.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return A null terminated string containing phreeqc output.
+ * @pre \ref SetOutputStringOn must have been set to true (non-zero) in order to recieve phreeqc output.
+ * @see GetOutputFileOn, GetOutputStringLine, GetOutputStringLineCount, SetOutputFileOn, GetOutputStringOn, SetOutputStringOn
+ * @par Fortran90 Interface:
+ * Not implemented. (see \ref GetOutputStringLineCount, \ref GetOutputStringLine)
+ *
+ * \anchor GetOutputString_c
+ * @par C Example:
+ * \include GetOutputString.c
+ */
+ IPQ_DLL_EXPORT const char* GetOutputString(int id);
+
+/**
+ * Retrieves the given output line.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param n The zero-based index of the line to retrieve.
+ * @return A null terminated string containing the given line.
+ * Returns an empty string if n is out of range.
+ * @pre \ref SetOutputStringOn must have been set to true (non-zero).
+ * @see GetOutputFileOn, GetOutputString, GetOutputStringLineCount, GetOutputStringOn, SetOutputFileOn, SetOutputStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ * (Note: N is one-based for the Fortran interface.)
+ *
+ *
+ * SUBROUTINE GetOutputStringLine(ID,N,LINE)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4), INTENT(IN) :: N
+ * CHARACTER(LEN=*), INTENT(OUT) :: LINE
+ * END SUBROUTINE GetOutputStringLine
+ *
+ *
+ * @endhtmlonly
+ *
+ * \anchor GetOutputStringLine_f90
+ * @par Fortran90 Example:
+ * \include F90GetOutputStringLine.f90
+ */
+ IPQ_DLL_EXPORT const char* GetOutputStringLine(int id, int n);
+
+/**
+ * Retrieves the number of lines in the current output string buffer.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of lines.
+ * @pre \ref SetOutputStringOn must have been set to true (non-zero).
+ * @see GetOutputFileOn, GetOutputString, GetOutputStringLine, GetOutputStringOn, SetOutputFileOn, SetOutputStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetOutputStringLineCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetOutputStringLineCount
+ * END FUNCTION GetOutputStringLineCount
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par Fortran90 Example:
+ * see \ref GetOutputStringLine_f90 "GetOutputStringLine"
+ */
+ IPQ_DLL_EXPORT int GetOutputStringLineCount(int id);
+
+/**
+ * Retrieves the current value of the output string switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if output is stored, 0 (zero) otherwise.
+ * @see GetOutputFileOn, GetOutputString, GetOutputStringLine, GetOutputStringLineCount, SetOutputFileOn, SetOutputStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetOutputStringOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetOutputStringOn
+ * END FUNCTION GetOutputStringOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetOutputStringOn(int id);
+
+
+/**
+ * Retrieves the number of columns in the selected-output buffer.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of columns.
+ * @see GetSelectedOutputFileOn, GetSelectedOutputRowCount, GetSelectedOutputValue, SetSelectedOutputFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetSelectedOutputColumnCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetSelectedOutputColumnCount
+ * END FUNCTION GetSelectedOutputColumnCount
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetSelectedOutputColumnCount(int id);
+
+
+/**
+ * Retrieves the selected-output file switch.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return Non-zero if output is written to the selected-output (selected.id.out if unspecified) file, 0 (zero) otherwise.
+ * @see GetSelectedOutputColumnCount, GetSelectedOutputRowCount, GetSelectedOutputValue, SetSelectedOutputFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetSelectedOutputFileOn(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4) :: GetSelectedOutputFileOn
+ * END FUNCTION GetSelectedOutputFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetSelectedOutputFileOn(int id);
+
+
+/**
+ * Retrieves the number of rows in the selected-output buffer.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of rows.
+ * @see GetSelectedOutputFileOn, GetSelectedOutputColumnCount, GetSelectedOutputValue, SetSelectedOutputFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetSelectedOutputRowCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetSelectedOutputRowCount
+ * END FUNCTION GetSelectedOutputRowCount
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetSelectedOutputRowCount(int id);
+
+
+/**
+ * Returns the \c VAR associated with the specified row and column.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param row The row index.
+ * @param col The column index.
+ * @param pVAR Pointer to the \c VAR to recieve the requested data.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_INVALIDROW The given row is out of range.
+ * @retval IPQ_INVALIDCOL The given column is out of range.
+ * @retval IPQ_OUTOFMEMORY Memory could not be allocated.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetSelectedOutputFileOn, GetSelectedOutputColumnCount, GetSelectedOutputRowCount, SetSelectedOutputFileOn
+ * @remarks
+ * Row 0 contains the column headings to the selected_ouput.
+ * @par Examples:
+ * The headings will include a suffix and/or prefix in order to differentiate the
+ * columns.
+ * @htmlonly
++
| +Input + | ++Headings + | +
|---|---|
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+ *
+ * FUNCTION GetSelectedOutputValue(ID,ROW,COL,VTYPE,DVALUE,SVALUE)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4), INTENT(IN) :: ROW
+ * INTEGER(KIND=4), INTENT(IN) :: COL
+ * INTEGER(KIND=4), INTENT(OUT) :: VTYPE
+ * REAL(KIND=8), INTENT(OUT) :: DVALUE
+ * CHARACTER(LEN=*), INTENT(OUT) :: SVALUE
+ * INTEGER(KIND=4) :: GetSelectedOutputValue
+ * END FUNCTION GetSelectedOutputValue
+ *
+ *
+ * @endhtmlonly
+ * @param ID The instance id returned from \ref CreateIPhreeqc.
+ * @param ROW The row index.
+ * @param COL The column index.
+ * @param VTYPE Returns the variable type. See \ref VAR_TYPE.
+ * @param DVALUE Returns the numeric value when (VTYPE=\ref TT_DOUBLE) or (VTYPE=\ref TT_LONG).
+ * @param SVALUE Returns the string variable when (VTYPE=\ref TT_STRING). When (VTYPE=\ref TT_DOUBLE) or (VTYPE=\ref TT_LONG) this variable is filled with a string equivalent of DVALUE.
+ * \anchor GetSelectedOutputValue_c
+ * @par C Example:
+ * \include GetSelectedOutputValue.c
+ *
+ * \anchor F90GetSelectedOutputValue_f90
+ * @par Fortran90 Example:
+ * \include F90GetSelectedOutputValue.f90
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT GetSelectedOutputValue(int id, int row, int col, VAR* pVAR);
+
+
+/**
+ * Retrieves the warning messages from the last call to \ref RunAccumulated, \ref RunFile, \ref RunString, \ref LoadDatabase, or \ref LoadDatabaseString.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return A null terminated string containing warning messages.
+ * @see GetWarningStringLine, GetWarningStringLineCount, OutputWarningString
+ * @par Fortran90 Interface:
+ * Not implemented. (see \ref GetWarningStringLineCount, \ref GetWarningStringLine, \ref OutputWarningString)
+ */
+ IPQ_DLL_EXPORT const char* GetWarningString(int id);
+
+
+/**
+ * Retrieves the given warning line.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param n The zero-based index of the line to retrieve.
+ * @return A null terminated string containing the given warning line message.
+ * @see GetWarningString, GetWarningStringLineCount, OutputWarningString
+ * @par Fortran90 Interface:
+ * (Note: N is one-based for the Fortran interface.)
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE GetWarningStringLine(ID,N,LINE)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: N
+ * CHARACTER(LEN=*), INTENT(OUT) :: LINE
+ * END SUBROUTINE GetWarningStringLine
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT const char* GetWarningStringLine(int id, int n);
+
+
+/**
+ * Retrieves the number of lines in the current warning string buffer.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of lines.
+ * @see GetWarningString, GetWarningStringLine, OutputWarningString
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION GetWarningStringLineCount(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: GetWarningStringLineCount
+ * END FUNCTION GetWarningStringLineCount
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int GetWarningStringLineCount(int id);
+
+
+/**
+ * Load the specified database file into phreeqc.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param filename The name of the phreeqc database to load.
+ * The full path (or relative path with respect to the working directory)
+ * must be given if the file is not in the current working directory.
+ * @return The number of errors encountered.
+ * @see LoadDatabaseString
+ * @remarks
+ * All previous definitions are cleared.
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION LoadDatabase(ID,FILENAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(IN) :: FILENAME
+ * INTEGER(KIND=4) :: LoadDatabase
+ * END FUNCTION LoadDatabase
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref CreateIPhreeqc_c "CreateIPhreeqc"
+ *
+ * @par Fortran90 Example:
+ * see \ref CreateIPhreeqc_f90 "CreateIPhreeqc"
+ */
+ IPQ_DLL_EXPORT int LoadDatabase(int id, const char* filename);
+
+
+/**
+ * Load the specified string as a database into phreeqc.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param input String containing data to be used as the phreeqc database.
+ * @return The number of errors encountered.
+ * @see LoadDatabase
+ * @remarks
+ * All previous definitions are cleared.
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION LoadDatabaseString(ID,INPUT)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(IN) :: INPUT
+ * INTEGER(KIND=4) :: LoadDatabaseString
+ * END FUNCTION LoadDatabaseString
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT int LoadDatabaseString(int id, const char* input);
+
+
+/**
+ * Output the accumulated input buffer to stdout. This input buffer can be run with a call to \ref RunAccumulated.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @see AccumulateLine, ClearAccumulatedLines, RunAccumulated
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE OutputAccumulatedLines(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * END SUBROUTINE OutputAccumulatedLines
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par Fortran90 Example:
+ * see \ref GetDumpStringLine_f90 "GetDumpStringLine"
+ */
+ IPQ_DLL_EXPORT void OutputAccumulatedLines(int id);
+
+
+/**
+ * Output the error messages normally stored in the phreeqc.id.err file to stdout.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @see GetErrorFileOn, GetErrorStringLine, GetErrorStringLineCount, SetErrorFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE OutputErrorString(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * END SUBROUTINE OutputErrorString
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref GetComponent_c "GetComponent"
+ *
+ * @par Fortran90 Example:
+ * see \ref GetDumpStringLine_f90 "GetDumpStringLine"
+ */
+ IPQ_DLL_EXPORT void OutputErrorString(int id);
+
+
+/**
+ * Output the warning messages to stdout.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @see GetWarningString, GetWarningStringLine, GetWarningStringLineCount
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * SUBROUTINE OutputWarningString(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * END SUBROUTINE OutputWarningString
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT void OutputWarningString(int id);
+
+
+/**
+ * Runs the input buffer as defined by calls to \ref AccumulateLine.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @return The number of errors encountered.
+ * @see AccumulateLine, ClearAccumulatedLines, OutputAccumulatedLines, RunFile, RunString
+ * @remarks
+ * The accumulated input is cleared at the next call to \ref AccumulateLine.
+ * @pre \ref LoadDatabase/\ref LoadDatabaseString must have been called and returned 0 (zero) errors.
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION RunAccumulated(ID)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * INTEGER(KIND=4) :: RunAccumulated
+ * END FUNCTION RunAccumulated
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par Fortran90 Example:
+ * see \ref GetDumpStringLine_f90 "GetDumpStringLine"
+ */
+ IPQ_DLL_EXPORT int RunAccumulated(int id);
+
+
+/**
+ * Runs the specified phreeqc input file.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param filename The name of the phreeqc input file to run.
+ * @return The number of errors encountered during the run.
+ * @see RunAccumulated, RunString
+ * @pre \ref LoadDatabase/\ref LoadDatabaseString must have been called and returned 0 (zero) errors.
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION RunFile(ID,FNAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(IN) :: FNAME
+ * INTEGER(KIND=4) :: RunFile
+ * END FUNCTION RunFile
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref CreateIPhreeqc_c "CreateIPhreeqc"
+ *
+ * @par Fortran90 Example:
+ * see \ref CreateIPhreeqc_f90 "CreateIPhreeqc"
+ */
+ IPQ_DLL_EXPORT int RunFile(int id, const char* filename);
+
+
+/**
+ * Runs the specified string as input to phreeqc.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param input String containing phreeqc input.
+ * @return The number of errors encountered during the run.
+ * @see RunAccumulated, RunFile
+ * @pre \ref LoadDatabase/\ref LoadDatabaseString must have been called and returned 0 (zero) errors.
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION RunString(ID,INPUT)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(IN) :: INPUT
+ * INTEGER(KIND=4) :: RunString
+ * END FUNCTION RunString
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref GetDumpString_c "GetDumpString"
+ *
+ */
+ IPQ_DLL_EXPORT int RunString(int id, const char* input);
+
+
+/**
+ * Sets the name of the dump file. This file name is used if not specified within DUMP input.
+ * The default value is dump.id.out.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param filename The name of the file to write DUMP output to.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetDumpFileName, GetDumpFileOn, GetDumpString, GetDumpStringOn, GetDumpStringLine, GetDumpStringLineCount, SetDumpFileOn, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetDumpFileName(ID,FILENAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(OUT) :: FILENAME
+ * INTEGER(KIND=4) :: SetDumpFileName
+ * END FUNCTION SetDumpFileName
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetDumpFileName(int id, const char* filename);
+
+
+/**
+ * Sets the dump file switch on or off. This switch controls whether or not phreeqc writes to the dump file.
+ * The initial setting after calling \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param dump_on If non-zero, turns on output to the DUMP (dump.id.out if unspecified) file;
+ * if zero, turns off output to the DUMP file.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetDumpFileOn, GetDumpString, GetDumpStringLine, GetDumpStringOn, GetDumpStringLineCount, SetDumpStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetDumpFileOn(ID,DUMP_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: DUMP_ON
+ * INTEGER(KIND=4) :: SetDumpFileOn
+ * END FUNCTION SetDumpFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetDumpFileOn(int id, int dump_on);
+
+
+/**
+ * Sets the dump string switch on or off. This switch controls whether or not the data normally sent
+ * to the dump file are stored in a buffer for retrieval. The initial setting after calling
+ * \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param dump_string_on If non-zero, captures the output defined by the DUMP keyword into a string buffer;
+ * if zero, output defined by the DUMP keyword is not captured to a string buffer.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetDumpFileOn, GetDumpStringOn, GetDumpString, GetDumpStringLine, GetDumpStringLineCount, SetDumpFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetDumpStringOn(ID,DUMP_STRING_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: DUMP_STRING_ON
+ * INTEGER(KIND=4) :: SetDumpStringOn
+ * END FUNCTION SetDumpStringOn
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref GetDumpString_c "GetDumpString"
+ *
+ * @par Fortran90 Example:
+ * see \ref GetDumpStringLine_f90 "GetDumpStringLine"
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetDumpStringOn(int id, int dump_string_on);
+
+
+/**
+ * Sets the error file switch on or off. This switch controls whether or not
+ * error messages are written to the phreeqc.id.err file. The initial setting after calling
+ * \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param error_on If non-zero, writes errors to the error file; if zero, no errors are written to the error file.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetErrorFileOn, GetErrorStringLine, GetErrorStringLineCount, OutputErrorString
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetErrorFileOn(ID,ERR_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: ERR_ON
+ * INTEGER(KIND=4) :: SetErrorFileOn
+ * END FUNCTION SetErrorFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetErrorFileOn(int id, int error_on);
+
+/**
+ * Sets the name of the log file. The default value is phreeqc.id.log.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param filename The name of the log file.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetLogFileName, GetLogFileOn, GetLogString, GetLogStringOn, GetLogStringLine, GetLogStringLineCount, SetLogFileOn, SetLogStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetLogFileName(ID,FILENAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(OUT) :: FILENAME
+ * INTEGER(KIND=4) :: SetLogFileName
+ * END FUNCTION SetLogFileName
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetLogFileName(int id, const char* filename);
+
+/**
+ * Sets the log file switch on or off. This switch controls whether or not phreeqc
+ * writes log messages to the phreeqc.id.log file. The initial setting after calling
+ * \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param log_on If non-zero, log messages are written to the log file; if zero, no log messages are written to the log file.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @remarks
+ * Logging must be enabled through the use of the KNOBS -logfile option in order to receive any log messages.
+ * @see GetLogFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetLogFileOn(ID,LOG_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: LOG_ON
+ * INTEGER(KIND=4) :: SetLogFileOn
+ * END FUNCTION SetLogFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetLogFileOn(int id, int log_on);
+
+/**
+ * Sets the log string switch on or off. This switch controls whether or not the data normally sent
+ * to the log file are stored in a buffer for retrieval. The initial setting after calling
+ * \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param output_string_on If non-zero, captures the log output into a string buffer;
+ * if zero, log output is not captured to a string buffer.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetLogFileOn, GetLogStringOn, GetLogString, GetLogStringLine, GetLogStringLineCount, SetLogFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetLogStringOn(ID,LOG_STRING_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: LOG_STRING_ON
+ * INTEGER(KIND=4) :: SetLogStringOn
+ * END FUNCTION SetLogStringOn
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref GetLogString_c "GetLogString"
+ *
+ * @par Fortran90 Example:
+ * see \ref GetLogStringLine_f90 "GetLogStringLine"
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetLogStringOn(int id, int log_string_on);
+
+
+/**
+ * Sets the name of the output file. This file name is used if not specified within DUMP input.
+ * The default value is phreeqc.id.out.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param filename The name of the phreeqc output file.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetOutputFileName, GetOutputFileOn, GetOutputString, GetOutputStringOn, GetOutputStringLine, GetOutputStringLineCount, SetOutputFileOn, SetOutputStringOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetOutputFileName(ID,FILENAME)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * CHARACTER(LEN=*), INTENT(OUT) :: FILENAME
+ * INTEGER(KIND=4) :: SetOutputFileName
+ * END FUNCTION SetOutputFileName
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetOutputFileName(int id, const char* filename);
+
+/**
+ * Sets the output file switch on or off. This switch controls whether or not phreeqc
+ * writes to the phreeqc.id.out file. This is the output normally generated
+ * when phreeqc is run. The initial setting after calling \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param output_on If non-zero, writes output to the output file; if zero, no output is written to the output file.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetOutputFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetOutputFileOn(ID,OUT_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: OUT_ON
+ * INTEGER(KIND=4) :: SetOutputFileOn
+ * END FUNCTION SetOutputFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetOutputFileOn(int id, int output_on);
+
+/**
+ * Sets the output string switch on or off. This switch controls whether or not the data normally sent
+ * to the output file are stored in a buffer for retrieval. The initial setting after calling
+ * \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param output_string_on If non-zero, captures the phreeqc output into a string buffer;
+ * if zero, phreeqc output is not captured to a string buffer.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetOutputFileOn, GetOutputStringOn, GetOutputString, GetOutputStringLine, GetOutputStringLineCount, SetOutputFileOn
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetOutputStringOn(ID,OUTPUT_STRING_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: OUTPUT_STRING_ON
+ * INTEGER(KIND=4) :: SetOutputStringOn
+ * END FUNCTION SetOutputStringOn
+ *
+ *
+ * @endhtmlonly
+ *
+ * @par C Example:
+ * see \ref GetOutputString_c "GetOutputString"
+ *
+ * @par Fortran90 Example:
+ * see \ref GetOutputStringLine_f90 "GetOutputStringLine"
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetOutputStringOn(int id, int output_string_on);
+
+
+/**
+ * Sets the selected-output file switch on or off. This switch controls whether or not phreeqc writes output to
+ * the SELECTED_OUTPUT (selected.id.out if unspecified) file. The initial setting after calling \ref CreateIPhreeqc is off.
+ * @param id The instance id returned from \ref CreateIPhreeqc.
+ * @param sel_on If non-zero, writes output to the selected-output file; if zero, no output is written to the selected-output file.
+ * @retval IPQ_OK Success.
+ * @retval IPQ_BADINSTANCE The given id is invalid.
+ * @see GetSelectedOutputFileOn, GetSelectedOutputColumnCount, GetSelectedOutputRowCount, GetSelectedOutputValue
+ * @par Fortran90 Interface:
+ * @htmlonly
+ *
+ *
+ * FUNCTION SetSelectedOutputFileOn(ID,SEL_ON)
+ * INTEGER(KIND=4), INTENT(IN) :: ID
+ * LOGICAL(KIND=4), INTENT(IN) :: SEL_ON
+ * INTEGER(KIND=4) :: SetSelectedOutputFileOn
+ * END FUNCTION SetSelectedOutputFileOn
+ *
+ *
+ * @endhtmlonly
+ */
+ IPQ_DLL_EXPORT IPQ_RESULT SetSelectedOutputFileOn(int id, int sel_on);
+
+
+// TODO int RunWithCallback(PFN_PRERUN_CALLBACK pfn_pre, PFN_POSTRUN_CALLBACK pfn_post, void *cookie, int output_on, int error_on, int log_on, int selected_output_on);
+
+
+// TODO int CatchErrors(PFN_CATCH_CALLBACK pfn, void *cookie);
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif // INC_IPHREEQC_H
diff --git a/IPhreeqc.hpp b/IPhreeqc.hpp
new file mode 100644
index 00000000..470d48c1
--- /dev/null
+++ b/IPhreeqc.hpp
@@ -0,0 +1,793 @@
+/*! @file IPhreeqc.hpp
+ @brief C++ Documentation
+*/
+
+#ifndef INC_IPHREEQC_HPP
+#define INC_IPHREEQC_HPP
+
+#include