Browse Source

Helper method DeclarationContext.FindClass supports nested classes now.

pull/224/head
Elias Holzer 11 years ago
parent
commit
1b541ade5f
  1. 23
      src/AST/Namespace.cs

23
src/AST/Namespace.cs

@ -71,6 +71,25 @@ namespace CppSharp.AST @@ -71,6 +71,25 @@ namespace CppSharp.AST
public Declaration FindAnonymous(ulong key)
{
return Anonymous.ContainsKey(key) ? Anonymous[key] : null;
}
public DeclarationContext FindDeclaration(IEnumerable<string> declarations)
{
DeclarationContext currentDeclaration = this;
foreach (var declaration in declarations)
{
var subDeclaration = currentDeclaration.Namespaces
.Concat<DeclarationContext>(currentDeclaration.Classes)
.FirstOrDefault(e => e.Name.Equals(declaration));
if (subDeclaration == null)
return null;
currentDeclaration = subDeclaration;
}
return currentDeclaration as DeclarationContext;
}
public Namespace FindNamespace(string name)
@ -190,9 +209,9 @@ namespace CppSharp.AST @@ -190,9 +209,9 @@ namespace CppSharp.AST
var className = entries[entries.Count - 1];
var namespaces = entries.Take(entries.Count - 1);
DeclarationContext declContext = FindNamespace(namespaces);
DeclarationContext declContext = FindDeclaration(namespaces);
if (declContext == null)
{
{
declContext = FindClass(entries[0]);
if (declContext == null)
return null;

Loading…
Cancel
Save