// D import file generated from '../../../../libphobos/libdruntime/core/memory.d'
module core.memory;
private 
{
	extern (C) void gc_init();

	extern (C) void gc_term();

	extern (C) nothrow void gc_enable();

	extern (C) nothrow void gc_disable();

	extern (C) nothrow void gc_collect();

	extern (C) nothrow void gc_minimize();

	extern (C) pure nothrow uint gc_getAttr(void* p);

	extern (C) pure nothrow uint gc_setAttr(void* p, uint a);

	extern (C) pure nothrow uint gc_clrAttr(void* p, uint a);

	extern (C) pure nothrow void* gc_malloc(size_t sz, uint ba = 0);

	extern (C) pure nothrow void* gc_calloc(size_t sz, uint ba = 0);

	extern (C) pure nothrow BlkInfo_ gc_qalloc(size_t sz, uint ba = 0);

	extern (C) pure nothrow void* gc_realloc(void* p, size_t sz, uint ba = 0);

	extern (C) pure nothrow size_t gc_extend(void* p, size_t mx, size_t sz);

	extern (C) nothrow size_t gc_reserve(size_t sz);

	extern (C) pure nothrow void gc_free(void* p);

	extern (C) pure nothrow void* gc_addrOf(void* p);

	extern (C) pure nothrow size_t gc_sizeOf(void* p);

	struct BlkInfo_
	{
		void* base;
		size_t size;
		uint attr;
	}
	extern (C) pure nothrow BlkInfo_ gc_query(void* p);

	extern (C) nothrow void gc_addRoot(in void* p);

	extern (C) nothrow void gc_addRange(in void* p, size_t sz);

	extern (C) nothrow void gc_removeRoot(in void* p);

	extern (C) nothrow void gc_removeRange(in void* p);

}
struct GC
{
	@disable this();

	static nothrow void enable();

	static nothrow void disable();

	static nothrow void collect();

	static nothrow void minimize();

	enum BlkAttr : uint
	{
		NONE = 0,
		FINALIZE = 1,
		NO_SCAN = 2,
		NO_MOVE = 4,
		APPENDABLE = 8,
		NO_INTERIOR = 16,
	}
	alias BlkInfo_ BlkInfo;
	static nothrow uint getAttr(in void* p);

	static pure nothrow uint getAttr(void* p);

	static nothrow uint setAttr(in void* p, uint a);

	static pure nothrow uint setAttr(void* p, uint a);

	static nothrow uint clrAttr(in void* p, uint a);

	static pure nothrow uint clrAttr(void* p, uint a);

	static pure nothrow void* malloc(size_t sz, uint ba = 0);

	static pure nothrow BlkInfo qalloc(size_t sz, uint ba = 0);

	static pure nothrow void* calloc(size_t sz, uint ba = 0);

	static pure nothrow void* realloc(void* p, size_t sz, uint ba = 0);

	static pure nothrow size_t extend(void* p, size_t mx, size_t sz);

	static nothrow size_t reserve(size_t sz);

	static pure nothrow void free(void* p);

	static nothrow inout(void)* addrOf(inout(void)* p);

	static pure nothrow void* addrOf(void* p);

	static nothrow size_t sizeOf(in void* p);

	static pure nothrow size_t sizeOf(void* p);

	static nothrow BlkInfo query(in void* p);

	static pure nothrow BlkInfo query(void* p);

	static nothrow void addRoot(in void* p);

	static nothrow void removeRoot(in void* p);

	static nothrow void addRange(in void* p, size_t sz);

	static nothrow void removeRange(in void* p);

}
