mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-16 00:28:23 +01:00
alphabetized src/IPhreeqcLib.cpp; added ClearAccumulatedLines routines
git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@4408 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
parent
502ee6ba6a
commit
93926c9b29
@ -85,7 +85,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="mkdir lib > NUL
copy "$(TargetDir)$(TargetName).lib" "lib\$(TargetName).lib""
|
||||
CommandLine="mkdir lib > NUL
copy "$(TargetDir)$(TargetName).lib" "lib\$(TargetName).lib"
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -157,7 +157,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="mkdir libx64 > NUL
copy "$(TargetDir)$(TargetName).lib" "libx64\$(TargetName).lib""
|
||||
CommandLine="mkdir libx64 > NUL
copy "$(TargetDir)$(TargetName).lib" "libx64\$(TargetName).lib"
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -229,7 +229,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="mkdir lib > NUL
copy "$(TargetDir)$(TargetName).lib" "lib\$(TargetName).lib""
|
||||
CommandLine="mkdir lib > NUL
copy "$(TargetDir)$(TargetName).lib" "lib\$(TargetName).lib"
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -802,6 +802,42 @@
|
||||
RelativePath=".\src\IPhreeqc.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\IPhreeqcF.f"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="ReleaseDll|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="DebugDll|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\IPhreeqcLib.cpp"
|
||||
>
|
||||
|
||||
@ -72,6 +72,15 @@ extern "C" {
|
||||
DLL_EXPORT int AddError(int id, const char* error_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, OutputLines, RunAccumulated
|
||||
*/
|
||||
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).
|
||||
|
||||
@ -80,7 +80,7 @@ public:
|
||||
|
||||
/**
|
||||
* Clears the accumulated input buffer. Input buffer is accumulated from calls to \ref AccumulateLine.
|
||||
* @see AccumulateLine, GetAccumulatedLines, RunAccumulated
|
||||
* @see AccumulateLine, GetAccumulatedLines, OutputLines, RunAccumulated
|
||||
*/
|
||||
void ClearAccumulatedLines(void);
|
||||
|
||||
|
||||
@ -7,6 +7,14 @@
|
||||
INTEGER(KIND=4) :: AccumulateLineF
|
||||
AccumulateLine = AccumulateLineF(ID,LINE)
|
||||
END FUNCTION AccumulateLine
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
FUNCTION ClearAccumulatedLines(ID)
|
||||
IMPLICIT NONE
|
||||
INTEGER(KIND=4) :: ID
|
||||
INTEGER(KIND=4) :: ClearAccumulatedLines
|
||||
INTEGER(KIND=4) :: ClearAccumulatedLinesF
|
||||
ClearAccumulatedLines = ClearAccumulatedLinesF(ID)
|
||||
END FUNCTION ClearAccumulatedLines
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
FUNCTION CreateIPhreeqc()
|
||||
IMPLICIT NONE
|
||||
|
||||
@ -17,147 +17,63 @@ private:
|
||||
static size_t InstancesIndex;
|
||||
};
|
||||
|
||||
IPQ_RESULT
|
||||
AccumulateLine(int id, const char *line)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
switch (IPhreeqcPtr->AccumulateLine(line))
|
||||
{
|
||||
case VR_OK:
|
||||
return IPQ_OK;
|
||||
case VR_OUTOFMEMORY:
|
||||
return IPQ_OUTOFMEMORY;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
int
|
||||
AddError(int id, const char* error_msg)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return (int)IPhreeqcPtr->AddError(error_msg);
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
// TODO AddWarning
|
||||
|
||||
int
|
||||
CreateIPhreeqc(void)
|
||||
{
|
||||
return IPhreeqcLib::CreateIPhreeqc();
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
ClearAccumulatedLines(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->ClearAccumulatedLines();
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
DestroyIPhreeqc(int id)
|
||||
{
|
||||
return IPhreeqcLib::DestroyIPhreeqc(id);
|
||||
}
|
||||
|
||||
int
|
||||
LoadDatabase(int id, const char* filename)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->LoadDatabase(filename);
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
int
|
||||
LoadDatabaseString(int id, const char* input)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->LoadDatabaseString(input);
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
UnLoadDatabase(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->UnLoadDatabase();
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
void
|
||||
OutputError(int id)
|
||||
{
|
||||
static const char err_msg[] = "OutputError: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->OutputError();
|
||||
return;
|
||||
}
|
||||
std::cout << err_msg << std::endl;
|
||||
}
|
||||
|
||||
void
|
||||
OutputWarning(int id)
|
||||
{
|
||||
static const char err_msg[] = "OutputWarning: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->OutputWarning();
|
||||
return;
|
||||
}
|
||||
std::cout << err_msg << std::endl;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetErrorString(int id)
|
||||
{
|
||||
static const char err_msg[] = "GetErrorString: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetErrorString();
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetWarningString(int id)
|
||||
{
|
||||
static const char err_msg[] = "GetWarningString: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetWarningString();
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetDumpString(int id)
|
||||
{
|
||||
static const char empty[] = "";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetDumpString();
|
||||
}
|
||||
return empty;
|
||||
}
|
||||
|
||||
int
|
||||
GetDumpLineCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetDumpLineCount();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetDumpLine(int id, int n)
|
||||
{
|
||||
static const char err_msg[] = "GetDumpLine: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetDumpLine(n);
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
int
|
||||
GetComponentCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return (int)IPhreeqcPtr->ListComponents().size();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
// TODO Maybe GetAccumulatedLines
|
||||
|
||||
const char*
|
||||
GetComponent(int id, int n)
|
||||
@ -185,32 +101,47 @@ GetComponent(int id, int n)
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
AccumulateLine(int id, const char *line)
|
||||
int
|
||||
GetComponentCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
switch (IPhreeqcPtr->AccumulateLine(line))
|
||||
{
|
||||
case VR_OK:
|
||||
return IPQ_OK;
|
||||
case VR_OUTOFMEMORY:
|
||||
return IPQ_OUTOFMEMORY;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
return (int)IPhreeqcPtr->ListComponents().size();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetDumpLine(int id, int n)
|
||||
{
|
||||
static const char err_msg[] = "GetDumpLine: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetDumpLine(n);
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
int
|
||||
GetSelectedOutputOn(int id)
|
||||
GetDumpLineCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
if (IPhreeqcPtr->GetSelectedOutputOn())
|
||||
return IPhreeqcPtr->GetDumpLineCount();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
GetDumpOn(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
if (IPhreeqcPtr->GetDumpOn())
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@ -222,25 +153,25 @@ GetSelectedOutputOn(int id)
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
SetSelectedOutputOn(int id, int value)
|
||||
const char*
|
||||
GetDumpString(int id)
|
||||
{
|
||||
static const char empty[] = "";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->SetSelectedOutputOn(value != 0);
|
||||
return IPQ_OK;
|
||||
return IPhreeqcPtr->GetDumpString();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
return empty;
|
||||
}
|
||||
|
||||
int
|
||||
GetOutputOn(int id)
|
||||
GetDumpStringOn(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
if (IPhreeqcPtr->GetOutputOn())
|
||||
if (IPhreeqcPtr->GetDumpStringOn())
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@ -252,14 +183,25 @@ GetOutputOn(int id)
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
SetOutputOn(int id, int value)
|
||||
const char*
|
||||
GetErrorLine(int id, int n)
|
||||
{
|
||||
static const char err_msg[] = "GetErrorLine: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetErrorLine(n);
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
int
|
||||
GetErrorLineCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->SetOutputOn(value != 0);
|
||||
return IPQ_OK;
|
||||
return (int)IPhreeqcPtr->GetErrorLineCount();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
@ -282,16 +224,16 @@ GetErrorOn(int id)
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
SetErrorOn(int id, int value)
|
||||
const char*
|
||||
GetErrorString(int id)
|
||||
{
|
||||
static const char err_msg[] = "GetErrorString: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->SetErrorOn(value != 0);
|
||||
return IPQ_OK;
|
||||
return IPhreeqcPtr->GetErrorString();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
int
|
||||
@ -312,26 +254,13 @@ GetLogOn(int id)
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
SetLogOn(int id, int value)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->SetLogOn(value != 0);
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
GetDumpOn(int id)
|
||||
GetOutputOn(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
if (IPhreeqcPtr->GetDumpOn())
|
||||
if (IPhreeqcPtr->GetOutputOn())
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@ -343,25 +272,24 @@ GetDumpOn(int id)
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
SetDumpOn(int id, int value)
|
||||
int
|
||||
GetSelectedOutputColumnCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->SetDumpOn(value != 0);
|
||||
return IPQ_OK;
|
||||
return IPhreeqcPtr->GetSelectedOutputColumnCount();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
int
|
||||
GetDumpStringOn(int id)
|
||||
GetSelectedOutputOn(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
if (IPhreeqcPtr->GetDumpStringOn())
|
||||
if (IPhreeqcPtr->GetSelectedOutputOn())
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@ -373,18 +301,134 @@ GetDumpStringOn(int id)
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
SetDumpStringOn(int id, int value)
|
||||
int
|
||||
GetSelectedOutputRowCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->SetDumpStringOn(value != 0);
|
||||
return IPQ_OK;
|
||||
return IPhreeqcPtr->GetSelectedOutputRowCount();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
GetSelectedOutputValue(int id, int row, int col, VAR* pVAR)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
switch(IPhreeqcPtr->GetSelectedOutputValue(row, col, pVAR))
|
||||
{
|
||||
case VR_OK: return IPQ_OK;
|
||||
case VR_OUTOFMEMORY: return IPQ_OUTOFMEMORY;
|
||||
case VR_BADVARTYPE: return IPQ_BADVARTYPE;
|
||||
case VR_INVALIDARG: return IPQ_INVALIDARG;
|
||||
case VR_INVALIDROW: return IPQ_INVALIDROW;
|
||||
case VR_INVALIDCOL: return IPQ_INVALIDCOL;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetWarningLine(int id, int n)
|
||||
{
|
||||
static const char err_msg[] = "GetWarningLine: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetWarningLine(n);
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
int
|
||||
GetWarningLineCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return (int)IPhreeqcPtr->GetWarningLineCount();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetWarningString(int id)
|
||||
{
|
||||
static const char err_msg[] = "GetWarningString: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetWarningString();
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
int
|
||||
LoadDatabase(int id, const char* filename)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->LoadDatabase(filename);
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
int
|
||||
LoadDatabaseString(int id, const char* input)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->LoadDatabaseString(input);
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
void
|
||||
OutputError(int id)
|
||||
{
|
||||
static const char err_msg[] = "OutputError: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->OutputError();
|
||||
return;
|
||||
}
|
||||
std::cout << err_msg << std::endl;
|
||||
}
|
||||
|
||||
void
|
||||
OutputLines(int id)
|
||||
{
|
||||
static const char err_msg[] = "OutputLines: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->OutputLines();
|
||||
return;
|
||||
}
|
||||
std::cout << err_msg << std::endl;
|
||||
}
|
||||
|
||||
void
|
||||
OutputWarning(int id)
|
||||
{
|
||||
static const char err_msg[] = "OutputWarning: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->OutputWarning();
|
||||
return;
|
||||
}
|
||||
std::cout << err_msg << std::endl;
|
||||
}
|
||||
|
||||
int
|
||||
RunAccumulated(int id)
|
||||
{
|
||||
@ -418,120 +462,93 @@ RunString(int id, const char* input)
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
int
|
||||
GetSelectedOutputRowCount(int id)
|
||||
IPQ_RESULT
|
||||
SetDumpOn(int id, int value)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetSelectedOutputRowCount();
|
||||
IPhreeqcPtr->SetDumpOn(value != 0);
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
int
|
||||
GetSelectedOutputColumnCount(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetSelectedOutputColumnCount();
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
|
||||
IPQ_RESULT
|
||||
GetSelectedOutputValue(int id, int row, int col, VAR* pVAR)
|
||||
SetDumpStringOn(int id, int value)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
switch(IPhreeqcPtr->GetSelectedOutputValue(row, col, pVAR))
|
||||
{
|
||||
case VR_OK: return IPQ_OK;
|
||||
case VR_OUTOFMEMORY: return IPQ_OUTOFMEMORY;
|
||||
case VR_BADVARTYPE: return IPQ_BADVARTYPE;
|
||||
case VR_INVALIDARG: return IPQ_INVALIDARG;
|
||||
case VR_INVALIDROW: return IPQ_INVALIDROW;
|
||||
case VR_INVALIDCOL: return IPQ_INVALIDCOL;
|
||||
default:
|
||||
assert(false);
|
||||
}
|
||||
IPhreeqcPtr->SetDumpStringOn(value != 0);
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
int
|
||||
AddError(int id, const char* error_msg)
|
||||
IPQ_RESULT
|
||||
SetErrorOn(int id, int value)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return (int)IPhreeqcPtr->AddError(error_msg);
|
||||
IPhreeqcPtr->SetErrorOn(value != 0);
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
void
|
||||
OutputLines(int id)
|
||||
{
|
||||
static const char err_msg[] = "OutputLines: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->OutputLines();
|
||||
return;
|
||||
}
|
||||
std::cout << err_msg << std::endl;
|
||||
}
|
||||
|
||||
int
|
||||
GetErrorLineCount(int id)
|
||||
IPQ_RESULT
|
||||
SetLogOn(int id, int value)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return (int)IPhreeqcPtr->GetErrorLineCount();
|
||||
IPhreeqcPtr->SetLogOn(value != 0);
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetErrorLine(int id, int n)
|
||||
{
|
||||
static const char err_msg[] = "GetErrorLine: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetErrorLine(n);
|
||||
}
|
||||
return err_msg;
|
||||
}
|
||||
|
||||
int
|
||||
GetWarningLineCount(int id)
|
||||
IPQ_RESULT
|
||||
SetOutputOn(int id, int value)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return (int)IPhreeqcPtr->GetWarningLineCount();
|
||||
IPhreeqcPtr->SetOutputOn(value != 0);
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
const char*
|
||||
GetWarningLine(int id, int n)
|
||||
IPQ_RESULT
|
||||
SetSelectedOutputOn(int id, int value)
|
||||
{
|
||||
static const char err_msg[] = "GetWarningLine: Invalid instance id.\n";
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
return IPhreeqcPtr->GetWarningLine(n);
|
||||
IPhreeqcPtr->SetSelectedOutputOn(value != 0);
|
||||
return IPQ_OK;
|
||||
}
|
||||
return err_msg;
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
UnLoadDatabase(int id)
|
||||
{
|
||||
IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id);
|
||||
if (IPhreeqcPtr)
|
||||
{
|
||||
IPhreeqcPtr->UnLoadDatabase();
|
||||
return IPQ_OK;
|
||||
}
|
||||
return IPQ_BADINSTANCE;
|
||||
}
|
||||
|
||||
// helper functions
|
||||
//
|
||||
|
||||
std::map<size_t, IPhreeqc*> IPhreeqcLib::Instances;
|
||||
size_t IPhreeqcLib::InstancesIndex = 0;
|
||||
|
||||
|
||||
@ -54,6 +54,12 @@ AccumulateLineF(int *id, char *line, unsigned int line_length)
|
||||
return n;
|
||||
}
|
||||
|
||||
IPQ_RESULT
|
||||
ClearAccumulatedLinesF(int *id)
|
||||
{
|
||||
return ::ClearAccumulatedLines(*id);
|
||||
}
|
||||
|
||||
int
|
||||
CreateIPhreeqcF(void)
|
||||
{
|
||||
@ -357,6 +363,10 @@ DLL_EXPORT int __stdcall ACCUMULATELINE(int *id, char *line, unsigned int len)
|
||||
{
|
||||
return AccumulateLineF(id, line, len);
|
||||
}
|
||||
DLL_EXPORT int __stdcall CLEARACCUMULATEDLINES(int *id)
|
||||
{
|
||||
return ClearAccumulatedLinesF(id);
|
||||
}
|
||||
DLL_EXPORT int __stdcall CREATEIPHREEQC(void)
|
||||
{
|
||||
return CreateIPhreeqcF();
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
|
||||
#if defined(FC_FUNC)
|
||||
#define AccumulateLineF FC_FUNC (accumulatelinef, ACCUMULATELINEF)
|
||||
#define ClearAccumulatedLinesF FC_FUNC (clearaccumulatedlinesf, CLEARACCUMULATEDLINESF)
|
||||
#define CreateIPhreeqcF FC_FUNC (createiphreeqcf, CREATEIPHREEQCF)
|
||||
#define DestroyIPhreeqcF FC_FUNC (destroyiphreeqcf, DESTROYIPHREEQCF)
|
||||
#define GetComponentCountF FC_FUNC (getcomponentcountf, GETCOMPONENTCOUNTF)
|
||||
@ -50,6 +51,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
IPQ_RESULT AccumulateLineF(int *id, char *line, unsigned int line_length);
|
||||
IPQ_RESULT ClearAccumulatedLinesF(int *id);
|
||||
int CreateIPhreeqcF(void);
|
||||
int DestroyIPhreeqcF(int *id);
|
||||
int GetComponentCountF(int *id);
|
||||
|
||||
@ -15,6 +15,10 @@ DLL_EXPORT int ACCUMULATELINE(int *id, char *line, unsigned int len)
|
||||
{
|
||||
return AccumulateLineF(id, line, len);
|
||||
}
|
||||
DLL_EXPORT int CLEARACCUMULATEDLINES(int *id)
|
||||
{
|
||||
return ClearAccumulatedLinesF(id);
|
||||
}
|
||||
DLL_EXPORT int CREATEIPHREEQC(void)
|
||||
{
|
||||
return CreateIPhreeqcF();
|
||||
|
||||
@ -14,6 +14,10 @@ DLL_EXPORT int accumulateline_(int *id, char *line, unsigned int len)
|
||||
{
|
||||
return AccumulateLineF(id, line, len);
|
||||
}
|
||||
DLL_EXPORT int clearaccumulatedlines_(int *id)
|
||||
{
|
||||
return ClearAccumulatedLinesF(id);
|
||||
}
|
||||
DLL_EXPORT int createiphreeqc_(void)
|
||||
{
|
||||
return CreateIPhreeqcF();
|
||||
|
||||
@ -2031,3 +2031,48 @@ void TestIPhreeqcLib::TestPitzer(void)
|
||||
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::DestroyIPhreeqc(id));
|
||||
}
|
||||
}
|
||||
|
||||
void TestIPhreeqcLib::TestClearAccumulatedLines(void)
|
||||
{
|
||||
CPPUNIT_ASSERT_EQUAL(true, ::FileExists("../database/wateq4f.dat"));
|
||||
|
||||
int id = ::CreateIPhreeqc();
|
||||
CPPUNIT_ASSERT(id >= 0);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(::LoadDatabase(id, "../database/wateq4f.dat"), 0);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "SOLUTION 1"), IPQ_OK);
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "pH -2"), IPQ_OK);
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "END"), IPQ_OK);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(::RunAccumulated(id), 1);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL( 3, ::GetErrorLineCount(id) );
|
||||
CPPUNIT_ASSERT_EQUAL( std::string("ERROR: A(H2O) Activity of water has not converged. Residual: 1.590343e+000"), std::string(::GetErrorLine(id, 0)) );
|
||||
CPPUNIT_ASSERT_EQUAL( std::string(""), std::string(::GetErrorLine(id, 1)) );
|
||||
CPPUNIT_ASSERT_EQUAL( std::string("ERROR: Model failed to converge for initial solution."), std::string(::GetErrorLine(id, 2)) );
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "SOLUTION 1"), IPQ_OK);
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "pH 2"), IPQ_OK);
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "END"), IPQ_OK);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(::RunAccumulated(id), 1);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL( 3, ::GetErrorLineCount(id) );
|
||||
CPPUNIT_ASSERT_EQUAL( std::string("ERROR: A(H2O) Activity of water has not converged. Residual: 1.590343e+000"), std::string(::GetErrorLine(id, 0)) );
|
||||
CPPUNIT_ASSERT_EQUAL( std::string(""), std::string(::GetErrorLine(id, 1)) );
|
||||
CPPUNIT_ASSERT_EQUAL( std::string("ERROR: Model failed to converge for initial solution."), std::string(::GetErrorLine(id, 2)) );
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::ClearAccumulatedLines(id) );
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "SOLUTION 1"), IPQ_OK);
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "pH 2"), IPQ_OK);
|
||||
CPPUNIT_ASSERT_EQUAL(::AccumulateLine(id, "END"), IPQ_OK);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(::RunAccumulated(id), 0);
|
||||
|
||||
if (id >= 0)
|
||||
{
|
||||
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::DestroyIPhreeqc(id));
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,6 +44,7 @@ class TestIPhreeqcLib : public CppUnit::TestFixture
|
||||
CPPUNIT_TEST( TestGetErrorLine );
|
||||
CPPUNIT_TEST( TestGetWarningLine );
|
||||
CPPUNIT_TEST( TestPitzer );
|
||||
CPPUNIT_TEST( TestClearAccumulatedLines );
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
public:
|
||||
@ -87,6 +88,7 @@ public:
|
||||
void TestGetErrorLine(void);
|
||||
void TestGetWarningLine(void);
|
||||
void TestPitzer(void);
|
||||
void TestClearAccumulatedLines(void);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user