iphreeqc/class_main.cpp
David L Parkhurst 65ff0a9456 Fixed Makefile on Linux to make class version.
Added eol and other changes for linux.

Had statics in ReadClass.cxx, removed.

Problems with .dmp files. May be because of statics.




git-svn-id: svn://136.177.114.72/svn_GW/phreeqcpp/trunk@3879 1feff8c3-07ed-0310-ac33-dd36852eb9cd
2009-12-08 23:58:06 +00:00

191 lines
4.3 KiB
C++
Raw Blame History

#include "Phreeqc.h"
#include "output.h"
#include "phrqproto.h"
#include "input.h"
/* ----------------------------------------------------------------------
* MAIN
* ---------------------------------------------------------------------- */
int
main(int argc, char *argv[])
/*
* Main program for PHREEQC
*/
{
//int errors;
#if defined(WIN32_MEMORY_DEBUG)
int tmpDbgFlag;
/*
* Set the debug-heap flag to keep freed blocks in the
* heap's linked list - This will allow us to catch any
* inadvertent use of freed memory
*/
tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
//tmpDbgFlag |= _CRTDBG_DELAY_FREE_MEM_DF;
tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF;
///tmpDbgFlag |= _CRTDBG_CHECK_ALWAYS_DF;
_CrtSetDbgFlag(tmpDbgFlag);
//_crtBreakAlloc = 9482;
#endif
/*if (svnid == NULL)
fprintf(stderr, " ");*/
Phreeqc phreeqc_instance;
phreeqc_instance.main_method(argc, argv);
}
int CLASS_QUALIFIER
main_method(int argc, char *argv[])
/*
* Main program for PHREEQC
*/
{
int errors;
void *db_cookie = NULL;
void *input_cookie = NULL;
#if defined(WIN32_MEMORY_DEBUG)
int tmpDbgFlag;
/*
* Set the debug-heap flag to keep freed blocks in the
* heap's linked list - This will allow us to catch any
* inadvertent use of freed memory
*/
tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
//tmpDbgFlag |= _CRTDBG_DELAY_FREE_MEM_DF;
tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF;
///tmpDbgFlag |= _CRTDBG_CHECK_ALWAYS_DF;
_CrtSetDbgFlag(tmpDbgFlag);
//_crtBreakAlloc = 9482;
#endif
//if (svnid == NULL)
// fprintf(stderr, " ");
phast = FALSE;
/*
* Add callbacks for error_msg and warning_msg
*/
if (add_output_callback(phreeqc_handler, this) != OK)
{
fprintf(stderr, "ERROR: %s\n",
"NULL pointer returned from malloc or realloc.");
fprintf(stderr, "ERROR: %s\n", "Program terminating.");
return -1;
}
/*
* Open input/output files
*/
errors = process_file_names(argc, argv, &db_cookie, &input_cookie, TRUE);
if (errors != 0)
{
//clean_up();
return errors;
}
#ifdef DOS
write_banner();
#endif
/*
* Initialize arrays
*/
errors = do_initialize();
if (errors != 0)
{
//clean_up();
return errors;
}
/*
* Load database into memory
*/
errors = read_database(getc_callback, db_cookie);
if (errors != 0)
{
//clean_up();
return errors;
}
/*
* Read input data for simulation
*/
errors = run_simulations(getc_callback, input_cookie);
if (errors != 0)
{
//clean_up();
return errors;
}
/*
* Display successful status
*/
errors = do_status();
if (errors != 0)
{
//clean_up();
return errors;
}
//clean_up();
//close_input_files();
//close_output_files();
return 0;
}
#ifdef DOS
/* ---------------------------------------------------------------------- */
int CLASS_QUALIFIER
write_banner(void)
/* ---------------------------------------------------------------------- */
{
char buffer[80];
int len, indent;
output_msg(OUTPUT_SCREEN,
" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
output_msg(OUTPUT_SCREEN,
" <20> <20>\n");
/* version */
len = sprintf(buffer, "* PHREEQC-%s *", "@VERSION@");
indent = (44 - len) / 2;
output_msg(OUTPUT_SCREEN, "%14c<34>%*c%s%*c<>\n", ' ', indent, ' ', buffer,
44 - indent - len, ' ');
output_msg(OUTPUT_SCREEN,
" <20> <20>\n");
output_msg(OUTPUT_SCREEN,
" <20> A hydrogeochemical transport model <20>\n");
output_msg(OUTPUT_SCREEN,
" <20> <20>\n");
output_msg(OUTPUT_SCREEN,
" <20> by <20>\n");
output_msg(OUTPUT_SCREEN,
" <20> D.L. Parkhurst and C.A.J. Appelo <20>\n");
output_msg(OUTPUT_SCREEN,
" <20> <20>\n");
/* date */
len = sprintf(buffer, "%s", "@VER_DATE@");
indent = (44 - len) / 2;
output_msg(OUTPUT_SCREEN, "%14c<34>%*c%s%*c<>\n", ' ', indent, ' ', buffer,
44 - indent - len, ' ');
output_msg(OUTPUT_SCREEN,
" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n\n");
return 0;
}
#endif