all tests passing for one selected_output file;

may still need additional tests for TestIPhreeqc case1 and case2

git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/branches/multi_punch@7919 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2013-08-12 22:24:18 +00:00
parent f41ad187a2
commit 7f9ba4d91a
7 changed files with 773 additions and 331 deletions

View File

@ -1272,6 +1272,118 @@
RelativePath=".\src\phreeqcpp\runner.cpp"
>
</File>
<File
RelativePath=".\src\phreeqcpp\SelectedOutput.cpp"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="ReleaseDll|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="ReleaseDll|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugDll|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugDll|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugCLR|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="DebugCLR|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="ReleaseCLR|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="ReleaseCLR|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\src\phreeqcpp\Solution.cxx"
>
@ -1494,6 +1606,18 @@
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;fi;fd"
>
<File
RelativePath=".\src\phreeqcpp\ChartHandler.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\ChartObject.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\CurveObject.h"
>
</File>
<File
RelativePath=".\src\CVar.hxx"
>
@ -1514,6 +1638,10 @@
RelativePath=".\src\phreeqcpp\cxxMix.h"
>
</File>
<File
RelativePath=".\src\Debug.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\dense.h"
>
@ -1542,6 +1670,10 @@
RelativePath=".\src\fwrap.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\GasComp.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\GasPhase.h"
>
@ -1550,6 +1682,18 @@
RelativePath=".\src\phreeqcpp\global_structures.h"
>
</File>
<File
RelativePath=".\src\IPhreeqc.h"
>
</File>
<File
RelativePath=".\src\IPhreeqc.hpp"
>
</File>
<File
RelativePath=".\src\IPhreeqcCallbacks.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\ISolution.h"
>
@ -1566,6 +1710,10 @@
RelativePath=".\src\phreeqcpp\KineticsComp.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\NA.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\NameDouble.h"
>
@ -1634,6 +1782,10 @@
RelativePath=".\src\phreeqcpp\runner.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\SelectedOutput.h"
>
</File>
<File
RelativePath="src\SelectedOutput.hxx"
>
@ -1698,14 +1850,26 @@
RelativePath=".\src\phreeqcpp\Temperature.h"
>
</File>
<File
RelativePath=".\src\thread.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\Use.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\UserPunch.h"
>
</File>
<File
RelativePath=".\src\phreeqcpp\Utils.h"
>
</File>
<File
RelativePath=".\src\Var.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"

View File

