//===- CXString.h - Routines for manipulating CXStrings -------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines routines for manipulating CXStrings.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_TOOLS_LIBCLANG_INDEX_INTERNAL_H
#define LLVM_CLANG_TOOLS_LIBCLANG_INDEX_INTERNAL_H

#include "clang-c/Index.h"

#ifndef __has_feature
#define __has_feature(x) 0
#endif

#if __has_feature(blocks)

#define INVOKE_BLOCK2(block, arg1, arg2) block(arg1, arg2)

#else
// If we are compiled with a compiler that doesn't have native blocks support,
// define and call the block manually. 

#define INVOKE_BLOCK2(block, arg1, arg2) block->invoke(block, arg1, arg2)

typedef struct _CXCursorAndRangeVisitorBlock {
  void *isa;
  int flags;
  int reserved;
  enum CXVisitorResult (*invoke)(_CXCursorAndRangeVisitorBlock *,
                                 CXCursor, CXSourceRange);
} *CXCursorAndRangeVisitorBlock;

#endif // !__has_feature(blocks)

/// The result of comparing two source ranges.
enum RangeComparisonResult {
  /// Either the ranges overlap or one of the ranges is invalid.
  RangeOverlap,

  /// The first range ends before the second range starts.
  RangeBefore,

  /// The first range starts after the second range ends.
  RangeAfter
};

#endif
