Example #1
0
 public bool FindReferencesTo(Cursor c, File f, FindReferencesDelegate callback)
 {
     Library.CXCursorAndRangeVisitor visitor = new Library.CXCursorAndRangeVisitor();
     visitor.context = IntPtr.Zero;
     visitor.visit = delegate(IntPtr ctx, Library.Cursor cur, Library.SourceRange range)
     {
         if(callback(_itemStore.CreateCursor(cur), _itemStore.CreateSourceRange(range)) == true)
             return Library.CXVisitorResult.CXVisit_Continue;
         return Library.CXVisitorResult.CXVisit_Break;
     };
     return Library.clang_findReferencesInFile(c.Handle, f.Handle, visitor) != Library.CXResult.CXResult_Invalid;
 }
Example #2
0
        public bool FindAllReferences(Cursor c, Func<Cursor, SourceRange, bool> callback)
        {
            Library.CXCursorAndRangeVisitor visitor = new Library.CXCursorAndRangeVisitor();
            visitor.context = IntPtr.Zero;
            visitor.visit = delegate(IntPtr ctx, Library.CXCursor cur, Library.CXSourceRange range)
            {
                if (callback(_itemStore.CreateCursor(cur), _itemStore.CreateSourceRange(range)) == true)
                    return Library.CXVisitorResult.CXVisit_Continue;
                return Library.CXVisitorResult.CXVisit_Break;
            };
            
            //Search source file
            if (Library.clang_findReferencesInFile(c.Handle, File.Handle, visitor) == Library.CXResult.CXResult_Invalid)
                return false;

            foreach (HeaderInfo header in _headerFiles)
            {
                if (Library.clang_findReferencesInFile(c.Handle, header.File.Handle, visitor) == Library.CXResult.CXResult_Invalid)
                    return false;
            }

            return true;
        }