|
|
|
@ -13,16 +13,40 @@ __construct(struct BIGPOINT_DYNTYPE * _this, va_list * params) |
|
|
|
_this->type = va_arg(* params, enum BIGPOINT_DYNTYPE_TYPES); |
|
|
|
_this->size = va_arg(* params, size_t); |
|
|
|
|
|
|
|
_this->data = calloc(_this->size, sizeof(char)); |
|
|
|
memcpy(_this->data, va_arg(* params, void *), _this->size); |
|
|
|
switch(_this->type) { |
|
|
|
case BIGPOINT_DYNTYPE_INT: |
|
|
|
(_this->data)._int = va_arg(* params, long); |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
(_this->data)._object = NULL; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static |
|
|
|
void |
|
|
|
__jsonConst(struct BIGPOINT_DYNTYPE * _this, struct json_object * json) |
|
|
|
{ |
|
|
|
switch (json_object_get_type(json)) { |
|
|
|
case json_type_int: |
|
|
|
_this->type = BIGPOINT_DYNTYPE_INT; |
|
|
|
_this->size = sizeof(long); |
|
|
|
(_this->data)._int = (long)json_object_get_int(json); |
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
_this->type = BIGPOINT_DYNTYPE_NULL; |
|
|
|
_this->size = 0; |
|
|
|
(_this->data)._object = NULL; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static |
|
|
|
void |
|
|
|
__destruct(struct BIGPOINT_DYNTYPE * _this) |
|
|
|
{ |
|
|
|
if (_this && _this->data) { |
|
|
|
free(_this->data); |
|
|
|
if (_this && BIGPOINT_DYNTYPE_OBJECT == _this->type && (_this->data)._object) { |
|
|
|
free((_this->data)._object); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -39,22 +63,13 @@ __toJson(struct BIGPOINT_DYNTYPE * _this) |
|
|
|
return json; |
|
|
|
} |
|
|
|
|
|
|
|
static |
|
|
|
void |
|
|
|
__jsonConst(struct BIGPOINT_DYNTYPE * _this, struct json_object * json) |
|
|
|
{ |
|
|
|
/** |
|
|
|
* @TODO: initialize by json.... |
|
|
|
*/ |
|
|
|
} |
|
|
|
|
|
|
|
static const |
|
|
|
struct BIGPOINT_CCLASS _bigpoint_dyntype = { |
|
|
|
sizeof(struct BIGPOINT_DYNTYPE), |
|
|
|
(ctor)__construct, |
|
|
|
__jsonConst, |
|
|
|
(jCtor)__jsonConst, |
|
|
|
(dtor)__destruct, |
|
|
|
__toJson |
|
|
|
(jTo)__toJson |
|
|
|
}; |
|
|
|
|
|
|
|
const struct BIGPOINT_CCLASS * const BIGPOINT_DYNTYPE = &_bigpoint_dyntype; |
|
|
|
|