From f8f24e1c78e45369a5841268b60874d53accaa03 Mon Sep 17 00:00:00 2001 From: Scott R Charlton Date: Thu, 20 May 2010 18:49:08 +0000 Subject: [PATCH] Added AddWarning AddError C/Fortran methods git-svn-id: svn://136.177.114.72/svn_GW/IPhreeqc/trunk@4439 1feff8c3-07ed-0310-ac33-dd36852eb9cd --- IPhreeqcF.f | 18 +++++++++++++++++- IPhreeqcLib.cpp | 11 ++++++++++- fwrap.cpp | 47 +++++++++++++++++++++++++++++++++++++++++++---- fwrap.h | 4 ++++ fwrap2.cpp | 9 ++++++++- fwrap3.cpp | 9 ++++++++- 6 files changed, 90 insertions(+), 8 deletions(-) diff --git a/IPhreeqcF.f b/IPhreeqcF.f index aaa61f9a..42d5aed0 100644 --- a/IPhreeqcF.f +++ b/IPhreeqcF.f @@ -8,7 +8,23 @@ AccumulateLine = AccumulateLineF(ID,LINE) END FUNCTION AccumulateLine !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -! AddError + FUNCTION AddError(ID,ERROR_MSG) + IMPLICIT NONE + INTEGER(KIND=4) :: ID + CHARACTER(LEN=*) :: ERROR_MSG + INTEGER(KIND=4) :: AddError + INTEGER(KIND=4) :: AddErrorF + AddError = AddErrorF(ID,LINE) + END FUNCTION AddError +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + FUNCTION AddWarning(ID,WARN_MSG) + IMPLICIT NONE + INTEGER(KIND=4) :: ID + CHARACTER(LEN=*) :: WARN_MSG + INTEGER(KIND=4) :: AddWarning + INTEGER(KIND=4) :: AddWarningF + AddWarning = AddWarningF(ID,WARN_MSG) + END FUNCTION AddWarning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! FUNCTION ClearAccumulatedLines(ID) IMPLICIT NONE diff --git a/IPhreeqcLib.cpp b/IPhreeqcLib.cpp index 790964cc..d892bdd6 100644 --- a/IPhreeqcLib.cpp +++ b/IPhreeqcLib.cpp @@ -47,7 +47,16 @@ AddError(int id, const char* error_msg) return IPQ_BADINSTANCE; } -// TODO AddWarning +int +AddWarning(int id, const char* warn_msg) +{ + IPhreeqc* IPhreeqcPtr = IPhreeqcLib::GetInstance(id); + if (IPhreeqcPtr) + { + return (int)IPhreeqcPtr->AddWarning(warn_msg); + } + return IPQ_BADINSTANCE; +} IPQ_RESULT ClearAccumulatedLines(int id) diff --git a/fwrap.cpp b/fwrap.cpp index 15844d5c..e11dee24 100644 --- a/fwrap.cpp +++ b/fwrap.cpp @@ -54,9 +54,41 @@ AccumulateLineF(int *id, char *line, unsigned int line_length) return n; } -/* -AddErrorF -*/ +int +AddErrorF(int *id, char *error_msg, unsigned int len) +{ + int n; + char* cmsg; + + cmsg = f2cstring(error_msg, len); + if (!cmsg) + { + ::AddError(*id, "AddError: Out of memory.\n"); + return IPQ_OUTOFMEMORY; + } + + n = ::AddError(*id, cmsg); + free(cmsg); + return n; +} + +int +AddWarningF(int *id, char *warn_msg, unsigned int len) +{ + int n; + char* cmsg; + + cmsg = f2cstring(warn_msg, len); + if (!cmsg) + { + ::AddError(*id, "AddWarning: Out of memory.\n"); + return IPQ_OUTOFMEMORY; + } + + n = ::AddWarning(*id, cmsg); + free(cmsg); + return n; +} IPQ_RESULT ClearAccumulatedLinesF(int *id) @@ -379,7 +411,14 @@ IPQ_DLL_EXPORT int __stdcall ACCUMULATELINE(int *id, char *line, unsigned int l { return AccumulateLineF(id, line, len); } -// AddError +IPQ_DLL_EXPORT int __stdcall ADDERROR(int *id, char *error_msg, unsigned int len) +{ + return AddErrorF(id, error_msg, len); +} +IPQ_DLL_EXPORT int __stdcall ADDWARNING(int *id, char *warn_msg, unsigned int len) +{ + return AddWarningF(id, warn_msg, len); +} IPQ_DLL_EXPORT int __stdcall CLEARACCUMULATEDLINES(int *id) { return ClearAccumulatedLinesF(id); diff --git a/fwrap.h b/fwrap.h index 2f2ad23f..7ece9cd7 100644 --- a/fwrap.h +++ b/fwrap.h @@ -9,6 +9,8 @@ #if defined(FC_FUNC) #define AccumulateLineF FC_FUNC (accumulatelinef, ACCUMULATELINEF) +#define AddErrorF FC_FUNC (adderrorf, ADDERRORF) +#define AddWarningF FC_FUNC (addwarningf, ADDWARNINGF) #define ClearAccumulatedLinesF FC_FUNC (clearaccumulatedlinesf, CLEARACCUMULATEDLINESF) #define CreateIPhreeqcF FC_FUNC (createiphreeqcf, CREATEIPHREEQCF) #define DestroyIPhreeqcF FC_FUNC (destroyiphreeqcf, DESTROYIPHREEQCF) @@ -51,6 +53,8 @@ extern "C" { #endif IPQ_RESULT AccumulateLineF(int *id, char *line, unsigned int line_length); + int AddErrorF(int *id, char *error_msg, unsigned int len); + int AddWarningF(int *id, char *warn_msg, unsigned int len); IPQ_RESULT ClearAccumulatedLinesF(int *id); int CreateIPhreeqcF(void); int DestroyIPhreeqcF(int *id); diff --git a/fwrap2.cpp b/fwrap2.cpp index f3f6fe00..13ac5036 100644 --- a/fwrap2.cpp +++ b/fwrap2.cpp @@ -15,7 +15,14 @@ IPQ_DLL_EXPORT int ACCUMULATELINE(int *id, char *line, unsigned int len) { return AccumulateLineF(id, line, len); } -// AddError +IPQ_DLL_EXPORT int ADDERROR(int *id, char *error_msg, unsigned int len) +{ + return AddErrorF(id, error_msg, len); +} +IPQ_DLL_EXPORT int ADDWARNING(int *id, char *warn_msg, unsigned int len) +{ + return AddWarningF(id, warn_msg, len); +} IPQ_DLL_EXPORT int CLEARACCUMULATEDLINES(int *id) { return ClearAccumulatedLinesF(id); diff --git a/fwrap3.cpp b/fwrap3.cpp index 62b6ccfd..450cd33a 100644 --- a/fwrap3.cpp +++ b/fwrap3.cpp @@ -14,7 +14,14 @@ IPQ_DLL_EXPORT int accumulateline_(int *id, char *line, unsigned int len) { return AccumulateLineF(id, line, len); } -// AddError +IPQ_DLL_EXPORT int adderror(int *id, char *error_msg, unsigned int len) +{ + return AddErrorF(id, error_msg, len); +} +IPQ_DLL_EXPORT int addwarning(int *id, char *warn_msg, unsigned int len) +{ + return AddWarningF(id, warn_msg, len); +} IPQ_DLL_EXPORT int clearaccumulatedlines_(int *id) { return ClearAccumulatedLinesF(id);