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__); }
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__); }
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 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 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 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 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); }
//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); }
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 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); }
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__); }
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::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__); }
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__); }
//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__); }
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); }
//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__); }
mscorlib::System::Object PropertyBuilder::GetValue(mscorlib::System::Object obj, mscorlib::System::Reflection::BindingFlags::__ENUM__ invokeAttr, mscorlib::System::Reflection::Binder binder, std::vector<mscorlib::System::Object*> index, mscorlib::System::Globalization::CultureInfo culture) { MonoType *__parameter_types__[5]; void *__parameters__[5]; __parameter_types__[0] = Global::GetType(typeid(obj).name()); __parameter_types__[1] = Global::GetType(typeid(invokeAttr).name()); __parameter_types__[2] = Global::GetType(typeid(binder).name()); __parameter_types__[3] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Object")), 1)); __parameter_types__[4] = Global::GetType(typeid(culture).name()); __parameters__[0] = (MonoObject*)obj; mscorlib::System::Int32 __param_invokeAttr__ = invokeAttr; __parameters__[1] = &__param_invokeAttr__; __parameters__[2] = (MonoObject*)binder; __parameters__[3] = Global::FromArray<mscorlib::System::Object*>(index, typeid(mscorlib::System::Object).name()); __parameters__[4] = (MonoObject*)culture; MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Reflection.Emit", "PropertyBuilder", 0, NULL, "GetValue", __native_object__, 5, __parameter_types__, __parameters__, NULL); return mscorlib::System::Object(__result__); }
std::vector<mscorlib::System::Byte*> RSACryptoServiceProvider::SignHash(std::vector<mscorlib::System::Byte*> rgbHash, const char *str) { 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("mscorlib", "System", "String"); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(rgbHash, typeid(mscorlib::System::Byte).name()); __parameters__[1] = mono_string_new(Global::GetDomain(), str); MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Security.Cryptography", "RSACryptoServiceProvider", 0, NULL, "SignHash", __native_object__, 2, __parameter_types__, __parameters__, NULL); MonoArray *__array_ptr__ = (MonoArray*)__result__; uintptr_t __array_length__ = mono_array_length(__array_ptr__); std::vector<mscorlib::System::Byte*> __array_result__(__array_length__); for(uintptr_t __array_index__ = 0; __array_index__ < __array_length__; __array_index__++) { MonoObject *__array_item__ = mono_array_get(__array_ptr__,MonoObject*,__array_index__); __array_result__.push_back(new mscorlib::System::Byte (__array_item__)); } return __array_result__; }
std::vector<mscorlib::System::Byte*> PermissionSet::ConvertPermissionSet(mscorlib::System::String inFormat, std::vector<mscorlib::System::Byte*> inData, mscorlib::System::String outFormat) { MonoType *__parameter_types__[3]; void *__parameters__[3]; __parameter_types__[0] = Global::GetType(typeid(inFormat).name()); __parameter_types__[1] = mono_class_get_type(mono_array_class_get(mono_class_from_mono_type(Global::GetType("mscorlib", "System", "Byte")), 1)); __parameter_types__[2] = Global::GetType(typeid(outFormat).name()); __parameters__[0] = (MonoObject*)inFormat; __parameters__[1] = Global::FromArray<mscorlib::System::Byte*>(inData, typeid(mscorlib::System::Byte).name()); __parameters__[2] = (MonoObject*)outFormat; MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Security", "PermissionSet", 0, NULL, "ConvertPermissionSet", NullMonoObject, 3, __parameter_types__, __parameters__, NULL); MonoArray *__array_ptr__ = (MonoArray*)__result__; uintptr_t __array_length__ = mono_array_length(__array_ptr__); std::vector<mscorlib::System::Byte*> __array_result__(__array_length__); for(uintptr_t __array_index__ = 0; __array_index__ < __array_length__; __array_index__++) { MonoObject *__array_item__ = mono_array_get(__array_ptr__,MonoObject*,__array_index__); __array_result__.push_back(new mscorlib::System::Byte (__array_item__)); } return __array_result__; }
std::vector<mscorlib::System::Byte*> RSACryptoServiceProvider::SignData(std::vector<mscorlib::System::Byte*> buffer, mscorlib::System::Int32 offset, mscorlib::System::Int32 count, mscorlib::System::Object halg) { MonoType *__parameter_types__[4]; void *__parameters__[4]; __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()); __parameter_types__[3] = Global::GetType(typeid(halg).name()); __parameters__[0] = Global::FromArray<mscorlib::System::Byte*>(buffer, typeid(mscorlib::System::Byte).name()); __parameters__[1] = &offset; __parameters__[2] = &count; __parameters__[3] = (MonoObject*)halg; MonoObject *__result__ = Global::InvokeMethod("mscorlib", "System.Security.Cryptography", "RSACryptoServiceProvider", 0, NULL, "SignData", __native_object__, 4, __parameter_types__, __parameters__, NULL); MonoArray *__array_ptr__ = (MonoArray*)__result__; uintptr_t __array_length__ = mono_array_length(__array_ptr__); std::vector<mscorlib::System::Byte*> __array_result__(__array_length__); for(uintptr_t __array_index__ = 0; __array_index__ < __array_length__; __array_index__++) { MonoObject *__array_item__ = mono_array_get(__array_ptr__,MonoObject*,__array_index__); __array_result__.push_back(new mscorlib::System::Byte (__array_item__)); } return __array_result__; }
MonoArray * ves_icall_System_String_InternalSplit (MonoString *me, MonoArray *separator, gint32 count, gint32 options) { static MonoClass *String_array; MonoString * tmpstr; MonoArray * retarr; gunichar2 *src; gint32 arrsize, srcsize, splitsize; gint32 i, lastpos, arrpos; gint32 tmpstrsize; gint32 remempty; gint32 flag; gunichar2 *tmpstrptr; remempty = options & STRINGSPLITOPTIONS_REMOVE_EMPTY_ENTRIES; src = mono_string_chars (me); srcsize = mono_string_length (me); arrsize = mono_array_length (separator); if (!String_array) { MonoClass *klass = mono_array_class_get (mono_get_string_class (), 1); mono_memory_barrier (); String_array = klass; } splitsize = 1; /* Count the number of elements we will return. Note that this operation * guarantees that we will return exactly splitsize elements, and we will * have enough data to fill each. This allows us to skip some checks later on. */ if (remempty == 0) { for (i = 0; i != srcsize && splitsize < count; i++) { if (string_icall_is_in_array (separator, arrsize, src [i])) splitsize++; } } else if (count > 1) { /* Require pattern "Nondelim + Delim + Nondelim" to increment counter. * Lastpos != 0 means first nondelim found. * Flag = 0 means last char was delim. * Efficient, though perhaps confusing. */ lastpos = 0; flag = 0; for (i = 0; i != srcsize && splitsize < count; i++) { if (string_icall_is_in_array (separator, arrsize, src [i])) { flag = 0; } else if (flag == 0) { if (lastpos == 1) splitsize++; flag = 1; lastpos = 1; } } /* Nothing but separators */ if (lastpos == 0) { retarr = mono_array_new_specific (mono_class_vtable (mono_domain_get (), String_array), 0); return retarr; } } /* if no split chars found return the string */ if (splitsize == 1) { if (remempty == 0 || count == 1) { /* Copy the whole string */ retarr = mono_array_new_specific (mono_class_vtable (mono_domain_get (), String_array), 1); mono_array_setref (retarr, 0, me); } else { /* otherwise we have to filter out leading & trailing delims */ /* find first non-delim char */ for (; srcsize != 0; srcsize--, src++) { if (!string_icall_is_in_array (separator, arrsize, src [0])) break; } /* find last non-delim char */ for (; srcsize != 0; srcsize--) { if (!string_icall_is_in_array (separator, arrsize, src [srcsize - 1])) break; } tmpstr = mono_string_new_size (mono_domain_get (), srcsize); tmpstrptr = mono_string_chars (tmpstr); memcpy (tmpstrptr, src, srcsize * sizeof (gunichar2)); retarr = mono_array_new_specific (mono_class_vtable (mono_domain_get (), String_array), 1); mono_array_setref (retarr, 0, tmpstr); } return retarr; } lastpos = 0; arrpos = 0; retarr = mono_array_new_specific (mono_class_vtable (mono_domain_get (), String_array), splitsize); for (i = 0; i != srcsize && arrpos != splitsize; i++) { if (string_icall_is_in_array (separator, arrsize, src [i])) { if (lastpos != i || remempty == 0) { tmpstrsize = i - lastpos; tmpstr = mono_string_new_size (mono_domain_get (), tmpstrsize); tmpstrptr = mono_string_chars (tmpstr); memcpy (tmpstrptr, src + lastpos, tmpstrsize * sizeof (gunichar2)); mono_array_setref (retarr, arrpos, tmpstr); arrpos++; if (arrpos == splitsize - 1) { /* Shortcut the last array element */ lastpos = i + 1; if (remempty != 0) { /* Search for non-delim starting char (guaranteed to find one) Note that loop * condition is only there for safety. It will never actually terminate the loop. */ for (; lastpos != srcsize ; lastpos++) { if (!string_icall_is_in_array (separator, arrsize, src [lastpos])) break; } if (count > splitsize) { /* Since we have fewer results than our limit, we must remove * trailing delimiters as well. */ for (; srcsize != lastpos + 1 ; srcsize--) { if (!string_icall_is_in_array (separator, arrsize, src [srcsize - 1])) break; } } } tmpstrsize = srcsize - lastpos; tmpstr = mono_string_new_size (mono_domain_get (), tmpstrsize); tmpstrptr = mono_string_chars (tmpstr); memcpy (tmpstrptr, src + lastpos, tmpstrsize * sizeof (gunichar2)); mono_array_setref (retarr, arrpos, tmpstr); /* Loop will ALWAYS end here. Test criteria in the FOR loop is technically unnecessary. */ break; } } lastpos = i + 1; } } return retarr; }