Server 0.0.1
HTTP/REST server implementation

src/class/interface/i_class.c File Reference

#include <stdarg.h>
#include <stdlib.h>
#include <assert.h>
#include "class/class.h"
#include "class/interface/class.h"
Include dependency graph for i_class.c:

Go to the source code of this file.

Functions

void * classNew (class_ptr class,...)
void classDelete (void **object)
void * classClone (void *_object)

Detailed Description

Author:
Georg Hopp

Copyright © 2012 Georg Hopp

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Definition in file i_class.c.


Function Documentation

void* classClone ( void *  _object)

Definition at line 69 of file i_class.c.

{
        class_ptr class  = GET_CLASS(_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;
}
void classDelete ( void **  object)

Definition at line 58 of file i_class.c.

{
        if (NULL != *object) {
                CALL(*object, Class, dtor);

                free(*object - sizeof(void*));
                *object = NULL;
        }
}

Here is the caller graph for this function:

void* classNew ( class_ptr  class,
  ... 
)

Definition at line 37 of file i_class.c.

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

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

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

        if (-1 == ret) {
                classDelete(&object);
        }

        return object;
}

Here is the call graph for this function:

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines