changed svn:eol-style to native for many files

git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@4276 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2010-04-21 05:29:27 +00:00
parent a067053c23
commit 51c669367b
11 changed files with 3977 additions and 3977 deletions

View File

@ -1,73 +1,73 @@
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 AccumulateLine
INTEGER CreateIPhreeqc
INTEGER DestroyIPhreeqc
C INTEGER GetComponent
INTEGER GetComponentCount
INTEGER GetDumpLine
INTEGER GetDumpLineCount
INTEGER GetErrorLine
INTEGER GetErrorLineCount
INTEGER GetSelectedOutputColumnCount
INTEGER GetSelectedOutputRowCount
INTEGER GetSelectedOutputValue
INTEGER GetWarningLine
INTEGER GetWarningLineCount
INTEGER LoadDatabase
INTEGER LoadDatabaseString
C INTEGER OutputLastError
C INTEGER OutputLastWarning
INTEGER OutputLines
INTEGER RunAccumulated
INTEGER RunFile
INTEGER RunString
INTEGER SetDumpOn
INTEGER SetDumpStringOn
INTEGER SetErrorOn
INTEGER SetLogOn
INTEGER SetOutputOn
INTEGER SetSelectedOutputOn
INTEGER UnLoadDatabase
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 AccumulateLine
INTEGER CreateIPhreeqc
INTEGER DestroyIPhreeqc
C INTEGER GetComponent
INTEGER GetComponentCount
INTEGER GetDumpLine
INTEGER GetDumpLineCount
INTEGER GetErrorLine
INTEGER GetErrorLineCount
INTEGER GetSelectedOutputColumnCount
INTEGER GetSelectedOutputRowCount
INTEGER GetSelectedOutputValue
INTEGER GetWarningLine
INTEGER GetWarningLineCount
INTEGER LoadDatabase
INTEGER LoadDatabaseString
C INTEGER OutputLastError
C INTEGER OutputLastWarning
INTEGER OutputLines
INTEGER RunAccumulated
INTEGER RunFile
INTEGER RunString
INTEGER SetDumpOn
INTEGER SetDumpStringOn
INTEGER SetErrorOn
INTEGER SetLogOn
INTEGER SetOutputOn
INTEGER SetSelectedOutputOn
INTEGER UnLoadDatabase

View File

