# Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Config file for generating the libclang bindings used by this package.

# ===================== GENERATING BINDINGS =====================
#    cd to project's root, and run -
#    dart run ffigen --config tool/libclang_config.yaml
# ===============================================================

name: Clang
description: Holds bindings to LibClang.
output: 'lib/src/header_parser/clang_bindings/clang_bindings.dart'
sort: true
compiler-opts: '-I/usr/lib/llvm-9/include/ -I/usr/lib/llvm-10/include/ -I/usr/lib/llvm-11/include/ -I/usr/local/opt/llvm/include/ -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ -Wno-nullability-completeness'
headers:
  entry-points:
    - 'third_party/libclang/include/clang-c/Index.h'
  include-directives:
    - '**wrapper.c'
    - '**Index.h'
    - '**CXString.h'

array-workaround: true
preamble: |
  // Part of the LLVM Project, under the Apache License v2.0 with LLVM
  // Exceptions.
  // See https://llvm.org/LICENSE.txt for license information.
  // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

enums:
  include:
    - CXChildVisitResult
    - CXCursorKind
    - CXTypeKind
    - CXDiagnosticDisplayOptions
    - CXTranslationUnit_Flags
    - CXEvalResultKind

structs:
  include:
    - CXCursor
    - CXType
    - CXSourceLocation
    - CXString
    - CXTranslationUnitImpl
    - CXUnsavedFile
    - CXSourceRange

functions:
  include:
    - clang_createIndex
    - clang_disposeIndex
    - clang_getNumDiagnostics
    - clang_getDiagnostic
    - clang_disposeDiagnostic
    - clang_parseTranslationUnit
    - clang_disposeTranslationUnit
    - clang_EvalResult_getKind
    - clang_EvalResult_getAsInt
    - clang_EvalResult_getAsLongLong
    - clang_EvalResult_getAsDouble
    - clang_EvalResult_getAsStr
    - clang_EvalResult_dispose
    - clang_getCString
    - clang_disposeString
    - clang_getCursorKind
    - clang_getCursorKindSpelling
    - clang_getCursorType
    - clang_getTypeSpelling
    - clang_getTypeKindSpelling
    - clang_getResultType
    - clang_getPointeeType
    - clang_getCanonicalType
    - clang_Type_getNamedType
    - clang_getTypeDeclaration
    - clang_getTypedefDeclUnderlyingType
    - clang_getCursorSpelling
    - clang_getTranslationUnitCursor
    - clang_formatDiagnostic
    - clang_visitChildren
    - clang_Cursor_getNumArguments
    - clang_Cursor_getArgument
    - clang_getNumArgTypes
    - clang_getArgType
    - clang_getEnumConstantDeclValue
    - clang_equalRanges
    - clang_Cursor_getCommentRange
    - clang_Cursor_getRawCommentText
    - clang_Cursor_getBriefCommentText
    - clang_getCursorLocation
    - clang_getFileLocation
    - clang_getFileName
    - clang_getNumElements
    - clang_getArrayElementType
    - clang_Cursor_isMacroFunctionLike
    - clang_Cursor_isMacroBuiltin
    - clang_Cursor_Evaluate
    - clang_Cursor_isAnonymous
    - clang_Cursor_isAnonymousRecordDecl
    - clang_getCursorUSR
    - clang_getFieldDeclBitWidth
    - clang_Cursor_isFunctionInlined
