mirror of
https://github.com/Ryujinx/Opentk.git
synced 2025-07-08 06:40:42 +00:00
Look up token references in 'All' enum as a final fallback.
This commit is contained in:
parent
f125e66348
commit
93e224ff83
|
@ -205,17 +205,31 @@ namespace Bind.Structures
|
||||||
|
|
||||||
if (enums.ContainsKey(c.Reference) && enums[c.Reference].ConstantCollection.ContainsKey(c.Value))
|
if (enums.ContainsKey(c.Reference) && enums[c.Reference].ConstantCollection.ContainsKey(c.Value))
|
||||||
{
|
{
|
||||||
TranslateConstantWithReference(enums[c.Reference].ConstantCollection[c.Value] as Constant, enums, auxEnums);
|
// Transitively translate the referenced token
|
||||||
referenced_constant = (enums[c.Reference].ConstantCollection[c.Value] as Constant);
|
// Todo: this may cause loops if two tokens reference each other.
|
||||||
|
// Add a max reference depth and bail out?
|
||||||
|
TranslateConstantWithReference(enums[c.Reference].ConstantCollection[c.Value], enums, auxEnums);
|
||||||
|
referenced_constant = (enums[c.Reference].ConstantCollection[c.Value]);
|
||||||
}
|
}
|
||||||
else if (auxEnums != null && auxEnums.ContainsKey(c.Reference) && auxEnums[c.Reference].ConstantCollection.ContainsKey(c.Value))
|
else if (auxEnums != null && auxEnums.ContainsKey(c.Reference) && auxEnums[c.Reference].ConstantCollection.ContainsKey(c.Value))
|
||||||
{
|
{
|
||||||
TranslateConstantWithReference(auxEnums[c.Reference].ConstantCollection[c.Value] as Constant, enums, auxEnums);
|
// Legacy from previous generator incarnation.
|
||||||
referenced_constant = (auxEnums[c.Reference].ConstantCollection[c.Value] as Constant);
|
// Todo: merge everything into enums and get rid of auxEnums.
|
||||||
|
TranslateConstantWithReference(auxEnums[c.Reference].ConstantCollection[c.Value], enums, auxEnums);
|
||||||
|
referenced_constant = (auxEnums[c.Reference].ConstantCollection[c.Value]);
|
||||||
|
}
|
||||||
|
else if (enums.ContainsKey(Settings.CompleteEnumName) &&
|
||||||
|
enums[Settings.CompleteEnumName].ConstantCollection.ContainsKey(c.Value))
|
||||||
|
{
|
||||||
|
// Try the All enum
|
||||||
|
var reference = enums[Settings.CompleteEnumName].ConstantCollection[c.Value];
|
||||||
|
if (reference.Reference == null)
|
||||||
|
referenced_constant = (enums[Settings.CompleteEnumName].ConstantCollection[c.Value]);
|
||||||
|
else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("[Warning] Reference {0} not found for token {1}.", c.Reference, c);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//else throw new InvalidOperationException(String.Format("Unknown Enum \"{0}\" referenced by Constant \"{1}\"",
|
//else throw new InvalidOperationException(String.Format("Unknown Enum \"{0}\" referenced by Constant \"{1}\"",
|
||||||
|
|
Loading…
Reference in a new issue