Beispiel #1
0
 internal static extern ErrorCode clang_indexTranslationUnit(CXIndexAction index_action,
                                                             CXClientData client_data,
                                                             [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]
                                                             IndexerCallbacks[] index_callbacks,
                                                             uint index_callbacks_size,
                                                             IndexOptionFlags index_options,
                                                             CXTranslationUnit tu);
Beispiel #2
0
        public CXChildVisitResult VisitFieldDecl(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_FieldDecl);

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_ParmDecl:
            {
                return(Handle(VisitParmDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_TypeRef:
            {
                return(Handle(VisitTypeRef, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_IntegerLiteral:
            {
                return(Handle(VisitIntegerLiteral, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #3
0
        public CXChildVisitResult VisitTypedefDecl(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_TypedefDecl);

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_StructDecl:
            {
                return(Handle(VisitStructDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_EnumDecl:
            {
                return(Handle(VisitEnumDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_ParmDecl:
            {
                return(Handle(VisitParmDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_TypeRef:
            {
                return(Handle(VisitTypeRef, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #4
0
        public static void VisitChildren(this CXCursor cursor, VisitChildCursorAction visitAction)
        {
            var handle     = GCHandle.Alloc(visitAction);
            var clientData = new CXClientData((IntPtr)handle);

            cursor.VisitChildren(Visit, clientData);

            handle.Free();
        }
Beispiel #5
0
        public static unsafe void VisitChildren(this CXCursor cursor, VisitChildAction visitAction)
        {
            var clientData = new CXClientData(IntPtr.Zero);

            cursor.VisitChildren(Visitor, clientData);

            CXChildVisitResult Visitor(CXCursor childCursor, CXCursor childParent, void *data)
            {
                visitAction(childCursor);
                return(CXChildVisitResult.CXChildVisit_Continue);
            }
        }
Beispiel #6
0
        public CXChildVisitResult VisitDLLImport(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_DLLImport);

            switch (cursor.Kind)
            {
            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #7
0
        public static unsafe void VisitChildren(this CXType type, VisitChildAction visitAction)
        {
            var clientData = new CXClientData(IntPtr.Zero);

            type.VisitFields(Visitor, clientData);

            CXVisitorResult Visitor(CXCursor childCursor, void *data)
            {
                visitAction(childCursor);
                return(CXVisitorResult.CXVisit_Continue);
            }
        }
Beispiel #8
0
        private void ProcessCurrentFile()
        {
            _currentFile = Path.GetFullPath(_currentFile);

            _state = new CurrentState();

            var options = new string[]
            {
                "-x",
                "c++",
                "--comments",
                "--comments-in-macros",
                "-fparse-all-comments",
                "-D__HEART_CODEGEN_ACTIVE",
            }.Concat(_heartDirectories.Select(x => $"--include-directory={x}\\include"));

            var optionBytes = options.Select(x => Encoding.ASCII.GetBytes(x)).ToArray();

            unsafe
            {
                var index = clang.createIndex(0, 0);

                var bytes = Encoding.ASCII.GetBytes(_currentFile);

                sbyte *file;

                fixed(byte *p = bytes)
                file = (sbyte *)p;

                var optionSb = new sbyte *[optionBytes.Length];
                for (int i = 0; i < optionBytes.Length; ++i)
                {
                    fixed(byte *p = optionBytes[i])
                    optionSb[i] = (sbyte *)p;
                }

                CXTranslationUnitImpl *rawTranslationUnit;

                fixed(sbyte **sb = optionSb)
                rawTranslationUnit = clang.parseTranslationUnit(index, file, sb, optionBytes.Length, null, 0, (uint)CXTranslationUnit_Flags.CXTranslationUnit_None);

                var indexCursor = clang.getTranslationUnitCursor(rawTranslationUnit);
                var clientData  = new CXClientData(new IntPtr(rawTranslationUnit));
                indexCursor.VisitChildren(VisitChildren, clientData);

                clang.disposeTranslationUnit(rawTranslationUnit);
                clang.disposeIndex(index);
            }

            _currentFile = "";
        }
Beispiel #9
0
    private static CXChildVisitResult Visitor(CXCursor child, CXCursor parent, CXClientData clientData)
    {
        var index = (int)clientData.Data;
        var data  = _visitInstances[index - 1];

        var result = data.Predicate(child, parent);

        if (!result)
        {
            return(CXChildVisitResult.CXChildVisit_Continue);
        }

        data.NodeBuilder.Add(child);

        return(CXChildVisitResult.CXChildVisit_Continue);
    }
Beispiel #10
0
        public CXChildVisitResult VisitStructDecl(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_StructDecl);

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_FieldDecl:
            {
                return(Handle(VisitFieldDecl, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #11
0
        public CXChildVisitResult VisitParenExpr(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_ParenExpr);

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_BinaryOperator:
            {
                return(Handle(VisitBinaryOperator, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #12
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_CXXBoolLiteralExpr:
            {
                return(GetOrAddChild <CXXBoolLiteralExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CompoundStmt:
            {
                return(GetOrAddChild <CompoundStmt>(childHandle).Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #13
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_UnexposedExpr:
            {
                return(GetOrAddChild <UnexposedExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_DeclRefExpr:
            {
                return(GetOrAddChild <DeclRefExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CallExpr:
            {
                return(GetOrAddChild <CallExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_IntegerLiteral:
            {
                return(GetOrAddChild <IntegerLiteral>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_ParenExpr:
            {
                return(GetOrAddChild <ParenExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_UnaryOperator:
            {
                return(GetOrAddChild <UnaryOperator>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_BinaryOperator:
            {
                return(GetOrAddChild <BinaryOperator>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_ConditionalOperator:
            {
                return(GetOrAddChild <ConditionalOperator>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CStyleCastExpr:
            {
                return(GetOrAddChild <CStyleCastExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CXXStaticCastExpr:
            {
                return(GetOrAddChild <CXXStaticCastExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CXXBoolLiteralExpr:
            {
                return(GetOrAddChild <CXXBoolLiteralExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CXXNullPtrLiteralExpr:
            {
                return(GetOrAddChild <CXXNullPtrLiteralExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_UnaryExpr:
            {
                return(GetOrAddChild <UnaryExpr>(childHandle).Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #14
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_UnexposedDecl:
            {
                return(GetOrAddChild <UnexposedDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_StructDecl:
            {
                return(GetOrAddChild <StructDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_ClassDecl:
            {
                return(GetOrAddChild <ClassDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_EnumDecl:
            {
                return(GetOrAddChild <EnumDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_FunctionDecl:
            {
                return(GetOrAddChild <FunctionDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_VarDecl:
            {
                return(GetOrAddChild <VarDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TypedefDecl:
            {
                return(GetOrAddChild <TypedefDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CXXMethod:
            {
                return(GetOrAddChild <CXXMethod>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_Namespace:
            {
                return(GetOrAddChild <Namespace>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_Constructor:
            {
                return(GetOrAddChild <Constructor>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_FunctionTemplate:
            {
                return(GetOrAddChild <FunctionTemplate>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_ClassTemplate:
            {
                return(GetOrAddChild <ClassTemplate>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_ClassTemplatePartialSpecialization:
            {
                return(GetOrAddChild <ClassTemplatePartialSpecialization>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_UsingDeclaration:
            {
                return(GetOrAddChild <UsingDeclaration>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TypeAliasDecl:
            {
                return(GetOrAddChild <TypeAliasDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_UnexposedAttr:
            {
                return(GetOrAddChild <UnexposedAttr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TypeAliasTemplateDecl:
            {
                return(GetOrAddChild <TypeAliasTemplateDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_StaticAssert:
            {
                return(GetOrAddChild <StaticAssert>(childHandle).Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #15
0
        public CXChildVisitResult VisitEnumConstantDecl(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_EnumConstantDecl);

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_DeclRefExpr:
            {
                return(Handle(VisitDeclRefExpr, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_IntegerLiteral:
            {
                return(Handle(VisitIntegerLiteral, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_ParenExpr:
            {
                return(Handle(VisitParenExpr, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_UnaryOperator:
            {
                return(Handle(VisitUnaryOperator, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_BinaryOperator:
            {
                return(Handle(VisitBinaryOperator, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_UnexposedExpr:
            {
                return(Handle(VisitUnexposedExpr, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #16
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_ParmDecl:
            {
                return(GetOrAddChild <ParmDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TemplateTypeParameter:
            {
                return(GetOrAddChild <TemplateTypeParameter>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_NonTypeTemplateParameter:
            {
                return(GetOrAddChild <NonTypeTemplateParameter>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TypeRef:
            {
                return(GetOrAddChild <TypeRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TemplateRef:
            {
                return(GetOrAddChild <TemplateRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_NamespaceRef:
            {
                return(GetOrAddChild <NamespaceRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_MemberRef:
            {
                return(GetOrAddChild <MemberRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_UnexposedExpr:
            {
                return(GetOrAddChild <UnexposedExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_DeclRefExpr:
            {
                return(GetOrAddChild <DeclRefExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CallExpr:
            {
                return(GetOrAddChild <CallExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_BinaryOperator:
            {
                return(GetOrAddChild <BinaryOperator>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CompoundStmt:
            {
                return(GetOrAddChild <CompoundStmt>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_UnexposedAttr:
            {
                return(GetOrAddChild <UnexposedAttr>(childHandle).Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #17
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            Expr expr;

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_UnexposedExpr:
            {
                expr = GetOrAddChild <UnexposedExpr>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_DeclRefExpr:
            {
                expr = GetOrAddChild <DeclRefExpr>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_IntegerLiteral:
            {
                expr = GetOrAddChild <IntegerLiteral>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_CharacterLiteral:
            {
                expr = GetOrAddChild <CharacterLiteral>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_ParenExpr:
            {
                expr = GetOrAddChild <ParenExpr>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_UnaryOperator:
            {
                expr = GetOrAddChild <UnaryOperator>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_BinaryOperator:
            {
                expr = GetOrAddChild <BinaryOperator>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_ConditionalOperator:
            {
                expr = GetOrAddChild <ConditionalOperator>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_CStyleCastExpr:
            {
                expr = GetOrAddChild <CStyleCastExpr>(childHandle);
                break;
            }

            case CXCursorKind.CXCursor_CXXBoolLiteralExpr:
            {
                expr = GetOrAddChild <CXXBoolLiteralExpr>(childHandle);
                break;
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }

            Debug.Assert(expr != null);
            Expr = expr;
            return(expr.Visit(clientData));
        }
Beispiel #18
0
 internal static extern uint clang_visitChildren(CXCursor parent, CXCursorVisitor visitor, CXClientData clientData);
Beispiel #19
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_DeclRefExpr:
            {
                return(GetOrAddChild <DeclRefExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_CallExpr:
            {
                return(GetOrAddChild <CallExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_UnaryExpr:
            {
                return(GetOrAddChild <UnaryExpr>(childHandle).Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #20
0
 internal static extern uint clang_Type_visitFields(CXType type, CXFieldVisitor visitor, CXClientData client_data);
Beispiel #21
0
 internal static extern ErrorCode clang_indexSourceFileFullArgv(CXIndexAction index_action, CXClientData client_data,
                                                                [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)]
                                                                IndexerCallbacks[] index_callbacks,
                                                                uint index_callbacks_size,
                                                                IndexOptionFlags index_options,
                                                                string source_filename,
                                                                [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 7)]
                                                                string[] command_line_args,
                                                                int num_command_line_args,
                                                                [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 9)]
                                                                CXUnsavedFile[] unsaved_files,
                                                                uint num_unsaved_files,
                                                                out CXTranslationUnit out_tu,
                                                                TranslationUnitFlags tu_options);
Beispiel #22
0
        public CXChildVisitResult VisitIntegerLiteral(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_IntegerLiteral);

            switch (cursor.Kind)
            {
            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #23
0
        public CXChildVisitResult VisitFunctionDecl(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_FunctionDecl);

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_ParmDecl:
            {
                return(Handle(VisitParmDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_TypeRef:
            {
                return(Handle(VisitTypeRef, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_UnexposedAttr:
            {
                return(Handle(VisitUnexposedAttr, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_DLLExport:
            {
                return(Handle(VisitDLLExport, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_DLLImport:
            {
                return(Handle(VisitDLLImport, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #24
0
 internal static extern int clang_indexTranslationUnit(CXIndexAction session, CXClientData clientData,
                         IndexerCallbacks[] cbs, uint cbsSize, uint indexOptions, CXTranslationUnit translationUnit);
Beispiel #25
0
 internal static extern int clang_indexSourceFile(CXIndexAction session, CXClientData clientData,
                         IndexerCallbacks[] cbs, uint cbsSize, uint indexOptions,
                         string fileName, string[] cmdLineArgs, int cmdLineCount,
                         UnsavedFile[] unsavedFiles, uint numUnsavedFiles, out TranslationUnit translationUnit, uint tuOptions);
Beispiel #26
0
        public CXChildVisitResult VisitTranslationUnit(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_TranslationUnit);

            if (!cursor.Location.IsFromMainFile)
            {
                return(CXChildVisitResult.CXChildVisit_Continue);
            }

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_UnexposedDecl:
            {
                return(Handle(VisitUnexposedDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_StructDecl:
            {
                return(Handle(VisitStructDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_EnumDecl:
            {
                return(Handle(VisitEnumDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_TypedefDecl:
            {
                return(Handle(VisitTypedefDecl, cursor, parent, data));
            }

            case CXCursorKind.CXCursor_VarDecl:
            {
                return(Handle(VisitVarDecl, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }
Beispiel #27
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_TypeRef:
            {
                return(GetOrAddChild <TypeRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TemplateRef:
            {
                return(GetOrAddChild <TemplateRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_NamespaceRef:
            {
                return(GetOrAddChild <NamespaceRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_OverloadedDeclRef:
            {
                return(GetOrAddChild <OverloadedDeclRef>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_DeclRefExpr:
            {
                return(GetOrAddChild <DeclRefExpr>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_IntegerLiteral:
            {
                return(GetOrAddChild <IntegerLiteral>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_BinaryOperator:
            {
                return(GetOrAddChild <BinaryOperator>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_PackExpansionExpr:
            {
                return(GetOrAddChild <PackExpansionExpr>(childHandle).Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #28
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #29
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_EnumConstantDecl:
            {
                var enumConstantDecl = GetOrAddChild <EnumConstantDecl>(childHandle);
                _enumConstantDecls.Add(enumConstantDecl);
                return(enumConstantDecl.Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #30
0
        protected CXChildVisitResult Handle(CXCursorVisitor visitor, CXCursor cursor, CXCursor parent, CXClientData data)
        {
            if (BeginHandle(cursor, parent))
            {
                cursor.VisitChildren(visitor, data);
            }
            EndHandle(cursor, parent);

            return(CXChildVisitResult.CXChildVisit_Continue);
        }
Beispiel #31
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
                case CXCursorKind.CXCursor_TypeRef:
                {
                    return GetOrAddChild<TypeRef>(childHandle).Visit(clientData);
                }

                case CXCursorKind.CXCursor_TemplateRef:
                {
                    return GetOrAddChild<TemplateRef>(childHandle).Visit(clientData);
                }

                case CXCursorKind.CXCursor_UnexposedExpr:
                {
                    return GetOrAddChild<UnexposedExpr>(childHandle).Visit(clientData);
                }

                case CXCursorKind.CXCursor_DeclRefExpr:
                {
                    return GetOrAddChild<DeclRefExpr>(childHandle).Visit(clientData);
                }

                case CXCursorKind.CXCursor_CallExpr:
                {
                    return GetOrAddChild<CallExpr>(childHandle).Visit(clientData);
                }

                case CXCursorKind.CXCursor_ParenExpr:
                {
                    return GetOrAddChild<ParenExpr>(childHandle).Visit(clientData);
                }

                case CXCursorKind.CXCursor_UnaryOperator:
                {
                    return GetOrAddChild<UnaryOperator>(childHandle).Visit(clientData);
                }

                case CXCursorKind.CXCursor_BinaryOperator:
                {
                    return GetOrAddChild<BinaryOperator>(childHandle).Visit(clientData);
                }

                default:
                {
                    return base.VisitChildren(childHandle, handle, clientData);
                }
            }
        }
Beispiel #32
0
 internal static extern void clang_getInclusions(CXTranslationUnit tu, CXInclusionVisitor visitor, CXClientData clientData);
Beispiel #33
0
        protected override CXChildVisitResult VisitChildren(CXCursor childHandle, CXCursor handle, CXClientData clientData)
        {
            ValidateVisit(ref handle);

            switch (childHandle.Kind)
            {
            case CXCursorKind.CXCursor_VarDecl:
            {
                return(GetOrAddChild <VarDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_TypeAliasDecl:
            {
                return(GetOrAddChild <TypeAliasDecl>(childHandle).Visit(clientData));
            }

            case CXCursorKind.CXCursor_StaticAssert:
            {
                return(GetOrAddChild <StaticAssert>(childHandle).Visit(clientData));
            }

            default:
            {
                return(base.VisitChildren(childHandle, handle, clientData));
            }
            }
        }
Beispiel #34
0
        public CXChildVisitResult VisitUnexposedExpr(CXCursor cursor, CXCursor parent, CXClientData data)
        {
            Debug.Assert(parent.Kind == CXCursorKind.CXCursor_UnexposedExpr);

            switch (cursor.Kind)
            {
            case CXCursorKind.CXCursor_IntegerLiteral:
            {
                return(Handle(VisitIntegerLiteral, cursor, parent, data));
            }

            default:
            {
                return(Unhandled(cursor, parent));
            }
            }
        }