minor cleanup

git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/branches/multi_punch@7947 1feff8c3-07ed-0310-ac33-dd36852eb9cd
This commit is contained in:
Scott R Charlton 2013-08-20 02:30:14 +00:00
parent 7cc185b67d
commit f48261abcc
3 changed files with 130 additions and 255 deletions

View File

@ -1025,74 +1025,106 @@ void IPhreeqc::do_run(const char* sz_routine, std::istream* pis, PFN_PRERUN_CALL
}
else
{
//{{
std::map< int, class SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
{
if (!(*it).second.Get_new_def())
if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
{
if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
//
// LoadDatabase
// do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// another do_run without SELECTED_OUTPUT
//
ASSERT(!this->SelectedOutputFileNameMap[(*it).first].empty());
ASSERT(this->SelectedOutputFileNameMap[(*it).first] == this->PhreeqcPtr->SelectedOutput_map[(*it).first].Get_file_name());
std::string filename = this->SelectedOutputFileNameMap[(*it).first];
if (!punch_open(filename.c_str(), std::ios_base::out, (*it).first))
{
//
// LoadDatabase
// do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// another do_run without SELECTED_OUTPUT
//
ASSERT(!this->SelectedOutputFileNameMap[(*it).first].empty());
std::string filename = this->SelectedOutputFileNameMap[(*it).first];
if (!punch_open(filename.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
{
ASSERT(this->Get_punch_ostream() == NULL);
ASSERT((*it).second.Get_punch_ostream() != NULL);
// output selected_output headings
(*it).second.Set_new_def(TRUE);
this->PhreeqcPtr->tidy_punch();
}
std::ostringstream oss;
oss << sz_routine << ": Unable to open:" << "\"" << filename << "\".\n";
this->PhreeqcPtr->warning_msg(oss.str().c_str());
}
else
{
ASSERT(TRUE);
}
}
else
{
if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
{
// 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->SelectedOutputFileNameMap[(*it).first];
if (!this->punch_open(filename.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
{
ASSERT(this->Get_punch_ostream() == NULL);
ASSERT((*it).second.Get_punch_ostream() != NULL);
// output selected_output headings
ASSERT((*it).second.Get_new_def());
this->PhreeqcPtr->tidy_punch();
}
}
else
{
ASSERT(TRUE);
ASSERT(this->Get_punch_ostream() == NULL);
ASSERT((*it).second.Get_punch_ostream() != NULL);
// output selected_output headings
(*it).second.Set_new_def(TRUE);
this->PhreeqcPtr->tidy_punch();
}
}
}
//}}
// COMMENT: {8/19/2013 5:22:41 PM} std::map< int, class SelectedOutput >::iterator it = this->PhreeqcPtr->SelectedOutput_map.begin();
// COMMENT: {8/19/2013 5:22:41 PM} for (; it != this->PhreeqcPtr->SelectedOutput_map.end(); ++it)
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} if (!(*it).second.Get_new_def())
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} //
// COMMENT: {8/19/2013 5:22:41 PM} // LoadDatabase
// COMMENT: {8/19/2013 5:22:41 PM} // do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// COMMENT: {8/19/2013 5:22:41 PM} // another do_run without SELECTED_OUTPUT
// COMMENT: {8/19/2013 5:22:41 PM} //
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT(!this->SelectedOutputFileNameMap[(*it).first].empty());
// COMMENT: {8/19/2013 5:22:41 PM} std::string filename = this->SelectedOutputFileNameMap[(*it).first];
// COMMENT: {8/19/2013 5:22:41 PM} if (!punch_open(filename.c_str(), std::ios_base::out, (*it).first))
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} std::ostringstream oss;
// COMMENT: {8/19/2013 5:22:41 PM} oss << sz_routine << ": Unable to open:" << "\"" << filename << "\".\n";
// COMMENT: {8/19/2013 5:22:41 PM} this->PhreeqcPtr->warning_msg(oss.str().c_str());
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} else
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT(this->Get_punch_ostream() == NULL);
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT((*it).second.Get_punch_ostream() != NULL);
// COMMENT: {8/19/2013 5:22:41 PM} // output selected_output headings
// COMMENT: {8/19/2013 5:22:41 PM} (*it).second.Set_new_def(TRUE);
// COMMENT: {8/19/2013 5:22:41 PM} this->PhreeqcPtr->tidy_punch();
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} else
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT(TRUE);
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} else
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} if (this->SelectedOutputFileOn && !(*it).second.Get_punch_ostream())
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} // This is a special case which could not occur in
// COMMENT: {8/19/2013 5:22:41 PM} // phreeqc
// COMMENT: {8/19/2013 5:22:41 PM} //
// COMMENT: {8/19/2013 5:22:41 PM} // LoadDatabase
// COMMENT: {8/19/2013 5:22:41 PM} // do_run -- containing SELECTED_OUTPUT ****TODO**** check -file option
// COMMENT: {8/19/2013 5:22:41 PM} // another do_run with SELECTED_OUTPUT
// COMMENT: {8/19/2013 5:22:41 PM} //
// COMMENT: {8/19/2013 5:22:41 PM} std::string filename = this->SelectedOutputFileNameMap[(*it).first];
// COMMENT: {8/19/2013 5:22:41 PM} if (!this->punch_open(filename.c_str(), std::ios_base::out, (*it).first))
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} std::ostringstream oss;
// COMMENT: {8/19/2013 5:22:41 PM} oss << sz_routine << ": Unable to open:" << "\"" << filename << "\".\n";
// COMMENT: {8/19/2013 5:22:41 PM} this->PhreeqcPtr->warning_msg(oss.str().c_str());
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} else
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT(this->Get_punch_ostream() == NULL);
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT((*it).second.Get_punch_ostream() != NULL);
// COMMENT: {8/19/2013 5:22:41 PM}
// COMMENT: {8/19/2013 5:22:41 PM} // output selected_output headings
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT((*it).second.Get_new_def());
// COMMENT: {8/19/2013 5:22:41 PM} this->PhreeqcPtr->tidy_punch();
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} else
// COMMENT: {8/19/2013 5:22:41 PM} {
// COMMENT: {8/19/2013 5:22:41 PM} ASSERT(TRUE);
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} }
// COMMENT: {8/19/2013 5:22:41 PM} }
}
}
else

