#pragma once

struct Il2CppGenericClass;
struct Il2CppGenericMethod;

namespace il2cpp
{
namespace vm
{

void MetadataAllocInitialize ();
void MetadataAllocCleanup ();
// These allocators assume the g_MetadataLock lock is held
void* MetadataMalloc (size_t size);
void* MetadataCalloc (size_t count, size_t size);
// These metadata structures have their own locks, since they do lightweight initialization
Il2CppGenericClass* MetadataAllocGenericClass ();
Il2CppGenericMethod* MetadataAllocGenericMethod ();

} // namespace vm
} // namespace il2cpp
