Browse Source

Changed the searching for class templates to work in depth.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/661/head
Dimitar Dobrev 9 years ago
parent
commit
beb9c1c142
  1. 3
      src/AST/ASTContext.cs
  2. 9
      src/AST/Namespace.cs

3
src/AST/ASTContext.cs

@ -112,7 +112,8 @@ namespace CppSharp.AST @@ -112,7 +112,8 @@ namespace CppSharp.AST
break;
case "ClassTemplate":
foreach (var module in TranslationUnits)
yield return module.FindClassTemplate(name) as T;
foreach (var template in module.FindClassTemplate(name))
yield return template as T;
break;
case "Function":
foreach (var module in TranslationUnits)

9
src/AST/Namespace.cs

@ -341,10 +341,13 @@ namespace CppSharp.AST @@ -341,10 +341,13 @@ namespace CppSharp.AST
.FirstOrDefault(t => t.USR == usr);
}
public ClassTemplate FindClassTemplate(string name)
public IEnumerable<ClassTemplate> FindClassTemplate(string name)
{
return Templates.OfType<ClassTemplate>()
.FirstOrDefault(t => t.Name == name);
foreach (var template in Templates.OfType<ClassTemplate>().Where(t => t.Name == name))
yield return template;
foreach (var @namespace in Namespaces)
foreach (var template in @namespace.FindClassTemplate(name))
yield return template;
}
public ClassTemplate FindClassTemplateByUSR(string usr)

Loading…
Cancel
Save