@ -1,248 +1,248 @@
! GetSelectedOutputValue TYPES
INTEGER,PARAMETER :: TT_EMPTY = 0
INTEGER,PARAMETER :: TT_ERROR = 1
INTEGER,PARAMETER :: TT_DOUBLE = 3
INTEGER,PARAMETER :: TT_STRING = 4
! ERROR RETURN TYPES
INTEGER,PARAMETER :: IPQ_OK = 0
INTEGER,PARAMETER :: IPQ_OUTOFMEMORY = -1
INTEGER,PARAMETER :: IPQ_BADVARTYPE = -2
INTEGER,PARAMETER :: IPQ_INVALIDARG = -3
INTEGER,PARAMETER :: IPQ_INVALIDROW = -4
INTEGER,PARAMETER :: IPQ_INVALIDCOL = -5
INTEGER,PARAMETER :: IPQ_BADINSTANCE = -6
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
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) :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER(KIND=4) :: LoadDatabaseString
END FUNCTION LoadDatabaseString
END INTERFACE
INTERFACE
SUBROUTINE OutputLastError(ID)
INTEGER(KIND=4) :: ID
END SUBROUTINE OutputLastError
END INTERFACE
INTERFACE
FUNCTION AccumulateLine(ID, LINE)
INTEGER(KIND=4) :: ID
CHARACTER(LEN=*) :: LINE
INTEGER(KIND=4) :: AccumulateLine
END FUNCTION AccumulateLine
END INTERFACE
INTERFACE
FUNCTION RunAccumulated(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: RunAccumulated
END FUNCTION RunAccumulated
END INTERFACE
INTERFACE
FUNCTION RunFile(ID,FNAME)
INTEGER(KIND=4) :: ID
CHARACTER(LEN=*) :: FNAME
INTEGER(KIND=4) :: RunFile
END FUNCTION RunFile
END INTERFACE
INTERFACE
FUNCTION RunString(ID,INPUT)
INTEGER(KIND=4) :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER(KIND=4) :: RunString
END FUNCTION RunString
END INTERFACE
INTERFACE
FUNCTION SetSelectedOutputOn(ID,SEL_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: SEL_ON
INTEGER(KIND=4) :: SetSelectedOutputOn
END FUNCTION SetSelectedOutputOn
END INTERFACE
INTERFACE
FUNCTION SetOutputOn(ID,OUT_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: OUT_ON
INTEGER(KIND=4) :: SetOutputOn
END FUNCTION SetOutputOn
END INTERFACE
INTERFACE
FUNCTION SetErrorOn(ID,ERR_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: ERR_ON
INTEGER(KIND=4) :: SetErrorOn
END FUNCTION SetErrorOn
END INTERFACE
INTERFACE
FUNCTION SetLogOn(ID,LOG_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: LOG_ON
INTEGER(KIND=4) :: SetLogOn
END FUNCTION SetLogOn
END INTERFACE
INTERFACE
FUNCTION SetDumpOn(ID,DUMP_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: DUMP_ON
INTEGER(KIND=4) :: SetDumpOn
END FUNCTION SetDumpOn
END INTERFACE
INTERFACE
FUNCTION SetDumpStringOn(ID,DUMP_STRING_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: DUMP_STRING_ON
INTEGER(KIND=4) :: SetDumpStringOn
END FUNCTION SetDumpStringOn
END INTERFACE
INTERFACE
SUBROUTINE OutputLines(ID)
INTEGER(KIND=4) :: ID
END SUBROUTINE OutputLines
END INTERFACE
INTERFACE
FUNCTION GetSelectedOutputRowCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetSelectedOutputRowCount
END FUNCTION GetSelectedOutputRowCount
END INTERFACE
INTERFACE
FUNCTION GetSelectedOutputColumnCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetSelectedOutputColumnCount
END FUNCTION GetSelectedOutputColumnCount
END INTERFACE
INTERFACE
FUNCTION GetSelectedOutputValue(ID,ROW,COL,VTYPE,DVALUE,SVALUE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: ROW
INTEGER(KIND=4) :: COL
INTEGER(KIND=4) :: VTYPE
REAL(KIND=8) :: DVALUE
CHARACTER(LEN=*) :: SVALUE
INTEGER(KIND=4) :: GetSelectedOutputValue
END FUNCTION GetSelectedOutputValue
END INTERFACE
INTERFACE
FUNCTION GetDumpLineCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetDumpLineCount
END FUNCTION GetDumpLineCount
END INTERFACE
INTERFACE
SUBROUTINE GetDumpLine(ID,N,LINE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: LINE
END SUBROUTINE
END INTERFACE
INTERFACE
FUNCTION GetErrorLineCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetErrorLineCount
END FUNCTION GetErrorLineCount
END INTERFACE
INTERFACE
SUBROUTINE GetErrorLine(ID,N,LINE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: LINE
END SUBROUTINE
END INTERFACE
INTERFACE
FUNCTION GetWarningLineCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetWarningLineCount
END FUNCTION GetWarningLineCount
END INTERFACE
INTERFACE
SUBROUTINE GetWarningLine(ID,N,LINE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: LINE
END SUBROUTINE
END INTERFACE
INTERFACE
FUNCTION GetComponentCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetComponentCount
END FUNCTION GetComponentCount
END INTERFACE
INTERFACE
SUBROUTINE GetComponent(ID,N,COMP)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: COMP
END SUBROUTINE GetComponent
END INTERFACE
! GetSelectedOutputValue TYPES
INTEGER,PARAMETER :: TT_EMPTY = 0
INTEGER,PARAMETER :: TT_ERROR = 1
INTEGER,PARAMETER :: TT_DOUBLE = 3
INTEGER,PARAMETER :: TT_STRING = 4
! ERROR RETURN TYPES
INTEGER,PARAMETER :: IPQ_OK = 0
INTEGER,PARAMETER :: IPQ_OUTOFMEMORY = -1
INTEGER,PARAMETER :: IPQ_BADVARTYPE = -2
INTEGER,PARAMETER :: IPQ_INVALIDARG = -3
INTEGER,PARAMETER :: IPQ_INVALIDROW = -4
INTEGER,PARAMETER :: IPQ_INVALIDCOL = -5
INTEGER,PARAMETER :: IPQ_BADINSTANCE = -6
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
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) :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER(KIND=4) :: LoadDatabaseString
END FUNCTION LoadDatabaseString
END INTERFACE
INTERFACE
SUBROUTINE OutputLastError(ID)
INTEGER(KIND=4) :: ID
END SUBROUTINE OutputLastError
END INTERFACE
INTERFACE
FUNCTION AccumulateLine(ID, LINE)
INTEGER(KIND=4) :: ID
CHARACTER(LEN=*) :: LINE
INTEGER(KIND=4) :: AccumulateLine
END FUNCTION AccumulateLine
END INTERFACE
INTERFACE
FUNCTION RunAccumulated(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: RunAccumulated
END FUNCTION RunAccumulated
END INTERFACE
INTERFACE
FUNCTION RunFile(ID,FNAME)
INTEGER(KIND=4) :: ID
CHARACTER(LEN=*) :: FNAME
INTEGER(KIND=4) :: RunFile
END FUNCTION RunFile
END INTERFACE
INTERFACE
FUNCTION RunString(ID,INPUT)
INTEGER(KIND=4) :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER(KIND=4) :: RunString
END FUNCTION RunString
END INTERFACE
INTERFACE
FUNCTION SetSelectedOutputOn(ID,SEL_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: SEL_ON
INTEGER(KIND=4) :: SetSelectedOutputOn
END FUNCTION SetSelectedOutputOn
END INTERFACE
INTERFACE
FUNCTION SetOutputOn(ID,OUT_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: OUT_ON
INTEGER(KIND=4) :: SetOutputOn
END FUNCTION SetOutputOn
END INTERFACE
INTERFACE
FUNCTION SetErrorOn(ID,ERR_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: ERR_ON
INTEGER(KIND=4) :: SetErrorOn
END FUNCTION SetErrorOn
END INTERFACE
INTERFACE
FUNCTION SetLogOn(ID,LOG_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: LOG_ON
INTEGER(KIND=4) :: SetLogOn
END FUNCTION SetLogOn
END INTERFACE
INTERFACE
FUNCTION SetDumpOn(ID,DUMP_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: DUMP_ON
INTEGER(KIND=4) :: SetDumpOn
END FUNCTION SetDumpOn
END INTERFACE
INTERFACE
FUNCTION SetDumpStringOn(ID,DUMP_STRING_ON)
INTEGER(KIND=4) :: ID
LOGICAL(KIND=4) :: DUMP_STRING_ON
INTEGER(KIND=4) :: SetDumpStringOn
END FUNCTION SetDumpStringOn
END INTERFACE
INTERFACE
SUBROUTINE OutputLines(ID)
INTEGER(KIND=4) :: ID
END SUBROUTINE OutputLines
END INTERFACE
INTERFACE
FUNCTION GetSelectedOutputRowCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetSelectedOutputRowCount
END FUNCTION GetSelectedOutputRowCount
END INTERFACE
INTERFACE
FUNCTION GetSelectedOutputColumnCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetSelectedOutputColumnCount
END FUNCTION GetSelectedOutputColumnCount
END INTERFACE
INTERFACE
FUNCTION GetSelectedOutputValue(ID,ROW,COL,VTYPE,DVALUE,SVALUE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: ROW
INTEGER(KIND=4) :: COL
INTEGER(KIND=4) :: VTYPE
REAL(KIND=8) :: DVALUE
CHARACTER(LEN=*) :: SVALUE
INTEGER(KIND=4) :: GetSelectedOutputValue
END FUNCTION GetSelectedOutputValue
END INTERFACE
INTERFACE
FUNCTION GetDumpLineCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetDumpLineCount
END FUNCTION GetDumpLineCount
END INTERFACE
INTERFACE
SUBROUTINE GetDumpLine(ID,N,LINE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: LINE
END SUBROUTINE
END INTERFACE
INTERFACE
FUNCTION GetErrorLineCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetErrorLineCount
END FUNCTION GetErrorLineCount
END INTERFACE
INTERFACE
SUBROUTINE GetErrorLine(ID,N,LINE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: LINE
END SUBROUTINE
END INTERFACE
INTERFACE
FUNCTION GetWarningLineCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetWarningLineCount
END FUNCTION GetWarningLineCount
END INTERFACE
INTERFACE
SUBROUTINE GetWarningLine(ID,N,LINE)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: LINE
END SUBROUTINE
END INTERFACE
INTERFACE
FUNCTION GetComponentCount(ID)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: GetComponentCount
END FUNCTION GetComponentCount
END INTERFACE
INTERFACE
SUBROUTINE GetComponent(ID,N,COMP)
INTEGER(KIND=4) :: ID
INTEGER(KIND=4) :: N
CHARACTER(LEN=*) :: COMP
END SUBROUTINE GetComponent
END INTERFACE

File diff suppressed because it is too large Load Diff

View File

@ -1,152 +1,152 @@
#ifndef INC_IPHREEQC_HPP
#define INC_IPHREEQC_HPP
#include <exception>
#include <list>
#include <vector>
#include <cstdarg>
#include "IPhreeqcCallbacks.h" /* PFN_PRERUN_CALLBACK, PFN_POSTRUN_CALLBACK, PFN_CATCH_CALLBACK */
#include "Var.h" /* VRESULT */
#if defined(_WINDLL)
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT
#endif
class Phreeqc;
class IErrorReporter;
class CSelectedOutput;
class DLL_EXPORT IPhreeqcStop : std::exception
{
};
class DLL_EXPORT IPhreeqc
{
public:
IPhreeqc(void);
~IPhreeqc(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 OutputLastError(void);
void OutputLastWarning(void);
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);
int GetWarningLineCount(void)const;
const char* GetWarningLine(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);
protected:
static int handler(const int action, const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args);
int output_handler(const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args);
int open_handler(const int type, const char *file_name);
static int module_handler(const int action, const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args);
int module_isopen_handler(const int type);
int module_open_handler(const int type, const char *file_name);
int output_isopen(const int type);
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);
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:
#if defined(CPPUNIT)
friend class TestIPhreeqc;
friend class TestSelectedOutput;
#endif
Phreeqc* PhreeqcPtr;
private:
// copy ctor not supported
IPhreeqc(const IPhreeqc&);
// operator= not supported
IPhreeqc& operator=(const IPhreeqc&);
};
#ifndef INC_IPHREEQC_HPP
#define INC_IPHREEQC_HPP
#include <exception>
#include <list>
#include <vector>
#include <cstdarg>
#include "IPhreeqcCallbacks.h" /* PFN_PRERUN_CALLBACK, PFN_POSTRUN_CALLBACK, PFN_CATCH_CALLBACK */
#include "Var.h" /* VRESULT */
#if defined(_WINDLL)
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT
#endif
class Phreeqc;
class IErrorReporter;
class CSelectedOutput;
class DLL_EXPORT IPhreeqcStop : std::exception
{
};
class DLL_EXPORT IPhreeqc
{
public:
IPhreeqc(void);
~IPhreeqc(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 OutputLastError(void);
void OutputLastWarning(void);
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);
int GetWarningLineCount(void)const;
const char* GetWarningLine(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);
protected:
static int handler(const int action, const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args);
int output_handler(const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args);
int open_handler(const int type, const char *file_name);
static int module_handler(const int action, const int type, const char *err_str, const int stop, void *cookie, const char *format, va_list args);
int module_isopen_handler(const int type);
int module_open_handler(const int type, const char *file_name);
int output_isopen(const int type);
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);
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:
#if defined(CPPUNIT)
friend class TestIPhreeqc;
friend class TestSelectedOutput;
#endif
Phreeqc* PhreeqcPtr;
private:
// copy ctor not supported
IPhreeqc(const IPhreeqc&);
// operator= not supported
IPhreeqc& operator=(const IPhreeqc&);
};
#endif // INC_IPHREEQC_HPP

View File

@ -1,19 +1,19 @@
#ifndef _INC_IPHREEQC_CALLBACKS_H
#define _INC_IPHREEQC_CALLBACKS_H
#if defined(__cplusplus)
extern "C" {
#endif
typedef int (*PFN_PRERUN_CALLBACK)(void *cookie);
typedef int (*PFN_POSTRUN_CALLBACK)(void *cookie);
typedef int (*PFN_CATCH_CALLBACK)(void *cookie);
#if defined(__cplusplus)
}
#endif
#endif /* _INC_IPHREEQC_CALLBACKS_H */
#ifndef _INC_IPHREEQC_CALLBACKS_H
#define _INC_IPHREEQC_CALLBACKS_H
#if defined(__cplusplus)
extern "C" {
#endif
typedef int (*PFN_PRERUN_CALLBACK)(void *cookie);
typedef int (*PFN_POSTRUN_CALLBACK)(void *cookie);
typedef int (*PFN_CATCH_CALLBACK)(void *cookie);
#if defined(__cplusplus)
}
#endif
#endif /* _INC_IPHREEQC_CALLBACKS_H */

File diff suppressed because it is too large Load Diff

View File

@ -1,250 +1,250 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION CreateIPhreeqc()
IMPLICIT NONE
INTEGER :: CreateIPhreeqc
INTEGER :: CreateIPhreeqcF
CreateIPhreeqc = CreateIPhreeqcF()
END FUNCTION CreateIPhreeqc
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION DestroyIPhreeqc(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: DestroyIPhreeqc
INTEGER :: DestroyIPhreeqcF
DestroyIPhreeqc = DestroyIPhreeqcF(ID)
END FUNCTION DestroyIPhreeqc
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION LoadDatabase(ID,FILENAME)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: FILENAME
INTEGER :: LoadDatabase
INTEGER :: LoadDatabaseF
LoadDatabase = LoadDatabaseF(ID,FILENAME)
END FUNCTION LoadDatabase
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION LoadDatabaseString(ID,INPUT)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER :: LoadDatabaseString
INTEGER :: LoadDatabaseStringF
LoadDatabaseString = LoadDatabaseStringF(ID,INPUT)
END FUNCTION LoadDatabaseString
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION UnLoadDatabase(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: UnLoadDatabase
INTEGER :: UnLoadDatabaseF
UnLoadDatabase = UnLoadDatabaseF(ID)
END FUNCTION UnLoadDatabase
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLastError(ID)
IMPLICIT NONE
INTEGER :: ID
CALL OutputLastErrorF(ID)
END SUBROUTINE OutputLastError
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLastWarning(ID)
IMPLICIT NONE
INTEGER :: ID
CALL OutputLastWarningF(ID)
END SUBROUTINE OutputLastWarning
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION AccumulateLine(ID,LINE)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: LINE
INTEGER :: AccumulateLine
INTEGER :: AccumulateLineF
AccumulateLine = AccumulateLineF(ID,LINE)
END FUNCTION AccumulateLine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetSelectedOutputOn(ID,SELECTED_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: SELECTED_ON
INTEGER :: SetSelectedOutputOn
INTEGER :: SetSelectedOutputOnF
SetSelectedOutputOn = SetSelectedOutputOnF(ID,SELECTED_ON)
END FUNCTION SetSelectedOutputOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetOutputOn(ID,OUTPUT_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: OUTPUT_ON
INTEGER :: SetOutputOn
INTEGER :: SetOutputOnF
SetOutputOn = SetOutputOnF(ID,OUTPUT_ON)
END FUNCTION SetOutputOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetErrorOn(ID,ERROR_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: ERROR_ON
INTEGER :: SetErrorOn
INTEGER :: SetErrorOnF
SetErrorOn = SetErrorOnF(ID,ERROR_ON)
END FUNCTION SetErrorOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetLogOn(ID,LOG_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: LOG_ON
INTEGER :: SetLogOn
INTEGER :: SetLogOnF
SetLogOn = SetLogOnF(ID,LOG_ON)
END FUNCTION SetLogOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetDumpOn(ID,DUMP_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: DUMP_ON
INTEGER :: SetDumpOn
INTEGER :: SetDumpOnF
SetDumpOn = SetDumpOnF(ID,DUMP_ON)
END FUNCTION SetDumpOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetDumpStringOn(ID,DUMP_STRING_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: DUMP_STRING_ON
INTEGER :: SetDumpStringOn
INTEGER :: SetDumpStringOnF
SetDumpStringOn = SetDumpStringOnF(ID,DUMP_STRING_ON)
END FUNCTION SetDumpStringOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetDumpLineCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetDumpLineCount
INTEGER :: GetDumpLineCountF
GetDumpLineCount = GetDumpLineCountF(ID)
END FUNCTION GetDumpLineCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetDumpLine(ID,N,LINE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: LINE
INTEGER :: GetDumpLine
INTEGER :: GetDumpLineF
GetDumpLine = GetDumpLineF(ID,N,LINE)
END FUNCTION GetDumpLine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetErrorLineCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetErrorLineCount
INTEGER :: GetErrorLineCountF
GetErrorLineCount = GetErrorLineCountF(ID)
END FUNCTION GetErrorLineCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetErrorLine(ID,N,LINE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: LINE
INTEGER :: GetErrorLine
INTEGER :: GetErrorLineF
GetErrorLine = GetErrorLineF(ID,N,LINE)
END FUNCTION GetErrorLine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetComponentCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetComponentCount
INTEGER :: GetComponentCountF
GetComponentCount = GetComponentCountF(ID)
END FUNCTION GetComponentCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetComponent(ID,N,COMP)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: COMP
INTEGER :: GetComponent
INTEGER :: GetComponentF
GetComponent = GetComponentF(ID,N,COMP)
END FUNCTION GetComponent
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION RunAccumulated(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: RunAccumulated
INTEGER :: RunAccumulatedF
RunAccumulated = RunAccumulatedF(ID)
END FUNCTION RunAccumulated
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION RunFile(ID,FILENAME)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: FILENAME
INTEGER :: RunFile
INTEGER :: RunFileF
RunFile = RunFileF(ID,FILENAME)
END FUNCTION RunFile
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION RunString(ID,INPUT)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER :: RunString
INTEGER :: RunStringF
RunString = RunStringF(ID,INPUT)
END FUNCTION RunString
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetSelectedOutputRowCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetSelectedOutputRowCount
INTEGER :: GetSelectedOutputRowCountF
GetSelectedOutputRowCount = GetSelectedOutputRowCountF(ID)
END FUNCTION GetSelectedOutputRowCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetSelectedOutputColumnCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetSelectedOutputColumnCount
INTEGER :: GetSelectedOutputColumnCountF
GetSelectedOutputColumnCount = GetSelectedOutputColumnCountF(ID)
END FUNCTION GetSelectedOutputColumnCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetSelectedOutputValue(ID,ROW,COL,VTYPE,DVALUE,SVALUE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: ROW
INTEGER :: COL
INTEGER :: VTYPE
REAL*8 :: DVALUE
CHARACTER(LEN=*) :: SVALUE
INTEGER :: GetSelectedOutputValue
INTEGER :: GetSelectedOutputValueF
GetSelectedOutputValue = GetSelectedOutputValueF(ID,ROW,
& COL,VTYPE,DVALUE,SVALUE)
END FUNCTION GetSelectedOutputValue
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLines(ID)
IMPLICIT NONE
INTEGER :: ID
CALL OutputLinesF(ID)
END SUBROUTINE OutputLines
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetWarningLineCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetWarningLineCount
INTEGER :: GetWarningLineCountF
GetWarningLineCount = GetWarningLineCountF(ID)
END FUNCTION GetWarningLineCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetWarningLine(ID,N,LINE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: LINE
INTEGER :: GetWarningLine
INTEGER :: GetWarningLineF
GetWarningLine = GetWarningLineF(ID,N,LINE)
END FUNCTION GetWarningLine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION CreateIPhreeqc()
IMPLICIT NONE
INTEGER :: CreateIPhreeqc
INTEGER :: CreateIPhreeqcF
CreateIPhreeqc = CreateIPhreeqcF()
END FUNCTION CreateIPhreeqc
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION DestroyIPhreeqc(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: DestroyIPhreeqc
INTEGER :: DestroyIPhreeqcF
DestroyIPhreeqc = DestroyIPhreeqcF(ID)
END FUNCTION DestroyIPhreeqc
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION LoadDatabase(ID,FILENAME)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: FILENAME
INTEGER :: LoadDatabase
INTEGER :: LoadDatabaseF
LoadDatabase = LoadDatabaseF(ID,FILENAME)
END FUNCTION LoadDatabase
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION LoadDatabaseString(ID,INPUT)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER :: LoadDatabaseString
INTEGER :: LoadDatabaseStringF
LoadDatabaseString = LoadDatabaseStringF(ID,INPUT)
END FUNCTION LoadDatabaseString
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION UnLoadDatabase(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: UnLoadDatabase
INTEGER :: UnLoadDatabaseF
UnLoadDatabase = UnLoadDatabaseF(ID)
END FUNCTION UnLoadDatabase
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLastError(ID)
IMPLICIT NONE
INTEGER :: ID
CALL OutputLastErrorF(ID)
END SUBROUTINE OutputLastError
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLastWarning(ID)
IMPLICIT NONE
INTEGER :: ID
CALL OutputLastWarningF(ID)
END SUBROUTINE OutputLastWarning
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION AccumulateLine(ID,LINE)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: LINE
INTEGER :: AccumulateLine
INTEGER :: AccumulateLineF
AccumulateLine = AccumulateLineF(ID,LINE)
END FUNCTION AccumulateLine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetSelectedOutputOn(ID,SELECTED_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: SELECTED_ON
INTEGER :: SetSelectedOutputOn
INTEGER :: SetSelectedOutputOnF
SetSelectedOutputOn = SetSelectedOutputOnF(ID,SELECTED_ON)
END FUNCTION SetSelectedOutputOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetOutputOn(ID,OUTPUT_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: OUTPUT_ON
INTEGER :: SetOutputOn
INTEGER :: SetOutputOnF
SetOutputOn = SetOutputOnF(ID,OUTPUT_ON)
END FUNCTION SetOutputOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetErrorOn(ID,ERROR_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: ERROR_ON
INTEGER :: SetErrorOn
INTEGER :: SetErrorOnF
SetErrorOn = SetErrorOnF(ID,ERROR_ON)
END FUNCTION SetErrorOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetLogOn(ID,LOG_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: LOG_ON
INTEGER :: SetLogOn
INTEGER :: SetLogOnF
SetLogOn = SetLogOnF(ID,LOG_ON)
END FUNCTION SetLogOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetDumpOn(ID,DUMP_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: DUMP_ON
INTEGER :: SetDumpOn
INTEGER :: SetDumpOnF
SetDumpOn = SetDumpOnF(ID,DUMP_ON)
END FUNCTION SetDumpOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION SetDumpStringOn(ID,DUMP_STRING_ON)
IMPLICIT NONE
INTEGER :: ID
LOGICAL :: DUMP_STRING_ON
INTEGER :: SetDumpStringOn
INTEGER :: SetDumpStringOnF
SetDumpStringOn = SetDumpStringOnF(ID,DUMP_STRING_ON)
END FUNCTION SetDumpStringOn
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetDumpLineCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetDumpLineCount
INTEGER :: GetDumpLineCountF
GetDumpLineCount = GetDumpLineCountF(ID)
END FUNCTION GetDumpLineCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetDumpLine(ID,N,LINE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: LINE
INTEGER :: GetDumpLine
INTEGER :: GetDumpLineF
GetDumpLine = GetDumpLineF(ID,N,LINE)
END FUNCTION GetDumpLine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetErrorLineCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetErrorLineCount
INTEGER :: GetErrorLineCountF
GetErrorLineCount = GetErrorLineCountF(ID)
END FUNCTION GetErrorLineCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetErrorLine(ID,N,LINE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: LINE
INTEGER :: GetErrorLine
INTEGER :: GetErrorLineF
GetErrorLine = GetErrorLineF(ID,N,LINE)
END FUNCTION GetErrorLine
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetComponentCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetComponentCount
INTEGER :: GetComponentCountF
GetComponentCount = GetComponentCountF(ID)
END FUNCTION GetComponentCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetComponent(ID,N,COMP)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: COMP
INTEGER :: GetComponent
INTEGER :: GetComponentF
GetComponent = GetComponentF(ID,N,COMP)
END FUNCTION GetComponent
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION RunAccumulated(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: RunAccumulated
INTEGER :: RunAccumulatedF
RunAccumulated = RunAccumulatedF(ID)
END FUNCTION RunAccumulated
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION RunFile(ID,FILENAME)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: FILENAME
INTEGER :: RunFile
INTEGER :: RunFileF
RunFile = RunFileF(ID,FILENAME)
END FUNCTION RunFile
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION RunString(ID,INPUT)
IMPLICIT NONE
INTEGER :: ID
CHARACTER(LEN=*) :: INPUT
INTEGER :: RunString
INTEGER :: RunStringF
RunString = RunStringF(ID,INPUT)
END FUNCTION RunString
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetSelectedOutputRowCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetSelectedOutputRowCount
INTEGER :: GetSelectedOutputRowCountF
GetSelectedOutputRowCount = GetSelectedOutputRowCountF(ID)
END FUNCTION GetSelectedOutputRowCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetSelectedOutputColumnCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetSelectedOutputColumnCount
INTEGER :: GetSelectedOutputColumnCountF
GetSelectedOutputColumnCount = GetSelectedOutputColumnCountF(ID)
END FUNCTION GetSelectedOutputColumnCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetSelectedOutputValue(ID,ROW,COL,VTYPE,DVALUE,SVALUE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: ROW
INTEGER :: COL
INTEGER :: VTYPE
REAL*8 :: DVALUE
CHARACTER(LEN=*) :: SVALUE
INTEGER :: GetSelectedOutputValue
INTEGER :: GetSelectedOutputValueF
GetSelectedOutputValue = GetSelectedOutputValueF(ID,ROW,
& COL,VTYPE,DVALUE,SVALUE)
END FUNCTION GetSelectedOutputValue
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE OutputLines(ID)
IMPLICIT NONE
INTEGER :: ID
CALL OutputLinesF(ID)
END SUBROUTINE OutputLines
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetWarningLineCount(ID)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: GetWarningLineCount
INTEGER :: GetWarningLineCountF
GetWarningLineCount = GetWarningLineCountF(ID)
END FUNCTION GetWarningLineCount
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION GetWarningLine(ID,N,LINE)
IMPLICIT NONE
INTEGER :: ID
INTEGER :: N
CHARACTER(LEN=*) :: LINE
INTEGER :: GetWarningLine
INTEGER :: GetWarningLineF
GetWarningLine = GetWarningLineF(ID,N,LINE)
END FUNCTION GetWarningLine

File diff suppressed because it is too large Load Diff

View File

@ -1,102 +1,102 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION build_tally_table()
IMPLICIT NONE
INTEGER :: build_tally_table
#if defined(_WIN32)
INTERFACE
FUNCTION build_tally_tableF()
!DEC$ ATTRIBUTES C,REFERENCE::build_tally_tableF
!DEC$ ATTRIBUTES ALIAS:'_build_tally_tableF'::build_tally_tableF
INTEGER(KIND=4) :: build_tally_tableF
END FUNCTION build_tally_tableF
END INTERFACE
#else
INTEGER :: build_tally_tableF
#endif
build_tally_table = build_tally_tableF()
END FUNCTION build_tally_table
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION get_tally_table_rows_columns(rows, cols)
IMPLICIT NONE
INTEGER :: get_tally_table_rows_columns
INTEGER :: rows
INTEGER :: cols
#if defined(_WIN32)
INTERFACE
FUNCTION rows_cols(rows,cols)
!DEC$ ATTRIBUTES C,REFERENCE::rows_cols
!DEC$ ATTRIBUTES ALIAS:'_get_tally_table_rows_columnsF'::rows_cols
INTEGER :: rows
INTEGER :: cols
INTEGER(KIND=4) :: rows_cols
END FUNCTION rows_cols
END INTERFACE
get_tally_table_rows_columns = rows_cols(rows,cols)
#else
INTEGER get_tally_table_rows_columnsF
get_tally_table_rows_columns =
& get_tally_table_rows_columnsF(rows,cols)
#endif
END FUNCTION get_tally_table_rows_columns
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION get_tally_table_column_heading(col,etype,string)
IMPLICIT NONE
INTEGER col
INTEGER etype
CHARACTER(*) string
INTEGER adjcol
INTEGER get_tally_table_column_heading
#if defined(_WIN32)
INTERFACE
FUNCTION col_head(col,etype,string)
!DEC$ ATTRIBUTES C,REFERENCE::col_head
!DEC$ ATTRIBUTES ALIAS:'_get_tally_table_column_headingF'::col_head
INTEGER col
INTEGER etype
CHARACTER(*) string
INTEGER col_head
END FUNCTION col_head
END INTERFACE
adjcol = col - 1
get_tally_table_column_heading = col_head(adjcol,etype,string)
#else
INTEGER get_tally_table_column_headingF
adjcol = col - 1
get_tally_table_column_heading =
& get_tally_table_column_headingF(adjcol,etype,string)
#endif
etype = etype + 1
END FUNCTION get_tally_table_column_heading
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION get_tally_table_row_heading(row,string)
IMPLICIT NONE
INTEGER row
CHARACTER(*) string
INTEGER adjrow
INTEGER get_tally_table_row_heading
#if defined(_WIN32)
INTERFACE
FUNCTION row_head(row,string)
!DEC$ ATTRIBUTES C,REFERENCE::row_head
!DEC$ ATTRIBUTES ALIAS:'_get_tally_table_row_headingF'::row_head
INTEGER row
CHARACTER(*) string
INTEGER row_head
END FUNCTION row_head
END INTERFACE
adjrow = row - 1
get_tally_table_row_heading = row_head(adjrow,string)
#else
INTEGER get_tally_table_row_headingF
adjrow = row - 1
get_tally_table_row_heading =
& get_tally_table_row_headingF(adjrow,string)
#endif
END FUNCTION get_tally_table_row_heading
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION build_tally_table()
IMPLICIT NONE
INTEGER :: build_tally_table
#if defined(_WIN32)
INTERFACE
FUNCTION build_tally_tableF()
!DEC$ ATTRIBUTES C,REFERENCE::build_tally_tableF
!DEC$ ATTRIBUTES ALIAS:'_build_tally_tableF'::build_tally_tableF
INTEGER(KIND=4) :: build_tally_tableF
END FUNCTION build_tally_tableF
END INTERFACE
#else
INTEGER :: build_tally_tableF
#endif
build_tally_table = build_tally_tableF()
END FUNCTION build_tally_table
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION get_tally_table_rows_columns(rows, cols)
IMPLICIT NONE
INTEGER :: get_tally_table_rows_columns
INTEGER :: rows
INTEGER :: cols
#if defined(_WIN32)
INTERFACE
FUNCTION rows_cols(rows,cols)
!DEC$ ATTRIBUTES C,REFERENCE::rows_cols
!DEC$ ATTRIBUTES ALIAS:'_get_tally_table_rows_columnsF'::rows_cols
INTEGER :: rows
INTEGER :: cols
INTEGER(KIND=4) :: rows_cols
END FUNCTION rows_cols
END INTERFACE
get_tally_table_rows_columns = rows_cols(rows,cols)
#else
INTEGER get_tally_table_rows_columnsF
get_tally_table_rows_columns =
& get_tally_table_rows_columnsF(rows,cols)
#endif
END FUNCTION get_tally_table_rows_columns
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION get_tally_table_column_heading(col,etype,string)
IMPLICIT NONE
INTEGER col
INTEGER etype
CHARACTER(*) string
INTEGER adjcol
INTEGER get_tally_table_column_heading
#if defined(_WIN32)
INTERFACE
FUNCTION col_head(col,etype,string)
!DEC$ ATTRIBUTES C,REFERENCE::col_head
!DEC$ ATTRIBUTES ALIAS:'_get_tally_table_column_headingF'::col_head
INTEGER col
INTEGER etype
CHARACTER(*) string
INTEGER col_head
END FUNCTION col_head
END INTERFACE
adjcol = col - 1
get_tally_table_column_heading = col_head(adjcol,etype,string)
#else
INTEGER get_tally_table_column_headingF
adjcol = col - 1
get_tally_table_column_heading =
& get_tally_table_column_headingF(adjcol,etype,string)
#endif
etype = etype + 1
END FUNCTION get_tally_table_column_heading
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FUNCTION get_tally_table_row_heading(row,string)
IMPLICIT NONE
INTEGER row
CHARACTER(*) string
INTEGER adjrow
INTEGER get_tally_table_row_heading
#if defined(_WIN32)
INTERFACE
FUNCTION row_head(row,string)
!DEC$ ATTRIBUTES C,REFERENCE::row_head
!DEC$ ATTRIBUTES ALIAS:'_get_tally_table_row_headingF'::row_head
INTEGER row
CHARACTER(*) string
INTEGER row_head
END FUNCTION row_head
END INTERFACE
adjrow = row - 1
get_tally_table_row_heading = row_head(adjrow,string)
#else
INTEGER get_tally_table_row_headingF
adjrow = row - 1
get_tally_table_row_heading =
& get_tally_table_row_headingF(adjrow,string)
#endif
END FUNCTION get_tally_table_row_heading

View File

@ -1,467 +1,467 @@
#include <ctype.h> /* isgraph */
#include <stdlib.h> /* malloc */
#include <memory.h> /* memcpy */
#include <assert.h> /* assert */
#include <stdio.h> /* sprintf */
#include "phrqtype.h"
#include "IPhreeqc.h"
#include "fwrap.h"
char *
f2cstring(char* fstring, int len)
{
char *cstr, *str;
int i;
str = fstring;
for (i = len - 1; i >= 0 && !isgraph((int)str[i]); i--);
cstr = (char *) malloc((size_t) (i + 2));
if (!cstr) return 0;
cstr[i + 1] = '\0';
memcpy(cstr,str,i+1);
return cstr;
}
void
padfstring(char *dest, const char *src, unsigned int len)
{
unsigned int sofar;
for (sofar = 0; (sofar < len) && (*src != '\0'); ++sofar)
*dest++ = *src++;
while (sofar++ < len)
*dest++ = ' ';
}
int
CreateIPhreeqcF(void)
{
return ::CreateIPhreeqc();
}
int
DestroyIPhreeqcF(int *id)
{
return ::DestroyIPhreeqc(*id);
}
int
LoadDatabaseF(int *id, char* filename, unsigned int filename_length)
{
char* cfilename;
cfilename = f2cstring(filename, filename_length);
if (!cfilename)
{
::AddError(*id, "LoadDatabase: Out of memory.\n");
return VR_OUTOFMEMORY;
}
int n = ::LoadDatabase(*id, cfilename);
free(cfilename);
return n;
}
int
LoadDatabaseStringF(int *id, char* input, unsigned int input_length)
{
char* cinput;
cinput = f2cstring(input, input_length);
if (!cinput)
{
::AddError(*id, "LoadDatabaseString: Out of memory.\n");
return VR_OUTOFMEMORY;
}
int n = ::LoadDatabaseString(*id, cinput);
free(cinput);
return n;
}
int
UnLoadDatabaseF(int *id)
{
return ::UnLoadDatabase(*id);
}
IPQ_RESULT
AccumulateLineF(int *id, char *line, unsigned int line_length)
{
IPQ_RESULT n;
char* cline;
cline = f2cstring(line, line_length);
if (!cline)
{
::AddError(*id, "AccumulateLine: Out of memory.\n");
return IPQ_OUTOFMEMORY;
}
n = ::AccumulateLine(*id, cline);
free(cline);
return n;
}
IPQ_RESULT
SetSelectedOutputOnF(int *id, int* sel_on)
{
return ::SetSelectedOutputOn(*id, *sel_on);
}
IPQ_RESULT
SetOutputOnF(int *id, int* output_on)
{
return ::SetOutputOn(*id, *output_on);
}
IPQ_RESULT
SetErrorOnF(int *id, int* error_on)
{
return ::SetErrorOn(*id, *error_on);
}
IPQ_RESULT
SetLogOnF(int *id, int* log_on)
{
return ::SetLogOn(*id, *log_on);
}
IPQ_RESULT
SetDumpOnF(int *id, int* dump_on)
{
return ::SetDumpOn(*id, *dump_on);
}
IPQ_RESULT
SetDumpStringOnF(int *id, int* dump_string_on)
{
return ::SetDumpStringOn(*id, *dump_string_on);
}
int
GetDumpLineCountF(int *id)
{
return ::GetDumpLineCount(*id);
}
void
GetDumpLineF(int *id, int* n, char* line, unsigned int line_length)
{
padfstring(line, ::GetDumpLine(*id, (*n) - 1), line_length);
}
int
GetErrorLineCountF(int *id)
{
return ::GetErrorLineCount(*id);
}
void
GetErrorLineF(int *id, int* n, char* line, unsigned int line_length)
{
padfstring(line, ::GetErrorLine(*id, (*n) - 1), line_length);
}
int
GetWarningLineCountF(int *id)
{
return ::GetWarningLineCount(*id);
}
void
GetWarningLineF(int *id, int* n, char* line, unsigned int line_length)
{
padfstring(line, ::GetWarningLine(*id, (*n) - 1), line_length);
}
int
GetComponentCountF(int *id)
{
return ::GetComponentCount(*id);
}
void
GetComponentF(int *id, int *n, char* comp, unsigned int line_length)
{
padfstring(comp, ::GetComponent(*id, (*n) - 1), line_length);
}
int
RunAccumulatedF(int *id)
{
return ::RunAccumulated(*id);
}
int
RunFileF(int *id, char* filename, unsigned int filename_length)
{
char* cfilename;
cfilename = f2cstring(filename, filename_length);
if (!cfilename)
{
::AddError(*id, "RunFile: Out of memory.\n");
return (int)VR_OUTOFMEMORY;
}
int n = ::RunFile(*id, cfilename);
free(cfilename);
return n;
}
int
RunStringF(int *id, char* input, unsigned int input_length)
{
char* cinput;
cinput = f2cstring(input, input_length);
if (!cinput)
{
::AddError(*id, "RunString: Out of memory.\n");
return (int)VR_OUTOFMEMORY;
}
int n = ::RunString(*id, cinput);
free(cinput);
return n;
}
int
GetSelectedOutputRowCountF(int *id)
{
int rows = ::GetSelectedOutputRowCount(*id);
if (rows > 0)
{
rows -= 1;
}
return rows;
}
int
GetSelectedOutputColumnCountF(int *id)
{
return ::GetSelectedOutputColumnCount(*id);
}
IPQ_RESULT
GetSelectedOutputValueF(int *id, int *row, int *col, int *vtype, double* dvalue, char* svalue, unsigned int svalue_length)
{
IPQ_RESULT result;
VAR v;
VarInit(&v);
char buffer[100];
int adjcol = *col - 1;
result = ::GetSelectedOutputValue(*id, *row, adjcol, &v);
switch (v.type)
{
case TT_EMPTY:
*vtype = v.type;
break;
case TT_ERROR:
*vtype = v.type;
break;
case TT_LONG:
*vtype = TT_DOUBLE;
*dvalue = (double)v.lVal;
::sprintf(buffer, "%ld", v.lVal);
padfstring(svalue, buffer, svalue_length);
break;
case TT_DOUBLE:
*vtype = v.type;
*dvalue = v.dVal;
::sprintf(buffer, "%23.15e", v.dVal);
padfstring(svalue, buffer, svalue_length);
break;
case TT_STRING:
*vtype = v.type;
padfstring(svalue, v.sVal, svalue_length);
break;
default:
assert(0);
}
::VarClear(&v);
return result;
}
void
OutputLastErrorF(int *id)
{
::OutputLastError(*id);
}
void
OutputLastWarningF(int *id)
{
::OutputLastWarning(*id);
}
void
OutputLinesF(int *id)
{
::OutputLines(*id);
}
#if defined(__cplusplus)
extern "C" {
#endif
int
SystemF(char* command, unsigned int command_length)
{
char* ccommand;
ccommand = f2cstring(command, command_length);
if (!ccommand)
{
//AddError("System: Out of memory.\n");
return (int)VR_OUTOFMEMORY;
}
int n = system(ccommand);
free(ccommand);
return n;
}
#if defined(__cplusplus)
}
#endif
#if defined(_WIN32)
#if defined(__cplusplus)
extern "C" {
#endif
//
// Intel Fortran compiler 9.1 /iface:cvf
//
DLL_EXPORT int __stdcall CREATEIPHREEQC(void)
{
return CreateIPhreeqcF();
}
DLL_EXPORT int __stdcall DESTROYIPHREEQC(int *id)
{
return DestroyIPhreeqcF(id);
}
DLL_EXPORT int __stdcall LOADDATABASE(int *id, char *filename, unsigned int len)
{
return LoadDatabaseF(id, filename, len);
}
DLL_EXPORT int __stdcall LOADDATABASESTRING(int *id, char *input, unsigned int len)
{
return LoadDatabaseStringF(id, input, len);
}
DLL_EXPORT int __stdcall UNLOADDATABASE(int *id)
{
return UnLoadDatabaseF(id);
}
DLL_EXPORT void __stdcall OUTPUTLASTERROR(int *id)
{
OutputLastErrorF(id);
}
DLL_EXPORT void __stdcall OUTPUTLASTWARNING(int *id)
{
OutputLastWarningF(id);
}
DLL_EXPORT int __stdcall ACCUMULATELINE(int *id, char *line, unsigned int len)
{
return AccumulateLineF(id, line, len);
}
DLL_EXPORT void __stdcall SETSELECTEDOUTPUTON(int *id, int *selected_on)
{
SetSelectedOutputOnF(id, selected_on);
}
DLL_EXPORT void __stdcall SETOUTPUTON(int *id, int *output_on)
{
SetOutputOnF(id, output_on);
}
DLL_EXPORT void __stdcall SETERRORON(int *id, int *error_on)
{
SetErrorOnF(id, error_on);
}
DLL_EXPORT void __stdcall SETLOGON(int *id, int *log_on)
{
SetLogOnF(id, log_on);
}
DLL_EXPORT void __stdcall SETDUMPON(int *id, int *dump_on)
{
SetDumpOnF(id, dump_on);
}
DLL_EXPORT void __stdcall SETDUMPSTRINGON(int *id, int *dump_string_on)
{
SetDumpStringOnF(id, dump_string_on);
}
DLL_EXPORT int __stdcall GETDUMPLINECOUNT(int *id)
{
return GetDumpLineCountF(id);
}
DLL_EXPORT void __stdcall GETDUMPLINE(int *id, int *n, char* line, unsigned int line_length)
{
GetDumpLineF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall GETERRORLINECOUNT(int *id)
{
return GetErrorLineCountF(id);
}
DLL_EXPORT void __stdcall GETERRORLINE(int *id, int *n, char* line, unsigned int line_length)
{
GetErrorLineF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall GETWARNINGLINECOUNT(int *id)
{
return GetWarningLineCountF(id);
}
DLL_EXPORT void __stdcall GETWARNINGLINE(int *id, int *n, char* line, unsigned int line_length)
{
GetWarningLineF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall GETCOMPONENTCOUNT(int *id)
{
return GetComponentCountF(id);
}
DLL_EXPORT void __stdcall GETCOMPONENT(int *id, int *n, char* line, unsigned int line_length)
{
GetComponentF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall RUNACCUMULATED(int *id)
{
return RunAccumulatedF(id);
}
DLL_EXPORT int __stdcall RUNFILE(int *id, char *filename, unsigned int len)
{
return RunFileF(id, filename, len);
}
DLL_EXPORT int __stdcall RUNSTRING(int *id, char *input, unsigned int len)
{
return RunStringF(id, input, len);
}
DLL_EXPORT void __stdcall OUTPUTLINES(int *id)
{
OutputLinesF(id);
}
DLL_EXPORT int __stdcall GETSELECTEDOUTPUTROWCOUNT(int *id)
{
return GetSelectedOutputRowCountF(id);
}
DLL_EXPORT int __stdcall GETSELECTEDOUTPUTCOLUMNCOUNT(int *id)
{
return GetSelectedOutputColumnCountF(id);
}
DLL_EXPORT int __stdcall GETSELECTEDOUTPUTVALUE(int *id, int *row, int *col, int *vtype, double* dvalue, char* svalue, unsigned int svalue_length)
{
return GetSelectedOutputValueF(id, row, col, vtype, dvalue, svalue, svalue_length);
}
#if defined(__cplusplus)
}
#endif
#endif // _WIN32
#include <ctype.h> /* isgraph */
#include <stdlib.h> /* malloc */
#include <memory.h> /* memcpy */
#include <assert.h> /* assert */
#include <stdio.h> /* sprintf */
#include "phrqtype.h"
#include "IPhreeqc.h"
#include "fwrap.h"
char *
f2cstring(char* fstring, int len)
{
char *cstr, *str;
int i;
str = fstring;
for (i = len - 1; i >= 0 && !isgraph((int)str[i]); i--);
cstr = (char *) malloc((size_t) (i + 2));
if (!cstr) return 0;
cstr[i + 1] = '\0';
memcpy(cstr,str,i+1);
return cstr;
}
void
padfstring(char *dest, const char *src, unsigned int len)
{
unsigned int sofar;
for (sofar = 0; (sofar < len) && (*src != '\0'); ++sofar)
*dest++ = *src++;
while (sofar++ < len)
*dest++ = ' ';
}
int
CreateIPhreeqcF(void)
{
return ::CreateIPhreeqc();
}
int
DestroyIPhreeqcF(int *id)
{
return ::DestroyIPhreeqc(*id);
}
int
LoadDatabaseF(int *id, char* filename, unsigned int filename_length)
{
char* cfilename;
cfilename = f2cstring(filename, filename_length);
if (!cfilename)
{
::AddError(*id, "LoadDatabase: Out of memory.\n");
return VR_OUTOFMEMORY;
}
int n = ::LoadDatabase(*id, cfilename);
free(cfilename);
return n;
}
int
LoadDatabaseStringF(int *id, char* input, unsigned int input_length)
{
char* cinput;
cinput = f2cstring(input, input_length);
if (!cinput)
{
::AddError(*id, "LoadDatabaseString: Out of memory.\n");
return VR_OUTOFMEMORY;
}
int n = ::LoadDatabaseString(*id, cinput);
free(cinput);
return n;
}
int
UnLoadDatabaseF(int *id)
{
return ::UnLoadDatabase(*id);
}
IPQ_RESULT
AccumulateLineF(int *id, char *line, unsigned int line_length)
{
IPQ_RESULT n;
char* cline;
cline = f2cstring(line, line_length);
if (!cline)
{
::AddError(*id, "AccumulateLine: Out of memory.\n");
return IPQ_OUTOFMEMORY;
}
n = ::AccumulateLine(*id, cline);
free(cline);
return n;
}
IPQ_RESULT
SetSelectedOutputOnF(int *id, int* sel_on)
{
return ::SetSelectedOutputOn(*id, *sel_on);
}
IPQ_RESULT
SetOutputOnF(int *id, int* output_on)
{
return ::SetOutputOn(*id, *output_on);
}
IPQ_RESULT
SetErrorOnF(int *id, int* error_on)
{
return ::SetErrorOn(*id, *error_on);
}
IPQ_RESULT
SetLogOnF(int *id, int* log_on)
{
return ::SetLogOn(*id, *log_on);
}
IPQ_RESULT
SetDumpOnF(int *id, int* dump_on)
{
return ::SetDumpOn(*id, *dump_on);
}
IPQ_RESULT
SetDumpStringOnF(int *id, int* dump_string_on)
{
return ::SetDumpStringOn(*id, *dump_string_on);
}
int
GetDumpLineCountF(int *id)
{
return ::GetDumpLineCount(*id);
}
void
GetDumpLineF(int *id, int* n, char* line, unsigned int line_length)
{
padfstring(line, ::GetDumpLine(*id, (*n) - 1), line_length);
}
int
GetErrorLineCountF(int *id)
{
return ::GetErrorLineCount(*id);
}
void
GetErrorLineF(int *id, int* n, char* line, unsigned int line_length)
{
padfstring(line, ::GetErrorLine(*id, (*n) - 1), line_length);
}
int
GetWarningLineCountF(int *id)
{
return ::GetWarningLineCount(*id);
}
void
GetWarningLineF(int *id, int* n, char* line, unsigned int line_length)
{
padfstring(line, ::GetWarningLine(*id, (*n) - 1), line_length);
}
int
GetComponentCountF(int *id)
{
return ::GetComponentCount(*id);
}
void
GetComponentF(int *id, int *n, char* comp, unsigned int line_length)
{
padfstring(comp, ::GetComponent(*id, (*n) - 1), line_length);
}
int
RunAccumulatedF(int *id)
{
return ::RunAccumulated(*id);
}
int
RunFileF(int *id, char* filename, unsigned int filename_length)
{
char* cfilename;
cfilename = f2cstring(filename, filename_length);
if (!cfilename)
{
::AddError(*id, "RunFile: Out of memory.\n");
return (int)VR_OUTOFMEMORY;
}
int n = ::RunFile(*id, cfilename);
free(cfilename);
return n;
}
int
RunStringF(int *id, char* input, unsigned int input_length)
{
char* cinput;
cinput = f2cstring(input, input_length);
if (!cinput)
{
::AddError(*id, "RunString: Out of memory.\n");
return (int)VR_OUTOFMEMORY;
}
int n = ::RunString(*id, cinput);
free(cinput);
return n;
}
int
GetSelectedOutputRowCountF(int *id)
{
int rows = ::GetSelectedOutputRowCount(*id);
if (rows > 0)
{
rows -= 1;
}
return rows;
}
int
GetSelectedOutputColumnCountF(int *id)
{
return ::GetSelectedOutputColumnCount(*id);
}
IPQ_RESULT
GetSelectedOutputValueF(int *id, int *row, int *col, int *vtype, double* dvalue, char* svalue, unsigned int svalue_length)
{
IPQ_RESULT result;
VAR v;
VarInit(&v);
char buffer[100];
int adjcol = *col - 1;
result = ::GetSelectedOutputValue(*id, *row, adjcol, &v);
switch (v.type)
{
case TT_EMPTY:
*vtype = v.type;
break;
case TT_ERROR:
*vtype = v.type;
break;
case TT_LONG:
*vtype = TT_DOUBLE;
*dvalue = (double)v.lVal;
::sprintf(buffer, "%ld", v.lVal);
padfstring(svalue, buffer, svalue_length);
break;
case TT_DOUBLE:
*vtype = v.type;
*dvalue = v.dVal;
::sprintf(buffer, "%23.15e", v.dVal);
padfstring(svalue, buffer, svalue_length);
break;
case TT_STRING:
*vtype = v.type;
padfstring(svalue, v.sVal, svalue_length);
break;
default:
assert(0);
}
::VarClear(&v);
return result;
}
void
OutputLastErrorF(int *id)
{
::OutputLastError(*id);
}
void
OutputLastWarningF(int *id)
{
::OutputLastWarning(*id);
}
void
OutputLinesF(int *id)
{
::OutputLines(*id);
}
#if defined(__cplusplus)
extern "C" {
#endif
int
SystemF(char* command, unsigned int command_length)
{
char* ccommand;
ccommand = f2cstring(command, command_length);
if (!ccommand)
{
//AddError("System: Out of memory.\n");
return (int)VR_OUTOFMEMORY;
}
int n = system(ccommand);
free(ccommand);
return n;
}
#if defined(__cplusplus)
}
#endif
#if defined(_WIN32)
#if defined(__cplusplus)
extern "C" {
#endif
//
// Intel Fortran compiler 9.1 /iface:cvf
//
DLL_EXPORT int __stdcall CREATEIPHREEQC(void)
{
return CreateIPhreeqcF();
}
DLL_EXPORT int __stdcall DESTROYIPHREEQC(int *id)
{
return DestroyIPhreeqcF(id);
}
DLL_EXPORT int __stdcall LOADDATABASE(int *id, char *filename, unsigned int len)
{
return LoadDatabaseF(id, filename, len);
}
DLL_EXPORT int __stdcall LOADDATABASESTRING(int *id, char *input, unsigned int len)
{
return LoadDatabaseStringF(id, input, len);
}
DLL_EXPORT int __stdcall UNLOADDATABASE(int *id)
{
return UnLoadDatabaseF(id);
}
DLL_EXPORT void __stdcall OUTPUTLASTERROR(int *id)
{
OutputLastErrorF(id);
}
DLL_EXPORT void __stdcall OUTPUTLASTWARNING(int *id)
{
OutputLastWarningF(id);
}
DLL_EXPORT int __stdcall ACCUMULATELINE(int *id, char *line, unsigned int len)
{
return AccumulateLineF(id, line, len);
}
DLL_EXPORT void __stdcall SETSELECTEDOUTPUTON(int *id, int *selected_on)
{
SetSelectedOutputOnF(id, selected_on);
}
DLL_EXPORT void __stdcall SETOUTPUTON(int *id, int *output_on)
{
SetOutputOnF(id, output_on);
}
DLL_EXPORT void __stdcall SETERRORON(int *id, int *error_on)
{
SetErrorOnF(id, error_on);
}
DLL_EXPORT void __stdcall SETLOGON(int *id, int *log_on)
{
SetLogOnF(id, log_on);
}
DLL_EXPORT void __stdcall SETDUMPON(int *id, int *dump_on)
{
SetDumpOnF(id, dump_on);
}
DLL_EXPORT void __stdcall SETDUMPSTRINGON(int *id, int *dump_string_on)
{
SetDumpStringOnF(id, dump_string_on);
}
DLL_EXPORT int __stdcall GETDUMPLINECOUNT(int *id)
{
return GetDumpLineCountF(id);
}
DLL_EXPORT void __stdcall GETDUMPLINE(int *id, int *n, char* line, unsigned int line_length)
{
GetDumpLineF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall GETERRORLINECOUNT(int *id)
{
return GetErrorLineCountF(id);
}
DLL_EXPORT void __stdcall GETERRORLINE(int *id, int *n, char* line, unsigned int line_length)
{
GetErrorLineF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall GETWARNINGLINECOUNT(int *id)
{
return GetWarningLineCountF(id);
}
DLL_EXPORT void __stdcall GETWARNINGLINE(int *id, int *n, char* line, unsigned int line_length)
{
GetWarningLineF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall GETCOMPONENTCOUNT(int *id)
{
return GetComponentCountF(id);
}
DLL_EXPORT void __stdcall GETCOMPONENT(int *id, int *n, char* line, unsigned int line_length)
{
GetComponentF(id, n, line, line_length);
}
DLL_EXPORT int __stdcall RUNACCUMULATED(int *id)
{
return RunAccumulatedF(id);
}
DLL_EXPORT int __stdcall RUNFILE(int *id, char *filename, unsigned int len)
{
return RunFileF(id, filename, len);
}
DLL_EXPORT int __stdcall RUNSTRING(int *id, char *input, unsigned int len)
{
return RunStringF(id, input, len);
}
DLL_EXPORT void __stdcall OUTPUTLINES(int *id)
{
OutputLinesF(id);
}
DLL_EXPORT int __stdcall GETSELECTEDOUTPUTROWCOUNT(int *id)
{
return GetSelectedOutputRowCountF(id);
}
DLL_EXPORT int __stdcall GETSELECTEDOUTPUTCOLUMNCOUNT(int *id)
{
return GetSelectedOutputColumnCountF(id);
}
DLL_EXPORT int __stdcall GETSELECTEDOUTPUTVALUE(int *id, int *row, int *col, int *vtype, double* dvalue, char* svalue, unsigned int svalue_length)
{
return GetSelectedOutputValueF(id, row, col, vtype, dvalue, svalue, svalue_length);
}
#if defined(__cplusplus)
}
#endif
#endif // _WIN32

View File

@ -1,134 +1,134 @@
#include "IPhreeqc.h"
#include "fwrap.h"
#if defined(_WIN32)
#if defined(__cplusplus)
extern "C" {
#endif
//
// Intel Fortran compiler 9.1 /iface:cref /assume:underscore
//
DLL_EXPORT int createiphreeqc_(void)
{
return CreateIPhreeqcF();
}
DLL_EXPORT int destroyiphreeqc_(int *id)
{
return DestroyIPhreeqcF(id);
}
DLL_EXPORT int loaddatabase_(int *id, char *filename, unsigned int len)
{
return LoadDatabaseF(id, filename, len);
}
DLL_EXPORT int loaddatabasestring_(int *id, char *input, unsigned int len)
{
return LoadDatabaseStringF(id, input, len);
}
DLL_EXPORT int unloaddatabase_(int *id)
{
return UnLoadDatabaseF(id);
}
DLL_EXPORT void outputlasterror_(int *id)
{
OutputLastErrorF(id);
}
DLL_EXPORT void outputlastwarning_(int *id)
{
OutputLastWarningF(id);
}
DLL_EXPORT int accumulateline_(int *id, char *line, unsigned int len)
{
return AccumulateLineF(id, line, len);
}
DLL_EXPORT void setselectedoutputon_(int *id, int *selected_on)
{
SetSelectedOutputOnF(id, selected_on);
}
DLL_EXPORT void setoutputon_(int *id, int *output_on)
{
SetOutputOnF(id, output_on);
}
DLL_EXPORT void seterroron_(int *id, int *error_on)
{
SetErrorOnF(id, error_on);
}
DLL_EXPORT void setlogon_(int *id, int *log_on)
{
SetLogOnF(id, log_on);
}
DLL_EXPORT void setdumpon_(int *id, int *dump_on)
{
SetLogOnF(id, dump_on);
}
DLL_EXPORT void setdumpstringon_(int *id, int *dump_string_on)
{
SetDumpStringOnF(id, dump_string_on);
}
DLL_EXPORT int getdumplinecount_(int *id)
{
return GetDumpLineCountF(id);
}
DLL_EXPORT void getdumpline_(int *id, int *n, char* line, unsigned int line_length)
{
GetDumpLineF(id, n, line, line_length);
}
DLL_EXPORT int geterrorlinecount_(int *id)
{
return GetErrorLineCountF(id);
}
DLL_EXPORT void geterrorline_(int *id, int *n, char* line, unsigned int line_length)
{
GetErrorLineF(id, n, line, line_length);
}
DLL_EXPORT int getwarninglinecount_(int *id)
{
return GetWarningLineCountF(id);
}
DLL_EXPORT void getwarningline_(int *id, int *n, char* line, unsigned int line_length)
{
GetWarningLineF(id, n, line, line_length);
}
DLL_EXPORT int getcomponentcount_(int *id)
{
return GetComponentCountF(id);
}
DLL_EXPORT void getcomponent_(int *id, int *n, char* line, unsigned int line_length)
{
GetComponentF(id, n, line, line_length);
}
DLL_EXPORT int runaccumulated_(int *id)
{
return RunAccumulatedF(id);
}
DLL_EXPORT int runfile_(int *id, char *filename, unsigned int len)
{
return RunFileF(id, filename, len);
}
DLL_EXPORT int runstring_(int *id, char *input, unsigned int len)
{
return RunStringF(id, input, len);
}
DLL_EXPORT void outputlines_(int *id)
{
OutputLinesF(id);
}
DLL_EXPORT int getselectedoutputrowcount_(int *id)
{
return GetSelectedOutputRowCountF(id);
}
DLL_EXPORT int getselectedoutputcolumncount_(int *id)
{
return GetSelectedOutputColumnCountF(id);
}
DLL_EXPORT int getselectedoutputvalue_(int *id, int *row, int *col, int *vtype, double* dvalue, char* svalue, unsigned int svalue_length)
{
return GetSelectedOutputValueF(id, row, col, vtype, dvalue, svalue, svalue_length);
}
#if defined(__cplusplus)
}
#endif
#include "IPhreeqc.h"
#include "fwrap.h"
#if defined(_WIN32)
#if defined(__cplusplus)
extern "C" {
#endif
//
// Intel Fortran compiler 9.1 /iface:cref /assume:underscore
//
DLL_EXPORT int createiphreeqc_(void)
{
return CreateIPhreeqcF();
}
DLL_EXPORT int destroyiphreeqc_(int *id)
{
return DestroyIPhreeqcF(id);
}
DLL_EXPORT int loaddatabase_(int *id, char *filename, unsigned int len)
{
return LoadDatabaseF(id, filename, len);
}
DLL_EXPORT int loaddatabasestring_(int *id, char *input, unsigned int len)
{
return LoadDatabaseStringF(id, input, len);
}
DLL_EXPORT int unloaddatabase_(int *id)
{
return UnLoadDatabaseF(id);
}
DLL_EXPORT void outputlasterror_(int *id)
{
OutputLastErrorF(id);
}
DLL_EXPORT void outputlastwarning_(int *id)
{
OutputLastWarningF(id);
}
DLL_EXPORT int accumulateline_(int *id, char *line, unsigned int len)
{
return AccumulateLineF(id, line, len);
}
DLL_EXPORT void setselectedoutputon_(int *id, int *selected_on)
{
SetSelectedOutputOnF(id, selected_on);
}
DLL_EXPORT void setoutputon_(int *id, int *output_on)
{
SetOutputOnF(id, output_on);
}
DLL_EXPORT void seterroron_(int *id, int *error_on)
{
SetErrorOnF(id, error_on);
}
DLL_EXPORT void setlogon_(int *id, int *log_on)
{
SetLogOnF(id, log_on);
}
DLL_EXPORT void setdumpon_(int *id, int *dump_on)
{
SetLogOnF(id, dump_on);
}
DLL_EXPORT void setdumpstringon_(int *id, int *dump_string_on)
{
SetDumpStringOnF(id, dump_string_on);
}
DLL_EXPORT int getdumplinecount_(int *id)
{
return GetDumpLineCountF(id);
}
DLL_EXPORT void getdumpline_(int *id, int *n, char* line, unsigned int line_length)
{
GetDumpLineF(id, n, line, line_length);
}
DLL_EXPORT int geterrorlinecount_(int *id)
{
return GetErrorLineCountF(id);
}
DLL_EXPORT void geterrorline_(int *id, int *n, char* line, unsigned int line_length)
{
GetErrorLineF(id, n, line, line_length);
}
DLL_EXPORT int getwarninglinecount_(int *id)
{
return GetWarningLineCountF(id);
}
DLL_EXPORT void getwarningline_(int *id, int *n, char* line, unsigned int line_length)
{
GetWarningLineF(id, n, line, line_length);
}
DLL_EXPORT int getcomponentcount_(int *id)
{
return GetComponentCountF(id);
}
DLL_EXPORT void getcomponent_(int *id, int *n, char* line, unsigned int line_length)
{
GetComponentF(id, n, line, line_length);
}
DLL_EXPORT int runaccumulated_(int *id)
{
return RunAccumulatedF(id);
}
DLL_EXPORT int runfile_(int *id, char *filename, unsigned int len)
{
return RunFileF(id, filename, len);
}
DLL_EXPORT int runstring_(int *id, char *input, unsigned int len)
{
return RunStringF(id, input, len);
}
DLL_EXPORT void outputlines_(int *id)
{
OutputLinesF(id);
}
DLL_EXPORT int getselectedoutputrowcount_(int *id)
{
return GetSelectedOutputRowCountF(id);
}
DLL_EXPORT int getselectedoutputcolumncount_(int *id)
{
return GetSelectedOutputColumnCountF(id);
}
DLL_EXPORT int getselectedoutputvalue_(int *id, int *row, int *col, int *vtype, double* dvalue, char* svalue, unsigned int svalue_length)
{
return GetSelectedOutputValueF(id, row, col, vtype, dvalue, svalue, svalue_length);
}
#if defined(__cplusplus)
}
#endif
#endif