// MemoryFactory.h : main header file for the MemoryFactory DLL
//

#ifndef RQMEMORYFACTORYINTERNAL_H
#define RQMEMORYFACTORYINTERNAL_H

#ifdef __cplusplus
extern "C" {
#endif

#ifdef STDCALL
#define CALL_CONV __stdcall
#else
#define CALL_CONV
#endif
	
#ifdef MEMORY_FACTORY_EXPORTS
	#define MEMORY_FACTORY_API __declspec(dllexport)
#else
	#define MEMORY_FACTORY_API __declspec(dllimport)
#endif
 


	typedef void * TPoolHandle ;

	MEMORY_FACTORY_API TPoolHandle CALL_CONV	MemoryFactory_AllocPool(unsigned long size) ;
	MEMORY_FACTORY_API void CALL_CONV			MemoryFactory_FreePool(TPoolHandle handle) ;
	MEMORY_FACTORY_API void CALL_CONV			MemoryFactory_GarbageCollectPools() ;
	MEMORY_FACTORY_API void CALL_CONV			MemoryFactory_FreePools(); 

	MEMORY_FACTORY_API void * CALL_CONV		MemoryFactory_AllocFromPool(TPoolHandle handle) ;
	MEMORY_FACTORY_API void CALL_CONV			MemoryFactory_FreeToPool(TPoolHandle handle, void *pMemory) ;
	MEMORY_FACTORY_API TPoolHandle CALL_CONV	MemoryFactory_FindPool(void *pMemory) ;

	MEMORY_FACTORY_API void * CALL_CONV		MemoryFactory_Alloc(unsigned long size) ;
	MEMORY_FACTORY_API void CALL_CONV			MemoryFactory_Free(void *pMemory) ;

	MEMORY_FACTORY_API void CALL_CONV			MemoryFactory_PurgeMemoryPool(TPoolHandle handle) ;

#ifdef __cplusplus
}
#endif


#endif