public void Enter(CppNamespace cpp_ns) { var scope = new Scope(cpp_ns); scopes.Add(scope); namespaces.Add(cpp_ns); }
public Scope(CppNamespace cpp_ns) { cpp_item = cpp_ns; type = Type.Namespace; get_unique_name = get_name = () => { return(cpp_ns.Name); }; }
public static List <CppClass> GetAllClassesRecursively(this CppNamespace compilation) { var cppClasses = new List <CppClass>(); foreach (var cppClass in compilation.Classes) { VisitClass(cppClasses, cppClass); } return(cppClasses); }
private CXChildVisitResult VisitNamespace(CXCursor cursor, CXCursor parent, IntPtr data) { Unit unitParent = units[parent]; string unitName = clang.getCString(clang.getCursorSpelling(cursor)); CppNamespace unit = null; // Try to find existing namespace if (unitParent is File) { unit = namespaces.FirstOrDefault(n => n.Name == unitName); } else if (unitParent is Namespace) { unit = (unitParent as Namespace).Namespaces.FirstOrDefault(n => n.Name == unitName) as CppNamespace; } // Register the new namespace if (unit == null) { unit = new CppNamespace(unitParent is CppFile ? null : unitParent, unitName); if (unitParent is CppFile) { (unitParent as CppFile).namespaces.Add(unit); namespaces.Add(unit); } else if (unitParent is CppNamespace) { (unitParent as CppNamespace).namespaces.Add(unit); } } units.Add(cursor, unit); return(CXChildVisitResult.CXChildVisit_Recurse); }