server 0.0.1
basicserverinfrastructure

include/interface/class.h File Reference

#include <stdarg.h>
#include "class.h"
#include "interface.h"
Include dependency graph for class.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  i_Class

Defines

#define new(class,...)   classNew(_##class, ##__VA_ARGS__)
#define delete(object)   classDelete((void **)(object))
#define clone(object)   classClone((void *)(object))

Typedefs

typedef void(* fptr_ctor )(void *, va_list *)
typedef void(* fptr_dtor )(void *)
typedef void(* fptr_clone )(void *, void *const)

Functions

void * classNew (class_ptr,...)
void classDelete (void **)
void * classClone (void *)

Define Documentation

#define clone (   object)    classClone((void *)(object))

Definition at line 28 of file class.h.

#define delete (   object)    classDelete((void **)(object))

Definition at line 27 of file class.h.

#define new (   class,
  ... 
)    classNew(_##class, ##__VA_ARGS__)

Definition at line 26 of file class.h.


Typedef Documentation

typedef void(* fptr_clone)(void *, void *const)

Definition at line 11 of file class.h.

typedef void(* fptr_ctor)(void *, va_list *)

Definition at line 9 of file class.h.

typedef void(* fptr_dtor)(void *)

Definition at line 10 of file class.h.


Function Documentation

void* classClone ( void *  )

Definition at line 42 of file class.c.

{
        class_ptr class  = class_getClass(_object);
        void *    object = calloc(1, class->object_size + sizeof(void*));

        * (class_ptr *)object = class;
        object += sizeof(void*);

#undef clone
        CALL(object, Class, clone, _object);

        return object;
}

Here is the call graph for this function:

void classDelete ( void **  )

Definition at line 33 of file class.c.

{
        CALL(*object, Class, dtor);

        free(*object - sizeof(void*));
        *object = NULL;
}
void* classNew ( class_ptr  ,
  ... 
)

Definition at line 15 of file class.c.

{
        void * object = calloc(1, class->object_size + sizeof(void*));
        va_list params;

        if (class->init)        class->init();

        * (class_ptr *)object = class;
        object += sizeof(void*);

        va_start(params, class);
        CALL(object, Class, ctor, &params);
        va_end(params);

        return object;
}
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines