brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · d284387 Raw
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