# yaml-language-server: $schema=../../ffigen.schema.json

output: 'generated_bindings.dart'

# This will sort the bindings alphabetically.
# sort: true

# This is required if LLVM can't be found in default locations by ffigen.
# llvm-path:
#   - '/usr/local/opt/llvm'

# Bash style Glob matching is also supported.
# TODO(https://github.com/dart-lang/ffigen/issues/11): Globs dont work on
# windows if they begin with '.' or '..'.
headers:
  entry-points:
    - ../../third_party/libclang/include/clang-c/Index.h
  include-directives: # use glob syntax to match with header file path.
    - '**CXString.h'
    - '**Index.h'

compiler-opts:
  - '-I../../third_party/libclang/include'
  - '-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/'
functions:
  include:
    - 'clang_.*' # Can be a regexp, '.' matches any character.
  symbol-address:
    include:
      - 'clang_.*' # Symbol Address for these functions will be exposed via addresses.
  expose-typedefs:
    include:
      - 'clang_.*' # Typedefs for Native and Dart type for these functions will be generated.
structs:
  include:
    - 'CX.*'
enums:
  include:
    - 'CXTypeKind' # Full names are given higher priority than regexp.
    - 'CXGlobalOptFlags'

library-imports:
  custom_import: 'custom_import.dart'

# These can be used to map any typedef to a specific native type.
type-map:
  typedefs:
    'time_t':
      lib: 'ffi'
      c-type: 'Int64'
      dart-type: 'int'
  structs:
    'CXCursorSetImpl':
      lib: 'custom_import'
      c-type: 'CXCursorSetImpl'
      dart-type: 'CXCursorSetImpl'

# Default is 'NativeLibrary'
name: 'LibClang'

description: 'Holds bindings to LibClang.'

# Doc Comments for generated binings.
# Comments can be disabled by using comments: false
comments:
  style: doxygen # Options - doxygen(default) / any.
  length: full # Options - brief / full(default).

# The header of the file, this is pasted as it is.
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

  // ignore_for_file: camel_case_types, non_constant_identifier_names
