|
IPhreeqc 2.18
|
00001 00004 // Var.h 00005 00006 #ifndef __VAR_H_INC 00007 #define __VAR_H_INC 00008 00009 #if defined(_WINDLL) 00010 #define IPQ_DLL_EXPORT __declspec(dllexport) 00011 #else 00012 #define IPQ_DLL_EXPORT 00013 #endif 00014 00017 typedef enum { 00018 TT_EMPTY = 0, 00019 TT_ERROR = 1, 00020 TT_LONG = 2, 00021 TT_DOUBLE = 3, 00022 TT_STRING = 4 00023 } VAR_TYPE; 00024 00027 typedef enum { 00028 VR_OK = 0, 00029 VR_OUTOFMEMORY = -1, 00030 VR_BADVARTYPE = -2, 00031 VR_INVALIDARG = -3, 00032 VR_INVALIDROW = -4, 00033 VR_INVALIDCOL = -5 00034 } VRESULT; 00035 00038 typedef struct { 00039 VAR_TYPE type; 00040 union { 00041 long lVal; 00042 double dVal; 00043 char* sVal; 00044 VRESULT vresult; 00045 }; 00046 } VAR; 00047 00048 00049 #if defined(__cplusplus) 00050 extern "C" { 00051 #endif 00052 00057 IPQ_DLL_EXPORT char* VarAllocString(const char* pSrc); 00058 00064 IPQ_DLL_EXPORT VRESULT VarClear(VAR* pvar); 00065 00074 IPQ_DLL_EXPORT VRESULT VarCopy(VAR* pvarDest, const VAR* pvarSrc); 00075 00079 IPQ_DLL_EXPORT void VarFreeString(char* pSrc); 00080 00084 IPQ_DLL_EXPORT void VarInit(VAR* pvar); 00085 00086 #if defined(__cplusplus) 00087 } 00088 #endif 00089 00090 #if defined(__cplusplus) 00091 00092 #include <ostream> // std::ostream 00093 00094 inline std::ostream& operator<< (std::ostream &os, const VAR_TYPE& vt) 00095 { 00096 switch(vt) 00097 { 00098 case TT_EMPTY: 00099 os << "TT_EMPTY"; 00100 break; 00101 case TT_ERROR: 00102 os << "TT_ERROR"; 00103 break; 00104 case TT_LONG: 00105 os << "TT_LONG"; 00106 break; 00107 case TT_DOUBLE: 00108 os << "TT_DOUBLE"; 00109 break; 00110 case TT_STRING: 00111 os << "TT_STRING"; 00112 break; 00113 default: 00114 os << (int)vt; 00115 break; 00116 } 00117 return os; 00118 } 00119 00120 inline std::ostream& operator<< (std::ostream &os, const VRESULT& vr) 00121 { 00122 switch(vr) 00123 { 00124 case VR_OK: 00125 os << "VR_OK"; 00126 break; 00127 case VR_OUTOFMEMORY: 00128 os << "VR_OUTOFMEMORY"; 00129 break; 00130 case VR_BADVARTYPE: 00131 os << "VR_BADVARTYPE"; 00132 break; 00133 case VR_INVALIDARG: 00134 os << "VR_INVALIDARG"; 00135 break; 00136 case VR_INVALIDROW: 00137 os << "VR_INVALIDROW"; 00138 break; 00139 case VR_INVALIDCOL: 00140 os << "VR_INVALIDCOL"; 00141 break; 00142 default: 00143 os << (int)vr; 00144 break; 00145 } 00146 return os; 00147 } 00148 #endif /* __cplusplus */ 00149 00150 #endif /* __VAR_H_INC */
1.7.3