#ifndef _RESOURCE_H_
#define _RESOURCE_H_

#include "brender/br_types.h"

void* ResToUser(resource_header* r);

resource_header* UserToRes(void* r);

void* BrResAllocate(void* vparent, br_size_t size, br_uint_8 res_class);

void BrResInternalFree(resource_header* res, br_boolean callback);

void BrResFree(void* vres);

void BrResAssert(void* vres);

void BrResFreeNoCallback(void* vres);

void* BrResAdd(void* vparent, void* vres);

void* BrResRemove(void* vres);

br_uint_8 BrResClass(void* vres);

br_boolean BrResIsChild(void* vparent, void* vchild);

br_uint_32 BrResSize(void* vres);

br_uint_32 ResSizeTotal(void* vres, br_uint_32* ptotal);

br_uint_32 BrResSizeTotal(void* vres);

br_uint_32 BrResChildEnum(void* vres, br_resenum_cbfn* callback, void* arg);

br_uint_32 BrResCheck(void* vres, int no_tag);

char* BrResStrDup(void* vparent, char* str);

void InternalResourceDump(resource_header* res, br_putline_cbfn* putline, void* arg, int level);

void BrResDump(void* vres, br_putline_cbfn* putline, void* arg);

char* BrResClassIdentifier(br_uint_8 res_class);

#endif
