Lines Matching refs:value

20 #include "value.h"
33 POD GetPODValue(Value value) {
34 return value.type == TYPEID ? *reinterpret_cast<POD*>(value.value) : POD();
38 PTR GetPtrValue(Value value) {
39 return value.type == TYPEID ? reinterpret_cast<PTR>(value.value) : NULL;
43 Value MakePODValue(POD value) {
46 result.value = malloc(sizeof(POD));
48 *reinterpret_cast<POD*>(result.value) = value;
56 result.value = malloc(sizeof(BASE) * count);
57 memcpy(result.value, values, sizeof(BASE) * count);
63 int SetPODValue(Value* value, POD new_value) {
64 if (value->type == NULL_VALUE_TYPE) {
65 value->type = TYPEID;
66 value->value = malloc(sizeof(POD));
67 value->count = 1;
69 if (value->type == TYPEID) {
70 *reinterpret_cast<POD*>(value->value) = new_value;
77 int SetPtrValue(Value* value, const BASE* new_values, int count) {
78 if (value->type == NULL_VALUE_TYPE) {
79 value->type = TYPEID;
80 value->value = malloc(sizeof(BASE) * count);
81 value->count = count;
83 if (value->type == TYPEID && value->count == count) {
84 memcpy(value->value, new_values, sizeof(BASE) * count);
91 int GetIntValue(Value value) {
92 return GetPODValue<int, INT_VALUE_TYPE>(value);
95 float GetFloatValue(Value value) {
96 return GetPODValue<float, FLOAT_VALUE_TYPE>(value);
99 const char* GetStringValue(Value value) {
100 return GetPtrValue<const char*, STRING_VALUE_TYPE>(value);
103 const char* GetBufferValue(Value value) {
104 return (value.type == BUFFER_VALUE_TYPE || value.type == MUTABLE_BUFFER_VALUE_TYPE)
105 ? (const char*)value.value
109 char* GetMutableBufferValue(Value value) {
110 return GetPtrValue<char*, MUTABLE_BUFFER_VALUE_TYPE>(value);
113 int* GetIntArrayValue(Value value) {
114 return GetPtrValue<int*, INT_ARRAY_VALUE_TYPE>(value);
117 float* GetFloatArrayValue(Value value) {
118 return GetPtrValue<float*, FLOAT_ARRAY_VALUE_TYPE>(value);
121 int ValueIsNull(Value value) {
122 return value.type == NULL_VALUE_TYPE;
125 int ValueIsInt(Value value) {
126 return value.type == INT_VALUE_TYPE;
129 int ValueIsFloat(Value value) {
130 return value.type == FLOAT_VALUE_TYPE;
133 int ValueIsString(Value value) {
134 return value.type == STRING_VALUE_TYPE;
137 int ValueIsBuffer(Value value) {
138 return value.type == BUFFER_VALUE_TYPE || value.type == MUTABLE_BUFFER_VALUE_TYPE;
141 int ValueIsIntArray(Value value) {
142 return value.type == INT_ARRAY_VALUE_TYPE;
145 int ValueIsFloatArray(Value value) {
146 return value.type == FLOAT_ARRAY_VALUE_TYPE;
152 result.value = NULL;
157 Value MakeIntValue(int value) {
158 return MakePODValue<int, INT_VALUE_TYPE>(value);
161 Value MakeFloatValue(float value) {
162 return MakePODValue<float, FLOAT_VALUE_TYPE>(value);
165 Value MakeStringValue(const char* value) {
166 return MakePtrValue<char, STRING_VALUE_TYPE>(value, strlen(value) + 1);
176 result.value = (void*)buffer;
188 result.value = (void*)buffer;
201 int SetIntValue(Value* value, int new_value) {
202 return SetPODValue<int, INT_VALUE_TYPE>(value, new_value);
205 int SetFloatValue(Value* value, float new_value) {
206 return SetPODValue<float, FLOAT_VALUE_TYPE>(value, new_value);
209 int SetStringValue(Value* value, const char* new_value) {
210 return SetPtrValue<char, STRING_VALUE_TYPE>(value, new_value, strlen(new_value) + 1);
213 int SetMutableBufferValue(Value* value, const char* new_data, int size) {
214 return SetPtrValue<char, MUTABLE_BUFFER_VALUE_TYPE>(value, new_data, size);
217 int SetIntArrayValue(Value* value, const int* new_values, int count) {
218 return SetPtrValue<int, INT_ARRAY_VALUE_TYPE>(value, new_values, count);
221 int SetFloatArrayValue(Value* value, const float* new_values, int count) {
222 return SetPtrValue<float, FLOAT_ARRAY_VALUE_TYPE>(value, new_values, count);
225 int GetValueCount(Value value) {
226 return value.count;
229 void ReleaseValue(Value* value) {
230 if (value && value->value) {
231 free(value->value);
232 value->value = NULL;
233 value->type = NULL_VALUE_TYPE;