public static LinkAlternatesInsideList ( |
||
list | ||
return | void |
public static void LinkAlternatesInsideList(ArrayList list)
{
Hashtable baseForms = new Hashtable(list.Count);
foreach(OptionDetails option in list)
{
if (option.LongForm != null && option.LongForm.Trim().Length > 0)
{
string[] parts = option.LongForm.Split(':');
if (parts.Length < 2)
{
baseForms.Add(option.LongForm, option);
}
else
{
OptionDetails baseForm = (OptionDetails) baseForms[parts[0]];
if (baseForm != null)
{
// simple linked list
option.NextAlternate = baseForm.NextAlternate;
baseForm.NextAlternate = option;
}
}
}
}
}
public string[] ProcessArgs(string[] args) { string arg; string nextArg; bool OptionWasProcessed; list.Sort(); OptionDetails.LinkAlternatesInsideList(list); args = NormalizeArgs(args); try { int argc = args.Length; for (int i = 0; i < argc; i++) { arg = args[i]; if (i + 1 < argc) { nextArg = args[i + 1]; } else { nextArg = null; } OptionWasProcessed = false; if (arg.Length > 1 && (arg.StartsWith("-") || arg.StartsWith("/"))) { foreach (OptionDetails option in list) { OptionProcessingResult result = option.ProcessArgument(arg, nextArg); if (result != OptionProcessingResult.NotThisOption) { OptionWasProcessed = true; if (result == OptionProcessingResult.OptionConsumedParameter) { i++; } break; } } } if (!OptionWasProcessed) { ProcessNonOption(arg); } } foreach (OptionDetails option in list) { option.TransferValues(); } foreach (string argument in argumentsTail) { ProcessNonOption(argument); } return((string[])arguments.ToArray(typeof(string))); } catch (Exception ex) { System.Console.WriteLine(ex.ToString()); //System.Environment.Exit(1); throw; } }