# 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 `tool`, and run -
#    dart ../bin/ffigen.dart --config libclang_config.yaml
# ===============================================================

name: Clang
description: Holds bindings to LibClang.
output: '../lib/src/header_parser/clang_bindings/clang_bindings.dart'
libclang-dylib-folder: 'wrapped_libclang'
sort: true
compiler-opts: '-I/usr/lib/llvm-9/include/ -I/usr/lib/llvm-10/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:
  - 'wrapped_libclang/wrapper.c'
header-filter:
  include:
    - wrapper.c
    - Index.h
    - CXString.h

array-workaround: true

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

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

functions:
  include:
    names:
      - clang_createIndex
      - clang_disposeIndex
      - clang_getNumDiagnostics
      - clang_getDiagnostic
      - clang_disposeDiagnostic
      - clang_parseTranslationUnit
      - clang_disposeTranslationUnit
      - clang_getCString_wrap
      - clang_disposeString_wrap
      - clang_getCursorKind_wrap
      - clang_getCursorKindSpelling_wrap
      - clang_getCursorType_wrap
      - clang_getTypeSpelling_wrap
      - clang_getTypeKindSpelling_wrap
      - clang_getResultType_wrap
      - clang_getPointeeType_wrap
      - clang_getCanonicalType_wrap
      - clang_Type_getNamedType_wrap
      - clang_getTypeDeclaration_wrap
      - clang_getTypedefDeclUnderlyingType_wrap
      - clang_getCursorSpelling_wrap
      - clang_getTranslationUnitCursor_wrap
      - clang_formatDiagnostic_wrap
      - clang_visitChildren_wrap
      - clang_Cursor_getNumArguments_wrap
      - clang_Cursor_getArgument_wrap
      - clang_getNumArgTypes_wrap
      - clang_getArgType_wrap
      - clang_getEnumConstantDeclValue_wrap
      - clang_equalRanges_wrap
      - clang_Cursor_getCommentRange_wrap
      - clang_Cursor_getRawCommentText_wrap
      - clang_Cursor_getBriefCommentText_wrap
      - clang_getCursorLocation_wrap
      - clang_getFileLocation_wrap
      - clang_getFileName_wrap
      - clang_getNumElements_wrap
      - clang_getArrayElementType_wrap
