obj.c File Reference

Commotion object model. More...

#include <stdlib.h>
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
#include "debug.h"
#include "obj.h"
#include "list.h"
#include "tree.h"
#include "extern/halloc.h"

Macros

#define _DEFINE_BIN(L)
 
#define _DEFINE_STR(L)
 
#define _DEFINE_INTEGER(T, L)
 

Functions

 _DEFINE_BIN (8)
 
 _DEFINE_BIN (16)
 
 _DEFINE_BIN (32)
 
 _DEFINE_STR (8)
 
 _DEFINE_STR (16)
 
 _DEFINE_STR (32)
 
 _DEFINE_INTEGER (int, 8)
 
 _DEFINE_INTEGER (int, 16)
 
 _DEFINE_INTEGER (int, 32)
 
 _DEFINE_INTEGER (int, 64)
 
 _DEFINE_INTEGER (uint, 8)
 
 _DEFINE_INTEGER (uint, 16)
 
 _DEFINE_INTEGER (uint, 32)
 
 _DEFINE_INTEGER (uint, 64)
 
int co_nil_alloc (co_obj_t *output, const uint8_t flags)
 
co_obj_tco_nil_create (const uint8_t flags)
 
int co_bool_alloc (co_obj_t *output, const bool input, const uint8_t flags)
 
co_obj_tco_bool_create (const bool input, const uint8_t flags)
 
int co_fixint_alloc (co_obj_t *output, const int input, const uint8_t flags)
 
co_obj_tco_fixint_create (const int input, const uint8_t flags)
 
int co_float32_alloc (co_obj_t *output, const float input, const uint8_t flags)
 
co_obj_tco_float32_create (const double input, const uint8_t flags)
 
int co_float64_alloc (co_obj_t *output, const double input, const uint8_t flags)
 
co_obj_tco_float64_create (const double input, const uint8_t flags)
 
void co_obj_free (co_obj_t *object)
 
size_t co_obj_raw (char **data, const co_obj_t *object)
 
size_t co_obj_data (char **data, const co_obj_t *object)
 
size_t co_obj_import (co_obj_t **output, const char *input, const size_t in_size, const uint8_t flags)
 
int co_obj_getflags (const co_obj_t *object)
 
void co_obj_setflags (co_obj_t *object, const int flags)
 
int co_str_copy (co_obj_t *dst, const co_obj_t *src, const size_t size)
 
int co_str_cat (co_obj_t *dst, const co_obj_t *src, const size_t size)
 
int co_str_cmp (const co_obj_t *a, const co_obj_t *b)
 

Detailed Description

Commotion object model.

Author
Josh King (jheretic), jking.nosp@m.@cha.nosp@m.mbana.nosp@m..net

Macro Definition Documentation

#define _DEFINE_INTEGER (   T,
 
)
Value:
int co_##T##L##_alloc(co_obj_t *output, \
const T##L##_t input, const uint8_t flags) \
{ \
output->_type = _##T##L; \
output->_flags = flags; \
output->_ref = 0; \
(((co_##T##L##_t *)output)->data) = (uint32_t)input; \
return 1; \
} \
co_obj_t *co_##T##L##_create(\
const T##L##_t input, const uint8_t flags) \
{ \
int output_size = sizeof(T##L##_t) + sizeof(co_obj_t); \
co_obj_t *output = h_calloc(1, output_size); \
CHECK_MEM(output); \
CHECK(co_##T##L##_alloc(output, input, flags), \
"Failed to allocate object."); \
return output; \
error: \
return NULL; \
}
Definition: obj.h:131