Browse Source

Merge pull request #224 from azeno/master

Helper method DeclarationContext.FindClass supports nested classes now.
pull/225/head
João Matos 11 years ago
parent
commit
6ff35f6b17
  1. 23
      src/AST/Namespace.cs

23
src/AST/Namespace.cs

@ -71,6 +71,25 @@ namespace CppSharp.AST
public Declaration FindAnonymous(ulong key) public Declaration FindAnonymous(ulong key)
{ {
return Anonymous.ContainsKey(key) ? Anonymous[key] : null; 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) public Namespace FindNamespace(string name)
@ -190,9 +209,9 @@ namespace CppSharp.AST
var className = entries[entries.Count - 1]; var className = entries[entries.Count - 1];
var namespaces = entries.Take(entries.Count - 1); var namespaces = entries.Take(entries.Count - 1);
DeclarationContext declContext = FindNamespace(namespaces); DeclarationContext declContext = FindDeclaration(namespaces);
if (declContext == null) if (declContext == null)
{ {
declContext = FindClass(entries[0]); declContext = FindClass(entries[0]);
if (declContext == null) if (declContext == null)
return null; return null;

Loading…
Cancel
Save