37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "metadata/CustomAttributeDataReader.h"
|
|
#include "il2cpp-object-internals.h"
|
|
#include "vm-utils/VmThreadUtils.h"
|
|
|
|
namespace il2cpp
|
|
{
|
|
namespace metadata
|
|
{
|
|
class CustomAttributeCreator : public CustomAttributeReaderVisitor
|
|
{
|
|
private:
|
|
Il2CppObject* attr;
|
|
Il2CppException* exc;
|
|
|
|
public:
|
|
|
|
CustomAttributeCreator() : attr(NULL), exc(NULL)
|
|
{
|
|
// As currently implemented CustomAttributeCreator must be stack allocated
|
|
// It directly stores managed objects attr & exc so it must be either on the stack
|
|
// or in GC allocated memory
|
|
IL2CPP_ASSERT_STACK_PTR(this);
|
|
}
|
|
|
|
virtual void VisitCtor(const MethodInfo* ctor, CustomAttributeArgument args[], uint32_t argumentCount);
|
|
virtual void VisitField(const CustomAttributeFieldArgument& field, uint32_t index);
|
|
virtual void VisitProperty(const CustomAttributePropertyArgument& prop, uint32_t index);
|
|
|
|
Il2CppObject* GetAttribute(Il2CppException** exc);
|
|
|
|
private:
|
|
};
|
|
} /* namespace vm */
|
|
} /* namespace il2cpp */
|