PageRenderTime 50ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/MSBuild/Microsoft/Build/CommandLine/CommandLineSwitches.cs

#
C# | 494 lines | 458 code | 36 blank | 0 comment | 54 complexity | 02727fadfacc1504acee25d1b1d69f98 MD5 | raw file
Possible License(s): Apache-2.0, LGPL-3.0
  1. namespace Microsoft.Build.CommandLine
  2. {
  3. using Microsoft.Build.Shared;
  4. using Microsoft.Win32;
  5. using System;
  6. using System.Collections;
  7. using System.Reflection;
  8. using System.Runtime.InteropServices;
  9. internal sealed class CommandLineSwitches
  10. {
  11. private string badCommandLineArg;
  12. private string errorMessage;
  13. private Exception innerException;
  14. private bool isParameterError;
  15. private static readonly string[] noParameters;
  16. private DetectedParameterizedSwitch[] parameterizedSwitches = new DetectedParameterizedSwitch[0x18];
  17. private static readonly ParameterizedSwitchInfo[] parameterizedSwitchesMap;
  18. private DetectedParameterlessSwitch[] parameterlessSwitches = new DetectedParameterlessSwitch[0x13];
  19. private static readonly ParameterlessSwitchInfo[] parameterlessSwitchesMap = new ParameterlessSwitchInfo[] {
  20. new ParameterlessSwitchInfo(new string[] { "help", "h", "?" }, ParameterlessSwitch.Help, null, null), new ParameterlessSwitchInfo(new string[] { "version", "ver" }, ParameterlessSwitch.Version, null, null), new ParameterlessSwitchInfo(new string[] { "nologo" }, ParameterlessSwitch.NoLogo, null, null), new ParameterlessSwitchInfo(new string[] { "noautoresponse", "noautorsp" }, ParameterlessSwitch.NoAutoResponse, null, null), new ParameterlessSwitchInfo(new string[] { "noconsolelogger", "noconlog" }, ParameterlessSwitch.NoConsoleLogger, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger", "fl" }, ParameterlessSwitch.FileLogger, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger1", "fl1" }, ParameterlessSwitch.FileLogger1, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger2", "fl2" }, ParameterlessSwitch.FileLogger2, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger3", "fl3" }, ParameterlessSwitch.FileLogger3, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger4", "fl4" }, ParameterlessSwitch.FileLogger4, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger5", "fl5" }, ParameterlessSwitch.FileLogger5, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger6", "fl6" }, ParameterlessSwitch.FileLogger6, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger7", "fl7" }, ParameterlessSwitch.FileLogger7, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger8", "fl8" }, ParameterlessSwitch.FileLogger8, null, null), new ParameterlessSwitchInfo(new string[] { "filelogger9", "fl9" }, ParameterlessSwitch.FileLogger9, null, null), new ParameterlessSwitchInfo(new string[] { "oldom" }, ParameterlessSwitch.OldOM, null, null),
  21. new ParameterlessSwitchInfo(new string[] { "distributedfilelogger", "dfl" }, ParameterlessSwitch.DistributedFileLogger, null, null), new ParameterlessSwitchInfo(new string[] { "debug", "d" }, ParameterlessSwitch.Debugger, null, "DebuggerEnabled"), new ParameterlessSwitchInfo(new string[] { "detailedsummary", "ds" }, ParameterlessSwitch.DetailedSummary, null, null)
  22. };
  23. private static readonly char[] parameterSeparators;
  24. static CommandLineSwitches()
  25. {
  26. ParameterizedSwitchInfo[] infoArray2 = new ParameterizedSwitchInfo[0x18];
  27. string[] switchNames = new string[1];
  28. infoArray2[0] = new ParameterizedSwitchInfo(switchNames, ParameterizedSwitch.Project, "DuplicateProjectSwitchError", false, null, true);
  29. infoArray2[1] = new ParameterizedSwitchInfo(new string[] { "target", "t" }, ParameterizedSwitch.Target, null, true, "MissingTargetError", true);
  30. infoArray2[2] = new ParameterizedSwitchInfo(new string[] { "property", "p" }, ParameterizedSwitch.Property, null, true, "MissingPropertyError", true);
  31. infoArray2[3] = new ParameterizedSwitchInfo(new string[] { "logger", "l" }, ParameterizedSwitch.Logger, null, false, "MissingLoggerError", false);
  32. infoArray2[4] = new ParameterizedSwitchInfo(new string[] { "distributedlogger", "dl" }, ParameterizedSwitch.DistributedLogger, null, false, "MissingLoggerError", false);
  33. infoArray2[5] = new ParameterizedSwitchInfo(new string[] { "verbosity", "v" }, ParameterizedSwitch.Verbosity, null, false, "MissingVerbosityError", true);
  34. infoArray2[6] = new ParameterizedSwitchInfo(new string[] { "validate", "val" }, ParameterizedSwitch.Validate, null, false, null, true);
  35. infoArray2[7] = new ParameterizedSwitchInfo(new string[] { "consoleloggerparameters", "clp" }, ParameterizedSwitch.ConsoleLoggerParameters, null, false, "MissingConsoleLoggerParameterError", true);
  36. infoArray2[8] = new ParameterizedSwitchInfo(new string[] { "nodemode", "nmode" }, ParameterizedSwitch.NodeMode, null, false, null, false);
  37. infoArray2[9] = new ParameterizedSwitchInfo(new string[] { "maxcpucount", "m" }, ParameterizedSwitch.MaxCPUCount, null, false, "MissingMaxCPUCountError", true);
  38. infoArray2[10] = new ParameterizedSwitchInfo(new string[] { "ignoreprojectextensions", "ignore" }, ParameterizedSwitch.IgnoreProjectExtensions, null, true, "MissingIgnoreProjectExtensionsError", true);
  39. infoArray2[11] = new ParameterizedSwitchInfo(new string[] { "toolsversion", "tv" }, ParameterizedSwitch.ToolsVersion, null, false, "MissingToolsVersionError", true);
  40. infoArray2[12] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters", "flp" }, ParameterizedSwitch.FileLoggerParameters, null, false, "MissingFileLoggerParameterError", true);
  41. infoArray2[13] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters1", "flp1" }, ParameterizedSwitch.FileLoggerParameters1, null, false, "MissingFileLoggerParameterError", true);
  42. infoArray2[14] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters2", "flp2" }, ParameterizedSwitch.FileLoggerParameters2, null, false, "MissingFileLoggerParameterError", true);
  43. infoArray2[15] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters3", "flp3" }, ParameterizedSwitch.FileLoggerParameters3, null, false, "MissingFileLoggerParameterError", true);
  44. infoArray2[0x10] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters4", "flp4" }, ParameterizedSwitch.FileLoggerParameters4, null, false, "MissingFileLoggerParameterError", true);
  45. infoArray2[0x11] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters5", "flp5" }, ParameterizedSwitch.FileLoggerParameters5, null, false, "MissingFileLoggerParameterError", true);
  46. infoArray2[0x12] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters6", "flp6" }, ParameterizedSwitch.FileLoggerParameters6, null, false, "MissingFileLoggerParameterError", true);
  47. infoArray2[0x13] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters7", "flp7" }, ParameterizedSwitch.FileLoggerParameters7, null, false, "MissingFileLoggerParameterError", true);
  48. infoArray2[20] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters8", "flp8" }, ParameterizedSwitch.FileLoggerParameters8, null, false, "MissingFileLoggerParameterError", true);
  49. infoArray2[0x15] = new ParameterizedSwitchInfo(new string[] { "fileloggerparameters9", "flp9" }, ParameterizedSwitch.FileLoggerParameters9, null, false, "MissingFileLoggerParameterError", true);
  50. infoArray2[0x16] = new ParameterizedSwitchInfo(new string[] { "nodereuse", "nr" }, ParameterizedSwitch.NodeReuse, null, false, "MissingNodeReuseParameterError", true);
  51. infoArray2[0x17] = new ParameterizedSwitchInfo(new string[] { "preprocess", "pp" }, ParameterizedSwitch.Preprocess, null, false, null, true);
  52. parameterizedSwitchesMap = infoArray2;
  53. parameterSeparators = new char[] { ',', ';' };
  54. noParameters = new string[0];
  55. }
  56. internal CommandLineSwitches()
  57. {
  58. }
  59. internal void Append(CommandLineSwitches switchesToAppend)
  60. {
  61. if (!this.HaveErrors() && switchesToAppend.HaveErrors())
  62. {
  63. this.errorMessage = switchesToAppend.errorMessage;
  64. this.badCommandLineArg = switchesToAppend.badCommandLineArg;
  65. this.innerException = switchesToAppend.innerException;
  66. this.isParameterError = switchesToAppend.isParameterError;
  67. }
  68. for (int i = 0; i < 0x13; i++)
  69. {
  70. if (switchesToAppend.IsParameterlessSwitchSet((ParameterlessSwitch) i))
  71. {
  72. if (!this.IsParameterlessSwitchSet((ParameterlessSwitch) i) || (parameterlessSwitchesMap[i].duplicateSwitchErrorMessage == null))
  73. {
  74. this.parameterlessSwitches[i].commandLineArg = switchesToAppend.parameterlessSwitches[i].commandLineArg;
  75. }
  76. else
  77. {
  78. this.SetSwitchError(parameterlessSwitchesMap[i].duplicateSwitchErrorMessage, switchesToAppend.GetParameterlessSwitchCommandLineArg((ParameterlessSwitch) i));
  79. }
  80. }
  81. }
  82. for (int j = 0; j < 0x18; j++)
  83. {
  84. if (switchesToAppend.IsParameterizedSwitchSet((ParameterizedSwitch) j))
  85. {
  86. if (!this.IsParameterizedSwitchSet((ParameterizedSwitch) j) || (parameterizedSwitchesMap[j].duplicateSwitchErrorMessage == null))
  87. {
  88. if (this.parameterizedSwitches[j].commandLineArg == null)
  89. {
  90. this.parameterizedSwitches[j].parameters = new ArrayList();
  91. }
  92. this.parameterizedSwitches[j].commandLineArg = switchesToAppend.parameterizedSwitches[j].commandLineArg;
  93. this.parameterizedSwitches[j].parameters.AddRange(switchesToAppend.parameterizedSwitches[j].parameters);
  94. }
  95. else
  96. {
  97. this.SetSwitchError(parameterizedSwitchesMap[j].duplicateSwitchErrorMessage, switchesToAppend.GetParameterizedSwitchCommandLineArg((ParameterizedSwitch) j));
  98. }
  99. }
  100. }
  101. }
  102. internal string[][] GetFileLoggerParameters()
  103. {
  104. return new string[][] { this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger, ParameterizedSwitch.FileLoggerParameters), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger1, ParameterizedSwitch.FileLoggerParameters1), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger2, ParameterizedSwitch.FileLoggerParameters2), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger3, ParameterizedSwitch.FileLoggerParameters3), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger4, ParameterizedSwitch.FileLoggerParameters4), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger5, ParameterizedSwitch.FileLoggerParameters5), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger6, ParameterizedSwitch.FileLoggerParameters6), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger7, ParameterizedSwitch.FileLoggerParameters7), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger8, ParameterizedSwitch.FileLoggerParameters8), this.GetSpecificFileLoggerParameters(ParameterlessSwitch.FileLogger9, ParameterizedSwitch.FileLoggerParameters9) };
  105. }
  106. internal string GetParameterizedSwitchCommandLineArg(ParameterizedSwitch parameterizedSwitch)
  107. {
  108. return this.parameterizedSwitches[(int) parameterizedSwitch].commandLineArg;
  109. }
  110. internal string GetParameterlessSwitchCommandLineArg(ParameterlessSwitch parameterlessSwitch)
  111. {
  112. return this.parameterlessSwitches[(int) parameterlessSwitch].commandLineArg;
  113. }
  114. private string[] GetSpecificFileLoggerParameters(ParameterlessSwitch parameterlessSwitch, ParameterizedSwitch parameterizedSwitch)
  115. {
  116. string[] strArray = null;
  117. if (this.IsParameterizedSwitchSet(parameterizedSwitch))
  118. {
  119. return this[parameterizedSwitch];
  120. }
  121. if (this.IsParameterlessSwitchSet(parameterlessSwitch))
  122. {
  123. strArray = new string[0];
  124. }
  125. return strArray;
  126. }
  127. internal bool HaveAnySwitchesBeenSet()
  128. {
  129. for (int i = 0; i < 0x13; i++)
  130. {
  131. if (this.IsParameterlessSwitchSet((ParameterlessSwitch) i))
  132. {
  133. return true;
  134. }
  135. }
  136. for (int j = 0; j < 0x18; j++)
  137. {
  138. if (this.IsParameterizedSwitchSet((ParameterizedSwitch) j))
  139. {
  140. return true;
  141. }
  142. }
  143. return false;
  144. }
  145. internal bool HaveErrors()
  146. {
  147. return (this.errorMessage != null);
  148. }
  149. internal static bool IsParameterizedSwitch(string switchName, out ParameterizedSwitch parameterizedSwitch, out string duplicateSwitchErrorMessage, out bool multipleParametersAllowed, out string missingParametersErrorMessage, out bool unquoteParameters)
  150. {
  151. parameterizedSwitch = ParameterizedSwitch.Invalid;
  152. duplicateSwitchErrorMessage = null;
  153. multipleParametersAllowed = false;
  154. missingParametersErrorMessage = null;
  155. unquoteParameters = false;
  156. foreach (ParameterizedSwitchInfo info in parameterizedSwitchesMap)
  157. {
  158. foreach (string str in info.switchNames)
  159. {
  160. if (string.Compare(switchName, str, StringComparison.OrdinalIgnoreCase) == 0)
  161. {
  162. parameterizedSwitch = info.parameterizedSwitch;
  163. duplicateSwitchErrorMessage = info.duplicateSwitchErrorMessage;
  164. multipleParametersAllowed = info.multipleParametersAllowed;
  165. missingParametersErrorMessage = info.missingParametersErrorMessage;
  166. unquoteParameters = info.unquoteParameters;
  167. break;
  168. }
  169. }
  170. }
  171. return (parameterizedSwitch != ParameterizedSwitch.Invalid);
  172. }
  173. internal bool IsParameterizedSwitchSet(ParameterizedSwitch parameterizedSwitch)
  174. {
  175. return (this.parameterizedSwitches[(int) parameterizedSwitch].commandLineArg != null);
  176. }
  177. internal static bool IsParameterlessSwitch(string switchName)
  178. {
  179. ParameterlessSwitch switch2;
  180. string str;
  181. return IsParameterlessSwitch(switchName, out switch2, out str);
  182. }
  183. internal static bool IsParameterlessSwitch(string switchName, out ParameterlessSwitch parameterlessSwitch, out string duplicateSwitchErrorMessage)
  184. {
  185. parameterlessSwitch = ParameterlessSwitch.Invalid;
  186. duplicateSwitchErrorMessage = null;
  187. foreach (ParameterlessSwitchInfo info in parameterlessSwitchesMap)
  188. {
  189. if (IsParameterlessSwitchEnabled(info))
  190. {
  191. foreach (string str in info.switchNames)
  192. {
  193. if (string.Compare(switchName, str, StringComparison.OrdinalIgnoreCase) == 0)
  194. {
  195. parameterlessSwitch = info.parameterlessSwitch;
  196. duplicateSwitchErrorMessage = info.duplicateSwitchErrorMessage;
  197. break;
  198. }
  199. }
  200. }
  201. }
  202. return (parameterlessSwitch != ParameterlessSwitch.Invalid);
  203. }
  204. private static bool IsParameterlessSwitchEnabled(ParameterlessSwitchInfo parameterlessSwitch)
  205. {
  206. if (parameterlessSwitch.lightUpKey == null)
  207. {
  208. return true;
  209. }
  210. if (!parameterlessSwitch.lightUpKeyRead)
  211. {
  212. parameterlessSwitch.lightUpKeyRead = true;
  213. parameterlessSwitch.lightUpKeyResult = ReadLightupBool(parameterlessSwitch.lightUpKey);
  214. }
  215. return parameterlessSwitch.lightUpKeyResult;
  216. }
  217. internal bool IsParameterlessSwitchSet(ParameterlessSwitch parameterlessSwitch)
  218. {
  219. return (this.parameterlessSwitches[(int) parameterlessSwitch].commandLineArg != null);
  220. }
  221. private static bool ReadLightupBool(string valueName)
  222. {
  223. bool? nullable2 = ReadLightupBool("hkey_current_user", valueName);
  224. bool? nullable = nullable2.HasValue ? new bool?(nullable2.GetValueOrDefault()) : ReadLightupBool("hkey_local_machine", valueName);
  225. if (nullable.HasValue)
  226. {
  227. return nullable.Value;
  228. }
  229. return false;
  230. }
  231. private static bool? ReadLightupBool(string root, string valueName)
  232. {
  233. try
  234. {
  235. object obj2 = Registry.GetValue(string.Format(@"{0}\software\microsoft\msbuild\4.0", root), valueName, null);
  236. if (obj2 != null)
  237. {
  238. bool flag;
  239. TypeCode typeCode = Type.GetTypeCode(obj2.GetType());
  240. if (typeCode != TypeCode.Int32)
  241. {
  242. if (typeCode != TypeCode.String)
  243. {
  244. return null;
  245. }
  246. }
  247. else
  248. {
  249. return new bool?(((int) obj2) != 0);
  250. }
  251. if (bool.TryParse((string) obj2, out flag))
  252. {
  253. return new bool?(flag);
  254. }
  255. return null;
  256. }
  257. return null;
  258. }
  259. catch (Exception)
  260. {
  261. return null;
  262. }
  263. }
  264. private void SetError(string messageResourceNameValue, string badCommandLineArgValue, Exception innerExceptionValue, bool isParameterErrorValue)
  265. {
  266. if (!this.HaveErrors())
  267. {
  268. this.errorMessage = messageResourceNameValue;
  269. this.badCommandLineArg = badCommandLineArgValue;
  270. this.innerException = innerExceptionValue;
  271. this.isParameterError = isParameterErrorValue;
  272. }
  273. }
  274. internal void SetParameterError(string messageResourceNameValue, string badCommandLineArgValue)
  275. {
  276. this.SetParameterError(messageResourceNameValue, badCommandLineArgValue, null);
  277. }
  278. internal void SetParameterError(string messageResourceNameValue, string badCommandLineArgValue, Exception innerExceptionValue)
  279. {
  280. this.SetError(messageResourceNameValue, badCommandLineArgValue, innerExceptionValue, true);
  281. }
  282. internal bool SetParameterizedSwitch(ParameterizedSwitch parameterizedSwitch, string commandLineArg, string switchParameters, bool multipleParametersAllowed, bool unquoteParameters)
  283. {
  284. bool flag = false;
  285. if (this.parameterizedSwitches[(int) parameterizedSwitch].commandLineArg == null)
  286. {
  287. this.parameterizedSwitches[(int) parameterizedSwitch].parameters = new ArrayList();
  288. }
  289. this.parameterizedSwitches[(int) parameterizedSwitch].commandLineArg = commandLineArg;
  290. if (multipleParametersAllowed)
  291. {
  292. int num;
  293. this.parameterizedSwitches[(int) parameterizedSwitch].parameters.AddRange(QuotingUtilities.SplitUnquoted(switchParameters, 0x7fffffff, false, unquoteParameters, out num, parameterSeparators));
  294. return (num == 0);
  295. }
  296. if (unquoteParameters)
  297. {
  298. switchParameters = QuotingUtilities.Unquote(switchParameters);
  299. }
  300. if (switchParameters.Length > 0)
  301. {
  302. this.parameterizedSwitches[(int) parameterizedSwitch].parameters.Add(switchParameters);
  303. flag = true;
  304. }
  305. return flag;
  306. }
  307. internal void SetParameterlessSwitch(ParameterlessSwitch parameterlessSwitch, string commandLineArg)
  308. {
  309. this.parameterlessSwitches[(int) parameterlessSwitch].commandLineArg = commandLineArg;
  310. }
  311. internal void SetSwitchError(string messageResourceNameValue, string badCommandLineArgValue)
  312. {
  313. this.SetError(messageResourceNameValue, badCommandLineArgValue, null, false);
  314. }
  315. internal void SetUnexpectedParametersError(string badCommandLineArgValue)
  316. {
  317. this.SetSwitchError("UnexpectedParametersError", badCommandLineArgValue);
  318. }
  319. internal void SetUnknownSwitchError(string badCommandLineArgValue)
  320. {
  321. this.SetSwitchError("UnknownSwitchError", badCommandLineArgValue);
  322. }
  323. internal void ThrowErrors()
  324. {
  325. if (this.HaveErrors())
  326. {
  327. if (this.isParameterError)
  328. {
  329. InitializationException.Throw(this.errorMessage, this.badCommandLineArg, this.innerException, false);
  330. }
  331. else
  332. {
  333. CommandLineSwitchException.Throw(this.errorMessage, this.badCommandLineArg);
  334. }
  335. }
  336. }
  337. internal bool this[ParameterlessSwitch parameterlessSwitch]
  338. {
  339. get
  340. {
  341. return (this.parameterlessSwitches[(int) parameterlessSwitch].commandLineArg != null);
  342. }
  343. }
  344. internal string[] this[ParameterizedSwitch parameterizedSwitch]
  345. {
  346. get
  347. {
  348. if (this.parameterizedSwitches[(int) parameterizedSwitch].commandLineArg == null)
  349. {
  350. return noParameters;
  351. }
  352. return (string[]) this.parameterizedSwitches[(int) parameterizedSwitch].parameters.ToArray(typeof(string));
  353. }
  354. }
  355. [StructLayout(LayoutKind.Sequential)]
  356. private struct DetectedParameterizedSwitch
  357. {
  358. internal string commandLineArg;
  359. internal ArrayList parameters;
  360. }
  361. [StructLayout(LayoutKind.Sequential)]
  362. private struct DetectedParameterlessSwitch
  363. {
  364. internal string commandLineArg;
  365. }
  366. internal enum ParameterizedSwitch
  367. {
  368. ConsoleLoggerParameters = 7,
  369. DistributedLogger = 4,
  370. FileLoggerParameters = 12,
  371. FileLoggerParameters1 = 13,
  372. FileLoggerParameters2 = 14,
  373. FileLoggerParameters3 = 15,
  374. FileLoggerParameters4 = 0x10,
  375. FileLoggerParameters5 = 0x11,
  376. FileLoggerParameters6 = 0x12,
  377. FileLoggerParameters7 = 0x13,
  378. FileLoggerParameters8 = 20,
  379. FileLoggerParameters9 = 0x15,
  380. IgnoreProjectExtensions = 10,
  381. Invalid = -1,
  382. Logger = 3,
  383. MaxCPUCount = 9,
  384. NodeMode = 8,
  385. NodeReuse = 0x16,
  386. NumberOfParameterizedSwitches = 0x18,
  387. Preprocess = 0x17,
  388. Project = 0,
  389. Property = 2,
  390. Target = 1,
  391. ToolsVersion = 11,
  392. Validate = 6,
  393. Verbosity = 5
  394. }
  395. [StructLayout(LayoutKind.Sequential)]
  396. private struct ParameterizedSwitchInfo
  397. {
  398. internal string[] switchNames;
  399. internal string duplicateSwitchErrorMessage;
  400. internal bool multipleParametersAllowed;
  401. internal string missingParametersErrorMessage;
  402. internal bool unquoteParameters;
  403. internal CommandLineSwitches.ParameterizedSwitch parameterizedSwitch;
  404. internal ParameterizedSwitchInfo(string[] switchNames, CommandLineSwitches.ParameterizedSwitch parameterizedSwitch, string duplicateSwitchErrorMessage, bool multipleParametersAllowed, string missingParametersErrorMessage, bool unquoteParameters)
  405. {
  406. this.switchNames = switchNames;
  407. this.duplicateSwitchErrorMessage = duplicateSwitchErrorMessage;
  408. this.multipleParametersAllowed = multipleParametersAllowed;
  409. this.missingParametersErrorMessage = missingParametersErrorMessage;
  410. this.unquoteParameters = unquoteParameters;
  411. this.parameterizedSwitch = parameterizedSwitch;
  412. }
  413. }
  414. internal enum ParameterlessSwitch
  415. {
  416. Debugger = 0x11,
  417. DetailedSummary = 0x12,
  418. DistributedFileLogger = 0x10,
  419. FileLogger = 5,
  420. FileLogger1 = 6,
  421. FileLogger2 = 7,
  422. FileLogger3 = 8,
  423. FileLogger4 = 9,
  424. FileLogger5 = 10,
  425. FileLogger6 = 11,
  426. FileLogger7 = 12,
  427. FileLogger8 = 13,
  428. FileLogger9 = 14,
  429. Help = 0,
  430. Invalid = -1,
  431. NoAutoResponse = 3,
  432. NoConsoleLogger = 4,
  433. NoLogo = 2,
  434. NumberOfParameterlessSwitches = 0x13,
  435. OldOM = 15,
  436. Version = 1
  437. }
  438. [StructLayout(LayoutKind.Sequential)]
  439. private struct ParameterlessSwitchInfo
  440. {
  441. internal string[] switchNames;
  442. internal string duplicateSwitchErrorMessage;
  443. internal CommandLineSwitches.ParameterlessSwitch parameterlessSwitch;
  444. internal string lightUpKey;
  445. internal bool lightUpKeyRead;
  446. internal bool lightUpKeyResult;
  447. internal ParameterlessSwitchInfo(string[] switchNames, CommandLineSwitches.ParameterlessSwitch parameterlessSwitch, string duplicateSwitchErrorMessage, string lightUpRegistryKey)
  448. {
  449. this.switchNames = switchNames;
  450. this.duplicateSwitchErrorMessage = duplicateSwitchErrorMessage;
  451. this.parameterlessSwitch = parameterlessSwitch;
  452. this.lightUpKey = lightUpRegistryKey;
  453. this.lightUpKeyRead = false;
  454. this.lightUpKeyResult = false;
  455. }
  456. }
  457. }
  458. }