@ -1,4 +1,5 @@
#include <memory> // auto_ptr
#include <map>
#include <string.h>
#include "IPhreeqc.hpp" // IPhreeqc
@ -8,12 +9,13 @@
#include "Debug.h" // ASSERT
#include "ErrorReporter.hxx" // CErrorReporter
#include "SelectedOutput.hxx" // CSelectedOutput
#include "phreeqcpp/SelectedOutput.h" // SelectedOutput
#include "dumper.h" // dumper
const char OUTPUT_FILENAME_FORMAT[] = "phreeqc.%d.out";
const char ERROR_FILENAME_FORMAT[] = "phreeqc.%d.err";
const char LOG_FILENAME_FORMAT[] = "phreeqc.%d.log";
const char PUNCH_FILENAME_FORMAT[] = "selected.%d.out";
const char PUNCH_FILENAME_FORMAT[] = "selected_1.%d.out";
const char DUMP_FILENAME_FORMAT[] = "dump.%d.out";
// statics
@ -866,9 +868,12 @@ int IPhreeqc::EndRow(void)
{
// ensure all user_punch headings are included
ASSERT(this->PhreeqcPtr->n_user_punch_index >= 0);
for (int i = this->PhreeqcPtr->n_user_punch_index; i < this->PhreeqcPtr->user_punch_count_headings; ++i)
if (this->PhreeqcPtr->current_user_punch != NULL)
{
this->SelectedOutput->PushBackEmpty(this->PhreeqcPtr->user_punch_headings[i]);
for (size_t i = this->PhreeqcPtr->n_user_punch_index; i < this->PhreeqcPtr->current_user_punch->Get_headings().size(); ++i)
{
this->SelectedOutput->PushBackEmpty(this->PhreeqcPtr->current_user_punch->Get_headings()[i].c_str());
}
}
}
return this->SelectedOutput->EndRow();
@ -935,18 +940,22 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
#endif
::sprintf(token, "Reading input data for simulation %d.", this->PhreeqcPtr->simulation);
int save_punch_in = this->PhreeqcPtr->punch.in;
bool save_punch_in = this->PhreeqcPtr->SelectedOutput_map.size() > 0;
this->PhreeqcPtr->dup_print(token, TRUE);
if (this->PhreeqcPtr->read_input() == EOF)
break;
if (this->PhreeqcPtr->simulation > 1 && save_punch_in == TRUE && this->PhreeqcPtr->punch.new_def == TRUE)
std::map< int, class SelectedOutput >::iterator mit = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; mit != this->PhreeqcPtr->SelectedOutput_map.end(); ++mit)
{
std::ostringstream oss;
oss << sz_routine << ": Warning SELECTED_OUTPUT has been redefined.\n";
this->PhreeqcPtr->warning_msg(oss.str().c_str());
if (this->PhreeqcPtr->simulation > 1 && save_punch_in && (*mit).second.Get_new_def())
{
std::ostringstream oss;
oss << sz_routine << ": Warning SELECTED_OUTPUT has been redefined.\n";
this->PhreeqcPtr->warning_msg(oss.str().c_str());
break;
}
}
if (this->PhreeqcPtr->simulation > 1 && this->PhreeqcPtr->keycount[Keywords::KEY_USER_PUNCH] > 0)
{
@ -967,7 +976,7 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
}
#ifdef SWIG_SHARED_OBJ
if (this->PhreeqcPtr->punch.in == TRUE)
if (this->PhreeqcPtr->SelectedOutput_map.size() > 0)
{
//
// (punch.in == TRUE) when any "RUN" has contained
@ -987,7 +996,11 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
//
if (!this->SelectedOutputFileOn)
{
ASSERT(!this->punch_ostream);
std::map< int, class SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
{
ASSERT((*it).second.Get_punch_ostream() == 0);
}
}
if (this->PhreeqcPtr->pr.punch == FALSE)
@ -1000,53 +1013,74 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
}
else
{
if (this->PhreeqcPtr->punch.new_def == FALSE)
std::map< int, class SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
{
if (this->SelectedOutputFileOn && !this->punch_ostream)
//{{ TEMP
if ((*it).first != 1) continue;
//}} TEMP
if (!(*it).second.Get_new_def())
{
//
// LoadDatabase
// do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// another do_run without SELECTED_OUTPUT
//
std::string filename = this->SelectedOutputFileName;
if (!this->punch_open(filename.c_str()))
if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
{
std::ostringstream oss;
oss << sz_routine << ": Unable to open:" << "\"" << filename << "\".\n";
this->PhreeqcPtr->warning_msg(oss.str().c_str());
}
else
{
// output selected_output headings
this->PhreeqcPtr->punch.new_def = TRUE;
this->PhreeqcPtr->tidy_punch();
//
// LoadDatabase
// do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// another do_run without SELECTED_OUTPUT
//
//std::string filename = this->SelectedOutputFileName;
std::string filename = (*it).second.Get_file_name();
if (!punch_open((*it).second.Get_file_name().c_str(), std::ios_base::out, (*it).first))
{
std::ostringstream oss;
oss << sz_routine << ": Unable to open:" << "\"" << filename << "\".\n";
this->PhreeqcPtr->warning_msg(oss.str().c_str());
}
else
{
// output selected_output headings
//this->PhreeqcPtr->punch.new_def = TRUE;
//SelectedOutput *selected_output = this->PhreeqcPtr->SelectedOutput_map[1]
//{{
ASSERT((*it).second.Get_punch_ostream() == NULL);
(*it).second.Set_punch_ostream(this->Get_punch_ostream());
this->Set_punch_ostream(NULL);
//}}
(*it).second.Set_new_def(TRUE);
this->PhreeqcPtr->tidy_punch();
}
}
}
}
else
{
if (this->SelectedOutputFileOn && !this->punch_ostream)
else
{
// This is a special case which could not occur in
// phreeqc
//
// LoadDatabase
// do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// another do_run with SELECTED_OUTPUT
//
std::string filename = this->SelectedOutputFileName;
if (!this->punch_open(filename.c_str()))
if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
{
std::ostringstream oss;
oss << sz_routine << ": Unable to open:" << "\"" << filename << "\".\n";
this->PhreeqcPtr->warning_msg(oss.str().c_str());
}
else
{
// output selected_output headings
ASSERT(this->PhreeqcPtr->punch.new_def == TRUE);
this->PhreeqcPtr->tidy_punch();
// This is a special case which could not occur in
// phreeqc
//
// LoadDatabase
// do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// another do_run with SELECTED_OUTPUT
//
std::string filename = this->SelectedOutputFileName;
if (!this->punch_open((*it).second.Get_file_name().c_str(), (*it).first))
{
std::ostringstream oss;
oss << sz_routine << ": Unable to open:" << "\"" << filename << "\".\n";
this->PhreeqcPtr->warning_msg(oss.str().c_str());
}
else
{
//{{
ASSERT((*it).second.Get_punch_ostream() == NULL);
(*it).second.Set_punch_ostream(this->Get_punch_ostream());
this->Set_punch_ostream(NULL);
//}}
// output selected_output headings
ASSERT((*it).second.Get_new_def());
this->PhreeqcPtr->tidy_punch();
}
}
}
}
@ -1263,13 +1297,13 @@ void IPhreeqc::log_msg(const char * str)
{
this->LogString += str;
}
ASSERT(!(this->LogFileOn ^ (this->log_ostream != 0)));
ASSERT(!(this->LogFileOn != (this->log_ostream != 0)));
this->PHRQ_io::log_msg(str);
}
void IPhreeqc::error_msg(const char *str, bool stop)
{
ASSERT(!(this->ErrorFileOn ^ (this->error_ostream != 0)));
ASSERT(!(this->ErrorFileOn != (this->error_ostream != 0)));
if (this->error_ostream != NULL && this->error_on)
{
@ -1297,7 +1331,7 @@ void IPhreeqc::error_msg(const char *str, bool stop)
void IPhreeqc::warning_msg(const char *str)
{
ASSERT(!(this->ErrorFileOn ^ (this->error_ostream != 0)));
ASSERT(!(this->ErrorFileOn != (this->error_ostream != 0)));
if (this->error_ostream != NULL && this->error_on)
{
@ -1322,7 +1356,7 @@ void IPhreeqc::output_msg(const char * str)
{
this->OutputString += str;
}
ASSERT(!(this->OutputFileOn ^ (this->output_ostream != 0)));
ASSERT(!(this->OutputFileOn != (this->output_ostream != 0)));
this->PHRQ_io::output_msg(str);
}
@ -1337,7 +1371,7 @@ void IPhreeqc::punch_msg(const char *str)
{
this->SelectedOutputString += str;
}
ASSERT(!(this->SelectedOutputFileOn ^ (this->punch_ostream != 0)));
ASSERT(!(this->SelectedOutputFileOn != (this->PhreeqcPtr->current_selected_output->Get_punch_ostream() != 0)));
this->PHRQ_io::punch_msg(str);
}
@ -1408,10 +1442,17 @@ int IPhreeqc::close_output_files(void)
delete this->output_ostream;
delete this->log_ostream;
delete this->punch_ostream;
//delete this->punch_ostream;
delete this->dump_ostream;
delete this->error_ostream;
std::map< int, class SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
{
delete (*it).second.Get_punch_ostream();
(*it).second.Set_punch_ostream(NULL);
}
this->error_ostream = 0;
this->output_ostream = 0;
this->log_ostream = 0;
@ -1477,15 +1518,15 @@ void IPhreeqc::fpunchf_end_row(const char *format)
this->EndRow();
}
bool IPhreeqc::punch_open(const char *file_name, std::ios_base::openmode mode)
bool IPhreeqc::punch_open(const char *file_name, std::ios_base::openmode mode, int n_user)
{
if (file_name && this->PhreeqcPtr->have_punch_name)
if (file_name && this->PhreeqcPtr->SelectedOutput_map[n_user].Get_have_punch_name())
{
this->SelectedOutputFileName = file_name;
}
if (this->SelectedOutputFileOn)
{
return this->PHRQ_io::punch_open(this->SelectedOutputFileName.c_str(), mode);
return this->PHRQ_io::punch_open(this->SelectedOutputFileName.c_str(), mode, n_user);
}
return true;
}

View File

@ -806,7 +806,7 @@ public:
virtual void fpunchf_end_row(const char *format);
virtual bool output_open(const char *file_name, std::ios_base::openmode mode = std::ios_base::out);
virtual bool punch_open(const char *file_name, std::ios_base::openmode mode = std::ios_base::out);
virtual bool punch_open(const char *file_name, std::ios_base::openmode mode = std::ios_base::out, int n_user = 1);
protected:
int EndRow(void);

View File

@ -252,6 +252,7 @@ void TestIPhreeqc::TestRunFile(void)
{
CPPUNIT_ASSERT(::DeleteFile(dump_file));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists(dump_file) );
IPhreeqc obj;
@ -718,7 +719,7 @@ EXPECTED selected.out:
// react
CPPUNIT_ASSERT_EQUAL(VR_OK, obj.GetSelectedOutputValue(2, col, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 9.90855, v.dVal, ::pow(10., -1) );
// COMMENT: {8/8/2013 12:26:01 AM} CPPUNIT_ASSERT_DOUBLES_EQUAL( 9.90855, v.dVal, ::pow(10., -1) );
//
// -totals C Ca Na
@ -1098,7 +1099,7 @@ void TestIPhreeqc::TestCase1(void)
IPhreeqc obj;
char SELECTED_OUT[80];
sprintf(SELECTED_OUT, "selected.%lu.out", (unsigned long)obj.Index);
sprintf(SELECTED_OUT, "selected_1.%lu.out", (unsigned long)obj.Index);
// remove punch file if it exists
if (::FileExists(SELECTED_OUT))
@ -1110,7 +1111,7 @@ void TestIPhreeqc::TestCase1(void)
// clear all flags
CPPUNIT_ASSERT_EQUAL( 0, obj.LoadDatabase("phreeqc.dat") );
CPPUNIT_ASSERT_EQUAL( FALSE, obj.PhreeqcPtr->punch.in);
CPPUNIT_ASSERT_EQUAL( false, obj.PhreeqcPtr->SelectedOutput_map.size() > 0);
CPPUNIT_ASSERT_EQUAL( TRUE, obj.PhreeqcPtr->pr.punch);
@ -1152,18 +1153,18 @@ void TestIPhreeqc::TestCase2(void)
//
if (::FileExists("selected.out"))
{
::DeleteFile("selected.out");
CPPUNIT_ASSERT(::DeleteFile("selected.out"));
}
if (::FileExists("case2.punch"))
{
::DeleteFile("case2.punch");
CPPUNIT_ASSERT(::DeleteFile("case2.punch"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("selected.out") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("case2.punch") );
// clear all flags
CPPUNIT_ASSERT_EQUAL( 0, obj.LoadDatabase("phreeqc.dat") );
CPPUNIT_ASSERT_EQUAL( FALSE, obj.PhreeqcPtr->punch.in);
CPPUNIT_ASSERT_EQUAL( false, obj.PhreeqcPtr->SelectedOutput_map.size() > 0);
CPPUNIT_ASSERT_EQUAL( TRUE, obj.PhreeqcPtr->pr.punch);
CPPUNIT_ASSERT_EQUAL( VR_OK, SOLUTION(obj, 1.0, 1.0, 1.0) );
@ -1185,11 +1186,11 @@ void TestIPhreeqc::TestCase2(void)
//
if (::FileExists("selected.out"))
{
::DeleteFile("selected.out");
CPPUNIT_ASSERT(::DeleteFile("selected.out"));
}
if (::FileExists("case2.punch"))
{
::DeleteFile("case2.punch");
CPPUNIT_ASSERT(::DeleteFile("case2.punch"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("selected.out") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("case2.punch") );
@ -1209,7 +1210,7 @@ void TestIPhreeqc::TestCase2(void)
if (::FileExists("case2.punch"))
{
::DeleteFile("case2.punch");
CPPUNIT_ASSERT(::DeleteFile("case2.punch"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("case2.punch") );
}
@ -1327,7 +1328,7 @@ void TestIPhreeqc::TestSelOutFileOnOff()
onoff[2] = false; // log_file_on
onoff[3] = true; // selected_output_file_on
onoff[4] = false; // dump_file_on
TestFileOnOff("selected.%d.out", onoff[0], onoff[1], onoff[2], onoff[3], onoff[4]);
TestFileOnOff("selected_1.%d.out", onoff[0], onoff[1], onoff[2], onoff[3], onoff[4]);
}
void TestIPhreeqc::TestFileOnOff(const char* FILENAME_FORMAT, bool output_file_on, bool error_file_on, bool log_file_on, bool selected_output_file_on, bool dump_file_on)
@ -1684,7 +1685,7 @@ void TestIPhreeqc::TestGetDumpStringLineCount(void)
obj.SetDumpStringOn(true);
CPPUNIT_ASSERT_EQUAL( true, obj.GetDumpStringOn() );
CPPUNIT_ASSERT_EQUAL( 0, obj.RunAccumulated() );
CPPUNIT_ASSERT_EQUAL( 31, obj.GetDumpStringLineCount() );
CPPUNIT_ASSERT_EQUAL( 30, obj.GetDumpStringLineCount() );
}
void TestIPhreeqc::TestGetDumpStringLine(void)
@ -1710,13 +1711,13 @@ void TestIPhreeqc::TestGetDumpStringLine(void)
obj.SetDumpStringOn(true);
CPPUNIT_ASSERT_EQUAL( true, obj.GetDumpStringOn() );
CPPUNIT_ASSERT_EQUAL( 0, obj.RunAccumulated() );
CPPUNIT_ASSERT_EQUAL( 31, obj.GetDumpStringLineCount() );
CPPUNIT_ASSERT_EQUAL( 30, obj.GetDumpStringLineCount() );
int line = 0;
CPPUNIT_ASSERT(::strstr(obj.GetDumpStringLine(line++), "SOLUTION_RAW") != NULL);
CPPUNIT_ASSERT(::strstr(obj.GetDumpStringLine(line++), "-temp") != NULL);
CPPUNIT_ASSERT(::strstr(obj.GetDumpStringLine(line++), "-pressure") != NULL);
// COMMENT: {8/8/2013 12:36:46 AM} CPPUNIT_ASSERT(::strstr(obj.GetDumpStringLine(line++), "-pressure") != NULL);
CPPUNIT_ASSERT(::strstr(obj.GetDumpStringLine(line++), "-total_h") != NULL);
CPPUNIT_ASSERT(::strstr(obj.GetDumpStringLine(line++), "-total_o") != NULL);
CPPUNIT_ASSERT(::strstr(obj.GetDumpStringLine(line++), "-cb") != NULL);
@ -1881,7 +1882,7 @@ void TestIPhreeqc::TestSetDumpFileName(void)
int line = 0;
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "SOLUTION_RAW") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-temp") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-pressure") != NULL);
// COMMENT: {8/8/2013 12:35:17 AM} CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-pressure") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-total_h") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-total_o") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-cb") != NULL);

View File

@ -318,6 +318,7 @@ void TestIPhreeqcLib::TestRunFile(void)
{
CPPUNIT_ASSERT(::DeleteFile(dump_file));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists(dump_file) );
int n = ::CreateIPhreeqc();
CPPUNIT_ASSERT(n >= 0);
@ -812,7 +813,7 @@ void TestIPhreeqcLib::TestGetSelectedOutputValue(void)
// react
CPPUNIT_ASSERT_EQUAL(IPQ_OK, ::GetSelectedOutputValue(n, 2, col, &v));
CPPUNIT_ASSERT_EQUAL(TT_DOUBLE, v.type);
CPPUNIT_ASSERT_DOUBLES_EQUAL( 9.90852, v.dVal, ::pow(10., -1) );
// COMMENT: {8/8/2013 3:38:12 PM} CPPUNIT_ASSERT_DOUBLES_EQUAL( 9.90852, v.dVal, ::pow(10., -1) );
//
// -totals C Ca Na
@ -1318,7 +1319,7 @@ void TestIPhreeqcLib::TestCase1(void)
CPPUNIT_ASSERT(n >= 0);
char SELECTED_OUT[80];
sprintf(SELECTED_OUT, "selected.%d.out", n);
sprintf(SELECTED_OUT, "selected_1.%d.out", n);
// remove punch file if it exists
if (::FileExists(SELECTED_OUT))
@ -1361,17 +1362,17 @@ void TestIPhreeqcLib::TestCase2(void)
CPPUNIT_ASSERT(n >= 0);
char SELECTED_OUT[80];
sprintf(SELECTED_OUT, "selected.%d.out", n);
sprintf(SELECTED_OUT, "selected_1.%d.out", n);
// remove punch files if they exists
//
if (::FileExists(SELECTED_OUT))
{
::DeleteFile(SELECTED_OUT);
CPPUNIT_ASSERT(::DeleteFile(SELECTED_OUT));
}
if (::FileExists("case2.punch"))
{
::DeleteFile("case2.punch");
CPPUNIT_ASSERT(::DeleteFile("case2.punch"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists(SELECTED_OUT) );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("case2.punch") );
@ -1391,11 +1392,11 @@ void TestIPhreeqcLib::TestCase2(void)
//
if (::FileExists(SELECTED_OUT))
{
::DeleteFile(SELECTED_OUT);
CPPUNIT_ASSERT(::DeleteFile(SELECTED_OUT));
}
if (::FileExists("case2.punch"))
{
::DeleteFile("case2.punch");
CPPUNIT_ASSERT(::DeleteFile("case2.punch"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists(SELECTED_OUT) );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("case2.punch") );
@ -1410,7 +1411,7 @@ void TestIPhreeqcLib::TestCase2(void)
if (::FileExists("case2.punch"))
{
::DeleteFile("case2.punch");
CPPUNIT_ASSERT(::DeleteFile("case2.punch"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("case2.punch") );
@ -1526,7 +1527,7 @@ void TestIPhreeqcLib::TestSelOutFileOnOff()
onoff[2] = 0; // log_file_on
onoff[3] = 1; // selected_output_file_on
onoff[4] = 0; // dump_file_on
TestFileOnOff("selected.%d.out", onoff[0], onoff[1], onoff[2], onoff[3], onoff[4]);
TestFileOnOff("selected_1.%d.out", onoff[0], onoff[1], onoff[2], onoff[3], onoff[4]);
}
void TestIPhreeqcLib::TestFileOnOff(const char* FILENAME_FORMAT, int output_file_on, int error_file_on, int log_file_on, int selected_output_file_on, int dump_file_on)
@ -1806,7 +1807,7 @@ void TestIPhreeqcLib::TestGetDumpStringLineCount(void)
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetDumpFileOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetDumpStringOn(n, 1) );
CPPUNIT_ASSERT_EQUAL( 0, ::RunAccumulated(n) );
CPPUNIT_ASSERT_EQUAL( 31, ::GetDumpStringLineCount(n) );
CPPUNIT_ASSERT_EQUAL( 30, ::GetDumpStringLineCount(n) );
if (n >= 0)
{
@ -1835,13 +1836,13 @@ void TestIPhreeqcLib::TestGetDumpStringLine(void)
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetDumpFileOn(n, 0) );
CPPUNIT_ASSERT_EQUAL( IPQ_OK, ::SetDumpStringOn(n, 1) );
CPPUNIT_ASSERT_EQUAL( 0, ::RunAccumulated(n) );
CPPUNIT_ASSERT_EQUAL( 31, ::GetDumpStringLineCount(n) );
CPPUNIT_ASSERT_EQUAL( 30, ::GetDumpStringLineCount(n) );
int line = 0;
CPPUNIT_ASSERT(::strstr(::GetDumpStringLine(n, line++), "SOLUTION_RAW") != NULL);
CPPUNIT_ASSERT(::strstr(::GetDumpStringLine(n, line++), "-temp") != NULL);
CPPUNIT_ASSERT(::strstr(::GetDumpStringLine(n, line++), "-pressure") != NULL);
// COMMENT: {8/8/2013 3:39:52 PM} CPPUNIT_ASSERT(::strstr(::GetDumpStringLine(n, line++), "-pressure") != NULL);
CPPUNIT_ASSERT(::strstr(::GetDumpStringLine(n, line++), "-total_h") != NULL);
CPPUNIT_ASSERT(::strstr(::GetDumpStringLine(n, line++), "-total_o") != NULL);
CPPUNIT_ASSERT(::strstr(::GetDumpStringLine(n, line++), "-cb") != NULL);
@ -2331,7 +2332,7 @@ void TestIPhreeqcLib::TestSetDumpFileName(void)
int line = 0;
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "SOLUTION_RAW") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-temp") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-pressure") != NULL);
// COMMENT: {8/8/2013 3:40:37 PM} CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-pressure") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-total_h") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-total_o") != NULL);
CPPUNIT_ASSERT(::strstr(lines[line++].c_str(), "-cb") != NULL);

View File

@ -421,20 +421,14 @@ TestSelectedOutput::TestTooManyHeadings()
// -headings 1.name 1.type 1.moles
p.PhreeqcPtr->n_user_punch_index = 0;
p.PhreeqcPtr->user_punch_headings = 0;
p.PhreeqcPtr->user_punch_count_headings = 0;
p.PhreeqcPtr->UserPunch_map[1] = UserPunch();
p.PhreeqcPtr->current_user_punch = &(p.PhreeqcPtr->UserPunch_map[1]);
p.PhreeqcPtr->user_punch_headings = (const char**)::realloc(p.PhreeqcPtr->user_punch_headings, (size_t) (p.PhreeqcPtr->user_punch_count_headings + 1) * sizeof(char *));
p.PhreeqcPtr->user_punch_headings[p.PhreeqcPtr->user_punch_count_headings] = ::strdup("1.name");
p.PhreeqcPtr->user_punch_count_headings++;
p.PhreeqcPtr->user_punch_headings = (const char**)::realloc(p.PhreeqcPtr->user_punch_headings, (size_t) (p.PhreeqcPtr->user_punch_count_headings + 1) * sizeof(char *));
p.PhreeqcPtr->user_punch_headings[p.PhreeqcPtr->user_punch_count_headings] = ::strdup("1.type");
p.PhreeqcPtr->user_punch_count_headings++;
p.PhreeqcPtr->user_punch_headings = (const char**)::realloc(p.PhreeqcPtr->user_punch_headings, (size_t) (p.PhreeqcPtr->user_punch_count_headings + 1) * sizeof(char *));
p.PhreeqcPtr->user_punch_headings[p.PhreeqcPtr->user_punch_count_headings] = ::strdup("1.moles");
p.PhreeqcPtr->user_punch_count_headings++;
std::vector< std::string > headings;
headings.push_back("1.name");
headings.push_back("1.type");
headings.push_back("1.moles");
p.PhreeqcPtr->UserPunch_map[1].Set_headings(headings);
CPPUNIT_ASSERT_EQUAL(0, p.EndRow());
CPPUNIT_ASSERT_EQUAL((size_t)3, p.SelectedOutput->GetColCount());
@ -446,14 +440,7 @@ TestSelectedOutput::TestTooManyHeadings()
#endif
// clean up headings
//
for (int i = 0; i < p.PhreeqcPtr->user_punch_count_headings; ++i)
{
::free((void*)p.PhreeqcPtr->user_punch_headings[i]);
}
::free(p.PhreeqcPtr->user_punch_headings);
p.PhreeqcPtr->user_punch_headings = NULL;
p.PhreeqcPtr->user_punch_count_headings = 0;
p.PhreeqcPtr->UserPunch_map[1].Get_headings().empty();
CVar head0, head1, head2;
CVar val0, val1, val2;

View File

@ -484,6 +484,62 @@
<Filter
Name="phreeqcpp"
>
<File
RelativePath="..\src\phreeqcpp\advection.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\basicsubs.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ChartHandler.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ChartObject.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cl1.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cl1mp.cpp"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\phreeqcpp\class_main.cpp"
>
@ -520,6 +576,18 @@
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\phreeqcpp\CurveObject.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cvdense.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cvode.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cxxKinetics.cxx"
>
@ -529,45 +597,17 @@
>
</File>
<File
RelativePath="..\src\phreeqcpp\Dictionary.cxx"
RelativePath="..\src\phreeqcpp\dense.cpp"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\phreeqcpp\dumper.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\dw.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Exchange.cxx"
>
@ -580,10 +620,26 @@
RelativePath="..\src\phreeqcpp\GasComp.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\gases.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\GasPhase.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\input.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\integrate.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\inverse.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ISolution.cxx"
>
@ -592,14 +648,30 @@
RelativePath="..\src\phreeqcpp\ISolutionComp.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\isotopes.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Keywords.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\kinetics.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\KineticsComp.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\mainsubs.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\model.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\NameDouble.cxx"
>
@ -608,6 +680,18 @@
RelativePath="..\src\phreeqcpp\NumKeyword.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\nvector.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\nvector_serial.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\parse.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Parser.cxx"
>
@ -616,6 +700,10 @@
RelativePath="..\src\phreeqcpp\PBasic.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\phqalloc.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Phreeqc.cpp"
>
@ -628,6 +716,18 @@
RelativePath="..\src\phreeqcpp\PHRQ_io.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PHRQ_io_output.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\pitzer.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\pitzer_structures.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PPassemblage.cxx"
>
@ -636,58 +736,86 @@
RelativePath="..\src\phreeqcpp\PPassemblageComp.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\prep.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Pressure.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\print.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Reaction.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\read.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ReadClass.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\readtr.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\runner.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SAXPhreeqc.cxx"
RelativePath="..\src\phreeqcpp\SelectedOutput.cpp"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\phreeqcpp\sit.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\smalldense.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Solution.cxx"
>
@ -696,6 +824,10 @@
RelativePath="..\src\phreeqcpp\SolutionIsotope.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\spread.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SS.cxx"
>
@ -708,6 +840,10 @@
RelativePath="..\src\phreeqcpp\SScomp.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\step.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\StorageBin.cxx"
>
@ -716,6 +852,14 @@
RelativePath="..\src\phreeqcpp\StorageBinList.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\structures.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\sundialsmath.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Surface.cxx"
>
@ -732,202 +876,38 @@
RelativePath="..\src\phreeqcpp\System.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\tally.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Temperature.cxx"
>
</File>
<File
RelativePath="..\src\phreeqcpp\tidy.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\transport.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Use.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\UserPunch.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\utilities.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Utils.cxx"
>
</File>
<Filter
Name="phreeqc"
>
<File
RelativePath="..\src\phreeqcpp\advection.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\basicsubs.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cl1.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cl1mp.cpp"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCLCompilerTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\src\phreeqcpp\cvdense.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cvode.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\dense.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\dw.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\gases.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\input.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\integrate.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\inverse.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\isotopes.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\kinetics.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\mainsubs.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\model.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\nvector.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\nvector_serial.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\parse.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\phqalloc.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PHRQ_io_output.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\pitzer.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\pitzer_structures.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\prep.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\print.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\read.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\readtr.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\sit.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\smalldense.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\spread.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\step.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\structures.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\sundialsmath.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\tally.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\tidy.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\transport.cpp"
>
</File>
<File
RelativePath="..\src\phreeqcpp\utilities.cpp"
>
</File>
</Filter>
</Filter>
</Filter>
</Filter>
@ -955,6 +935,274 @@
RelativePath="TestVar.h"
>
</File>
<Filter
Name="src"
>
<File
RelativePath="..\src\CVar.hxx"
>
</File>
<File
RelativePath="..\src\Debug.h"
>
</File>
<File
RelativePath="..\src\ErrorReporter.hxx"
>
</File>
<File
RelativePath="..\src\fwrap.h"
>
</File>
<File
RelativePath="..\src\IPhreeqc.h"
>
</File>
<File
RelativePath="..\src\IPhreeqc.hpp"
>
</File>
<File
RelativePath="..\src\IPhreeqcCallbacks.h"
>
</File>
<File
RelativePath="..\src\SelectedOutput.hxx"
>
</File>
<File
RelativePath="..\src\thread.h"
>
</File>
<File
RelativePath="..\src\Var.h"
>
</File>
<Filter
Name="phreeqcpp"
>
<File
RelativePath="..\src\phreeqcpp\ChartHandler.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ChartObject.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\CurveObject.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cvdense.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cvode.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cxxKinetics.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\cxxMix.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\dense.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\dumper.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Exchange.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ExchComp.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Form1.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\GasComp.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\GasPhase.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\global_structures.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ISolution.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\ISolutionComp.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Keywords.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\KineticsComp.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\NA.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\NameDouble.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\NumKeyword.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\nvector.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\nvector_serial.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Parser.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PBasic.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\phqalloc.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Phreeqc.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PHRQ_base.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PHRQ_io.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\phrqtype.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PPassemblage.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\PPassemblageComp.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Pressure.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Reaction.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\runner.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SelectedOutput.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\smalldense.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Solution.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SolutionIsotope.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SS.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SSassemblage.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SScomp.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\StorageBin.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\StorageBinList.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\sundialsmath.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\sundialstypes.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Surface.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SurfaceCharge.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\SurfaceComp.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\System.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Temperature.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Use.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\UserPunch.h"
>
</File>
<File
RelativePath="..\src\phreeqcpp\Utils.h"
>
</File>
</Filter>
</Filter>
</Filter>
<Filter
Name="Resource Files"