request.c 871 Bytes
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif

#include <stdlib.h>
#include <stdarg.h>
#include <search.h>

#include "class.h"
#include "interface/class.h"

#include "http/request.h"


static
inline
void
_free(void ** data)
{
	if (NULL != *data) {
		free(*data);
	}
}

static
inline
void
tDelete(void * node)
{
	delete(&node);
}

static
void
ctor(void * _this, va_list * params) {}

static
void
dtor(void * _this)
{
	HttpRequest this = _this;

	_free((void **)&(this->version));
	_free((void **)&(this->uri));
	_free((void **)&(this->method));

	/**
	 * this is a GNU extension...anyway on most non
	 * GNUish systems i would not use tsearch anyway
	 * as the trees will be unbalanced.
	 */
	tdestroy(this->header, tDelete);

	_free((void **)&(this->body));
} 

INIT_IFACE(Class, ctor, dtor, NULL);
CREATE_CLASS(HttpRequest, NULL, IFACE(Class));

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