void MonoMethod::cacheSignature() const { MonoMethodSignature* methodSignature = mono_method_signature(mMethod); MonoType* returnType = mono_signature_get_return_type(methodSignature); if (returnType != nullptr) { ::MonoClass* returnClass = mono_class_from_mono_type(returnType); if (returnClass != nullptr) mCachedReturnType = MonoManager::instance().findClass(returnClass); } mCachedNumParameters = (UINT32)mono_signature_get_param_count(methodSignature); if (mCachedParameters != nullptr) { bs_free(mCachedParameters); mCachedParameters = nullptr; } if (mCachedNumParameters > 0) { mCachedParameters = (MonoClass**)bs_alloc(mCachedNumParameters * sizeof(MonoClass*)); void* iter = nullptr; for (UINT32 i = 0; i < mCachedNumParameters; i++) { MonoType* curParamType = mono_signature_get_params(methodSignature, &iter); ::MonoClass* rawClass = mono_class_from_mono_type(curParamType); mCachedParameters[i] = MonoManager::instance().findClass(rawClass); } } mIsStatic = !mono_signature_is_instance(methodSignature); mHasCachedSignature = true; }
GDMonoProperty::GDMonoProperty(MonoProperty *p_mono_property, GDMonoClass *p_owner) { owner = p_owner; mono_property = p_mono_property; name = mono_property_get_name(mono_property); MonoMethod *prop_method = mono_property_get_get_method(mono_property); if (prop_method) { MonoMethodSignature *getter_sig = mono_method_signature(prop_method); MonoType *ret_type = mono_signature_get_return_type(getter_sig); type.type_encoding = mono_type_get_type(ret_type); MonoClass *ret_type_class = mono_class_from_mono_type(ret_type); type.type_class = GDMono::get_singleton()->get_class(ret_type_class); } else { prop_method = mono_property_get_set_method(mono_property); MonoMethodSignature *setter_sig = mono_method_signature(prop_method); void *iter = NULL; MonoType *param_raw_type = mono_signature_get_params(setter_sig, &iter); type.type_encoding = mono_type_get_type(param_raw_type); MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type); type.type_class = GDMono::get_singleton()->get_class(param_type_class); } attrs_fetched = false; attributes = NULL; }
void GDMonoMethod::_update_signature(MonoMethodSignature *p_method_sig) { params_count = mono_signature_get_param_count(p_method_sig); MonoType *ret_type = mono_signature_get_return_type(p_method_sig); if (ret_type) { return_type.type_encoding = mono_type_get_type(ret_type); if (return_type.type_encoding != MONO_TYPE_VOID) { MonoClass *ret_type_class = mono_class_from_mono_type(ret_type); return_type.type_class = GDMono::get_singleton()->get_class(ret_type_class); } } void *iter = NULL; MonoType *param_raw_type; while ((param_raw_type = mono_signature_get_params(p_method_sig, &iter)) != NULL) { ManagedType param_type; param_type.type_encoding = mono_type_get_type(param_raw_type); MonoClass *param_type_class = mono_class_from_mono_type(param_raw_type); param_type.type_class = GDMono::get_singleton()->get_class(param_type_class); param_types.push_back(param_type); } }
static void add_types_from_signature (MonoMethodSignature *sig) { MonoClass *klass; int i; for (i = 0; i < sig->param_count; ++i) { klass = mono_class_from_mono_type (sig->params [i]); add_type (klass); } klass = mono_class_from_mono_type (sig->ret); add_type (klass); }
mscorlib::System::Boolean RSACryptoServiceProvider::VerifyHash(std::vector<mscorlib::System::Byte*> rgbHash, const char *str, std::vector<mscorlib::System::Byte*> rgbSignature) { MonoType *__parameter_types__[3]; void *__parameters__[3]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameter_types__[1] = Global::GetType("mscorlib", "System", "String"); __parameter_types__[2] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(rgbHash, typeid(mscorlib::System::Byte).name()); __parameters__[1] = mono_string_new(Global::GetDomain(), str); __parameters__[2] = Global::FromArray<mscorlib::System::Byte*>(rgbSignature, typeid(mscorlib::System::Byte).name()); MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Security.Cryptography", "RSACryptoServiceProvider", 0, NULL, "VerifyHash", __native_object__, 3, __parameter_types__, __parameters__, NULL); return *(mscorlib::System::Boolean*)mono_object_unbox(__result__); }
mscorlib::System::Boolean RSACryptoServiceProvider::VerifyData(std::vector<mscorlib::System::Byte*> buffer, mscorlib::System::Object halg, std::vector<mscorlib::System::Byte*> signature) { MonoType *__parameter_types__[3]; void *__parameters__[3]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameter_types__[1] = Global::GetType(typeid(halg).name()); __parameter_types__[2] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(buffer, typeid(mscorlib::System::Byte).name()); __parameters__[1] = (MonoObject*)halg; __parameters__[2] = Global::FromArray<mscorlib::System::Byte*>(signature, typeid(mscorlib::System::Byte).name()); MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Security.Cryptography", "RSACryptoServiceProvider", 0, NULL, "VerifyData", __native_object__, 3, __parameter_types__, __parameters__, NULL); return *(mscorlib::System::Boolean*)mono_object_unbox(__result__); }
MonoObject *create_managed_from(const Dictionary &p_from, GDMonoClass *p_class) { MonoObject *mono_object = mono_object_new(SCRIPTS_DOMAIN, p_class->get_mono_ptr()); ERR_FAIL_NULL_V(mono_object, NULL); // Search constructor that takes a pointer as parameter MonoMethod *m; void *iter = NULL; while ((m = mono_class_get_methods(p_class->get_mono_ptr(), &iter))) { if (strcmp(mono_method_get_name(m), ".ctor") == 0) { MonoMethodSignature *sig = mono_method_signature(m); void *front = NULL; if (mono_signature_get_param_count(sig) == 1 && mono_class_from_mono_type(mono_signature_get_params(sig, &front)) == CACHED_CLASS(IntPtr)->get_mono_ptr()) { break; } } } CRASH_COND(m == NULL); Dictionary *new_dict = memnew(Dictionary(p_from)); void *args[1] = { &new_dict }; MonoException *exc = NULL; GDMonoUtils::runtime_invoke(m, mono_object, args, &exc); UNLIKELY_UNHANDLED_EXCEPTION(exc); return mono_object; }
void godot_icall_Dictionary_Generic_GetValueTypeInfo(MonoReflectionType *refltype, uint32_t *type_encoding, GDMonoClass **type_class) { MonoType *value_type = mono_reflection_type_get_type(refltype); *type_encoding = mono_type_get_type(value_type); MonoClass *type_class_raw = mono_class_from_mono_type(value_type); *type_class = GDMono::get_singleton()->get_class(type_class_raw); }
void godot_icall_Array_Generic_GetElementTypeInfo(MonoReflectionType *refltype, uint32_t *type_encoding, GDMonoClass **type_class) { MonoType *elem_type = mono_reflection_type_get_type(refltype); *type_encoding = mono_type_get_type(elem_type); MonoClass *type_class_raw = mono_class_from_mono_type(elem_type); *type_class = GDMono::get_singleton()->get_class(type_class_raw); }
void RSACryptoServiceProvider::ImportCspBlob(std::vector<mscorlib::System::Byte*> keyBlob) { MonoType *__parameter_types__[1]; void *__parameters__[1]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(keyBlob, typeid(mscorlib::System::Byte).name()); Global::InvokeMethod("mscorlib", "System.Security.Cryptography", "RSACryptoServiceProvider", 0, NULL, "ImportCspBlob", __native_object__, 1, __parameter_types__, __parameters__, NULL); }
void BinaryWriter::Write(std::vector<mscorlib::System::Char*> chars) { MonoType *__parameter_types__[1]; void *__parameters__[1]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Char")), 1)); __parameters__[0] = Global::FromPrimitiveArray<mscorlib::System::Char*>(chars, typeid(mscorlib::System::Char).name()); Global::InvokeMethod("mscorlib", "System.IO", "BinaryWriter", 0, NULL, "Write", __native_object__, 1, __parameter_types__, __parameters__, NULL); }
void HashMembershipCondition::set_HashValue(std::vector<mscorlib::System::Byte*> value) { MonoType *__parameter_types__[1]; void *__parameters__[1]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(value, typeid(mscorlib::System::Byte).name()); Global::InvokeMethod("mscorlib", "System.Security.Policy", "HashMembershipCondition", 0, NULL, "set_HashValue", __native_object__, 1, __parameter_types__, __parameters__, NULL); }
void DESCryptoServiceProvider::set_Key(std::vector<mscorlib::System::Byte*> value) { MonoType *__parameter_types__[1]; void *__parameters__[1]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(value, typeid(mscorlib::System::Byte).name()); Global::InvokeMethod("mscorlib", "System.Security.Cryptography", "DES", 0, NULL, "set_Key", __native_object__, 1, __parameter_types__, __parameters__, NULL); }
void AppDomainSetup::set_AppDomainInitializerArguments(std::vector<mscorlib::System::String*> value) { MonoType *__parameter_types__[1]; void *__parameters__[1]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "String")), 1)); __parameters__[0] = Global::FromArray<mscorlib::System::String*>(value, typeid(mscorlib::System::String).name()); Global::InvokeMethod("mscorlib", "System", "AppDomainSetup", 0, NULL, "set_AppDomainInitializerArguments", __native_object__, 1, __parameter_types__, __parameters__, NULL); }
void PropertyBuilder::SetCustomAttribute(mscorlib::System::Reflection::ConstructorInfo con, std::vector<mscorlib::System::Byte*> binaryAttribute) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = Global::GetType(typeid(con).name()); __parameter_types__[1] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameters__[0] = (MonoObject*)con; __parameters__[1] = Global::FromArray<mscorlib::System::Byte*>(binaryAttribute, typeid(mscorlib::System::Byte).name()); Global::InvokeMethod("mscorlib", "System.Reflection.Emit", "PropertyBuilder", 0, NULL, "SetCustomAttribute", __native_object__, 2, __parameter_types__, __parameters__, NULL); }
void IdentityReferenceCollection::CopyTo(std::vector<mscorlib::System::Security::Principal::IdentityReference*> array, mscorlib::System::Int32 offset) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System.Security.Principal", "IdentityReference")), 1)); __parameter_types__[1] = Global::GetType(typeid(offset).name()); __parameters__[0] = Global::FromArray<mscorlib::System::Security::Principal::IdentityReference*>(array, typeid(mscorlib::System::Security::Principal::IdentityReference).name()); __parameters__[1] = &offset; Global::InvokeMethod("mscorlib", "System.Security.Principal", "IdentityReferenceCollection", 0, NULL, "CopyTo", __native_object__, 2, __parameter_types__, __parameters__, NULL); }
//Public Methods void CompoundAce::GetBinaryForm(std::vector<mscorlib::System::Byte*> binaryForm, mscorlib::System::Int32 offset) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameter_types__[1] = Global::GetType(typeid(offset).name()); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(binaryForm, typeid(mscorlib::System::Byte).name()); __parameters__[1] = &offset; Global::InvokeMethod("mscorlib", "System.Security.AccessControl", "CompoundAce", 0, NULL, "GetBinaryForm", __native_object__, 2, __parameter_types__, __parameters__, NULL); }
//Public Methods void AuthorizationRuleCollection::CopyTo(std::vector<mscorlib::System::Security::AccessControl::AuthorizationRule*> rules, mscorlib::System::Int32 index) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System.Security.AccessControl", "AuthorizationRule")), 1)); __parameter_types__[1] = Global::GetType(typeid(index).name()); __parameters__[0] = Global::FromArray<mscorlib::System::Security::AccessControl::AuthorizationRule*>(rules, typeid(mscorlib::System::Security::AccessControl::AuthorizationRule).name()); __parameters__[1] = &index; Global::InvokeMethod("mscorlib", "System.Security.AccessControl", "AuthorizationRuleCollection", 0, NULL, "CopyTo", __native_object__, 2, __parameter_types__, __parameters__, NULL); }
void FileIOPermission::SetPathList(mscorlib::System::Security::Permissions::FileIOPermissionAccess::__ENUM__ access, std::vector<mscorlib::System::String*> pathList) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = Global::GetType(typeid(access).name()); __parameter_types__[1] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "String")), 1)); mscorlib::System::Int32 __param_access__ = access; __parameters__[0] = &__param_access__; __parameters__[1] = Global::FromArray<mscorlib::System::String*>(pathList, typeid(mscorlib::System::String).name()); Global::InvokeMethod("mscorlib", "System.Security.Permissions", "FileIOPermission", 0, NULL, "SetPathList", __native_object__, 2, __parameter_types__, __parameters__, NULL); }
mscorlib::System::Object PropertyBuilder::GetValue(mscorlib::System::Object obj, std::vector<mscorlib::System::Object*> index) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = Global::GetType(typeid(obj).name()); __parameter_types__[1] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Object")), 1)); __parameters__[0] = (MonoObject*)obj; __parameters__[1] = Global::FromArray<mscorlib::System::Object*>(index, typeid(mscorlib::System::Object).name()); MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Reflection.Emit", "PropertyBuilder", 0, NULL, "GetValue", __native_object__, 2, __parameter_types__, __parameters__, NULL); return mscorlib::System::Object(__result__); }
mscorlib::System::ActivationContext ActivationContext::CreatePartialActivationContext(mscorlib::System::ApplicationIdentity identity, std::vector<mscorlib::System::String*> manifestPaths) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = Global::GetType(typeid(identity).name()); __parameter_types__[1] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "String")), 1)); __parameters__[0] = (MonoObject*)identity; __parameters__[1] = Global::FromArray<mscorlib::System::String*>(manifestPaths, typeid(mscorlib::System::String).name()); MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System", "ActivationContext", 0, NULL, "CreatePartialActivationContext", NullMonoObject, 2, __parameter_types__, __parameters__, NULL); return mscorlib::System::ActivationContext(__result__); }
//Public Methods mscorlib::System::Boolean DecoderFallbackBuffer::Fallback(std::vector<mscorlib::System::Byte*> bytesUnknown, mscorlib::System::Int32 index) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameter_types__[1] = Global::GetType(typeid(index).name()); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(bytesUnknown, typeid(mscorlib::System::Byte).name()); __parameters__[1] = &index; MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Text", "DecoderFallbackBuffer", 0, NULL, "Fallback", __native_object__, 2, __parameter_types__, __parameters__, NULL); return *(mscorlib::System::Boolean*)mono_object_unbox(__result__); }
mscorlib::System::TypedReference TypedReference::MakeTypedReference(mscorlib::System::Object target, std::vector<mscorlib::System::Reflection::FieldInfo*> flds) { MonoType *__parameter_types__[2]; void *__parameters__[2]; __parameter_types__[0] = Global::GetType(typeid(target).name()); __parameter_types__[1] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System.Reflection", "FieldInfo")), 1)); __parameters__[0] = (MonoObject*)target; __parameters__[1] = Global::FromArray<mscorlib::System::Reflection::FieldInfo*>(flds, typeid(mscorlib::System::Reflection::FieldInfo).name()); MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System", "TypedReference", 0, NULL, "MakeTypedReference", NullMonoObject, 2, __parameter_types__, __parameters__, NULL); return mscorlib::System::TypedReference(__result__); }
GDMonoField::GDMonoField(MonoClassField *p_raw_field, GDMonoClass *p_owner) { owner = p_owner; mono_field = p_raw_field; name = mono_field_get_name(mono_field); MonoType *field_type = mono_field_get_type(mono_field); type.type_encoding = mono_type_get_type(field_type); MonoClass *field_type_class = mono_class_from_mono_type(field_type); type.type_class = GDMono::get_singleton()->get_class(field_type_class); attrs_fetched = false; attributes = NULL; }
void BinaryWriter::Write(std::vector<mscorlib::System::Byte*> buffer, mscorlib::System::Int32 index, mscorlib::System::Int32 count) { MonoType *__parameter_types__[3]; void *__parameters__[3]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameter_types__[1] = Global::GetType(typeid(index).name()); __parameter_types__[2] = Global::GetType(typeid(count).name()); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(buffer, typeid(mscorlib::System::Byte).name()); __parameters__[1] = &index; __parameters__[2] = &count; Global::InvokeMethod("mscorlib", "System.IO", "BinaryWriter", 0, NULL, "Write", __native_object__, 3, __parameter_types__, __parameters__, NULL); }
/* * mono_method_find * * Get method by its name and argument types */ MonoMethod* mono_method_find(MonoClass *klass, char *name, MonoType **params, int nparams) { MonoMethod *method = NULL; MonoType *param_type; MonoMethodSignature *sig; gpointer method_iter = NULL; gpointer param_iter = NULL; int i; while ((method = mono_class_get_methods(klass, &method_iter))) { if (strcmp(mono_method_get_name(method), name)) continue; sig = mono_method_signature(method); if (mono_signature_get_param_count(sig) != nparams) continue; i = 0; while ((param_type = mono_signature_get_params(sig, ¶m_iter))) { if (mono_class_from_mono_type(param_type) != mono_class_from_mono_type(params[i])) break; if (mono_type_is_byref(param_type) != mono_type_is_byref(params[i])) break; i++; } if (i == nparams) { return method; } } return NULL; }
//Public Methods mscorlib::System::Int32 UnmanagedMemoryStream::Read(std::vector<mscorlib::System::Byte*> buffer, mscorlib::System::Int32 offset, mscorlib::System::Int32 count) { MonoType *__parameter_types__[3]; void *__parameters__[3]; __parameter_types__[0] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameter_types__[1] = Global::GetType(typeid(offset).name()); __parameter_types__[2] = Global::GetType(typeid(count).name()); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(buffer, typeid(mscorlib::System::Byte).name()); __parameters__[1] = &offset; __parameters__[2] = &count; MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.IO", "UnmanagedMemoryStream", 0, NULL, "Read", __native_object__, 3, __parameter_types__, __parameters__, NULL); return *(mscorlib::System::Int32*)mono_object_unbox(__result__); }
MonoClass* MonoEmbedding::GetFuncClass() { static MonoMethod* method; MonoException* exc = NULL; if (!method) method = mono_class_get_method_from_name(MonoEmbedding::GetClass(), "GetFuncType", -1); MonoReflectionType* typeObject = (MonoReflectionType*)mono_runtime_invoke(method, NULL, NULL, (MonoObject**)&exc); MonoType* type = mono_reflection_type_get_type(typeObject); MonoClass* klass = mono_class_from_mono_type(type); return klass; }
MonoClass* MonoField::getType() { if(mFieldType != nullptr) return mFieldType; MonoType* monoType = mono_field_get_type(mField); ::MonoClass* fieldClass = mono_class_from_mono_type(monoType); if(fieldClass == nullptr) return nullptr; mFieldType = MonoManager::instance().findClass(fieldClass); return mFieldType; }
static void add_field (MonoClassField *field) { MonoClass *k; MonoCustomAttrInfo* cattrs; gpointer val = NULL, oldkey = NULL; if (g_hash_table_lookup_extended (field_table, field, &oldkey, &val)) return; g_hash_table_insert (field_table, field, NULL); add_type (field->parent); k = mono_class_from_mono_type (field->type); add_type (k); cattrs = mono_custom_attrs_from_field (field->parent, field); handle_cattrs (cattrs); }