55 lines · c
1//===- CXString.h - Routines for manipulating CXStrings -------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file defines routines for manipulating CXStrings.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_CLANG_TOOLS_LIBCLANG_INDEX_INTERNAL_H14#define LLVM_CLANG_TOOLS_LIBCLANG_INDEX_INTERNAL_H15 16#include "clang-c/Index.h"17 18#ifndef __has_feature19#define __has_feature(x) 020#endif21 22#if __has_feature(blocks)23 24#define INVOKE_BLOCK2(block, arg1, arg2) block(arg1, arg2)25 26#else27// If we are compiled with a compiler that doesn't have native blocks support,28// define and call the block manually. 29 30#define INVOKE_BLOCK2(block, arg1, arg2) block->invoke(block, arg1, arg2)31 32typedef struct _CXCursorAndRangeVisitorBlock {33 void *isa;34 int flags;35 int reserved;36 enum CXVisitorResult (*invoke)(_CXCursorAndRangeVisitorBlock *,37 CXCursor, CXSourceRange);38} *CXCursorAndRangeVisitorBlock;39 40#endif // !__has_feature(blocks)41 42/// The result of comparing two source ranges.43enum RangeComparisonResult {44 /// Either the ranges overlap or one of the ranges is invalid.45 RangeOverlap,46 47 /// The first range ends before the second range starts.48 RangeBefore,49 50 /// The first range starts after the second range ends.51 RangeAfter52};53 54#endif55