IPhreeqc passes all unit tests on VS2005

git-svn-id: svn://136.177.114.72/svn_GW/phreeqcpp/branches/ErrorHandling@5841 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2011-12-01 06:33:54 +00:00
parent ae868f0a20
commit 0f6547cc32
4 changed files with 49 additions and 18 deletions

View File

@ -529,6 +529,12 @@ fpunchf(const char *name, const char *format, int d)
}
}
/* ---------------------------------------------------------------------- */
void PHRQ_io::fpunchf_end_row(const char *format)
/* ---------------------------------------------------------------------- */
{
//NOOP for Phreeqc
}
/* ---------------------------------------------------------------------- */
int PHRQ_io::
close_output_files(void)
/* ---------------------------------------------------------------------- */
@ -592,4 +598,4 @@ echo_msg(const char * str)
break;
}
}
}
}

View File

@ -25,7 +25,7 @@ public:
void output_close(void);
void output_rewind(void);
bool output_isopen(void);
void output_msg(const char * str);
virtual void output_msg(const char * str);
// log_file
bool log_open(const char *file_name);
@ -36,12 +36,12 @@ public:
void log_msg(const char * str);
// punch_file
bool punch_open(const char *file_name);
virtual bool punch_open(const char *file_name);
void punch_fflush(void);
void punch_close(void);
void punch_rewind(void);
bool punch_isopen(void);
void punch_msg(const char * str);
virtual void punch_msg(const char * str);
// error_file
bool error_open(const char *file_name);
@ -49,7 +49,7 @@ public:
void error_close(void);
void error_rewind(void);
bool error_isopen(void);
void error_msg(const char * str, bool stop=false);
virtual void error_msg(const char * str, bool stop=false);
void warning_msg(const char *err_str);
// dump_file
@ -60,10 +60,10 @@ public:
bool dump_isopen(void);
void dump_msg(const char * str);
void fpunchf(const char *name, const char *format, double d);
void fpunchf(const char *name, const char *format, char * d);
void fpunchf(const char *name, const char *format, int d);
virtual void fpunchf(const char *name, const char *format, double d);
virtual void fpunchf(const char *name, const char *format, char * d);
virtual void fpunchf(const char *name, const char *format, int d);
virtual void fpunchf_end_row(const char *format);
void Set_io_error_count(int i) {this->io_error_count = i;};
int Get_io_error_count(void) {return this->io_error_count;};
@ -90,7 +90,7 @@ public:
bool Get_error_file_on(void) {return this->error_file_on;};
bool Get_dump_file_on(void) {return this->dump_file_on;};
void screen_msg(const char * str);
virtual void screen_msg(const char * str);
void Set_screen_on(bool tf) {this->screen_on = tf;};
bool Get_screen_on(void) {return this->screen_on;};
@ -99,7 +99,7 @@ public:
ECHO_LOG,
ECHO_OUTPUT
};
void echo_msg(const char * str);
virtual void echo_msg(const char * str);
void Set_echo_on(bool tf) {this->echo_on = tf;};
bool Get_echo_on(void) {return this->echo_on;};
void Set_echo_destination(ECHO_OPTION eo) {this->echo_destination = eo;};

View File

@ -13,9 +13,18 @@
#include "phqalloc.h"
#include "PBasic.h"
Phreeqc::Phreeqc(void)
Phreeqc::Phreeqc(PHRQ_io *io)
{
phrq_io = new PHRQ_io;
if (io)
{
delete_phrq_io = false;
phrq_io = io;
}
else
{
delete_phrq_io = true;
phrq_io = new PHRQ_io;
}
phast = FALSE;
s_pTail = NULL;
@ -149,7 +158,10 @@ Phreeqc::~Phreeqc(void)
free_check_null(sformatf_buffer);
PHRQ_free_all();
delete phrq_io;
if (this->phrq_io && this->delete_phrq_io)
{
delete this->phrq_io;
}
}
void Phreeqc::set_phast(int tf)
@ -872,3 +884,12 @@ void Phreeqc::init(void)
return;
}
void Phreeqc::set_io(PHRQ_io *io, bool auto_delete)
{
if (this->phrq_io && this->delete_phrq_io)
{
delete this->phrq_io;
}
this->delete_phrq_io = auto_delete;
this->phrq_io = io;
}

View File

@ -57,7 +57,7 @@ class PBasic;
class Phreeqc
{
public:
Phreeqc(void);
Phreeqc(PHRQ_io *io = NULL);
~Phreeqc(void);
public:
@ -1318,10 +1318,11 @@ public:
//bool recursive_include(std::ifstream & input_stream, std::iostream & accumulated_stream);
int main_method(int argc, char *argv[]);
void set_phast(int);
void set_io(PHRQ_io *io, bool auto_delete = false);
size_t list_components(std::list<std::string> &list_c);
std::istream *get_istream();
void pop_istream();
void push_istream(std::istream * cookie);
void push_istream(std::istream * cookie, bool auto_delete = true);
void clear_istream(void);
protected:
void init(void);
@ -1331,10 +1332,10 @@ protected:
//
protected:
std::list <std::istream *> istream_list;
std::ifstream * in_stream;
std::ifstream * db_stream;
std::list <bool> delete_istream_list;
PHRQ_io *phrq_io;
bool delete_phrq_io;
/* ----------------------------------------------------------------------
* STRUCTURES
@ -2072,6 +2073,9 @@ public:
friend class PBasic;
friend class ChartObject;
friend class IPhreeqc;
friend class TestIPhreeqc;
friend class TestSelectedOutput;
std::vector<int> keycount; // used to mark keywords that have been read