14
internal class Runtime
16
16
private static Runtime instance;
17
17
private List<ShutdownHook> shutdownHooks = new List<ShutdownHook> ();
19
public void AddShutdownHook (Runnable r)
19
internal void AddShutdownHook (Runnable r)
21
21
ShutdownHook item = new ShutdownHook ();
23
23
this.shutdownHooks.Add (item);
26
public int AvailableProcessors ()
26
internal int AvailableProcessors ()
28
28
return Environment.ProcessorCount;
31
public static long CurrentTimeMillis ()
31
internal static long CurrentTimeMillis ()
33
33
return DateTime.UtcNow.ToMillisecondsSinceEpoch ();
36
public SystemProcess Exec (string[] cmd, string[] envp, FilePath dir)
36
internal SystemProcess Exec (string[] cmd, string[] envp, FilePath dir)
39
39
ProcessStartInfo psi = new ProcessStartInfo ();
62
public static string Getenv (string var)
62
internal static string Getenv (string var)
64
64
return Environment.GetEnvironmentVariable (var);
67
public static IDictionary<string, string> GetEnv ()
67
internal static IDictionary<string, string> GetEnv ()
69
69
Dictionary<string, string> dictionary = new Dictionary<string, string> ();
70
70
foreach (DictionaryEntry v in Environment.GetEnvironmentVariables ()) {
85
85
if (properties == null) {
86
86
properties = new Hashtable ();
87
87
properties ["jgit.fs.debug"] = "false";
88
properties ["user.home"] = Environment.GetFolderPath (Environment.SpecialFolder.Personal);
88
var home = Environment.GetFolderPath (Environment.SpecialFolder.UserProfile).Trim ();
89
if (string.IsNullOrEmpty (home))
90
home = Environment.GetFolderPath (Environment.SpecialFolder.Personal).Trim ();
91
properties ["user.home"] = home;
89
92
properties ["java.library.path"] = Environment.GetEnvironmentVariable ("PATH");
90
93
if (Path.DirectorySeparatorChar != '\\')
91
94
properties ["os.name"] = "Unix";
136
public static void DeleteCharAt (StringBuilder sb, int index)
139
internal static void DeleteCharAt (StringBuilder sb, int index)
138
141
sb.Remove (index, 1);
141
public static byte[] GetBytesForString (string str)
144
internal static byte[] GetBytesForString (string str)
143
146
return Encoding.UTF8.GetBytes (str);
146
public static byte[] GetBytesForString (string str, string encoding)
149
internal static byte[] GetBytesForString (string str, string encoding)
148
151
return Encoding.GetEncoding (encoding).GetBytes (str);
151
public static FieldInfo[] GetDeclaredFields (Type t)
154
internal static FieldInfo[] GetDeclaredFields (Type t)
153
156
return t.GetFields (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
156
public static void NotifyAll (object ob)
159
internal static void NotifyAll (object ob)
158
161
Monitor.PulseAll (ob);
161
public static void PrintStackTrace (Exception ex)
164
internal static void PrintStackTrace (Exception ex)
163
166
Console.WriteLine (ex);
166
public static void PrintStackTrace (Exception ex, TextWriter tw)
169
internal static void PrintStackTrace (Exception ex, TextWriter tw)
168
171
tw.WriteLine (ex);
171
public static string Substring (string str, int index)
174
internal static string Substring (string str, int index)
173
176
return str.Substring (index);
176
public static string Substring (string str, int index, int endIndex)
179
internal static string Substring (string str, int index, int endIndex)
178
181
return str.Substring (index, endIndex - index);
181
public static void Wait (object ob)
184
internal static void Wait (object ob)
183
186
Monitor.Wait (ob);
186
public static bool Wait (object ob, long milis)
189
internal static bool Wait (object ob, long milis)
188
191
return Monitor.Wait (ob, (int)milis);
191
public static Type GetType (string name)
194
internal static Type GetType (string name)
193
196
foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies ()) {
194
197
Type t = a.GetType (name);
198
201
throw new InvalidOperationException ("Type not found: " + name);
201
public static void SetCharAt (StringBuilder sb, int index, char c)
204
internal static void SetCharAt (StringBuilder sb, int index, char c)
206
public static bool EqualsIgnoreCase (string s1, string s2)
209
internal static bool EqualsIgnoreCase (string s1, string s2)
208
211
return s1.Equals (s2, StringComparison.CurrentCultureIgnoreCase);
211
public static long NanoTime ()
214
internal static long NanoTime ()
213
216
return Environment.TickCount * 1000 * 1000;
216
public static int CompareOrdinal (string s1, string s2)
219
internal static int CompareOrdinal (string s1, string s2)
218
221
return string.CompareOrdinal (s1, s2);
221
public static string GetStringForBytes (byte[] chars)
224
internal static string GetStringForBytes (byte[] chars)
223
226
return Encoding.UTF8.GetString (chars);
226
public static string GetStringForBytes (byte[] chars, string encoding)
229
internal static string GetStringForBytes (byte[] chars, string encoding)
228
231
return GetEncoding (encoding).GetString (chars);
231
public static string GetStringForBytes (byte[] chars, int start, int len)
234
internal static string GetStringForBytes (byte[] chars, int start, int len)
233
236
return Encoding.UTF8.GetString (chars, start, len);
236
public static string GetStringForBytes (byte[] chars, int start, int len, string encoding)
239
internal static string GetStringForBytes (byte[] chars, int start, int len, string encoding)
238
241
return GetEncoding (encoding).Decode (chars, start, len);
241
public static Encoding GetEncoding (string name)
244
internal static Encoding GetEncoding (string name)
243
246
// Encoding e = Encoding.GetEncoding (name, EncoderFallback.ExceptionFallback, DecoderFallback.ExceptionFallback);
244
247
Encoding e = Encoding.GetEncoding (name.Replace ('_','-'));