/*
 *  ratlib.h
 *  RatLib
 *
 *  Created by Curtis Jones on 2009.11.13.
 *  Copyright 2009 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef __RATLIB_H__
#define __RATLIB_H__

#include "ratlibimage.h"
#include "ratlibpoint.h"
#include "ratlibsession.h"
#include "opool.h"

//
// ratlibpools
//
struct ratlibpools
{
	opool_t ratlibimage;							// ratlibimage_t
	opool_t ratlibpoint;							// ratlibpoint_t
	opool_t ratlibsession;						// ratlibsession_t
	opool_t slist_item;								// slist_item_t
};
typedef struct ratlibpools ratlibpools_t;

//
// ratlib
//
struct ratlib
{
	ratlibpools_t pools;							// core pools
};
typedef struct ratlib ratlib_t;

/**
 *
 */
int ratlib_init ();

/**
 *
 */
int ratlib_destroy ();

/**
 *
 */
ratlibpools_t* ratlib_pools ();

/**
 *
 */
ratlibsession_t* ratlib_session (ratlibimage_t*);

/**
 * x (horizontal), y (vertical)
 */
ratlibpoint_t* ratlib_point (uint32_t, uint32_t);

/**
 * data, options, bytes per pixel, width, height
 */
ratlibimage_t* ratlib_image (const uint8_t*, uint32_t, uint32_t, uint32_t, uint32_t);

/**
 *
 */
void ratlib_memstats ();

/**
 *
 */
void ratlib_memstats_pool (opool_t*);

#endif /* __RATLIB_H__ */
