mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 12:30:32 +00:00
113 lines
3.1 KiB
C#
113 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using Indy.IL2CPU.Plugs;
|
|
|
|
namespace Indy.IL2CPU.CustomImplementation.System {
|
|
[Plug(Target = typeof(String))]
|
|
public static class StringImpl {
|
|
|
|
public static string Format(IFormatProvider aFormatProvider, string aFormat, object aArg) {
|
|
return "Format not implemented";
|
|
}
|
|
|
|
public static string Format(IFormatProvider aFormatProvider, string aFormat, object[] aArgs) {
|
|
string[] xStrings = new string[1 + 2 + (aArgs.Length * 7) - 1];
|
|
xStrings[0] = aFormat;
|
|
xStrings[1] = "(";
|
|
for (int i = 0; i < aArgs.Length; i++) {
|
|
xStrings[2 + (i * 7)] = "Param";
|
|
xStrings[3 + (i * 7)] = i.ToString();
|
|
xStrings[4 + (i * 7)] = "=";
|
|
xStrings[5 + (i * 7)] = "\"";
|
|
xStrings[6 + (i * 7)] = aArgs[i].ToString();
|
|
xStrings[7 + (i * 7)] = "\"";
|
|
if (i < (aArgs.Length - 1)) {
|
|
xStrings[8 + (i * 7)] = ",";
|
|
}
|
|
}
|
|
xStrings[xStrings.Length - 1] = ")";
|
|
return String.Concat(xStrings);
|
|
}
|
|
|
|
public static int IndexOf(string aThis, char c) {
|
|
for (int i = 0; i < aThis.Length; i++) {
|
|
if (aThis[i] == c) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
public static string PadHelper(string aThis, int totalWidth, char paddingChar, bool isRightPadded)
|
|
{
|
|
char[] cs = new char[totalWidth];
|
|
|
|
int pos = aThis.Length;
|
|
|
|
if (isRightPadded)
|
|
{
|
|
for (int i = 0; i < aThis.Length; i++)
|
|
cs[i] = aThis[i];
|
|
|
|
for (int i = aThis.Length; i < totalWidth; i++)
|
|
cs[i] = paddingChar;
|
|
}
|
|
else
|
|
{
|
|
int offset = totalWidth - aThis.Length;
|
|
for (int i = 0; i < aThis.Length; i++)
|
|
cs[i + offset] = aThis[i];
|
|
|
|
for (int i = 0; i < offset; i++)
|
|
cs[i] = paddingChar;
|
|
}
|
|
|
|
return new string(cs);
|
|
}
|
|
|
|
public static string Substring(string aThis, int startpos) {
|
|
char[] cs = new char[aThis.Length - startpos];
|
|
int j = 0;
|
|
for (int i = startpos; i < aThis.Length; i++)
|
|
cs[j++] = aThis[i];
|
|
|
|
return new string(cs);
|
|
}
|
|
|
|
public static string Substring(string aThis, int startpos, int length) {
|
|
if (startpos + length > aThis.Length)
|
|
length = aThis.Length - startpos;
|
|
|
|
char[] cs = new char[length];
|
|
|
|
int j = 0;
|
|
for (int i = startpos; i < startpos + length; i++)
|
|
cs[j++] = aThis[i];
|
|
|
|
return new string(cs);
|
|
}
|
|
|
|
// HACK: We need to redo this once char support is complete (only returns 0, -1).
|
|
public static int CompareTo(string aThis, string other) {
|
|
if (aThis.Length != other.Length)
|
|
return -1;
|
|
for (int i = 0; i < aThis.Length; i++)
|
|
if (aThis[i] != other[i])
|
|
return -1;
|
|
return 0;
|
|
}
|
|
|
|
[PlugMethod(Enabled = false)]
|
|
public static uint GetStorage(string aString) {
|
|
return 0;
|
|
}
|
|
|
|
[PlugMethod(Enabled = false)]
|
|
public static char[] GetStorageArray(string aString) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|