Ejemplo n.º 1
0
        public void Enter(CppNamespace cpp_ns)
        {
            var scope = new Scope(cpp_ns);

            scopes.Add(scope);
            namespaces.Add(cpp_ns);
        }
Ejemplo n.º 2
0
 public Scope(CppNamespace cpp_ns)
 {
     cpp_item        = cpp_ns;
     type            = Type.Namespace;
     get_unique_name = get_name = () =>
     {
         return(cpp_ns.Name);
     };
 }
Ejemplo n.º 3
0
        public static List <CppClass> GetAllClassesRecursively(this CppNamespace compilation)
        {
            var cppClasses = new List <CppClass>();

            foreach (var cppClass in compilation.Classes)
            {
                VisitClass(cppClasses, cppClass);
            }
            return(cppClasses);
        }
Ejemplo n.º 4
0
        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);
        }