in Source/Tx.Windows.TypeGeneration/ManifestParser.cs [405:478]
private Func<XElement, string> FindNameFunction(XElement provider)
{
Func<XElement, string> function = e =>
e.Attribute(AttributeNames.Symbol) != null
? e.Attribute(AttributeNames.Symbol).Value
: null;
IEnumerable<string> names = from e in _earliestVersions.Values select function(e);
if (AreNamesUseful(names.ToArray()))
{
return function;
}
XElement opcodes = provider.Element(ElementNames.Opcodes);
function = e => LookupOpcodeName(e, opcodes);
names = from e in _earliestVersions.Values select function(e);
if (AreNamesUseful(names.ToArray()))
{
return function;
}
XElement tasks = provider.Element(ElementNames.Tasks);
function = e => LookupTaskName(e, tasks);
names = from e in _earliestVersions.Values select function(e);
if (AreNamesUseful(names.ToArray()))
{
return function;
}
function = e => e.Attribute(AttributeNames.Task) == null
? null
: e.Attribute(AttributeNames.Task).Value;
names = from e in _earliestVersions.Values select function(e);
if (AreNamesUseful(names.ToArray()))
{
return function;
}
function = e => LookupTaskName(e, tasks) + "_" +
(e.Attribute(AttributeNames.Opcode) == null
? ""
: e.Attribute(AttributeNames.Opcode).Value.Replace("win:", ""));
names = from e in _earliestVersions.Values select function(e);
if (AreNamesUseful(names.ToArray()))
{
return function;
}
function = e => LookupTaskName(e, tasks) + "_"
+ (e.Attribute(AttributeNames.Opcode) == null
? ""
: e.Attribute(AttributeNames.Opcode).Value.Replace("win:", ""))
+ "_" + e.Attribute(AttributeNames.Value).Value;
names = from e in _earliestVersions.Values select function(e);
if (AreNamesUseful(names.ToArray()))
{
return function;
}
// could not find useful heuristics
// so, generate default names
function = e => "Event_"
+ e.Attribute(AttributeNames.Value).Value
+ "_V" + e.Attribute(AttributeNames.Version).Value;
return function;
}