View File

@ -10,15 +10,6 @@
#undef false
#include "CVar.hxx"
// COMMENT: {8/16/2013 11:49:20 PM}#if defined(_WIN32) || defined(__CYGWIN32__)
// COMMENT: {8/16/2013 11:49:20 PM}// DeleteFile defined in <windows.h>
// COMMENT: {8/16/2013 11:49:20 PM}#else
// COMMENT: {8/16/2013 11:49:20 PM}int DeleteFile(const char* szPathName);
// COMMENT: {8/16/2013 11:49:20 PM}#endif
// COMMENT: {8/16/2013 11:49:20 PM}
// COMMENT: {8/16/2013 11:49:20 PM}bool FileExists(const char *szPathName);
// COMMENT: {8/16/2013 11:49:20 PM}size_t FileSize(const char *szPathName);
VRESULT SOLUTION(IPhreeqc& obj, double C, double Ca, double Na);
VRESULT EQUILIBRIUM_PHASES(IPhreeqc& obj, const char* phase, double si, double amount);
VRESULT USER_PUNCH(IPhreeqc& obj, const char* element, int max);
@ -3474,21 +3465,14 @@ void TestIPhreeqc::TestDelete(void)
void TestIPhreeqc::TestRunFileMultiPunchOn(void)
{
if (::FileExists("multi_punch_1.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_1.sel"));
}
if (::FileExists("multi_punch_2.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_2.sel"));
}
if (::FileExists("multi_punch_3.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_3.sel"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_1.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_2.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_3.sel") );
FileTest set1("multi_punch_1.sel");
CPPUNIT_ASSERT( set1.RemoveExisting() );
FileTest set2("multi_punch_2.sel");
CPPUNIT_ASSERT( set2.RemoveExisting() );
FileTest set3("multi_punch_3.sel");
CPPUNIT_ASSERT( set3.RemoveExisting() );
IPhreeqc obj;
@ -3496,44 +3480,21 @@ void TestIPhreeqc::TestRunFileMultiPunchOn(void)
obj.SetSelectedOutputFileOn(true);
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch"));
CPPUNIT_ASSERT_EQUAL( true, ::FileExists("multi_punch_1.sel") );
CPPUNIT_ASSERT_EQUAL( true, ::FileExists("multi_punch_2.sel") );
CPPUNIT_ASSERT_EQUAL( true, ::FileExists("multi_punch_3.sel") );
// CLEANUP
if (::FileExists("multi_punch_1.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_1.sel"));
}
if (::FileExists("multi_punch_2.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_2.sel"));
}
if (::FileExists("multi_punch_3.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_3.sel"));
}
CPPUNIT_ASSERT( set1.VerifyExists() );
CPPUNIT_ASSERT( set2.VerifyExists() );
CPPUNIT_ASSERT( set3.VerifyExists() );
}
void TestIPhreeqc::TestRunFileMultiPunchOff(void)
{
const char dump_file[] = "error.inp";
FileTest set1("multi_punch_1.sel");
CPPUNIT_ASSERT( set1.RemoveExisting() );
if (::FileExists("multi_punch_1.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_1.sel"));
}
if (::FileExists("multi_punch_2.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_2.sel"));
}
if (::FileExists("multi_punch_3.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_3.sel"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_1.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_2.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_3.sel") );
FileTest set2("multi_punch_2.sel");
CPPUNIT_ASSERT( set2.RemoveExisting() );
FileTest set3("multi_punch_3.sel");
CPPUNIT_ASSERT( set3.RemoveExisting() );
IPhreeqc obj;
@ -3545,72 +3506,39 @@ void TestIPhreeqc::TestRunFileMultiPunchOff(void)
obj.SetDumpFileOn(false);
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch"));
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_1.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_2.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_3.sel") );
// CLEANUP
if (::FileExists("multi_punch_1.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_1.sel"));
}
if (::FileExists("multi_punch_2.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_2.sel"));
}
if (::FileExists("multi_punch_3.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_3.sel"));
}
CPPUNIT_ASSERT( set1.VerifyMissing() );
CPPUNIT_ASSERT( set2.VerifyMissing() );
CPPUNIT_ASSERT( set3.VerifyMissing() );
}
void TestIPhreeqc::TestRunFileMultiPunchSet(void)
{
if (::FileExists("multi_punch_1.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_1.sel"));
}
if (::FileExists("multi_punch_2.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_2.sel"));
}
if (::FileExists("multi_punch_3.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_3.sel"));
}
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_1.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_2.sel") );
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("multi_punch_3.sel") );
FileTest called("XXX.sel");
CPPUNIT_ASSERT( called.RemoveExisting() );
FileTest set1("multi_punch_1.sel");
CPPUNIT_ASSERT( set1.RemoveExisting() );
FileTest set2("multi_punch_2.sel");
CPPUNIT_ASSERT( set2.RemoveExisting() );
FileTest set3("multi_punch_3.sel");
CPPUNIT_ASSERT( set3.RemoveExisting() );
IPhreeqc obj;
CPPUNIT_ASSERT_EQUAL(0, obj.LoadDatabase("phreeqc.dat"));
obj.SetSelectedOutputFileOn(true);
obj.SetSelectedOutputFileName("XXX");
obj.SetSelectedOutputFileName(called.GetName().c_str());
CPPUNIT_ASSERT_EQUAL(0, obj.RunFile("multi_punch"));
CPPUNIT_ASSERT_EQUAL( false, ::FileExists("XXX") );
CPPUNIT_ASSERT_EQUAL( true, ::FileExists("multi_punch_1.sel") );
CPPUNIT_ASSERT_EQUAL( true, ::FileExists("multi_punch_2.sel") );
CPPUNIT_ASSERT_EQUAL( true, ::FileExists("multi_punch_3.sel") );
CPPUNIT_ASSERT( called.VerifyMissing() );
// CLEANUP
if (::FileExists("multi_punch_1.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_1.sel"));
}
if (::FileExists("multi_punch_2.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_2.sel"));
}
if (::FileExists("multi_punch_3.sel"))
{
CPPUNIT_ASSERT(::DeleteFile("multi_punch_3.sel"));
}
CPPUNIT_ASSERT( set1.VerifyExists() );
CPPUNIT_ASSERT( set2.VerifyExists() );
CPPUNIT_ASSERT( set3.VerifyExists() );
}
void TestIPhreeqc::TestRunFileMultiPunchNoSet(void)
{
IPhreeqc obj;

View File

@ -75,11 +75,11 @@ int main(int argc, char **argv)
s.startTimer();
#endif
// COMMENT: {8/16/2013 12:14:16 AM} runner.addTest(TestVar::suite());
// COMMENT: {8/16/2013 12:14:16 AM} runner.addTest(TestCVar::suite());
// COMMENT: {8/16/2013 12:14:16 AM} runner.addTest(TestSelectedOutput::suite());
runner.addTest(TestVar::suite());
runner.addTest(TestCVar::suite());
runner.addTest(TestSelectedOutput::suite());
runner.addTest(TestIPhreeqc::suite());
// COMMENT: {8/16/2013 12:14:19 AM} runner.addTest(TestIPhreeqcLib::suite());
runner.addTest(TestIPhreeqcLib::suite());
runner.setOutputter(CppUnit::CompilerOutputter::defaultOutputter(&runner.result(), std::cout));
@ -97,88 +97,3 @@ int main(int argc, char **argv)
return wasSucessful;
}
// COMMENT: {8/16/2013 11:40:58 PM}#if defined(_WIN32) || defined(__CYGWIN32__)
// COMMENT: {8/16/2013 11:40:58 PM}bool FileExists(const char *szPathName)
// COMMENT: {8/16/2013 11:40:58 PM}{
// COMMENT: {8/16/2013 11:40:58 PM} SECURITY_ATTRIBUTES sa;
// COMMENT: {8/16/2013 11:40:58 PM} sa.nLength = sizeof(SECURITY_ATTRIBUTES);
// COMMENT: {8/16/2013 11:40:58 PM} sa.lpSecurityDescriptor = NULL;
// COMMENT: {8/16/2013 11:40:58 PM} sa.bInheritHandle = TRUE;
// COMMENT: {8/16/2013 11:40:58 PM} HANDLE fileHandle = ::CreateFile(szPathName, GENERIC_READ, 0, &sa, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
// COMMENT: {8/16/2013 11:40:58 PM}
// COMMENT: {8/16/2013 11:40:58 PM} bool retValue;
// COMMENT: {8/16/2013 11:40:58 PM} if (fileHandle == INVALID_HANDLE_VALUE)
// COMMENT: {8/16/2013 11:40:58 PM} {
// COMMENT: {8/16/2013 11:40:58 PM} char buffer[100];
// COMMENT: {8/16/2013 11:40:58 PM} sprintf(buffer, "Could not open file (error %d)\n", GetLastError());
// COMMENT: {8/16/2013 11:40:58 PM} retValue = false;
// COMMENT: {8/16/2013 11:40:58 PM} }
// COMMENT: {8/16/2013 11:40:58 PM} else
// COMMENT: {8/16/2013 11:40:58 PM} {
// COMMENT: {8/16/2013 11:40:58 PM} retValue = true;
// COMMENT: {8/16/2013 11:40:58 PM} ::CloseHandle(fileHandle);
// COMMENT: {8/16/2013 11:40:58 PM} }
// COMMENT: {8/16/2013 11:40:58 PM} return retValue;
// COMMENT: {8/16/2013 11:40:58 PM}}
// COMMENT: {8/16/2013 11:40:58 PM}#else
// COMMENT: {8/16/2013 11:40:58 PM}bool FileExists(const char *szPathName)
// COMMENT: {8/16/2013 11:40:58 PM}{
// COMMENT: {8/16/2013 11:40:58 PM} FILE* fp;
// COMMENT: {8/16/2013 11:40:58 PM} fp = fopen(szPathName, "r");
// COMMENT: {8/16/2013 11:40:58 PM} if (fp == NULL) {
// COMMENT: {8/16/2013 11:40:58 PM} return false;
// COMMENT: {8/16/2013 11:40:58 PM} } else {
// COMMENT: {8/16/2013 11:40:58 PM} fclose(fp);
// COMMENT: {8/16/2013 11:40:58 PM} return true;
// COMMENT: {8/16/2013 11:40:58 PM} }
// COMMENT: {8/16/2013 11:40:58 PM}}
// COMMENT: {8/16/2013 11:40:58 PM}#endif
// COMMENT: {8/16/2013 11:40:25 PM}#if defined(_WIN32) || defined(__CYGWIN32__)
// COMMENT: {8/16/2013 11:40:25 PM}// DeleteFile defined in <windows.h>
// COMMENT: {8/16/2013 11:40:25 PM}#else
// COMMENT: {8/16/2013 11:40:25 PM}int DeleteFile(const char* szPathName)
// COMMENT: {8/16/2013 11:40:25 PM}{
// COMMENT: {8/16/2013 11:40:25 PM} if (remove(szPathName) == 0)
// COMMENT: {8/16/2013 11:40:25 PM} {
// COMMENT: {8/16/2013 11:40:25 PM} return 1;
// COMMENT: {8/16/2013 11:40:25 PM} }
// COMMENT: {8/16/2013 11:40:25 PM} return 0; // failure
// COMMENT: {8/16/2013 11:40:25 PM}}
// COMMENT: {8/16/2013 11:40:25 PM}#endif
// COMMENT: {8/16/2013 11:42:03 PM}#if defined(_WIN32) || defined(__CYGWIN32__)
// COMMENT: {8/16/2013 11:42:03 PM}size_t FileSize(const char *szPathName)
// COMMENT: {8/16/2013 11:42:03 PM}{
// COMMENT: {8/16/2013 11:42:03 PM} HANDLE hFile = ::CreateFile(
// COMMENT: {8/16/2013 11:42:03 PM} szPathName, // file to open
// COMMENT: {8/16/2013 11:42:03 PM} GENERIC_READ, // open for reading
// COMMENT: {8/16/2013 11:42:03 PM} FILE_SHARE_READ, // share for reading
// COMMENT: {8/16/2013 11:42:03 PM} NULL, // default security
// COMMENT: {8/16/2013 11:42:03 PM} OPEN_EXISTING, // existing file only
// COMMENT: {8/16/2013 11:42:03 PM} FILE_ATTRIBUTE_NORMAL, // normal file
// COMMENT: {8/16/2013 11:42:03 PM} NULL); // no attr. template
// COMMENT: {8/16/2013 11:42:03 PM}
// COMMENT: {8/16/2013 11:42:03 PM} if (hFile != INVALID_HANDLE_VALUE)
// COMMENT: {8/16/2013 11:42:03 PM} {
// COMMENT: {8/16/2013 11:42:03 PM} // read file size
// COMMENT: {8/16/2013 11:42:03 PM} LARGE_INTEGER liFileSize;
// COMMENT: {8/16/2013 11:42:03 PM} ::GetFileSizeEx(hFile, &liFileSize);
// COMMENT: {8/16/2013 11:42:03 PM} ::CloseHandle(hFile);
// COMMENT: {8/16/2013 11:42:03 PM} return (size_t) liFileSize.QuadPart;
// COMMENT: {8/16/2013 11:42:03 PM} }
// COMMENT: {8/16/2013 11:42:03 PM} return 0;
// COMMENT: {8/16/2013 11:42:03 PM}}
// COMMENT: {8/16/2013 11:42:03 PM}#else
// COMMENT: {8/16/2013 11:42:03 PM}#include <sys/types.h>
// COMMENT: {8/16/2013 11:42:03 PM}#include <sys/stat.h>
// COMMENT: {8/16/2013 11:42:03 PM}#include <unistd.h>
// COMMENT: {8/16/2013 11:42:03 PM}
// COMMENT: {8/16/2013 11:42:03 PM}size_t FileSize(const char *szPathName)
// COMMENT: {8/16/2013 11:42:03 PM}{
// COMMENT: {8/16/2013 11:42:03 PM} struct stat s;
// COMMENT: {8/16/2013 11:42:03 PM} stat(szPathName, &s);
// COMMENT: {8/16/2013 11:42:03 PM} return (size_t) s.st_size;
// COMMENT: {8/16/2013 11:42:03 PM}}
// COMMENT: {8/16/2013 11:42:03 PM}