Cosmos/source/Compiler/Indy.IL2CPU.X86/IL/x86/CustomImplementations/MS/System/StringImpl.cs
mterwoord_cp acaa8e0a89
2009-10-17 13:45:47 +00:00

94 lines
4.3 KiB
C#

//using System;
//using System.Linq;
//using Indy.IL2CPU.Plugs;
//namespace Indy.IL2CPU.IL.X86.CustomImplementations.MS.System {
// [Plug(Target = typeof(String), IsMicrosoftdotNETOnly = true)]
// [PlugField(FieldId = "$$Storage$$", FieldType = typeof(char[]))]
// [PlugField(FieldId = "System.Char System.String.m_firstChar", IsExternalValue = true)]
// public static class StringImpl {
// [PlugMethod(Signature = "System_Void__System_String__ctor_System_Char____System_Int32__System_Int32_")]
// public static unsafe void Ctor(String aThis, [FieldAccess(Name = "$$Storage$$")]ref Char[] aStorage, Char[] aChars, int aStartIndex, int aLength,
// [FieldAccess(Name = "System.Int32 System.String.m_stringLength")] ref int aStringLength,
// [FieldAccess(Name = "System.Int32 System.String.m_arrayLength")] ref int aArrayLength,
// [FieldAccess(Name = "System.Char System.String.m_firstChar")] ref char* aFirstChar) {
// Char[] newChars = new Char[aLength];
// Array.Copy(aChars, aStartIndex, newChars, 0, aLength);
// aStorage = newChars;
// aStringLength = newChars.Length;
// aArrayLength = newChars.Length;
// fixed (char* xFirstChar = &aStorage[0]) {
// aFirstChar = xFirstChar;
// }
// }
// [PlugMethod(Signature = "System_Void__System_String__ctor_System_Char___")]
// public static unsafe void Ctor(String aThis, [FieldAccess(Name = "$$Storage$$")] ref Char[] aStorage, Char[] aChars,
// [FieldAccess(Name = "System.Int32 System.String.m_stringLength")]ref int aStringLength,
// [FieldAccess(Name = "System.Int32 System.String.m_arrayLength")] ref int aArrayLength,
// [FieldAccess(Name = "System.Char System.String.m_firstChar")] ref char* aFirstChar) {
// aStorage = aChars;
// aStringLength = aChars.Length;
// aArrayLength = aChars.Length;
// fixed(char* xFirstChar = &aStorage[0]){
// aFirstChar = xFirstChar;
// }
// }
// public static unsafe int get_Length(int* aThis, [FieldAccess(Name = "System.Int32 System.String.m_stringLength")]ref int aLength) {
// return aLength;
// }
// public static unsafe char get_Chars(uint* aThis, [FieldAccess(Name = "System.Char System.String.m_firstChar")]ref char* aStorage, int aIndex) {
// return aStorage[aIndex];
// }
// public static string FastAllocateString(int length) {
// return new String(new char[length]);
// }
// //public static unsafe string GetStringForStringBuilder(string value, int startIndex, int length, int capacity) {
// // string str = FastAllocateString(capacity);
// // if (value.Length == 0x0) {
// // str.SetLength(0x0);
// // return str;
// // }
// // fixed (char* chRef = &str.m_firstChar) {
// // fixed (char* chRef2 = &value.m_firstChar) {
// // wstrcpy(chRef, chRef2 + startIndex, length);
// // }
// // }
// // str.SetLength(length);
// // return str;
// // return null;
// //}
// public static unsafe void wstrcpy(char* dmem, char* smem, int charCount) {
// for (int i = 0; i < charCount; i++) {
// dmem[i] = smem[i];
// }
// }
// public static void cctor() {
// }
// }
// //StringImpl2 plugs StringImpl which is also a plug????
// //[Plug(Target = typeof(Indy.IL2CPU.CustomImplementation.System.StringImpl))]
// public static class StringImpl2 {
// public static unsafe uint GetStorage(uint* aStringPtr, [FieldAccess(Name = "$$Storage$$")]ref uint aStorage) {
// return aStorage;
// }
// public static char[] GetStorageArray(string aThis, [FieldAccess(Name = "$$Storage$$")]ref char[] aStorage) {
// return aStorage;
// }
// public static void FakeMethod() {
// //char[] xThis = null;
// //CustomImplementation.System.StringImpl.Ctor(null, ref xThis, null);
// }
// }
//}