35 private static bool sysAsserts;
36 private static bool userAsserts;
37 private static OptionNode classes;
38 private static OptionNode packages;
40 private sealed class OptionNode
42 internal readonly
string name;
43 internal readonly
bool enabled;
44 internal readonly OptionNode next;
46 internal OptionNode(
string name,
bool enabled, OptionNode next)
49 this.enabled = enabled;
54 private static void AddOption(
string classOrPackage,
bool enabled)
56 if (classOrPackage ==
null)
58 throw new ArgumentNullException(
"classOrPackage");
61 if (classOrPackage.EndsWith(
"..."))
63 packages =
new OptionNode(classOrPackage.Substring(0, classOrPackage.Length - 3), enabled, packages);
67 classes =
new OptionNode(classOrPackage, enabled, classes);
73 AddOption(classOrPackage,
true);
78 AddOption(classOrPackage,
false);
101 internal static bool IsEnabled(RuntimeJavaType tw)
103 string className = tw.Name;
106 for (OptionNode n = classes; n !=
null; n = n.next)
108 if (n.name == className)
115 if (packages !=
null)
117 int len = className.Length;
118 while (len > 0 && className[--len] !=
'.') ;
122 for (OptionNode n = packages; n !=
null; n = n.next)
124 if (String.Compare(n.name, 0, className, 0, len,
false, CultureInfo.InvariantCulture) == 0 && len == n.name.Length)
129 while (len > 0 && className[--len] !=
'.') ;
133 return tw.ClassLoader == tw.Context.
ClassLoaderFactory.GetBootstrapClassLoader() ? sysAsserts : userAsserts;
136 private static int Count(OptionNode n)
147 internal static object RetrieveDirectives()
152 java.lang.AssertionStatusDirectives asd =
new java.
lang.AssertionStatusDirectives();
153 string[] arrStrings =
new string[Count(classes)];
154 bool[] arrBools =
new bool[arrStrings.Length];
155 OptionNode n = classes;
156 for (
int i = 0; i < arrStrings.Length; i++)
158 arrStrings[i] = n.name;
159 arrBools[i] = n.enabled;
162 asd.classes = arrStrings;
163 asd.classEnabled = arrBools;
164 arrStrings =
new string[Count(packages)];
165 arrBools =
new bool[arrStrings.Length];
167 for (
int i = 0; i < arrStrings.Length; i++)
169 arrStrings[i] = n.name;
170 arrBools[i] = n.enabled;
173 asd.packages = arrStrings;
174 asd.packageEnabled = arrBools;
175 asd.deflt = userAsserts;
RuntimeClassLoaderFactory ClassLoaderFactory
Gets the RuntimeClassLoaderFactory associated with this instance of the runtime.