Example #1
0
        /// <summary>
        /// Create Native Clang Cursor And Range Visitor
        /// </summary>
        /// <param name="visitor">Managed Clang Cursor And Range Visitor Function</param>
        /// <returns>Native Clang Cursor And Range Visitor</returns>
        private CXCursorAndRangeVisitor CreateNativeCursorAndRangeVisitor(Func <object, ClangCursor, ClangSourceRange, VisitorResult> visitor)
        {
            var v = new CXCursorAndRangeVisitor((native_ctx, native_cursor, native_range) =>
            {
                var cursor = native_cursor.ToManaged();
                var range  = native_range.ToManaged();
                return(visitor(native_ctx, cursor, range));
            });

            return(v);
        }
Example #2
0
        /// <summary>
        /// The FindReferencesInFiles
        /// </summary>
        /// <param name="file">The file<see cref="File"/></param>
        /// <param name="searchFunc">The searchFunc<see cref="Func{Cursor, SourceRange, bool}"/></param>
        /// <returns>The <see cref="CXResult"/></returns>
        public CXResult FindReferencesInFiles(File file, Func <Cursor, SourceRange, bool> searchFunc)
        {
            CXCursorAndRangeVisitor cursorAndRangeVisitor = default(CXCursorAndRangeVisitor);

            cursorAndRangeVisitor.Visit = Marshal.GetFunctionPointerForDelegate(new visit((context, cxCursor, cxRange) =>
            {
                if (searchFunc != null)
                {
                    Cursor cursor           = new Cursor(cxCursor);
                    SourceRange sourceRange = new SourceRange(cxRange);
                    bool result             = searchFunc(cursor, sourceRange);
                    return(result ? CXVisitorResult.CXVisit_Continue : CXVisitorResult.CXVisit_Break);
                }
                return(CXVisitorResult.CXVisit_Break);
            }));
            return(clang.clang_findReferencesInFile(this.m_value, (IntPtr)file.Value, cursorAndRangeVisitor));
        }
Example #3
0
 internal static extern CXResult clang_findReferencesInFile(Cursor c, IntPtr f, CXCursorAndRangeVisitor visitor);