Lines Matching refs:value

21 #include "value.h"
34 POD GetPODValue(Value value) {
35 return value.type == TYPEID ? *reinterpret_cast<POD*>(value.value) : POD();
39 PTR GetPtrValue(Value value) {
40 return value.type == TYPEID ? reinterpret_cast<PTR>(value.value) : NULL;
44 Value MakePODValue(POD value) {
47 result.value = malloc(sizeof(POD));
49 *reinterpret_cast<POD*>(result.value) = value;
57 result.value = malloc(sizeof(BASE) * count);
58 memcpy(result.value, values, sizeof(BASE) * count);
64 int SetPODValue(Value* value, POD new_value) {
65 if (value->type == NULL_VALUE_TYPE) {
66 value->type = TYPEID;
67 value->value = malloc(sizeof(POD));
68 value->count = 1;
70 if (value->type == TYPEID) {
71 *reinterpret_cast<POD*>(value->value) = new_value;
78 int SetPtrValue(Value* value, const BASE* new_values, int count) {
79 if (value->type == NULL_VALUE_TYPE) {
80 value->type = TYPEID;
81 value->value = malloc(sizeof(BASE) * count);
82 value->count = count;
84 if (value->type == TYPEID && value->count == count) {
85 memcpy(value->value, new_values, sizeof(BASE) * count);
92 int GetIntValue(Value value) {
93 return GetPODValue<int, INT_VALUE_TYPE>(value);
96 float GetFloatValue(Value value) {
97 return GetPODValue<float, FLOAT_VALUE_TYPE>(value);
100 const char* GetStringValue(Value value) {
101 return GetPtrValue<const char*, STRING_VALUE_TYPE>(value);
104 const char* GetBufferValue(Value value) {
105 return (value.type == BUFFER_VALUE_TYPE || value.type == MUTABLE_BUFFER_VALUE_TYPE)
106 ? (const char*)value.value
110 char* GetMutableBufferValue(Value value) {
111 return GetPtrValue<char*, MUTABLE_BUFFER_VALUE_TYPE>(value);
114 int* GetIntArrayValue(Value value) {
115 return GetPtrValue<int*, INT_ARRAY_VALUE_TYPE>(value);
118 float* GetFloatArrayValue(Value value) {
119 return GetPtrValue<float*, FLOAT_ARRAY_VALUE_TYPE>(value);
122 int ValueIsNull(Value value) {
123 return value.type == NULL_VALUE_TYPE;
126 int ValueIsInt(Value value) {
127 return value.type == INT_VALUE_TYPE;
130 int ValueIsFloat(Value value) {
131 return value.type == FLOAT_VALUE_TYPE;
134 int ValueIsString(Value value) {
135 return value.type == STRING_VALUE_TYPE;
138 int ValueIsBuffer(Value value) {
139 return value.type == BUFFER_VALUE_TYPE || value.type == MUTABLE_BUFFER_VALUE_TYPE;
142 int ValueIsIntArray(Value value) {
143 return value.type == INT_ARRAY_VALUE_TYPE;
146 int ValueIsFloatArray(Value value) {
147 return value.type == FLOAT_ARRAY_VALUE_TYPE;
153 result.value = NULL;
158 Value MakeIntValue(int value) {
159 return MakePODValue<int, INT_VALUE_TYPE>(value);
162 Value MakeFloatValue(float value) {
163 return MakePODValue<float, FLOAT_VALUE_TYPE>(value);
166 Value MakeStringValue(const char* value) {
167 return MakePtrValue<char, STRING_VALUE_TYPE>(value, strlen(value) + 1);
177 result.value = (void*)buffer;
189 result.value = (void*)buffer;
202 int SetIntValue(Value* value, int new_value) {
203 return SetPODValue<int, INT_VALUE_TYPE>(value, new_value);
206 int SetFloatValue(Value* value, float new_value) {
207 return SetPODValue<float, FLOAT_VALUE_TYPE>(value, new_value);
210 int SetStringValue(Value* value, const char* new_value) {
211 return SetPtrValue<char, STRING_VALUE_TYPE>(value, new_value, strlen(new_value) + 1);
214 int SetMutableBufferValue(Value* value, const char* new_data, int size) {
215 return SetPtrValue<char, MUTABLE_BUFFER_VALUE_TYPE>(value, new_data, size);
218 int SetIntArrayValue(Value* value, const int* new_values, int count) {
219 return SetPtrValue<int, INT_ARRAY_VALUE_TYPE>(value, new_values, count);
222 int SetFloatArrayValue(Value* value, const float* new_values, int count) {
223 return SetPtrValue<float, FLOAT_ARRAY_VALUE_TYPE>(value, new_values, count);
226 int GetValueCount(Value value) {
227 return value.count;
230 void ReleaseValue(Value* value) {
231 if (value && value->value) {
232 free(value->value);
233 value->value = NULL;
234 value->type = NULL_VALUE_TYPE;