mirror of
https://git.gfz-potsdam.de/naaice/iphreeqc.git
synced 2025-12-15 16:18:22 +01:00
81f180a0 Fixed bugs in inverse 6d575967 strcpy_safe and strcat_safe 6d98c4e1 trying different header files 72796f15 added <cstring> e8481607 warnings, strcat, strcpy 988bdee0 Try using goto(s) 9b10ce3f Try updated logical expression 812061be Turn off optimizing on k_temp git-subtree-dir: src git-subtree-split: 81f180a069285bcb4d180c860664b4b2a193854d
85 lines
1.4 KiB
C
85 lines
1.4 KiB
C
#include "Var.h"
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <assert.h>
|
|
|
|
// The VarInit function initializes the VAR
|
|
// by setting the type field to VT_EMPTY
|
|
//
|
|
void VarInit(VAR* pvar)
|
|
{
|
|
pvar->type = TT_EMPTY;
|
|
pvar->sVal = 0;
|
|
pvar->vresult = VR_OK;
|
|
}
|
|
|
|
VRESULT VarClear(VAR* pvar)
|
|
{
|
|
switch (pvar->type)
|
|
{
|
|
case TT_EMPTY:
|
|
break;
|
|
case TT_LONG:
|
|
break;
|
|
case TT_DOUBLE:
|
|
break;
|
|
case TT_STRING:
|
|
VarFreeString(pvar->sVal);
|
|
break;
|
|
case TT_ERROR:
|
|
break;
|
|
default:
|
|
assert(0);
|
|
return VR_BADVARTYPE;
|
|
}
|
|
VarInit(pvar);
|
|
return VR_OK;
|
|
}
|
|
|
|
VRESULT VarCopy(VAR* pvarDest, const VAR* pvarSrc)
|
|
{
|
|
VarClear(pvarDest);
|
|
|
|
pvarDest->type = pvarSrc->type;
|
|
switch (pvarSrc->type)
|
|
{
|
|
case TT_EMPTY:
|
|
break;
|
|
case TT_LONG:
|
|
pvarDest->lVal = pvarSrc->lVal;
|
|
break;
|
|
case TT_DOUBLE:
|
|
pvarDest->dVal = pvarSrc->dVal;
|
|
break;
|
|
case TT_STRING:
|
|
pvarDest->sVal = VarAllocString(pvarSrc->sVal);
|
|
if (pvarDest->sVal == NULL && pvarSrc->sVal != NULL) {
|
|
pvarDest->type = TT_ERROR;
|
|
pvarDest->vresult = VR_OUTOFMEMORY;
|
|
return pvarDest->vresult;
|
|
}
|
|
break;
|
|
case TT_ERROR:
|
|
pvarDest->vresult = pvarSrc->vresult;
|
|
break;
|
|
default:
|
|
assert(0);
|
|
return VR_BADVARTYPE;
|
|
}
|
|
return VR_OK;
|
|
}
|
|
|
|
char* VarAllocString(const char* pSrc)
|
|
{
|
|
char* psz;
|
|
if (!pSrc) return NULL;
|
|
psz = (char*) malloc(strlen(pSrc) + 1);
|
|
if(psz != NULL) strcpy(psz, pSrc);
|
|
return psz;
|
|
}
|
|
|
|
void VarFreeString(char* pSrc)
|
|
{
|
|
if (pSrc) free(pSrc);
|
|
}
|