public static LiveBreakPoint FromArgumentList(NameValuePair[] argumentList)
{
var result = new LiveBreakPoint();
foreach (var argument in argumentList)
{
switch (argument.Name)
{
case "number":
result.Number = Convert.ToInt32(argument.Value);
break;
case "type":
if (argument.Value == "breakpoint")
{
result.Type = BreakPointType.BreakPoint;
}
else
{
throw new Exception("Breakpoint type not implmented.");
}
break;
case "disp":
result.Visible = argument.Value == "keep";
break;
case "enabled":
result.Enabled = argument.Value == "y";
break;
case "addr":
if (argument.Value != "<MULTIPLE>")
{
result.Address = Convert.ToUInt64(argument.Value.Replace("0x", ""), 16);
}
break;
case "func":
result.Function = argument.Value;
break;
case "file":
result.File = argument.Value.Replace("\\\\", "\\").NormalizePath();
break;
case "fullname":
result.FullFileName = argument.Value.Replace("\\\\", "\\").NormalizePath();
break;
case "line":
result.Line = Convert.ToUInt32(argument.Value);
break;
case "times":
result.HitCount = Convert.ToInt32(argument.Value);
break;
case "original-location":
result.OriginalLocation = argument.Value;
break;
default:
Console.WriteLine("Unknown field in breakpoint data");
break;
}
}
return result;
}
}