IPhreeqc
Var.h
Go to the documentation of this file.
1 
4 // Var.h
5 
6 #ifndef __VAR_H_INC
7 #define __VAR_H_INC
8 
9 #if defined(_WINDLL)
10 #define IPQ_DLL_EXPORT __declspec(dllexport)
11 #else
12 #define IPQ_DLL_EXPORT
13 #endif
14 
15 #if defined(R_SO) || defined(NO_NAMELESS_UNION)
16 #define VAR_UNION_NAME u
17 #else
18 #define VAR_UNION_NAME
19 #endif
20 
23 typedef enum {
24  TT_EMPTY = 0,
25  TT_ERROR = 1,
26  TT_LONG = 2,
27  TT_DOUBLE = 3,
28  TT_STRING = 4
29 } VAR_TYPE;
30 
33 typedef enum {
34  VR_OK = 0,
40 } VRESULT;
41 
44 typedef struct {
46  union {
47  long lVal;
48  double dVal;
49  char* sVal;
51  } VAR_UNION_NAME;
52 } VAR;
53 
54 
55 #if defined(__cplusplus)
56 extern "C" {
57 #endif
58 
63 IPQ_DLL_EXPORT char* VarAllocString(const char* pSrc);
64 
70 IPQ_DLL_EXPORT VRESULT VarClear(VAR* pvar);
71 
80 IPQ_DLL_EXPORT VRESULT VarCopy(VAR* pvarDest, const VAR* pvarSrc);
81 
85 IPQ_DLL_EXPORT void VarFreeString(char* pSrc);
86 
90 IPQ_DLL_EXPORT void VarInit(VAR* pvar);
91 
92 #if defined(__cplusplus)
93 }
94 #endif
95 
96 #if defined(__cplusplus)
97 
98 #include <ostream> // std::ostream
99 
100 inline std::ostream& operator<< (std::ostream &os, const VAR_TYPE& vt)
101 {
102  switch(vt)
103  {
104  case TT_EMPTY:
105  os << "TT_EMPTY";
106  break;
107  case TT_ERROR:
108  os << "TT_ERROR";
109  break;
110  case TT_LONG:
111  os << "TT_LONG";
112  break;
113  case TT_DOUBLE:
114  os << "TT_DOUBLE";
115  break;
116  case TT_STRING:
117  os << "TT_STRING";
118  break;
119  default:
120  os << (int)vt;
121  break;
122  }
123  return os;
124 }
125 
126 inline std::ostream& operator<< (std::ostream &os, const VRESULT& vr)
127 {
128  switch(vr)
129  {
130  case VR_OK:
131  os << "VR_OK";
132  break;
133  case VR_OUTOFMEMORY:
134  os << "VR_OUTOFMEMORY";
135  break;
136  case VR_BADVARTYPE:
137  os << "VR_BADVARTYPE";
138  break;
139  case VR_INVALIDARG:
140  os << "VR_INVALIDARG";
141  break;
142  case VR_INVALIDROW:
143  os << "VR_INVALIDROW";
144  break;
145  case VR_INVALIDCOL:
146  os << "VR_INVALIDCOL";
147  break;
148  default:
149  os << (int)vr;
150  break;
151  }
152  return os;
153 }
154 #endif /* __cplusplus */
155 
156 #endif /* __VAR_H_INC */
VAR_TYPE type
Definition: Var.h:45
double dVal
Definition: Var.h:48
Definition: Var.h:35
char * VarAllocString(const char *pSrc)
Definition: Var.h:36
void VarFreeString(char *pSrc)
VRESULT VarClear(VAR *pvar)
Definition: Var.h:26
Definition: Var.h:28
Definition: Var.h:39
Definition: Var.h:24
Datatype used to store SELECTED_OUTPUT values.
Definition: Var.h:44
VRESULT vresult
Definition: Var.h:50
Definition: Var.h:25
void VarInit(VAR *pvar)
char * sVal
Definition: Var.h:49
Definition: Var.h:34
Definition: Var.h:27
long lVal
Definition: Var.h:47
VAR_TYPE
Enumeration used to determine the type of data stored in a VAR.
Definition: Var.h:23
Definition: Var.h:37
VRESULT
Enumeration used to return error codes.
Definition: Var.h:33
Definition: Var.h:38
VRESULT VarCopy(VAR *pvarDest, const VAR *pvarSrc)