bigpoint_dyntype.c 1.18 KB
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <json/json.h>

#include "bigpoint_dyntype.h"


static
void
__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);
}

static
void
__destruct(struct BIGPOINT_DYNTYPE * _this)
{
    if (_this && _this->data) {
        free(_this->data);
    }
}

static
struct json_object *
__toJson(struct BIGPOINT_DYNTYPE * _this)
{
    struct json_object * json = NULL;

    /**
     * @TODO: make a smart implementation here base on the type of the
     * actual object.
     */
    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,
    (dtor)__destruct,
    __toJson
};

const struct BIGPOINT_CCLASS * const BIGPOINT_DYNTYPE = &_bigpoint_dyntype;

// vim: set et ts=4 sw=4: