# 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 -
#    pub 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/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:
    - 'lib/src/clang_library/wrapper.c'
  include-directives:
    - '**wrapper.c'
    - '**Index.h'
    - '**CXString.h'

array-workaround: true

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_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
    - clang_Cursor_isMacroFunctionLike_wrap
    - clang_Cursor_isMacroBuiltin_wrap
    - clang_Cursor_Evaluate_wrap
    - clang_Cursor_isAnonymous_wrap
    - clang_Cursor_isAnonymousRecordDecl_wrap
