public static bool ParseDebugFlags(string value, out DebugFlags flags)
{
int int_flags = 0;
if (Int32.TryParse (value, out int_flags)) {
flags = (DebugFlags) int_flags;
return true;
}
flags = DebugFlags.None;
foreach (string flag in value.Split (',')) {
switch (flag) {
case "jit":
flags |= DebugFlags.JitSymtab;
break;
case "address":
flags |= DebugFlags.MethodAddress;
break;
case "threads":
flags |= DebugFlags.Threads;
break;
case "signals":
flags |= DebugFlags.Signals;
break;
case "eventloop":
flags |= DebugFlags.EventLoop;
break;
case "wait":
flags |= DebugFlags.Wait;
break;
case "sse":
flags |= DebugFlags.SSE;
break;
case "notification":
flags |= DebugFlags.Notification;
break;
case "mutex":
flags |= DebugFlags.Mutex;
break;
case "symtab":
flags |= DebugFlags.SymbolTable;
break;
case "sources":
flags |= DebugFlags.SourceFiles;
break;
case "dwarf":
flags |= DebugFlags.DwarfReader;
break;
case "remoting":
flags |= DebugFlags.Remoting;
break;
case "nunit":
flags |= DebugFlags.NUnit;
break;
case "gui":
flags |= DebugFlags.GUI;
break;
case "cli":
flags |= DebugFlags.CLI;
break;
default:
return false;
}
}
return true;
}