| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "BsMonoField.h"
- #include "BsMonoClass.h"
- using namespace CamelotFramework;
- namespace BansheeEngine
- {
- MonoField::MonoField(MonoClassField* field)
- :mField(field)
- {
- }
- void* MonoField::getValue(MonoObject* instance)
- {
- void* value = nullptr;
- mono_field_get_value(instance, mField, &value);
- return value;
- }
- void MonoField::setValue(MonoObject* instance, void* value)
- {
- mono_field_set_value(instance, mField, &value);
- }
- bool MonoField::hasAttribute(MonoClass* monoClass)
- {
- // TODO - Consider caching custom attributes or just initializing them all at load
- ::MonoClass* parentClass = mono_field_get_parent(mField);
- MonoCustomAttrInfo* attrInfo = mono_custom_attrs_from_field(parentClass, mField);
- bool hasAttr = mono_custom_attrs_has_attr(attrInfo, monoClass->_getInternalClass()) != 0;
- mono_custom_attrs_free(attrInfo);
- return hasAttr;
- }
- MonoObject* MonoField::getAttribute(MonoClass* monoClass)
- {
- // TODO - Consider caching custom attributes or just initializing them all at load
- ::MonoClass* parentClass = mono_field_get_parent(mField);
- MonoCustomAttrInfo* attrInfo = mono_custom_attrs_from_field(parentClass, mField);
- MonoObject* foundAttr = mono_custom_attrs_get_attr(attrInfo, monoClass->_getInternalClass());
- mono_custom_attrs_free(attrInfo);
- return foundAttr;
- }
- }
|