Added wrapper over lookUpbindings, fixed merge conflicts, migrated code (#25)
Closes #10.
Moves the functions from toplevel to a class to facilitate being able to use the bindings more flexibly.
* Replaced config init-function-name with name and description.
* Handled name conflicts - Function-Function, Typedef - Function - Struct/Enum.
* Updated examples and clang_bindings, Updated tests.
diff --git a/example/c_json/cjson_generated_bindings.dart b/example/c_json/cjson_generated_bindings.dart
index e26ed6a..25900b1 100644
--- a/example/c_json/cjson_generated_bindings.dart
+++ b/example/c_json/cjson_generated_bindings.dart
@@ -3,12 +3,1037 @@
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
-/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+/// Holds bindings to cJSON.
+class CJson {
+ /// Holds the Dynamic library.
+ final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary) {
- _dylib = dynamicLibrary;
+ /// The symbols are looked up in [dynamicLibrary].
+ CJson(ffi.DynamicLibrary dynamicLibrary) : _dylib = dynamicLibrary;
+
+ ffi.Pointer<ffi.Int8> cJSON_Version() {
+ _cJSON_Version ??= _dylib
+ .lookupFunction<_c_cJSON_Version, _dart_cJSON_Version>('cJSON_Version');
+ return _cJSON_Version();
+ }
+
+ _dart_cJSON_Version _cJSON_Version;
+
+ void cJSON_InitHooks(
+ ffi.Pointer<cJSON_Hooks> hooks,
+ ) {
+ _cJSON_InitHooks ??=
+ _dylib.lookupFunction<_c_cJSON_InitHooks, _dart_cJSON_InitHooks>(
+ 'cJSON_InitHooks');
+ return _cJSON_InitHooks(
+ hooks,
+ );
+ }
+
+ _dart_cJSON_InitHooks _cJSON_InitHooks;
+
+ ffi.Pointer<cJSON> cJSON_Parse(
+ ffi.Pointer<ffi.Int8> value,
+ ) {
+ _cJSON_Parse ??=
+ _dylib.lookupFunction<_c_cJSON_Parse, _dart_cJSON_Parse>('cJSON_Parse');
+ return _cJSON_Parse(
+ value,
+ );
+ }
+
+ _dart_cJSON_Parse _cJSON_Parse;
+
+ ffi.Pointer<cJSON> cJSON_ParseWithOpts(
+ ffi.Pointer<ffi.Int8> value,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> return_parse_end,
+ int require_null_terminated,
+ ) {
+ _cJSON_ParseWithOpts ??= _dylib.lookupFunction<_c_cJSON_ParseWithOpts,
+ _dart_cJSON_ParseWithOpts>('cJSON_ParseWithOpts');
+ return _cJSON_ParseWithOpts(
+ value,
+ return_parse_end,
+ require_null_terminated,
+ );
+ }
+
+ _dart_cJSON_ParseWithOpts _cJSON_ParseWithOpts;
+
+ ffi.Pointer<ffi.Int8> cJSON_Print(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_Print ??=
+ _dylib.lookupFunction<_c_cJSON_Print, _dart_cJSON_Print>('cJSON_Print');
+ return _cJSON_Print(
+ item,
+ );
+ }
+
+ _dart_cJSON_Print _cJSON_Print;
+
+ ffi.Pointer<ffi.Int8> cJSON_PrintUnformatted(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_PrintUnformatted ??= _dylib.lookupFunction<_c_cJSON_PrintUnformatted,
+ _dart_cJSON_PrintUnformatted>('cJSON_PrintUnformatted');
+ return _cJSON_PrintUnformatted(
+ item,
+ );
+ }
+
+ _dart_cJSON_PrintUnformatted _cJSON_PrintUnformatted;
+
+ ffi.Pointer<ffi.Int8> cJSON_PrintBuffered(
+ ffi.Pointer<cJSON> item,
+ int prebuffer,
+ int fmt,
+ ) {
+ _cJSON_PrintBuffered ??= _dylib.lookupFunction<_c_cJSON_PrintBuffered,
+ _dart_cJSON_PrintBuffered>('cJSON_PrintBuffered');
+ return _cJSON_PrintBuffered(
+ item,
+ prebuffer,
+ fmt,
+ );
+ }
+
+ _dart_cJSON_PrintBuffered _cJSON_PrintBuffered;
+
+ int cJSON_PrintPreallocated(
+ ffi.Pointer<cJSON> item,
+ ffi.Pointer<ffi.Int8> buffer,
+ int length,
+ int format,
+ ) {
+ _cJSON_PrintPreallocated ??= _dylib.lookupFunction<
+ _c_cJSON_PrintPreallocated,
+ _dart_cJSON_PrintPreallocated>('cJSON_PrintPreallocated');
+ return _cJSON_PrintPreallocated(
+ item,
+ buffer,
+ length,
+ format,
+ );
+ }
+
+ _dart_cJSON_PrintPreallocated _cJSON_PrintPreallocated;
+
+ void cJSON_Delete(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_Delete ??= _dylib
+ .lookupFunction<_c_cJSON_Delete, _dart_cJSON_Delete>('cJSON_Delete');
+ return _cJSON_Delete(
+ item,
+ );
+ }
+
+ _dart_cJSON_Delete _cJSON_Delete;
+
+ int cJSON_GetArraySize(
+ ffi.Pointer<cJSON> array,
+ ) {
+ _cJSON_GetArraySize ??=
+ _dylib.lookupFunction<_c_cJSON_GetArraySize, _dart_cJSON_GetArraySize>(
+ 'cJSON_GetArraySize');
+ return _cJSON_GetArraySize(
+ array,
+ );
+ }
+
+ _dart_cJSON_GetArraySize _cJSON_GetArraySize;
+
+ ffi.Pointer<cJSON> cJSON_GetArrayItem(
+ ffi.Pointer<cJSON> array,
+ int index,
+ ) {
+ _cJSON_GetArrayItem ??=
+ _dylib.lookupFunction<_c_cJSON_GetArrayItem, _dart_cJSON_GetArrayItem>(
+ 'cJSON_GetArrayItem');
+ return _cJSON_GetArrayItem(
+ array,
+ index,
+ );
+ }
+
+ _dart_cJSON_GetArrayItem _cJSON_GetArrayItem;
+
+ ffi.Pointer<cJSON> cJSON_GetObjectItem(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_GetObjectItem ??= _dylib.lookupFunction<_c_cJSON_GetObjectItem,
+ _dart_cJSON_GetObjectItem>('cJSON_GetObjectItem');
+ return _cJSON_GetObjectItem(
+ object,
+ string,
+ );
+ }
+
+ _dart_cJSON_GetObjectItem _cJSON_GetObjectItem;
+
+ ffi.Pointer<cJSON> cJSON_GetObjectItemCaseSensitive(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_GetObjectItemCaseSensitive ??= _dylib.lookupFunction<
+ _c_cJSON_GetObjectItemCaseSensitive,
+ _dart_cJSON_GetObjectItemCaseSensitive>(
+ 'cJSON_GetObjectItemCaseSensitive');
+ return _cJSON_GetObjectItemCaseSensitive(
+ object,
+ string,
+ );
+ }
+
+ _dart_cJSON_GetObjectItemCaseSensitive _cJSON_GetObjectItemCaseSensitive;
+
+ int cJSON_HasObjectItem(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_HasObjectItem ??= _dylib.lookupFunction<_c_cJSON_HasObjectItem,
+ _dart_cJSON_HasObjectItem>('cJSON_HasObjectItem');
+ return _cJSON_HasObjectItem(
+ object,
+ string,
+ );
+ }
+
+ _dart_cJSON_HasObjectItem _cJSON_HasObjectItem;
+
+ ffi.Pointer<ffi.Int8> cJSON_GetErrorPtr() {
+ _cJSON_GetErrorPtr ??=
+ _dylib.lookupFunction<_c_cJSON_GetErrorPtr, _dart_cJSON_GetErrorPtr>(
+ 'cJSON_GetErrorPtr');
+ return _cJSON_GetErrorPtr();
+ }
+
+ _dart_cJSON_GetErrorPtr _cJSON_GetErrorPtr;
+
+ ffi.Pointer<ffi.Int8> cJSON_GetStringValue(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_GetStringValue ??= _dylib.lookupFunction<_c_cJSON_GetStringValue,
+ _dart_cJSON_GetStringValue>('cJSON_GetStringValue');
+ return _cJSON_GetStringValue(
+ item,
+ );
+ }
+
+ _dart_cJSON_GetStringValue _cJSON_GetStringValue;
+
+ int cJSON_IsInvalid(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsInvalid ??=
+ _dylib.lookupFunction<_c_cJSON_IsInvalid, _dart_cJSON_IsInvalid>(
+ 'cJSON_IsInvalid');
+ return _cJSON_IsInvalid(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsInvalid _cJSON_IsInvalid;
+
+ int cJSON_IsFalse(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsFalse ??= _dylib
+ .lookupFunction<_c_cJSON_IsFalse, _dart_cJSON_IsFalse>('cJSON_IsFalse');
+ return _cJSON_IsFalse(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsFalse _cJSON_IsFalse;
+
+ int cJSON_IsTrue(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsTrue ??= _dylib
+ .lookupFunction<_c_cJSON_IsTrue, _dart_cJSON_IsTrue>('cJSON_IsTrue');
+ return _cJSON_IsTrue(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsTrue _cJSON_IsTrue;
+
+ int cJSON_IsBool(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsBool ??= _dylib
+ .lookupFunction<_c_cJSON_IsBool, _dart_cJSON_IsBool>('cJSON_IsBool');
+ return _cJSON_IsBool(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsBool _cJSON_IsBool;
+
+ int cJSON_IsNull(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsNull ??= _dylib
+ .lookupFunction<_c_cJSON_IsNull, _dart_cJSON_IsNull>('cJSON_IsNull');
+ return _cJSON_IsNull(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsNull _cJSON_IsNull;
+
+ int cJSON_IsNumber(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsNumber ??=
+ _dylib.lookupFunction<_c_cJSON_IsNumber, _dart_cJSON_IsNumber>(
+ 'cJSON_IsNumber');
+ return _cJSON_IsNumber(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsNumber _cJSON_IsNumber;
+
+ int cJSON_IsString(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsString ??=
+ _dylib.lookupFunction<_c_cJSON_IsString, _dart_cJSON_IsString>(
+ 'cJSON_IsString');
+ return _cJSON_IsString(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsString _cJSON_IsString;
+
+ int cJSON_IsArray(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsArray ??= _dylib
+ .lookupFunction<_c_cJSON_IsArray, _dart_cJSON_IsArray>('cJSON_IsArray');
+ return _cJSON_IsArray(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsArray _cJSON_IsArray;
+
+ int cJSON_IsObject(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsObject ??=
+ _dylib.lookupFunction<_c_cJSON_IsObject, _dart_cJSON_IsObject>(
+ 'cJSON_IsObject');
+ return _cJSON_IsObject(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsObject _cJSON_IsObject;
+
+ int cJSON_IsRaw(
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_IsRaw ??=
+ _dylib.lookupFunction<_c_cJSON_IsRaw, _dart_cJSON_IsRaw>('cJSON_IsRaw');
+ return _cJSON_IsRaw(
+ item,
+ );
+ }
+
+ _dart_cJSON_IsRaw _cJSON_IsRaw;
+
+ ffi.Pointer<cJSON> cJSON_CreateNull() {
+ _cJSON_CreateNull ??=
+ _dylib.lookupFunction<_c_cJSON_CreateNull, _dart_cJSON_CreateNull>(
+ 'cJSON_CreateNull');
+ return _cJSON_CreateNull();
+ }
+
+ _dart_cJSON_CreateNull _cJSON_CreateNull;
+
+ ffi.Pointer<cJSON> cJSON_CreateTrue() {
+ _cJSON_CreateTrue ??=
+ _dylib.lookupFunction<_c_cJSON_CreateTrue, _dart_cJSON_CreateTrue>(
+ 'cJSON_CreateTrue');
+ return _cJSON_CreateTrue();
+ }
+
+ _dart_cJSON_CreateTrue _cJSON_CreateTrue;
+
+ ffi.Pointer<cJSON> cJSON_CreateFalse() {
+ _cJSON_CreateFalse ??=
+ _dylib.lookupFunction<_c_cJSON_CreateFalse, _dart_cJSON_CreateFalse>(
+ 'cJSON_CreateFalse');
+ return _cJSON_CreateFalse();
+ }
+
+ _dart_cJSON_CreateFalse _cJSON_CreateFalse;
+
+ ffi.Pointer<cJSON> cJSON_CreateBool(
+ int boolean,
+ ) {
+ _cJSON_CreateBool ??=
+ _dylib.lookupFunction<_c_cJSON_CreateBool, _dart_cJSON_CreateBool>(
+ 'cJSON_CreateBool');
+ return _cJSON_CreateBool(
+ boolean,
+ );
+ }
+
+ _dart_cJSON_CreateBool _cJSON_CreateBool;
+
+ ffi.Pointer<cJSON> cJSON_CreateNumber(
+ double num,
+ ) {
+ _cJSON_CreateNumber ??=
+ _dylib.lookupFunction<_c_cJSON_CreateNumber, _dart_cJSON_CreateNumber>(
+ 'cJSON_CreateNumber');
+ return _cJSON_CreateNumber(
+ num,
+ );
+ }
+
+ _dart_cJSON_CreateNumber _cJSON_CreateNumber;
+
+ ffi.Pointer<cJSON> cJSON_CreateString(
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_CreateString ??=
+ _dylib.lookupFunction<_c_cJSON_CreateString, _dart_cJSON_CreateString>(
+ 'cJSON_CreateString');
+ return _cJSON_CreateString(
+ string,
+ );
+ }
+
+ _dart_cJSON_CreateString _cJSON_CreateString;
+
+ ffi.Pointer<cJSON> cJSON_CreateRaw(
+ ffi.Pointer<ffi.Int8> raw,
+ ) {
+ _cJSON_CreateRaw ??=
+ _dylib.lookupFunction<_c_cJSON_CreateRaw, _dart_cJSON_CreateRaw>(
+ 'cJSON_CreateRaw');
+ return _cJSON_CreateRaw(
+ raw,
+ );
+ }
+
+ _dart_cJSON_CreateRaw _cJSON_CreateRaw;
+
+ ffi.Pointer<cJSON> cJSON_CreateArray() {
+ _cJSON_CreateArray ??=
+ _dylib.lookupFunction<_c_cJSON_CreateArray, _dart_cJSON_CreateArray>(
+ 'cJSON_CreateArray');
+ return _cJSON_CreateArray();
+ }
+
+ _dart_cJSON_CreateArray _cJSON_CreateArray;
+
+ ffi.Pointer<cJSON> cJSON_CreateObject() {
+ _cJSON_CreateObject ??=
+ _dylib.lookupFunction<_c_cJSON_CreateObject, _dart_cJSON_CreateObject>(
+ 'cJSON_CreateObject');
+ return _cJSON_CreateObject();
+ }
+
+ _dart_cJSON_CreateObject _cJSON_CreateObject;
+
+ ffi.Pointer<cJSON> cJSON_CreateStringReference(
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_CreateStringReference ??= _dylib.lookupFunction<
+ _c_cJSON_CreateStringReference,
+ _dart_cJSON_CreateStringReference>('cJSON_CreateStringReference');
+ return _cJSON_CreateStringReference(
+ string,
+ );
+ }
+
+ _dart_cJSON_CreateStringReference _cJSON_CreateStringReference;
+
+ ffi.Pointer<cJSON> cJSON_CreateObjectReference(
+ ffi.Pointer<cJSON> child,
+ ) {
+ _cJSON_CreateObjectReference ??= _dylib.lookupFunction<
+ _c_cJSON_CreateObjectReference,
+ _dart_cJSON_CreateObjectReference>('cJSON_CreateObjectReference');
+ return _cJSON_CreateObjectReference(
+ child,
+ );
+ }
+
+ _dart_cJSON_CreateObjectReference _cJSON_CreateObjectReference;
+
+ ffi.Pointer<cJSON> cJSON_CreateArrayReference(
+ ffi.Pointer<cJSON> child,
+ ) {
+ _cJSON_CreateArrayReference ??= _dylib.lookupFunction<
+ _c_cJSON_CreateArrayReference,
+ _dart_cJSON_CreateArrayReference>('cJSON_CreateArrayReference');
+ return _cJSON_CreateArrayReference(
+ child,
+ );
+ }
+
+ _dart_cJSON_CreateArrayReference _cJSON_CreateArrayReference;
+
+ ffi.Pointer<cJSON> cJSON_CreateIntArray(
+ ffi.Pointer<ffi.Int32> numbers,
+ int count,
+ ) {
+ _cJSON_CreateIntArray ??= _dylib.lookupFunction<_c_cJSON_CreateIntArray,
+ _dart_cJSON_CreateIntArray>('cJSON_CreateIntArray');
+ return _cJSON_CreateIntArray(
+ numbers,
+ count,
+ );
+ }
+
+ _dart_cJSON_CreateIntArray _cJSON_CreateIntArray;
+
+ ffi.Pointer<cJSON> cJSON_CreateFloatArray(
+ ffi.Pointer<ffi.Float> numbers,
+ int count,
+ ) {
+ _cJSON_CreateFloatArray ??= _dylib.lookupFunction<_c_cJSON_CreateFloatArray,
+ _dart_cJSON_CreateFloatArray>('cJSON_CreateFloatArray');
+ return _cJSON_CreateFloatArray(
+ numbers,
+ count,
+ );
+ }
+
+ _dart_cJSON_CreateFloatArray _cJSON_CreateFloatArray;
+
+ ffi.Pointer<cJSON> cJSON_CreateDoubleArray(
+ ffi.Pointer<ffi.Double> numbers,
+ int count,
+ ) {
+ _cJSON_CreateDoubleArray ??= _dylib.lookupFunction<
+ _c_cJSON_CreateDoubleArray,
+ _dart_cJSON_CreateDoubleArray>('cJSON_CreateDoubleArray');
+ return _cJSON_CreateDoubleArray(
+ numbers,
+ count,
+ );
+ }
+
+ _dart_cJSON_CreateDoubleArray _cJSON_CreateDoubleArray;
+
+ ffi.Pointer<cJSON> cJSON_CreateStringArray(
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
+ int count,
+ ) {
+ _cJSON_CreateStringArray ??= _dylib.lookupFunction<
+ _c_cJSON_CreateStringArray,
+ _dart_cJSON_CreateStringArray>('cJSON_CreateStringArray');
+ return _cJSON_CreateStringArray(
+ strings,
+ count,
+ );
+ }
+
+ _dart_cJSON_CreateStringArray _cJSON_CreateStringArray;
+
+ void cJSON_AddItemToArray(
+ ffi.Pointer<cJSON> array,
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_AddItemToArray ??= _dylib.lookupFunction<_c_cJSON_AddItemToArray,
+ _dart_cJSON_AddItemToArray>('cJSON_AddItemToArray');
+ return _cJSON_AddItemToArray(
+ array,
+ item,
+ );
+ }
+
+ _dart_cJSON_AddItemToArray _cJSON_AddItemToArray;
+
+ void cJSON_AddItemToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_AddItemToObject ??= _dylib.lookupFunction<_c_cJSON_AddItemToObject,
+ _dart_cJSON_AddItemToObject>('cJSON_AddItemToObject');
+ return _cJSON_AddItemToObject(
+ object,
+ string,
+ item,
+ );
+ }
+
+ _dart_cJSON_AddItemToObject _cJSON_AddItemToObject;
+
+ void cJSON_AddItemToObjectCS(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_AddItemToObjectCS ??= _dylib.lookupFunction<
+ _c_cJSON_AddItemToObjectCS,
+ _dart_cJSON_AddItemToObjectCS>('cJSON_AddItemToObjectCS');
+ return _cJSON_AddItemToObjectCS(
+ object,
+ string,
+ item,
+ );
+ }
+
+ _dart_cJSON_AddItemToObjectCS _cJSON_AddItemToObjectCS;
+
+ void cJSON_AddItemReferenceToArray(
+ ffi.Pointer<cJSON> array,
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_AddItemReferenceToArray ??= _dylib.lookupFunction<
+ _c_cJSON_AddItemReferenceToArray,
+ _dart_cJSON_AddItemReferenceToArray>('cJSON_AddItemReferenceToArray');
+ return _cJSON_AddItemReferenceToArray(
+ array,
+ item,
+ );
+ }
+
+ _dart_cJSON_AddItemReferenceToArray _cJSON_AddItemReferenceToArray;
+
+ void cJSON_AddItemReferenceToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_AddItemReferenceToObject ??= _dylib.lookupFunction<
+ _c_cJSON_AddItemReferenceToObject,
+ _dart_cJSON_AddItemReferenceToObject>('cJSON_AddItemReferenceToObject');
+ return _cJSON_AddItemReferenceToObject(
+ object,
+ string,
+ item,
+ );
+ }
+
+ _dart_cJSON_AddItemReferenceToObject _cJSON_AddItemReferenceToObject;
+
+ ffi.Pointer<cJSON> cJSON_DetachItemViaPointer(
+ ffi.Pointer<cJSON> parent,
+ ffi.Pointer<cJSON> item,
+ ) {
+ _cJSON_DetachItemViaPointer ??= _dylib.lookupFunction<
+ _c_cJSON_DetachItemViaPointer,
+ _dart_cJSON_DetachItemViaPointer>('cJSON_DetachItemViaPointer');
+ return _cJSON_DetachItemViaPointer(
+ parent,
+ item,
+ );
+ }
+
+ _dart_cJSON_DetachItemViaPointer _cJSON_DetachItemViaPointer;
+
+ ffi.Pointer<cJSON> cJSON_DetachItemFromArray(
+ ffi.Pointer<cJSON> array,
+ int which,
+ ) {
+ _cJSON_DetachItemFromArray ??= _dylib.lookupFunction<
+ _c_cJSON_DetachItemFromArray,
+ _dart_cJSON_DetachItemFromArray>('cJSON_DetachItemFromArray');
+ return _cJSON_DetachItemFromArray(
+ array,
+ which,
+ );
+ }
+
+ _dart_cJSON_DetachItemFromArray _cJSON_DetachItemFromArray;
+
+ void cJSON_DeleteItemFromArray(
+ ffi.Pointer<cJSON> array,
+ int which,
+ ) {
+ _cJSON_DeleteItemFromArray ??= _dylib.lookupFunction<
+ _c_cJSON_DeleteItemFromArray,
+ _dart_cJSON_DeleteItemFromArray>('cJSON_DeleteItemFromArray');
+ return _cJSON_DeleteItemFromArray(
+ array,
+ which,
+ );
+ }
+
+ _dart_cJSON_DeleteItemFromArray _cJSON_DeleteItemFromArray;
+
+ ffi.Pointer<cJSON> cJSON_DetachItemFromObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_DetachItemFromObject ??= _dylib.lookupFunction<
+ _c_cJSON_DetachItemFromObject,
+ _dart_cJSON_DetachItemFromObject>('cJSON_DetachItemFromObject');
+ return _cJSON_DetachItemFromObject(
+ object,
+ string,
+ );
+ }
+
+ _dart_cJSON_DetachItemFromObject _cJSON_DetachItemFromObject;
+
+ ffi.Pointer<cJSON> cJSON_DetachItemFromObjectCaseSensitive(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_DetachItemFromObjectCaseSensitive ??= _dylib.lookupFunction<
+ _c_cJSON_DetachItemFromObjectCaseSensitive,
+ _dart_cJSON_DetachItemFromObjectCaseSensitive>(
+ 'cJSON_DetachItemFromObjectCaseSensitive');
+ return _cJSON_DetachItemFromObjectCaseSensitive(
+ object,
+ string,
+ );
+ }
+
+ _dart_cJSON_DetachItemFromObjectCaseSensitive
+ _cJSON_DetachItemFromObjectCaseSensitive;
+
+ void cJSON_DeleteItemFromObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_DeleteItemFromObject ??= _dylib.lookupFunction<
+ _c_cJSON_DeleteItemFromObject,
+ _dart_cJSON_DeleteItemFromObject>('cJSON_DeleteItemFromObject');
+ return _cJSON_DeleteItemFromObject(
+ object,
+ string,
+ );
+ }
+
+ _dart_cJSON_DeleteItemFromObject _cJSON_DeleteItemFromObject;
+
+ void cJSON_DeleteItemFromObjectCaseSensitive(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_DeleteItemFromObjectCaseSensitive ??= _dylib.lookupFunction<
+ _c_cJSON_DeleteItemFromObjectCaseSensitive,
+ _dart_cJSON_DeleteItemFromObjectCaseSensitive>(
+ 'cJSON_DeleteItemFromObjectCaseSensitive');
+ return _cJSON_DeleteItemFromObjectCaseSensitive(
+ object,
+ string,
+ );
+ }
+
+ _dart_cJSON_DeleteItemFromObjectCaseSensitive
+ _cJSON_DeleteItemFromObjectCaseSensitive;
+
+ void cJSON_InsertItemInArray(
+ ffi.Pointer<cJSON> array,
+ int which,
+ ffi.Pointer<cJSON> newitem,
+ ) {
+ _cJSON_InsertItemInArray ??= _dylib.lookupFunction<
+ _c_cJSON_InsertItemInArray,
+ _dart_cJSON_InsertItemInArray>('cJSON_InsertItemInArray');
+ return _cJSON_InsertItemInArray(
+ array,
+ which,
+ newitem,
+ );
+ }
+
+ _dart_cJSON_InsertItemInArray _cJSON_InsertItemInArray;
+
+ int cJSON_ReplaceItemViaPointer(
+ ffi.Pointer<cJSON> parent,
+ ffi.Pointer<cJSON> item,
+ ffi.Pointer<cJSON> replacement,
+ ) {
+ _cJSON_ReplaceItemViaPointer ??= _dylib.lookupFunction<
+ _c_cJSON_ReplaceItemViaPointer,
+ _dart_cJSON_ReplaceItemViaPointer>('cJSON_ReplaceItemViaPointer');
+ return _cJSON_ReplaceItemViaPointer(
+ parent,
+ item,
+ replacement,
+ );
+ }
+
+ _dart_cJSON_ReplaceItemViaPointer _cJSON_ReplaceItemViaPointer;
+
+ void cJSON_ReplaceItemInArray(
+ ffi.Pointer<cJSON> array,
+ int which,
+ ffi.Pointer<cJSON> newitem,
+ ) {
+ _cJSON_ReplaceItemInArray ??= _dylib.lookupFunction<
+ _c_cJSON_ReplaceItemInArray,
+ _dart_cJSON_ReplaceItemInArray>('cJSON_ReplaceItemInArray');
+ return _cJSON_ReplaceItemInArray(
+ array,
+ which,
+ newitem,
+ );
+ }
+
+ _dart_cJSON_ReplaceItemInArray _cJSON_ReplaceItemInArray;
+
+ void cJSON_ReplaceItemInObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ffi.Pointer<cJSON> newitem,
+ ) {
+ _cJSON_ReplaceItemInObject ??= _dylib.lookupFunction<
+ _c_cJSON_ReplaceItemInObject,
+ _dart_cJSON_ReplaceItemInObject>('cJSON_ReplaceItemInObject');
+ return _cJSON_ReplaceItemInObject(
+ object,
+ string,
+ newitem,
+ );
+ }
+
+ _dart_cJSON_ReplaceItemInObject _cJSON_ReplaceItemInObject;
+
+ void cJSON_ReplaceItemInObjectCaseSensitive(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> string,
+ ffi.Pointer<cJSON> newitem,
+ ) {
+ _cJSON_ReplaceItemInObjectCaseSensitive ??= _dylib.lookupFunction<
+ _c_cJSON_ReplaceItemInObjectCaseSensitive,
+ _dart_cJSON_ReplaceItemInObjectCaseSensitive>(
+ 'cJSON_ReplaceItemInObjectCaseSensitive');
+ return _cJSON_ReplaceItemInObjectCaseSensitive(
+ object,
+ string,
+ newitem,
+ );
+ }
+
+ _dart_cJSON_ReplaceItemInObjectCaseSensitive
+ _cJSON_ReplaceItemInObjectCaseSensitive;
+
+ ffi.Pointer<cJSON> cJSON_Duplicate(
+ ffi.Pointer<cJSON> item,
+ int recurse,
+ ) {
+ _cJSON_Duplicate ??=
+ _dylib.lookupFunction<_c_cJSON_Duplicate, _dart_cJSON_Duplicate>(
+ 'cJSON_Duplicate');
+ return _cJSON_Duplicate(
+ item,
+ recurse,
+ );
+ }
+
+ _dart_cJSON_Duplicate _cJSON_Duplicate;
+
+ int cJSON_Compare(
+ ffi.Pointer<cJSON> a,
+ ffi.Pointer<cJSON> b,
+ int case_sensitive,
+ ) {
+ _cJSON_Compare ??= _dylib
+ .lookupFunction<_c_cJSON_Compare, _dart_cJSON_Compare>('cJSON_Compare');
+ return _cJSON_Compare(
+ a,
+ b,
+ case_sensitive,
+ );
+ }
+
+ _dart_cJSON_Compare _cJSON_Compare;
+
+ void cJSON_Minify(
+ ffi.Pointer<ffi.Int8> json,
+ ) {
+ _cJSON_Minify ??= _dylib
+ .lookupFunction<_c_cJSON_Minify, _dart_cJSON_Minify>('cJSON_Minify');
+ return _cJSON_Minify(
+ json,
+ );
+ }
+
+ _dart_cJSON_Minify _cJSON_Minify;
+
+ ffi.Pointer<cJSON> cJSON_AddNullToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ ) {
+ _cJSON_AddNullToObject ??= _dylib.lookupFunction<_c_cJSON_AddNullToObject,
+ _dart_cJSON_AddNullToObject>('cJSON_AddNullToObject');
+ return _cJSON_AddNullToObject(
+ object,
+ name,
+ );
+ }
+
+ _dart_cJSON_AddNullToObject _cJSON_AddNullToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddTrueToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ ) {
+ _cJSON_AddTrueToObject ??= _dylib.lookupFunction<_c_cJSON_AddTrueToObject,
+ _dart_cJSON_AddTrueToObject>('cJSON_AddTrueToObject');
+ return _cJSON_AddTrueToObject(
+ object,
+ name,
+ );
+ }
+
+ _dart_cJSON_AddTrueToObject _cJSON_AddTrueToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddFalseToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ ) {
+ _cJSON_AddFalseToObject ??= _dylib.lookupFunction<_c_cJSON_AddFalseToObject,
+ _dart_cJSON_AddFalseToObject>('cJSON_AddFalseToObject');
+ return _cJSON_AddFalseToObject(
+ object,
+ name,
+ );
+ }
+
+ _dart_cJSON_AddFalseToObject _cJSON_AddFalseToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddBoolToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ int boolean,
+ ) {
+ _cJSON_AddBoolToObject ??= _dylib.lookupFunction<_c_cJSON_AddBoolToObject,
+ _dart_cJSON_AddBoolToObject>('cJSON_AddBoolToObject');
+ return _cJSON_AddBoolToObject(
+ object,
+ name,
+ boolean,
+ );
+ }
+
+ _dart_cJSON_AddBoolToObject _cJSON_AddBoolToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddNumberToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ double number,
+ ) {
+ _cJSON_AddNumberToObject ??= _dylib.lookupFunction<
+ _c_cJSON_AddNumberToObject,
+ _dart_cJSON_AddNumberToObject>('cJSON_AddNumberToObject');
+ return _cJSON_AddNumberToObject(
+ object,
+ name,
+ number,
+ );
+ }
+
+ _dart_cJSON_AddNumberToObject _cJSON_AddNumberToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddStringToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ ffi.Pointer<ffi.Int8> string,
+ ) {
+ _cJSON_AddStringToObject ??= _dylib.lookupFunction<
+ _c_cJSON_AddStringToObject,
+ _dart_cJSON_AddStringToObject>('cJSON_AddStringToObject');
+ return _cJSON_AddStringToObject(
+ object,
+ name,
+ string,
+ );
+ }
+
+ _dart_cJSON_AddStringToObject _cJSON_AddStringToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddRawToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ ffi.Pointer<ffi.Int8> raw,
+ ) {
+ _cJSON_AddRawToObject ??= _dylib.lookupFunction<_c_cJSON_AddRawToObject,
+ _dart_cJSON_AddRawToObject>('cJSON_AddRawToObject');
+ return _cJSON_AddRawToObject(
+ object,
+ name,
+ raw,
+ );
+ }
+
+ _dart_cJSON_AddRawToObject _cJSON_AddRawToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddObjectToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ ) {
+ _cJSON_AddObjectToObject ??= _dylib.lookupFunction<
+ _c_cJSON_AddObjectToObject,
+ _dart_cJSON_AddObjectToObject>('cJSON_AddObjectToObject');
+ return _cJSON_AddObjectToObject(
+ object,
+ name,
+ );
+ }
+
+ _dart_cJSON_AddObjectToObject _cJSON_AddObjectToObject;
+
+ ffi.Pointer<cJSON> cJSON_AddArrayToObject(
+ ffi.Pointer<cJSON> object,
+ ffi.Pointer<ffi.Int8> name,
+ ) {
+ _cJSON_AddArrayToObject ??= _dylib.lookupFunction<_c_cJSON_AddArrayToObject,
+ _dart_cJSON_AddArrayToObject>('cJSON_AddArrayToObject');
+ return _cJSON_AddArrayToObject(
+ object,
+ name,
+ );
+ }
+
+ _dart_cJSON_AddArrayToObject _cJSON_AddArrayToObject;
+
+ double cJSON_SetNumberHelper(
+ ffi.Pointer<cJSON> object,
+ double number,
+ ) {
+ _cJSON_SetNumberHelper ??= _dylib.lookupFunction<_c_cJSON_SetNumberHelper,
+ _dart_cJSON_SetNumberHelper>('cJSON_SetNumberHelper');
+ return _cJSON_SetNumberHelper(
+ object,
+ number,
+ );
+ }
+
+ _dart_cJSON_SetNumberHelper _cJSON_SetNumberHelper;
+
+ ffi.Pointer<ffi.Void> cJSON_malloc(
+ int size,
+ ) {
+ _cJSON_malloc ??= _dylib
+ .lookupFunction<_c_cJSON_malloc, _dart_cJSON_malloc>('cJSON_malloc');
+ return _cJSON_malloc(
+ size,
+ );
+ }
+
+ _dart_cJSON_malloc _cJSON_malloc;
+
+ void cJSON_free(
+ ffi.Pointer<ffi.Void> object,
+ ) {
+ _cJSON_free ??=
+ _dylib.lookupFunction<_c_cJSON_free, _dart_cJSON_free>('cJSON_free');
+ return _cJSON_free(
+ object,
+ );
+ }
+
+ _dart_cJSON_free _cJSON_free;
}
class cJSON extends ffi.Struct {
@@ -32,43 +1057,16 @@
ffi.Pointer<ffi.Int8> string;
}
-typedef _typedefC_1 = ffi.Pointer<ffi.Void> Function(
- ffi.Uint64,
-);
-
-typedef _typedefC_2 = ffi.Void Function(
- ffi.Pointer<ffi.Void>,
-);
-
class cJSON_Hooks extends ffi.Struct {
ffi.Pointer<ffi.NativeFunction<_typedefC_1>> malloc_fn;
ffi.Pointer<ffi.NativeFunction<_typedefC_2>> free_fn;
}
-ffi.Pointer<ffi.Int8> cJSON_Version() {
- return _cJSON_Version();
-}
-
-final _dart_cJSON_Version _cJSON_Version = _dylib
- .lookupFunction<_c_cJSON_Version, _dart_cJSON_Version>('cJSON_Version');
-
typedef _c_cJSON_Version = ffi.Pointer<ffi.Int8> Function();
typedef _dart_cJSON_Version = ffi.Pointer<ffi.Int8> Function();
-void cJSON_InitHooks(
- ffi.Pointer<cJSON_Hooks> hooks,
-) {
- return _cJSON_InitHooks(
- hooks,
- );
-}
-
-final _dart_cJSON_InitHooks _cJSON_InitHooks =
- _dylib.lookupFunction<_c_cJSON_InitHooks, _dart_cJSON_InitHooks>(
- 'cJSON_InitHooks');
-
typedef _c_cJSON_InitHooks = ffi.Void Function(
ffi.Pointer<cJSON_Hooks> hooks,
);
@@ -77,17 +1075,6 @@
ffi.Pointer<cJSON_Hooks> hooks,
);
-ffi.Pointer<cJSON> cJSON_Parse(
- ffi.Pointer<ffi.Int8> value,
-) {
- return _cJSON_Parse(
- value,
- );
-}
-
-final _dart_cJSON_Parse _cJSON_Parse =
- _dylib.lookupFunction<_c_cJSON_Parse, _dart_cJSON_Parse>('cJSON_Parse');
-
typedef _c_cJSON_Parse = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Int8> value,
);
@@ -96,22 +1083,6 @@
ffi.Pointer<ffi.Int8> value,
);
-ffi.Pointer<cJSON> cJSON_ParseWithOpts(
- ffi.Pointer<ffi.Int8> value,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> return_parse_end,
- int require_null_terminated,
-) {
- return _cJSON_ParseWithOpts(
- value,
- return_parse_end,
- require_null_terminated,
- );
-}
-
-final _dart_cJSON_ParseWithOpts _cJSON_ParseWithOpts =
- _dylib.lookupFunction<_c_cJSON_ParseWithOpts, _dart_cJSON_ParseWithOpts>(
- 'cJSON_ParseWithOpts');
-
typedef _c_cJSON_ParseWithOpts = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Int8> value,
ffi.Pointer<ffi.Pointer<ffi.Int8>> return_parse_end,
@@ -124,17 +1095,6 @@
int require_null_terminated,
);
-ffi.Pointer<ffi.Int8> cJSON_Print(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_Print(
- item,
- );
-}
-
-final _dart_cJSON_Print _cJSON_Print =
- _dylib.lookupFunction<_c_cJSON_Print, _dart_cJSON_Print>('cJSON_Print');
-
typedef _c_cJSON_Print = ffi.Pointer<ffi.Int8> Function(
ffi.Pointer<cJSON> item,
);
@@ -143,18 +1103,6 @@
ffi.Pointer<cJSON> item,
);
-ffi.Pointer<ffi.Int8> cJSON_PrintUnformatted(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_PrintUnformatted(
- item,
- );
-}
-
-final _dart_cJSON_PrintUnformatted _cJSON_PrintUnformatted = _dylib
- .lookupFunction<_c_cJSON_PrintUnformatted, _dart_cJSON_PrintUnformatted>(
- 'cJSON_PrintUnformatted');
-
typedef _c_cJSON_PrintUnformatted = ffi.Pointer<ffi.Int8> Function(
ffi.Pointer<cJSON> item,
);
@@ -163,22 +1111,6 @@
ffi.Pointer<cJSON> item,
);
-ffi.Pointer<ffi.Int8> cJSON_PrintBuffered(
- ffi.Pointer<cJSON> item,
- int prebuffer,
- int fmt,
-) {
- return _cJSON_PrintBuffered(
- item,
- prebuffer,
- fmt,
- );
-}
-
-final _dart_cJSON_PrintBuffered _cJSON_PrintBuffered =
- _dylib.lookupFunction<_c_cJSON_PrintBuffered, _dart_cJSON_PrintBuffered>(
- 'cJSON_PrintBuffered');
-
typedef _c_cJSON_PrintBuffered = ffi.Pointer<ffi.Int8> Function(
ffi.Pointer<cJSON> item,
ffi.Int32 prebuffer,
@@ -191,24 +1123,6 @@
int fmt,
);
-int cJSON_PrintPreallocated(
- ffi.Pointer<cJSON> item,
- ffi.Pointer<ffi.Int8> buffer,
- int length,
- int format,
-) {
- return _cJSON_PrintPreallocated(
- item,
- buffer,
- length,
- format,
- );
-}
-
-final _dart_cJSON_PrintPreallocated _cJSON_PrintPreallocated = _dylib
- .lookupFunction<_c_cJSON_PrintPreallocated, _dart_cJSON_PrintPreallocated>(
- 'cJSON_PrintPreallocated');
-
typedef _c_cJSON_PrintPreallocated = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
ffi.Pointer<ffi.Int8> buffer,
@@ -223,17 +1137,6 @@
int format,
);
-void cJSON_Delete(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_Delete(
- item,
- );
-}
-
-final _dart_cJSON_Delete _cJSON_Delete =
- _dylib.lookupFunction<_c_cJSON_Delete, _dart_cJSON_Delete>('cJSON_Delete');
-
typedef _c_cJSON_Delete = ffi.Void Function(
ffi.Pointer<cJSON> item,
);
@@ -242,18 +1145,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_GetArraySize(
- ffi.Pointer<cJSON> array,
-) {
- return _cJSON_GetArraySize(
- array,
- );
-}
-
-final _dart_cJSON_GetArraySize _cJSON_GetArraySize =
- _dylib.lookupFunction<_c_cJSON_GetArraySize, _dart_cJSON_GetArraySize>(
- 'cJSON_GetArraySize');
-
typedef _c_cJSON_GetArraySize = ffi.Int32 Function(
ffi.Pointer<cJSON> array,
);
@@ -262,20 +1153,6 @@
ffi.Pointer<cJSON> array,
);
-ffi.Pointer<cJSON> cJSON_GetArrayItem(
- ffi.Pointer<cJSON> array,
- int index,
-) {
- return _cJSON_GetArrayItem(
- array,
- index,
- );
-}
-
-final _dart_cJSON_GetArrayItem _cJSON_GetArrayItem =
- _dylib.lookupFunction<_c_cJSON_GetArrayItem, _dart_cJSON_GetArrayItem>(
- 'cJSON_GetArrayItem');
-
typedef _c_cJSON_GetArrayItem = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> array,
ffi.Int32 index,
@@ -286,20 +1163,6 @@
int index,
);
-ffi.Pointer<cJSON> cJSON_GetObjectItem(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_GetObjectItem(
- object,
- string,
- );
-}
-
-final _dart_cJSON_GetObjectItem _cJSON_GetObjectItem =
- _dylib.lookupFunction<_c_cJSON_GetObjectItem, _dart_cJSON_GetObjectItem>(
- 'cJSON_GetObjectItem');
-
typedef _c_cJSON_GetObjectItem = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -310,21 +1173,6 @@
ffi.Pointer<ffi.Int8> string,
);
-ffi.Pointer<cJSON> cJSON_GetObjectItemCaseSensitive(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_GetObjectItemCaseSensitive(
- object,
- string,
- );
-}
-
-final _dart_cJSON_GetObjectItemCaseSensitive _cJSON_GetObjectItemCaseSensitive =
- _dylib.lookupFunction<_c_cJSON_GetObjectItemCaseSensitive,
- _dart_cJSON_GetObjectItemCaseSensitive>(
- 'cJSON_GetObjectItemCaseSensitive');
-
typedef _c_cJSON_GetObjectItemCaseSensitive = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -335,20 +1183,6 @@
ffi.Pointer<ffi.Int8> string,
);
-int cJSON_HasObjectItem(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_HasObjectItem(
- object,
- string,
- );
-}
-
-final _dart_cJSON_HasObjectItem _cJSON_HasObjectItem =
- _dylib.lookupFunction<_c_cJSON_HasObjectItem, _dart_cJSON_HasObjectItem>(
- 'cJSON_HasObjectItem');
-
typedef _c_cJSON_HasObjectItem = ffi.Int32 Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -359,30 +1193,10 @@
ffi.Pointer<ffi.Int8> string,
);
-ffi.Pointer<ffi.Int8> cJSON_GetErrorPtr() {
- return _cJSON_GetErrorPtr();
-}
-
-final _dart_cJSON_GetErrorPtr _cJSON_GetErrorPtr =
- _dylib.lookupFunction<_c_cJSON_GetErrorPtr, _dart_cJSON_GetErrorPtr>(
- 'cJSON_GetErrorPtr');
-
typedef _c_cJSON_GetErrorPtr = ffi.Pointer<ffi.Int8> Function();
typedef _dart_cJSON_GetErrorPtr = ffi.Pointer<ffi.Int8> Function();
-ffi.Pointer<ffi.Int8> cJSON_GetStringValue(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_GetStringValue(
- item,
- );
-}
-
-final _dart_cJSON_GetStringValue _cJSON_GetStringValue =
- _dylib.lookupFunction<_c_cJSON_GetStringValue, _dart_cJSON_GetStringValue>(
- 'cJSON_GetStringValue');
-
typedef _c_cJSON_GetStringValue = ffi.Pointer<ffi.Int8> Function(
ffi.Pointer<cJSON> item,
);
@@ -391,18 +1205,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsInvalid(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsInvalid(
- item,
- );
-}
-
-final _dart_cJSON_IsInvalid _cJSON_IsInvalid =
- _dylib.lookupFunction<_c_cJSON_IsInvalid, _dart_cJSON_IsInvalid>(
- 'cJSON_IsInvalid');
-
typedef _c_cJSON_IsInvalid = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -411,17 +1213,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsFalse(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsFalse(
- item,
- );
-}
-
-final _dart_cJSON_IsFalse _cJSON_IsFalse = _dylib
- .lookupFunction<_c_cJSON_IsFalse, _dart_cJSON_IsFalse>('cJSON_IsFalse');
-
typedef _c_cJSON_IsFalse = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -430,17 +1221,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsTrue(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsTrue(
- item,
- );
-}
-
-final _dart_cJSON_IsTrue _cJSON_IsTrue =
- _dylib.lookupFunction<_c_cJSON_IsTrue, _dart_cJSON_IsTrue>('cJSON_IsTrue');
-
typedef _c_cJSON_IsTrue = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -449,17 +1229,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsBool(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsBool(
- item,
- );
-}
-
-final _dart_cJSON_IsBool _cJSON_IsBool =
- _dylib.lookupFunction<_c_cJSON_IsBool, _dart_cJSON_IsBool>('cJSON_IsBool');
-
typedef _c_cJSON_IsBool = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -468,17 +1237,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsNull(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsNull(
- item,
- );
-}
-
-final _dart_cJSON_IsNull _cJSON_IsNull =
- _dylib.lookupFunction<_c_cJSON_IsNull, _dart_cJSON_IsNull>('cJSON_IsNull');
-
typedef _c_cJSON_IsNull = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -487,17 +1245,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsNumber(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsNumber(
- item,
- );
-}
-
-final _dart_cJSON_IsNumber _cJSON_IsNumber = _dylib
- .lookupFunction<_c_cJSON_IsNumber, _dart_cJSON_IsNumber>('cJSON_IsNumber');
-
typedef _c_cJSON_IsNumber = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -506,17 +1253,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsString(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsString(
- item,
- );
-}
-
-final _dart_cJSON_IsString _cJSON_IsString = _dylib
- .lookupFunction<_c_cJSON_IsString, _dart_cJSON_IsString>('cJSON_IsString');
-
typedef _c_cJSON_IsString = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -525,17 +1261,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsArray(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsArray(
- item,
- );
-}
-
-final _dart_cJSON_IsArray _cJSON_IsArray = _dylib
- .lookupFunction<_c_cJSON_IsArray, _dart_cJSON_IsArray>('cJSON_IsArray');
-
typedef _c_cJSON_IsArray = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -544,17 +1269,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsObject(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsObject(
- item,
- );
-}
-
-final _dart_cJSON_IsObject _cJSON_IsObject = _dylib
- .lookupFunction<_c_cJSON_IsObject, _dart_cJSON_IsObject>('cJSON_IsObject');
-
typedef _c_cJSON_IsObject = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -563,17 +1277,6 @@
ffi.Pointer<cJSON> item,
);
-int cJSON_IsRaw(
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_IsRaw(
- item,
- );
-}
-
-final _dart_cJSON_IsRaw _cJSON_IsRaw =
- _dylib.lookupFunction<_c_cJSON_IsRaw, _dart_cJSON_IsRaw>('cJSON_IsRaw');
-
typedef _c_cJSON_IsRaw = ffi.Int32 Function(
ffi.Pointer<cJSON> item,
);
@@ -582,54 +1285,18 @@
ffi.Pointer<cJSON> item,
);
-ffi.Pointer<cJSON> cJSON_CreateNull() {
- return _cJSON_CreateNull();
-}
-
-final _dart_cJSON_CreateNull _cJSON_CreateNull =
- _dylib.lookupFunction<_c_cJSON_CreateNull, _dart_cJSON_CreateNull>(
- 'cJSON_CreateNull');
-
typedef _c_cJSON_CreateNull = ffi.Pointer<cJSON> Function();
typedef _dart_cJSON_CreateNull = ffi.Pointer<cJSON> Function();
-ffi.Pointer<cJSON> cJSON_CreateTrue() {
- return _cJSON_CreateTrue();
-}
-
-final _dart_cJSON_CreateTrue _cJSON_CreateTrue =
- _dylib.lookupFunction<_c_cJSON_CreateTrue, _dart_cJSON_CreateTrue>(
- 'cJSON_CreateTrue');
-
typedef _c_cJSON_CreateTrue = ffi.Pointer<cJSON> Function();
typedef _dart_cJSON_CreateTrue = ffi.Pointer<cJSON> Function();
-ffi.Pointer<cJSON> cJSON_CreateFalse() {
- return _cJSON_CreateFalse();
-}
-
-final _dart_cJSON_CreateFalse _cJSON_CreateFalse =
- _dylib.lookupFunction<_c_cJSON_CreateFalse, _dart_cJSON_CreateFalse>(
- 'cJSON_CreateFalse');
-
typedef _c_cJSON_CreateFalse = ffi.Pointer<cJSON> Function();
typedef _dart_cJSON_CreateFalse = ffi.Pointer<cJSON> Function();
-ffi.Pointer<cJSON> cJSON_CreateBool(
- int boolean,
-) {
- return _cJSON_CreateBool(
- boolean,
- );
-}
-
-final _dart_cJSON_CreateBool _cJSON_CreateBool =
- _dylib.lookupFunction<_c_cJSON_CreateBool, _dart_cJSON_CreateBool>(
- 'cJSON_CreateBool');
-
typedef _c_cJSON_CreateBool = ffi.Pointer<cJSON> Function(
ffi.Int32 boolean,
);
@@ -638,18 +1305,6 @@
int boolean,
);
-ffi.Pointer<cJSON> cJSON_CreateNumber(
- double num,
-) {
- return _cJSON_CreateNumber(
- num,
- );
-}
-
-final _dart_cJSON_CreateNumber _cJSON_CreateNumber =
- _dylib.lookupFunction<_c_cJSON_CreateNumber, _dart_cJSON_CreateNumber>(
- 'cJSON_CreateNumber');
-
typedef _c_cJSON_CreateNumber = ffi.Pointer<cJSON> Function(
ffi.Double num,
);
@@ -658,18 +1313,6 @@
double num,
);
-ffi.Pointer<cJSON> cJSON_CreateString(
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_CreateString(
- string,
- );
-}
-
-final _dart_cJSON_CreateString _cJSON_CreateString =
- _dylib.lookupFunction<_c_cJSON_CreateString, _dart_cJSON_CreateString>(
- 'cJSON_CreateString');
-
typedef _c_cJSON_CreateString = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Int8> string,
);
@@ -678,18 +1321,6 @@
ffi.Pointer<ffi.Int8> string,
);
-ffi.Pointer<cJSON> cJSON_CreateRaw(
- ffi.Pointer<ffi.Int8> raw,
-) {
- return _cJSON_CreateRaw(
- raw,
- );
-}
-
-final _dart_cJSON_CreateRaw _cJSON_CreateRaw =
- _dylib.lookupFunction<_c_cJSON_CreateRaw, _dart_cJSON_CreateRaw>(
- 'cJSON_CreateRaw');
-
typedef _c_cJSON_CreateRaw = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Int8> raw,
);
@@ -698,42 +1329,14 @@
ffi.Pointer<ffi.Int8> raw,
);
-ffi.Pointer<cJSON> cJSON_CreateArray() {
- return _cJSON_CreateArray();
-}
-
-final _dart_cJSON_CreateArray _cJSON_CreateArray =
- _dylib.lookupFunction<_c_cJSON_CreateArray, _dart_cJSON_CreateArray>(
- 'cJSON_CreateArray');
-
typedef _c_cJSON_CreateArray = ffi.Pointer<cJSON> Function();
typedef _dart_cJSON_CreateArray = ffi.Pointer<cJSON> Function();
-ffi.Pointer<cJSON> cJSON_CreateObject() {
- return _cJSON_CreateObject();
-}
-
-final _dart_cJSON_CreateObject _cJSON_CreateObject =
- _dylib.lookupFunction<_c_cJSON_CreateObject, _dart_cJSON_CreateObject>(
- 'cJSON_CreateObject');
-
typedef _c_cJSON_CreateObject = ffi.Pointer<cJSON> Function();
typedef _dart_cJSON_CreateObject = ffi.Pointer<cJSON> Function();
-ffi.Pointer<cJSON> cJSON_CreateStringReference(
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_CreateStringReference(
- string,
- );
-}
-
-final _dart_cJSON_CreateStringReference _cJSON_CreateStringReference =
- _dylib.lookupFunction<_c_cJSON_CreateStringReference,
- _dart_cJSON_CreateStringReference>('cJSON_CreateStringReference');
-
typedef _c_cJSON_CreateStringReference = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Int8> string,
);
@@ -742,18 +1345,6 @@
ffi.Pointer<ffi.Int8> string,
);
-ffi.Pointer<cJSON> cJSON_CreateObjectReference(
- ffi.Pointer<cJSON> child,
-) {
- return _cJSON_CreateObjectReference(
- child,
- );
-}
-
-final _dart_cJSON_CreateObjectReference _cJSON_CreateObjectReference =
- _dylib.lookupFunction<_c_cJSON_CreateObjectReference,
- _dart_cJSON_CreateObjectReference>('cJSON_CreateObjectReference');
-
typedef _c_cJSON_CreateObjectReference = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> child,
);
@@ -762,18 +1353,6 @@
ffi.Pointer<cJSON> child,
);
-ffi.Pointer<cJSON> cJSON_CreateArrayReference(
- ffi.Pointer<cJSON> child,
-) {
- return _cJSON_CreateArrayReference(
- child,
- );
-}
-
-final _dart_cJSON_CreateArrayReference _cJSON_CreateArrayReference =
- _dylib.lookupFunction<_c_cJSON_CreateArrayReference,
- _dart_cJSON_CreateArrayReference>('cJSON_CreateArrayReference');
-
typedef _c_cJSON_CreateArrayReference = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> child,
);
@@ -782,20 +1361,6 @@
ffi.Pointer<cJSON> child,
);
-ffi.Pointer<cJSON> cJSON_CreateIntArray(
- ffi.Pointer<ffi.Int32> numbers,
- int count,
-) {
- return _cJSON_CreateIntArray(
- numbers,
- count,
- );
-}
-
-final _dart_cJSON_CreateIntArray _cJSON_CreateIntArray =
- _dylib.lookupFunction<_c_cJSON_CreateIntArray, _dart_cJSON_CreateIntArray>(
- 'cJSON_CreateIntArray');
-
typedef _c_cJSON_CreateIntArray = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Int32> numbers,
ffi.Int32 count,
@@ -806,20 +1371,6 @@
int count,
);
-ffi.Pointer<cJSON> cJSON_CreateFloatArray(
- ffi.Pointer<ffi.Float> numbers,
- int count,
-) {
- return _cJSON_CreateFloatArray(
- numbers,
- count,
- );
-}
-
-final _dart_cJSON_CreateFloatArray _cJSON_CreateFloatArray = _dylib
- .lookupFunction<_c_cJSON_CreateFloatArray, _dart_cJSON_CreateFloatArray>(
- 'cJSON_CreateFloatArray');
-
typedef _c_cJSON_CreateFloatArray = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Float> numbers,
ffi.Int32 count,
@@ -830,20 +1381,6 @@
int count,
);
-ffi.Pointer<cJSON> cJSON_CreateDoubleArray(
- ffi.Pointer<ffi.Double> numbers,
- int count,
-) {
- return _cJSON_CreateDoubleArray(
- numbers,
- count,
- );
-}
-
-final _dart_cJSON_CreateDoubleArray _cJSON_CreateDoubleArray = _dylib
- .lookupFunction<_c_cJSON_CreateDoubleArray, _dart_cJSON_CreateDoubleArray>(
- 'cJSON_CreateDoubleArray');
-
typedef _c_cJSON_CreateDoubleArray = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Double> numbers,
ffi.Int32 count,
@@ -854,20 +1391,6 @@
int count,
);
-ffi.Pointer<cJSON> cJSON_CreateStringArray(
- ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
- int count,
-) {
- return _cJSON_CreateStringArray(
- strings,
- count,
- );
-}
-
-final _dart_cJSON_CreateStringArray _cJSON_CreateStringArray = _dylib
- .lookupFunction<_c_cJSON_CreateStringArray, _dart_cJSON_CreateStringArray>(
- 'cJSON_CreateStringArray');
-
typedef _c_cJSON_CreateStringArray = ffi.Pointer<cJSON> Function(
ffi.Pointer<ffi.Pointer<ffi.Int8>> strings,
ffi.Int32 count,
@@ -878,20 +1401,6 @@
int count,
);
-void cJSON_AddItemToArray(
- ffi.Pointer<cJSON> array,
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_AddItemToArray(
- array,
- item,
- );
-}
-
-final _dart_cJSON_AddItemToArray _cJSON_AddItemToArray =
- _dylib.lookupFunction<_c_cJSON_AddItemToArray, _dart_cJSON_AddItemToArray>(
- 'cJSON_AddItemToArray');
-
typedef _c_cJSON_AddItemToArray = ffi.Void Function(
ffi.Pointer<cJSON> array,
ffi.Pointer<cJSON> item,
@@ -902,22 +1411,6 @@
ffi.Pointer<cJSON> item,
);
-void cJSON_AddItemToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_AddItemToObject(
- object,
- string,
- item,
- );
-}
-
-final _dart_cJSON_AddItemToObject _cJSON_AddItemToObject = _dylib
- .lookupFunction<_c_cJSON_AddItemToObject, _dart_cJSON_AddItemToObject>(
- 'cJSON_AddItemToObject');
-
typedef _c_cJSON_AddItemToObject = ffi.Void Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -930,22 +1423,6 @@
ffi.Pointer<cJSON> item,
);
-void cJSON_AddItemToObjectCS(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_AddItemToObjectCS(
- object,
- string,
- item,
- );
-}
-
-final _dart_cJSON_AddItemToObjectCS _cJSON_AddItemToObjectCS = _dylib
- .lookupFunction<_c_cJSON_AddItemToObjectCS, _dart_cJSON_AddItemToObjectCS>(
- 'cJSON_AddItemToObjectCS');
-
typedef _c_cJSON_AddItemToObjectCS = ffi.Void Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -958,20 +1435,6 @@
ffi.Pointer<cJSON> item,
);
-void cJSON_AddItemReferenceToArray(
- ffi.Pointer<cJSON> array,
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_AddItemReferenceToArray(
- array,
- item,
- );
-}
-
-final _dart_cJSON_AddItemReferenceToArray _cJSON_AddItemReferenceToArray =
- _dylib.lookupFunction<_c_cJSON_AddItemReferenceToArray,
- _dart_cJSON_AddItemReferenceToArray>('cJSON_AddItemReferenceToArray');
-
typedef _c_cJSON_AddItemReferenceToArray = ffi.Void Function(
ffi.Pointer<cJSON> array,
ffi.Pointer<cJSON> item,
@@ -982,22 +1445,6 @@
ffi.Pointer<cJSON> item,
);
-void cJSON_AddItemReferenceToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_AddItemReferenceToObject(
- object,
- string,
- item,
- );
-}
-
-final _dart_cJSON_AddItemReferenceToObject _cJSON_AddItemReferenceToObject =
- _dylib.lookupFunction<_c_cJSON_AddItemReferenceToObject,
- _dart_cJSON_AddItemReferenceToObject>('cJSON_AddItemReferenceToObject');
-
typedef _c_cJSON_AddItemReferenceToObject = ffi.Void Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -1010,20 +1457,6 @@
ffi.Pointer<cJSON> item,
);
-ffi.Pointer<cJSON> cJSON_DetachItemViaPointer(
- ffi.Pointer<cJSON> parent,
- ffi.Pointer<cJSON> item,
-) {
- return _cJSON_DetachItemViaPointer(
- parent,
- item,
- );
-}
-
-final _dart_cJSON_DetachItemViaPointer _cJSON_DetachItemViaPointer =
- _dylib.lookupFunction<_c_cJSON_DetachItemViaPointer,
- _dart_cJSON_DetachItemViaPointer>('cJSON_DetachItemViaPointer');
-
typedef _c_cJSON_DetachItemViaPointer = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> parent,
ffi.Pointer<cJSON> item,
@@ -1034,20 +1467,6 @@
ffi.Pointer<cJSON> item,
);
-ffi.Pointer<cJSON> cJSON_DetachItemFromArray(
- ffi.Pointer<cJSON> array,
- int which,
-) {
- return _cJSON_DetachItemFromArray(
- array,
- which,
- );
-}
-
-final _dart_cJSON_DetachItemFromArray _cJSON_DetachItemFromArray =
- _dylib.lookupFunction<_c_cJSON_DetachItemFromArray,
- _dart_cJSON_DetachItemFromArray>('cJSON_DetachItemFromArray');
-
typedef _c_cJSON_DetachItemFromArray = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> array,
ffi.Int32 which,
@@ -1058,20 +1477,6 @@
int which,
);
-void cJSON_DeleteItemFromArray(
- ffi.Pointer<cJSON> array,
- int which,
-) {
- return _cJSON_DeleteItemFromArray(
- array,
- which,
- );
-}
-
-final _dart_cJSON_DeleteItemFromArray _cJSON_DeleteItemFromArray =
- _dylib.lookupFunction<_c_cJSON_DeleteItemFromArray,
- _dart_cJSON_DeleteItemFromArray>('cJSON_DeleteItemFromArray');
-
typedef _c_cJSON_DeleteItemFromArray = ffi.Void Function(
ffi.Pointer<cJSON> array,
ffi.Int32 which,
@@ -1082,20 +1487,6 @@
int which,
);
-ffi.Pointer<cJSON> cJSON_DetachItemFromObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_DetachItemFromObject(
- object,
- string,
- );
-}
-
-final _dart_cJSON_DetachItemFromObject _cJSON_DetachItemFromObject =
- _dylib.lookupFunction<_c_cJSON_DetachItemFromObject,
- _dart_cJSON_DetachItemFromObject>('cJSON_DetachItemFromObject');
-
typedef _c_cJSON_DetachItemFromObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -1106,22 +1497,6 @@
ffi.Pointer<ffi.Int8> string,
);
-ffi.Pointer<cJSON> cJSON_DetachItemFromObjectCaseSensitive(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_DetachItemFromObjectCaseSensitive(
- object,
- string,
- );
-}
-
-final _dart_cJSON_DetachItemFromObjectCaseSensitive
- _cJSON_DetachItemFromObjectCaseSensitive = _dylib.lookupFunction<
- _c_cJSON_DetachItemFromObjectCaseSensitive,
- _dart_cJSON_DetachItemFromObjectCaseSensitive>(
- 'cJSON_DetachItemFromObjectCaseSensitive');
-
typedef _c_cJSON_DetachItemFromObjectCaseSensitive = ffi.Pointer<cJSON>
Function(
ffi.Pointer<cJSON> object,
@@ -1134,20 +1509,6 @@
ffi.Pointer<ffi.Int8> string,
);
-void cJSON_DeleteItemFromObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_DeleteItemFromObject(
- object,
- string,
- );
-}
-
-final _dart_cJSON_DeleteItemFromObject _cJSON_DeleteItemFromObject =
- _dylib.lookupFunction<_c_cJSON_DeleteItemFromObject,
- _dart_cJSON_DeleteItemFromObject>('cJSON_DeleteItemFromObject');
-
typedef _c_cJSON_DeleteItemFromObject = ffi.Void Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -1158,22 +1519,6 @@
ffi.Pointer<ffi.Int8> string,
);
-void cJSON_DeleteItemFromObjectCaseSensitive(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_DeleteItemFromObjectCaseSensitive(
- object,
- string,
- );
-}
-
-final _dart_cJSON_DeleteItemFromObjectCaseSensitive
- _cJSON_DeleteItemFromObjectCaseSensitive = _dylib.lookupFunction<
- _c_cJSON_DeleteItemFromObjectCaseSensitive,
- _dart_cJSON_DeleteItemFromObjectCaseSensitive>(
- 'cJSON_DeleteItemFromObjectCaseSensitive');
-
typedef _c_cJSON_DeleteItemFromObjectCaseSensitive = ffi.Void Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -1184,22 +1529,6 @@
ffi.Pointer<ffi.Int8> string,
);
-void cJSON_InsertItemInArray(
- ffi.Pointer<cJSON> array,
- int which,
- ffi.Pointer<cJSON> newitem,
-) {
- return _cJSON_InsertItemInArray(
- array,
- which,
- newitem,
- );
-}
-
-final _dart_cJSON_InsertItemInArray _cJSON_InsertItemInArray = _dylib
- .lookupFunction<_c_cJSON_InsertItemInArray, _dart_cJSON_InsertItemInArray>(
- 'cJSON_InsertItemInArray');
-
typedef _c_cJSON_InsertItemInArray = ffi.Void Function(
ffi.Pointer<cJSON> array,
ffi.Int32 which,
@@ -1212,22 +1541,6 @@
ffi.Pointer<cJSON> newitem,
);
-int cJSON_ReplaceItemViaPointer(
- ffi.Pointer<cJSON> parent,
- ffi.Pointer<cJSON> item,
- ffi.Pointer<cJSON> replacement,
-) {
- return _cJSON_ReplaceItemViaPointer(
- parent,
- item,
- replacement,
- );
-}
-
-final _dart_cJSON_ReplaceItemViaPointer _cJSON_ReplaceItemViaPointer =
- _dylib.lookupFunction<_c_cJSON_ReplaceItemViaPointer,
- _dart_cJSON_ReplaceItemViaPointer>('cJSON_ReplaceItemViaPointer');
-
typedef _c_cJSON_ReplaceItemViaPointer = ffi.Int32 Function(
ffi.Pointer<cJSON> parent,
ffi.Pointer<cJSON> item,
@@ -1240,22 +1553,6 @@
ffi.Pointer<cJSON> replacement,
);
-void cJSON_ReplaceItemInArray(
- ffi.Pointer<cJSON> array,
- int which,
- ffi.Pointer<cJSON> newitem,
-) {
- return _cJSON_ReplaceItemInArray(
- array,
- which,
- newitem,
- );
-}
-
-final _dart_cJSON_ReplaceItemInArray _cJSON_ReplaceItemInArray =
- _dylib.lookupFunction<_c_cJSON_ReplaceItemInArray,
- _dart_cJSON_ReplaceItemInArray>('cJSON_ReplaceItemInArray');
-
typedef _c_cJSON_ReplaceItemInArray = ffi.Void Function(
ffi.Pointer<cJSON> array,
ffi.Int32 which,
@@ -1268,22 +1565,6 @@
ffi.Pointer<cJSON> newitem,
);
-void cJSON_ReplaceItemInObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
- ffi.Pointer<cJSON> newitem,
-) {
- return _cJSON_ReplaceItemInObject(
- object,
- string,
- newitem,
- );
-}
-
-final _dart_cJSON_ReplaceItemInObject _cJSON_ReplaceItemInObject =
- _dylib.lookupFunction<_c_cJSON_ReplaceItemInObject,
- _dart_cJSON_ReplaceItemInObject>('cJSON_ReplaceItemInObject');
-
typedef _c_cJSON_ReplaceItemInObject = ffi.Void Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -1296,24 +1577,6 @@
ffi.Pointer<cJSON> newitem,
);
-void cJSON_ReplaceItemInObjectCaseSensitive(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> string,
- ffi.Pointer<cJSON> newitem,
-) {
- return _cJSON_ReplaceItemInObjectCaseSensitive(
- object,
- string,
- newitem,
- );
-}
-
-final _dart_cJSON_ReplaceItemInObjectCaseSensitive
- _cJSON_ReplaceItemInObjectCaseSensitive = _dylib.lookupFunction<
- _c_cJSON_ReplaceItemInObjectCaseSensitive,
- _dart_cJSON_ReplaceItemInObjectCaseSensitive>(
- 'cJSON_ReplaceItemInObjectCaseSensitive');
-
typedef _c_cJSON_ReplaceItemInObjectCaseSensitive = ffi.Void Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> string,
@@ -1326,20 +1589,6 @@
ffi.Pointer<cJSON> newitem,
);
-ffi.Pointer<cJSON> cJSON_Duplicate(
- ffi.Pointer<cJSON> item,
- int recurse,
-) {
- return _cJSON_Duplicate(
- item,
- recurse,
- );
-}
-
-final _dart_cJSON_Duplicate _cJSON_Duplicate =
- _dylib.lookupFunction<_c_cJSON_Duplicate, _dart_cJSON_Duplicate>(
- 'cJSON_Duplicate');
-
typedef _c_cJSON_Duplicate = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> item,
ffi.Int32 recurse,
@@ -1350,21 +1599,6 @@
int recurse,
);
-int cJSON_Compare(
- ffi.Pointer<cJSON> a,
- ffi.Pointer<cJSON> b,
- int case_sensitive,
-) {
- return _cJSON_Compare(
- a,
- b,
- case_sensitive,
- );
-}
-
-final _dart_cJSON_Compare _cJSON_Compare = _dylib
- .lookupFunction<_c_cJSON_Compare, _dart_cJSON_Compare>('cJSON_Compare');
-
typedef _c_cJSON_Compare = ffi.Int32 Function(
ffi.Pointer<cJSON> a,
ffi.Pointer<cJSON> b,
@@ -1377,17 +1611,6 @@
int case_sensitive,
);
-void cJSON_Minify(
- ffi.Pointer<ffi.Int8> json,
-) {
- return _cJSON_Minify(
- json,
- );
-}
-
-final _dart_cJSON_Minify _cJSON_Minify =
- _dylib.lookupFunction<_c_cJSON_Minify, _dart_cJSON_Minify>('cJSON_Minify');
-
typedef _c_cJSON_Minify = ffi.Void Function(
ffi.Pointer<ffi.Int8> json,
);
@@ -1396,20 +1619,6 @@
ffi.Pointer<ffi.Int8> json,
);
-ffi.Pointer<cJSON> cJSON_AddNullToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
-) {
- return _cJSON_AddNullToObject(
- object,
- name,
- );
-}
-
-final _dart_cJSON_AddNullToObject _cJSON_AddNullToObject = _dylib
- .lookupFunction<_c_cJSON_AddNullToObject, _dart_cJSON_AddNullToObject>(
- 'cJSON_AddNullToObject');
-
typedef _c_cJSON_AddNullToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1420,20 +1629,6 @@
ffi.Pointer<ffi.Int8> name,
);
-ffi.Pointer<cJSON> cJSON_AddTrueToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
-) {
- return _cJSON_AddTrueToObject(
- object,
- name,
- );
-}
-
-final _dart_cJSON_AddTrueToObject _cJSON_AddTrueToObject = _dylib
- .lookupFunction<_c_cJSON_AddTrueToObject, _dart_cJSON_AddTrueToObject>(
- 'cJSON_AddTrueToObject');
-
typedef _c_cJSON_AddTrueToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1444,20 +1639,6 @@
ffi.Pointer<ffi.Int8> name,
);
-ffi.Pointer<cJSON> cJSON_AddFalseToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
-) {
- return _cJSON_AddFalseToObject(
- object,
- name,
- );
-}
-
-final _dart_cJSON_AddFalseToObject _cJSON_AddFalseToObject = _dylib
- .lookupFunction<_c_cJSON_AddFalseToObject, _dart_cJSON_AddFalseToObject>(
- 'cJSON_AddFalseToObject');
-
typedef _c_cJSON_AddFalseToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1468,22 +1649,6 @@
ffi.Pointer<ffi.Int8> name,
);
-ffi.Pointer<cJSON> cJSON_AddBoolToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
- int boolean,
-) {
- return _cJSON_AddBoolToObject(
- object,
- name,
- boolean,
- );
-}
-
-final _dart_cJSON_AddBoolToObject _cJSON_AddBoolToObject = _dylib
- .lookupFunction<_c_cJSON_AddBoolToObject, _dart_cJSON_AddBoolToObject>(
- 'cJSON_AddBoolToObject');
-
typedef _c_cJSON_AddBoolToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1496,22 +1661,6 @@
int boolean,
);
-ffi.Pointer<cJSON> cJSON_AddNumberToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
- double number,
-) {
- return _cJSON_AddNumberToObject(
- object,
- name,
- number,
- );
-}
-
-final _dart_cJSON_AddNumberToObject _cJSON_AddNumberToObject = _dylib
- .lookupFunction<_c_cJSON_AddNumberToObject, _dart_cJSON_AddNumberToObject>(
- 'cJSON_AddNumberToObject');
-
typedef _c_cJSON_AddNumberToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1524,22 +1673,6 @@
double number,
);
-ffi.Pointer<cJSON> cJSON_AddStringToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
- ffi.Pointer<ffi.Int8> string,
-) {
- return _cJSON_AddStringToObject(
- object,
- name,
- string,
- );
-}
-
-final _dart_cJSON_AddStringToObject _cJSON_AddStringToObject = _dylib
- .lookupFunction<_c_cJSON_AddStringToObject, _dart_cJSON_AddStringToObject>(
- 'cJSON_AddStringToObject');
-
typedef _c_cJSON_AddStringToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1552,22 +1685,6 @@
ffi.Pointer<ffi.Int8> string,
);
-ffi.Pointer<cJSON> cJSON_AddRawToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
- ffi.Pointer<ffi.Int8> raw,
-) {
- return _cJSON_AddRawToObject(
- object,
- name,
- raw,
- );
-}
-
-final _dart_cJSON_AddRawToObject _cJSON_AddRawToObject =
- _dylib.lookupFunction<_c_cJSON_AddRawToObject, _dart_cJSON_AddRawToObject>(
- 'cJSON_AddRawToObject');
-
typedef _c_cJSON_AddRawToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1580,20 +1697,6 @@
ffi.Pointer<ffi.Int8> raw,
);
-ffi.Pointer<cJSON> cJSON_AddObjectToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
-) {
- return _cJSON_AddObjectToObject(
- object,
- name,
- );
-}
-
-final _dart_cJSON_AddObjectToObject _cJSON_AddObjectToObject = _dylib
- .lookupFunction<_c_cJSON_AddObjectToObject, _dart_cJSON_AddObjectToObject>(
- 'cJSON_AddObjectToObject');
-
typedef _c_cJSON_AddObjectToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1604,20 +1707,6 @@
ffi.Pointer<ffi.Int8> name,
);
-ffi.Pointer<cJSON> cJSON_AddArrayToObject(
- ffi.Pointer<cJSON> object,
- ffi.Pointer<ffi.Int8> name,
-) {
- return _cJSON_AddArrayToObject(
- object,
- name,
- );
-}
-
-final _dart_cJSON_AddArrayToObject _cJSON_AddArrayToObject = _dylib
- .lookupFunction<_c_cJSON_AddArrayToObject, _dart_cJSON_AddArrayToObject>(
- 'cJSON_AddArrayToObject');
-
typedef _c_cJSON_AddArrayToObject = ffi.Pointer<cJSON> Function(
ffi.Pointer<cJSON> object,
ffi.Pointer<ffi.Int8> name,
@@ -1628,20 +1717,6 @@
ffi.Pointer<ffi.Int8> name,
);
-double cJSON_SetNumberHelper(
- ffi.Pointer<cJSON> object,
- double number,
-) {
- return _cJSON_SetNumberHelper(
- object,
- number,
- );
-}
-
-final _dart_cJSON_SetNumberHelper _cJSON_SetNumberHelper = _dylib
- .lookupFunction<_c_cJSON_SetNumberHelper, _dart_cJSON_SetNumberHelper>(
- 'cJSON_SetNumberHelper');
-
typedef _c_cJSON_SetNumberHelper = ffi.Double Function(
ffi.Pointer<cJSON> object,
ffi.Double number,
@@ -1652,17 +1727,6 @@
double number,
);
-ffi.Pointer<ffi.Void> cJSON_malloc(
- int size,
-) {
- return _cJSON_malloc(
- size,
- );
-}
-
-final _dart_cJSON_malloc _cJSON_malloc =
- _dylib.lookupFunction<_c_cJSON_malloc, _dart_cJSON_malloc>('cJSON_malloc');
-
typedef _c_cJSON_malloc = ffi.Pointer<ffi.Void> Function(
ffi.Uint64 size,
);
@@ -1671,17 +1735,6 @@
int size,
);
-void cJSON_free(
- ffi.Pointer<ffi.Void> object,
-) {
- return _cJSON_free(
- object,
- );
-}
-
-final _dart_cJSON_free _cJSON_free =
- _dylib.lookupFunction<_c_cJSON_free, _dart_cJSON_free>('cJSON_free');
-
typedef _c_cJSON_free = ffi.Void Function(
ffi.Pointer<ffi.Void> object,
);
@@ -1689,3 +1742,11 @@
typedef _dart_cJSON_free = void Function(
ffi.Pointer<ffi.Void> object,
);
+
+typedef _typedefC_1 = ffi.Pointer<ffi.Void> Function(
+ ffi.Uint64,
+);
+
+typedef _typedefC_2 = ffi.Void Function(
+ ffi.Pointer<ffi.Void>,
+);
diff --git a/example/c_json/main.dart b/example/c_json/main.dart
index 22db183..fa4bbbc 100644
--- a/example/c_json/main.dart
+++ b/example/c_json/main.dart
@@ -8,13 +8,12 @@
import 'package:ffi/ffi.dart';
-import 'cjson_generated_bindings.dart' as cjson;
+import 'cjson_generated_bindings.dart' as cj;
+
+final cjson = cj.CJson(DynamicLibrary.open(_getPath()));
/// Using the generated C_JSON bindings.
void main() {
- // Initialise cjson bindings.
- cjson.init(DynamicLibrary.open(_getPath()));
-
// Load json from [example.json] file.
final jsonString = File('./example.json').readAsStringSync();
@@ -56,12 +55,12 @@
return path;
}
-dynamic convertCJsonToDartObj(Pointer<cjson.cJSON> parsedcjson) {
+dynamic convertCJsonToDartObj(Pointer<cj.cJSON> parsedcjson) {
dynamic obj;
if (cjson.cJSON_IsObject(parsedcjson.cast()) == 1) {
obj = <String, dynamic>{};
- Pointer<cjson.cJSON> ptr;
+ Pointer<cj.cJSON> ptr;
ptr = parsedcjson.ref.child;
while (ptr != nullptr) {
final dynamic o = convertCJsonToDartObj(ptr);
@@ -71,7 +70,7 @@
} else if (cjson.cJSON_IsArray(parsedcjson.cast()) == 1) {
obj = <dynamic>[];
- Pointer<cjson.cJSON> ptr;
+ Pointer<cj.cJSON> ptr;
ptr = parsedcjson.ref.child;
while (ptr != nullptr) {
final dynamic o = convertCJsonToDartObj(ptr);
diff --git a/example/c_json/pubspec.yaml b/example/c_json/pubspec.yaml
index 7e913b6..22d64ad 100644
--- a/example/c_json/pubspec.yaml
+++ b/example/c_json/pubspec.yaml
@@ -16,6 +16,8 @@
ffigen:
output: 'cjson_generated_bindings.dart'
+ name: 'CJson'
+ description: 'Holds bindings to cJSON.'
headers:
- '../../third_party/cjson_library/cJSON.h'
header-filter:
diff --git a/example/libclang-example/generated_bindings.dart b/example/libclang-example/generated_bindings.dart
index 6a0d1d3..eee8d52 100644
--- a/example/libclang-example/generated_bindings.dart
+++ b/example/libclang-example/generated_bindings.dart
@@ -4,140 +4,3004 @@
import 'dart:ffi' as ffi;
-/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+/// Holds bindings to LibClang.
+class LibClang {
+ /// Holds the Dynamic library.
+ final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary) {
- _dylib = dynamicLibrary;
+ /// The symbols are looked up in [dynamicLibrary].
+ LibClang(ffi.DynamicLibrary dynamicLibrary) : _dylib = dynamicLibrary;
+
+ /// Free the given string set.
+ void clang_disposeStringSet(
+ ffi.Pointer<CXStringSet> set,
+ ) {
+ _clang_disposeStringSet ??= _dylib.lookupFunction<_c_clang_disposeStringSet,
+ _dart_clang_disposeStringSet>('clang_disposeStringSet');
+ return _clang_disposeStringSet(
+ set,
+ );
+ }
+
+ _dart_clang_disposeStringSet _clang_disposeStringSet;
+
+ /// Provides a shared context for creating translation units.
+ ///
+ /// It provides two options:
+ ///
+ /// - excludeDeclarationsFromPCH: When non-zero, allows enumeration of "local"
+ /// declarations (when loading any new translation units). A "local" declaration
+ /// is one that belongs in the translation unit itself and not in a precompiled
+ /// header that was used by the translation unit. If zero, all declarations
+ /// will be enumerated.
+ ///
+ /// Here is an example:
+ ///
+ /// \code
+ /// // excludeDeclsFromPCH = 1, displayDiagnostics=1
+ /// Idx = clang_createIndex(1, 1);
+ ///
+ /// // IndexTest.pch was produced with the following command:
+ /// // "clang -x c IndexTest.h -emit-ast -o IndexTest.pch"
+ /// TU = clang_createTranslationUnit(Idx, "IndexTest.pch");
+ ///
+ /// // This will load all the symbols from 'IndexTest.pch'
+ /// clang_visitChildren(clang_getTranslationUnitCursor(TU),
+ /// TranslationUnitVisitor, 0);
+ /// clang_disposeTranslationUnit(TU);
+ ///
+ /// // This will load all the symbols from 'IndexTest.c', excluding symbols
+ /// // from 'IndexTest.pch'.
+ /// char *args[] = { "-Xclang", "-include-pch=IndexTest.pch" };
+ /// TU = clang_createTranslationUnitFromSourceFile(Idx, "IndexTest.c", 2, args,
+ /// 0, 0);
+ /// clang_visitChildren(clang_getTranslationUnitCursor(TU),
+ /// TranslationUnitVisitor, 0);
+ /// clang_disposeTranslationUnit(TU);
+ /// \endcode
+ ///
+ /// This process of creating the 'pch', loading it separately, and using it (via
+ /// -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
+ /// (which gives the indexer the same performance benefit as the compiler).
+ ffi.Pointer<ffi.Void> clang_createIndex(
+ int excludeDeclarationsFromPCH,
+ int displayDiagnostics,
+ ) {
+ _clang_createIndex ??=
+ _dylib.lookupFunction<_c_clang_createIndex, _dart_clang_createIndex>(
+ 'clang_createIndex');
+ return _clang_createIndex(
+ excludeDeclarationsFromPCH,
+ displayDiagnostics,
+ );
+ }
+
+ _dart_clang_createIndex _clang_createIndex;
+
+ /// Destroy the given index.
+ ///
+ /// The index must not be destroyed until all of the translation units created
+ /// within that index have been destroyed.
+ void clang_disposeIndex(
+ ffi.Pointer<ffi.Void> index,
+ ) {
+ _clang_disposeIndex ??=
+ _dylib.lookupFunction<_c_clang_disposeIndex, _dart_clang_disposeIndex>(
+ 'clang_disposeIndex');
+ return _clang_disposeIndex(
+ index,
+ );
+ }
+
+ _dart_clang_disposeIndex _clang_disposeIndex;
+
+ /// Sets general options associated with a CXIndex.
+ ///
+ /// For example:
+ /// \code
+ /// CXIndex idx = ...;
+ /// clang_CXIndex_setGlobalOptions(idx,
+ /// clang_CXIndex_getGlobalOptions(idx) |
+ /// CXGlobalOpt_ThreadBackgroundPriorityForIndexing);
+ /// \endcode
+ ///
+ /// \param options A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags.
+ void clang_CXIndex_setGlobalOptions(
+ ffi.Pointer<ffi.Void> arg0,
+ int options,
+ ) {
+ _clang_CXIndex_setGlobalOptions ??= _dylib.lookupFunction<
+ _c_clang_CXIndex_setGlobalOptions,
+ _dart_clang_CXIndex_setGlobalOptions>('clang_CXIndex_setGlobalOptions');
+ return _clang_CXIndex_setGlobalOptions(
+ arg0,
+ options,
+ );
+ }
+
+ _dart_clang_CXIndex_setGlobalOptions _clang_CXIndex_setGlobalOptions;
+
+ /// Gets the general options associated with a CXIndex.
+ ///
+ /// \returns A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags that
+ /// are associated with the given CXIndex object.
+ int clang_CXIndex_getGlobalOptions(
+ ffi.Pointer<ffi.Void> arg0,
+ ) {
+ _clang_CXIndex_getGlobalOptions ??= _dylib.lookupFunction<
+ _c_clang_CXIndex_getGlobalOptions,
+ _dart_clang_CXIndex_getGlobalOptions>('clang_CXIndex_getGlobalOptions');
+ return _clang_CXIndex_getGlobalOptions(
+ arg0,
+ );
+ }
+
+ _dart_clang_CXIndex_getGlobalOptions _clang_CXIndex_getGlobalOptions;
+
+ /// Sets the invocation emission path option in a CXIndex.
+ ///
+ /// The invocation emission path specifies a path which will contain log
+ /// files for certain libclang invocations. A null value (default) implies that
+ /// libclang invocations are not logged..
+ void clang_CXIndex_setInvocationEmissionPathOption(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Int8> Path,
+ ) {
+ _clang_CXIndex_setInvocationEmissionPathOption ??= _dylib.lookupFunction<
+ _c_clang_CXIndex_setInvocationEmissionPathOption,
+ _dart_clang_CXIndex_setInvocationEmissionPathOption>(
+ 'clang_CXIndex_setInvocationEmissionPathOption');
+ return _clang_CXIndex_setInvocationEmissionPathOption(
+ arg0,
+ Path,
+ );
+ }
+
+ _dart_clang_CXIndex_setInvocationEmissionPathOption
+ _clang_CXIndex_setInvocationEmissionPathOption;
+
+ /// Retrieve the last modification time of the given file.
+ int clang_getFileTime(
+ ffi.Pointer<ffi.Void> SFile,
+ ) {
+ _clang_getFileTime ??=
+ _dylib.lookupFunction<_c_clang_getFileTime, _dart_clang_getFileTime>(
+ 'clang_getFileTime');
+ return _clang_getFileTime(
+ SFile,
+ );
+ }
+
+ _dart_clang_getFileTime _clang_getFileTime;
+
+ /// Retrieve the unique ID for the given \c file.
+ ///
+ /// \param file the file to get the ID for.
+ /// \param outID stores the returned CXFileUniqueID.
+ /// \returns If there was a failure getting the unique ID, returns non-zero,
+ /// otherwise returns 0.
+ int clang_getFileUniqueID(
+ ffi.Pointer<ffi.Void> file,
+ ffi.Pointer<CXFileUniqueID> outID,
+ ) {
+ _clang_getFileUniqueID ??= _dylib.lookupFunction<_c_clang_getFileUniqueID,
+ _dart_clang_getFileUniqueID>('clang_getFileUniqueID');
+ return _clang_getFileUniqueID(
+ file,
+ outID,
+ );
+ }
+
+ _dart_clang_getFileUniqueID _clang_getFileUniqueID;
+
+ /// Determine whether the given header is guarded against
+ /// multiple inclusions, either with the conventional
+ /// \#ifndef/\#define/\#endif macro guards or with \#pragma once.
+ int clang_isFileMultipleIncludeGuarded(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+ ) {
+ _clang_isFileMultipleIncludeGuarded ??= _dylib.lookupFunction<
+ _c_clang_isFileMultipleIncludeGuarded,
+ _dart_clang_isFileMultipleIncludeGuarded>(
+ 'clang_isFileMultipleIncludeGuarded');
+ return _clang_isFileMultipleIncludeGuarded(
+ tu,
+ file,
+ );
+ }
+
+ _dart_clang_isFileMultipleIncludeGuarded _clang_isFileMultipleIncludeGuarded;
+
+ /// Retrieve a file handle within the given translation unit.
+ ///
+ /// \param tu the translation unit
+ ///
+ /// \param file_name the name of the file.
+ ///
+ /// \returns the file handle for the named file in the translation unit \p tu,
+ /// or a NULL file handle if the file was not a part of this translation unit.
+ ffi.Pointer<ffi.Void> clang_getFile(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Int8> file_name,
+ ) {
+ _clang_getFile ??= _dylib
+ .lookupFunction<_c_clang_getFile, _dart_clang_getFile>('clang_getFile');
+ return _clang_getFile(
+ tu,
+ file_name,
+ );
+ }
+
+ _dart_clang_getFile _clang_getFile;
+
+ /// Retrieve the buffer associated with the given file.
+ ///
+ /// \param tu the translation unit
+ ///
+ /// \param file the file for which to retrieve the buffer.
+ ///
+ /// \param size [out] if non-NULL, will be set to the size of the buffer.
+ ///
+ /// \returns a pointer to the buffer in memory that holds the contents of
+ /// \p file, or a NULL pointer when the file is not loaded.
+ ffi.Pointer<ffi.Int8> clang_getFileContents(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+ ffi.Pointer<ffi.Uint64> size,
+ ) {
+ _clang_getFileContents ??= _dylib.lookupFunction<_c_clang_getFileContents,
+ _dart_clang_getFileContents>('clang_getFileContents');
+ return _clang_getFileContents(
+ tu,
+ file,
+ size,
+ );
+ }
+
+ _dart_clang_getFileContents _clang_getFileContents;
+
+ /// Returns non-zero if the \c file1 and \c file2 point to the same file,
+ /// or they are both NULL.
+ int clang_File_isEqual(
+ ffi.Pointer<ffi.Void> file1,
+ ffi.Pointer<ffi.Void> file2,
+ ) {
+ _clang_File_isEqual ??=
+ _dylib.lookupFunction<_c_clang_File_isEqual, _dart_clang_File_isEqual>(
+ 'clang_File_isEqual');
+ return _clang_File_isEqual(
+ file1,
+ file2,
+ );
+ }
+
+ _dart_clang_File_isEqual _clang_File_isEqual;
+
+ /// Retrieve all ranges that were skipped by the preprocessor.
+ ///
+ /// The preprocessor will skip lines when they are surrounded by an
+ /// if/ifdef/ifndef directive whose condition does not evaluate to true.
+ ffi.Pointer<CXSourceRangeList> clang_getSkippedRanges(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+ ) {
+ _clang_getSkippedRanges ??= _dylib.lookupFunction<_c_clang_getSkippedRanges,
+ _dart_clang_getSkippedRanges>('clang_getSkippedRanges');
+ return _clang_getSkippedRanges(
+ tu,
+ file,
+ );
+ }
+
+ _dart_clang_getSkippedRanges _clang_getSkippedRanges;
+
+ /// Retrieve all ranges from all files that were skipped by the
+ /// preprocessor.
+ ///
+ /// The preprocessor will skip lines when they are surrounded by an
+ /// if/ifdef/ifndef directive whose condition does not evaluate to true.
+ ffi.Pointer<CXSourceRangeList> clang_getAllSkippedRanges(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ) {
+ _clang_getAllSkippedRanges ??= _dylib.lookupFunction<
+ _c_clang_getAllSkippedRanges,
+ _dart_clang_getAllSkippedRanges>('clang_getAllSkippedRanges');
+ return _clang_getAllSkippedRanges(
+ tu,
+ );
+ }
+
+ _dart_clang_getAllSkippedRanges _clang_getAllSkippedRanges;
+
+ /// Destroy the given \c CXSourceRangeList.
+ void clang_disposeSourceRangeList(
+ ffi.Pointer<CXSourceRangeList> ranges,
+ ) {
+ _clang_disposeSourceRangeList ??= _dylib.lookupFunction<
+ _c_clang_disposeSourceRangeList,
+ _dart_clang_disposeSourceRangeList>('clang_disposeSourceRangeList');
+ return _clang_disposeSourceRangeList(
+ ranges,
+ );
+ }
+
+ _dart_clang_disposeSourceRangeList _clang_disposeSourceRangeList;
+
+ /// Determine the number of diagnostics in a CXDiagnosticSet.
+ int clang_getNumDiagnosticsInSet(
+ ffi.Pointer<ffi.Void> Diags,
+ ) {
+ _clang_getNumDiagnosticsInSet ??= _dylib.lookupFunction<
+ _c_clang_getNumDiagnosticsInSet,
+ _dart_clang_getNumDiagnosticsInSet>('clang_getNumDiagnosticsInSet');
+ return _clang_getNumDiagnosticsInSet(
+ Diags,
+ );
+ }
+
+ _dart_clang_getNumDiagnosticsInSet _clang_getNumDiagnosticsInSet;
+
+ /// Retrieve a diagnostic associated with the given CXDiagnosticSet.
+ ///
+ /// \param Diags the CXDiagnosticSet to query.
+ /// \param Index the zero-based diagnostic number to retrieve.
+ ///
+ /// \returns the requested diagnostic. This diagnostic must be freed
+ /// via a call to \c clang_disposeDiagnostic().
+ ffi.Pointer<ffi.Void> clang_getDiagnosticInSet(
+ ffi.Pointer<ffi.Void> Diags,
+ int Index,
+ ) {
+ _clang_getDiagnosticInSet ??= _dylib.lookupFunction<
+ _c_clang_getDiagnosticInSet,
+ _dart_clang_getDiagnosticInSet>('clang_getDiagnosticInSet');
+ return _clang_getDiagnosticInSet(
+ Diags,
+ Index,
+ );
+ }
+
+ _dart_clang_getDiagnosticInSet _clang_getDiagnosticInSet;
+
+ /// Deserialize a set of diagnostics from a Clang diagnostics bitcode
+ /// file.
+ ///
+ /// \param file The name of the file to deserialize.
+ /// \param error A pointer to a enum value recording if there was a problem
+ /// deserializing the diagnostics.
+ /// \param errorString A pointer to a CXString for recording the error string
+ /// if the file was not successfully loaded.
+ ///
+ /// \returns A loaded CXDiagnosticSet if successful, and NULL otherwise. These
+ /// diagnostics should be released using clang_disposeDiagnosticSet().
+ ffi.Pointer<ffi.Void> clang_loadDiagnostics(
+ ffi.Pointer<ffi.Int8> file,
+ ffi.Pointer<ffi.Int32> error,
+ ffi.Pointer<CXString> errorString,
+ ) {
+ _clang_loadDiagnostics ??= _dylib.lookupFunction<_c_clang_loadDiagnostics,
+ _dart_clang_loadDiagnostics>('clang_loadDiagnostics');
+ return _clang_loadDiagnostics(
+ file,
+ error,
+ errorString,
+ );
+ }
+
+ _dart_clang_loadDiagnostics _clang_loadDiagnostics;
+
+ /// Release a CXDiagnosticSet and all of its contained diagnostics.
+ void clang_disposeDiagnosticSet(
+ ffi.Pointer<ffi.Void> Diags,
+ ) {
+ _clang_disposeDiagnosticSet ??= _dylib.lookupFunction<
+ _c_clang_disposeDiagnosticSet,
+ _dart_clang_disposeDiagnosticSet>('clang_disposeDiagnosticSet');
+ return _clang_disposeDiagnosticSet(
+ Diags,
+ );
+ }
+
+ _dart_clang_disposeDiagnosticSet _clang_disposeDiagnosticSet;
+
+ /// Retrieve the child diagnostics of a CXDiagnostic.
+ ///
+ /// This CXDiagnosticSet does not need to be released by
+ /// clang_disposeDiagnosticSet.
+ ffi.Pointer<ffi.Void> clang_getChildDiagnostics(
+ ffi.Pointer<ffi.Void> D,
+ ) {
+ _clang_getChildDiagnostics ??= _dylib.lookupFunction<
+ _c_clang_getChildDiagnostics,
+ _dart_clang_getChildDiagnostics>('clang_getChildDiagnostics');
+ return _clang_getChildDiagnostics(
+ D,
+ );
+ }
+
+ _dart_clang_getChildDiagnostics _clang_getChildDiagnostics;
+
+ /// Determine the number of diagnostics produced for the given
+ /// translation unit.
+ int clang_getNumDiagnostics(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+ ) {
+ _clang_getNumDiagnostics ??= _dylib.lookupFunction<
+ _c_clang_getNumDiagnostics,
+ _dart_clang_getNumDiagnostics>('clang_getNumDiagnostics');
+ return _clang_getNumDiagnostics(
+ Unit,
+ );
+ }
+
+ _dart_clang_getNumDiagnostics _clang_getNumDiagnostics;
+
+ /// Retrieve a diagnostic associated with the given translation unit.
+ ///
+ /// \param Unit the translation unit to query.
+ /// \param Index the zero-based diagnostic number to retrieve.
+ ///
+ /// \returns the requested diagnostic. This diagnostic must be freed
+ /// via a call to \c clang_disposeDiagnostic().
+ ffi.Pointer<ffi.Void> clang_getDiagnostic(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+ int Index,
+ ) {
+ _clang_getDiagnostic ??= _dylib.lookupFunction<_c_clang_getDiagnostic,
+ _dart_clang_getDiagnostic>('clang_getDiagnostic');
+ return _clang_getDiagnostic(
+ Unit,
+ Index,
+ );
+ }
+
+ _dart_clang_getDiagnostic _clang_getDiagnostic;
+
+ /// Retrieve the complete set of diagnostics associated with a
+ /// translation unit.
+ ///
+ /// \param Unit the translation unit to query.
+ ffi.Pointer<ffi.Void> clang_getDiagnosticSetFromTU(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+ ) {
+ _clang_getDiagnosticSetFromTU ??= _dylib.lookupFunction<
+ _c_clang_getDiagnosticSetFromTU,
+ _dart_clang_getDiagnosticSetFromTU>('clang_getDiagnosticSetFromTU');
+ return _clang_getDiagnosticSetFromTU(
+ Unit,
+ );
+ }
+
+ _dart_clang_getDiagnosticSetFromTU _clang_getDiagnosticSetFromTU;
+
+ /// Destroy a diagnostic.
+ void clang_disposeDiagnostic(
+ ffi.Pointer<ffi.Void> Diagnostic,
+ ) {
+ _clang_disposeDiagnostic ??= _dylib.lookupFunction<
+ _c_clang_disposeDiagnostic,
+ _dart_clang_disposeDiagnostic>('clang_disposeDiagnostic');
+ return _clang_disposeDiagnostic(
+ Diagnostic,
+ );
+ }
+
+ _dart_clang_disposeDiagnostic _clang_disposeDiagnostic;
+
+ /// Retrieve the set of display options most similar to the
+ /// default behavior of the clang compiler.
+ ///
+ /// \returns A set of display options suitable for use with \c
+ /// clang_formatDiagnostic().
+ int clang_defaultDiagnosticDisplayOptions() {
+ _clang_defaultDiagnosticDisplayOptions ??= _dylib.lookupFunction<
+ _c_clang_defaultDiagnosticDisplayOptions,
+ _dart_clang_defaultDiagnosticDisplayOptions>(
+ 'clang_defaultDiagnosticDisplayOptions');
+ return _clang_defaultDiagnosticDisplayOptions();
+ }
+
+ _dart_clang_defaultDiagnosticDisplayOptions
+ _clang_defaultDiagnosticDisplayOptions;
+
+ /// Determine the severity of the given diagnostic.
+ int clang_getDiagnosticSeverity(
+ ffi.Pointer<ffi.Void> arg0,
+ ) {
+ _clang_getDiagnosticSeverity ??= _dylib.lookupFunction<
+ _c_clang_getDiagnosticSeverity,
+ _dart_clang_getDiagnosticSeverity>('clang_getDiagnosticSeverity');
+ return _clang_getDiagnosticSeverity(
+ arg0,
+ );
+ }
+
+ _dart_clang_getDiagnosticSeverity _clang_getDiagnosticSeverity;
+
+ /// Retrieve the category number for this diagnostic.
+ ///
+ /// Diagnostics can be categorized into groups along with other, related
+ /// diagnostics (e.g., diagnostics under the same warning flag). This routine
+ /// retrieves the category number for the given diagnostic.
+ ///
+ /// \returns The number of the category that contains this diagnostic, or zero
+ /// if this diagnostic is uncategorized.
+ int clang_getDiagnosticCategory(
+ ffi.Pointer<ffi.Void> arg0,
+ ) {
+ _clang_getDiagnosticCategory ??= _dylib.lookupFunction<
+ _c_clang_getDiagnosticCategory,
+ _dart_clang_getDiagnosticCategory>('clang_getDiagnosticCategory');
+ return _clang_getDiagnosticCategory(
+ arg0,
+ );
+ }
+
+ _dart_clang_getDiagnosticCategory _clang_getDiagnosticCategory;
+
+ /// Determine the number of source ranges associated with the given
+ /// diagnostic.
+ int clang_getDiagnosticNumRanges(
+ ffi.Pointer<ffi.Void> arg0,
+ ) {
+ _clang_getDiagnosticNumRanges ??= _dylib.lookupFunction<
+ _c_clang_getDiagnosticNumRanges,
+ _dart_clang_getDiagnosticNumRanges>('clang_getDiagnosticNumRanges');
+ return _clang_getDiagnosticNumRanges(
+ arg0,
+ );
+ }
+
+ _dart_clang_getDiagnosticNumRanges _clang_getDiagnosticNumRanges;
+
+ /// Determine the number of fix-it hints associated with the
+ /// given diagnostic.
+ int clang_getDiagnosticNumFixIts(
+ ffi.Pointer<ffi.Void> Diagnostic,
+ ) {
+ _clang_getDiagnosticNumFixIts ??= _dylib.lookupFunction<
+ _c_clang_getDiagnosticNumFixIts,
+ _dart_clang_getDiagnosticNumFixIts>('clang_getDiagnosticNumFixIts');
+ return _clang_getDiagnosticNumFixIts(
+ Diagnostic,
+ );
+ }
+
+ _dart_clang_getDiagnosticNumFixIts _clang_getDiagnosticNumFixIts;
+
+ /// Return the CXTranslationUnit for a given source file and the provided
+ /// command line arguments one would pass to the compiler.
+ ///
+ /// Note: The 'source_filename' argument is optional. If the caller provides a
+ /// NULL pointer, the name of the source file is expected to reside in the
+ /// specified command line arguments.
+ ///
+ /// Note: When encountered in 'clang_command_line_args', the following options
+ /// are ignored:
+ ///
+ /// '-c'
+ /// '-emit-ast'
+ /// '-fsyntax-only'
+ /// '-o \<output file>' (both '-o' and '\<output file>' are ignored)
+ ///
+ /// \param CIdx The index object with which the translation unit will be
+ /// associated.
+ ///
+ /// \param source_filename The name of the source file to load, or NULL if the
+ /// source file is included in \p clang_command_line_args.
+ ///
+ /// \param num_clang_command_line_args The number of command-line arguments in
+ /// \p clang_command_line_args.
+ ///
+ /// \param clang_command_line_args The command-line arguments that would be
+ /// passed to the \c clang executable if it were being invoked out-of-process.
+ /// These command-line options will be parsed and will affect how the translation
+ /// unit is parsed. Note that the following options are ignored: '-c',
+ /// '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
+ ///
+ /// \param num_unsaved_files the number of unsaved file entries in \p
+ /// unsaved_files.
+ ///
+ /// \param unsaved_files the files that have not yet been saved to disk
+ /// but may be required for code completion, including the contents of
+ /// those files. The contents and name of these files (as specified by
+ /// CXUnsavedFile) are copied when necessary, so the client only needs to
+ /// guarantee their validity until the call to this function returns.
+ ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnitFromSourceFile(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ int num_clang_command_line_args,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
+ int num_unsaved_files,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ) {
+ _clang_createTranslationUnitFromSourceFile ??= _dylib.lookupFunction<
+ _c_clang_createTranslationUnitFromSourceFile,
+ _dart_clang_createTranslationUnitFromSourceFile>(
+ 'clang_createTranslationUnitFromSourceFile');
+ return _clang_createTranslationUnitFromSourceFile(
+ CIdx,
+ source_filename,
+ num_clang_command_line_args,
+ clang_command_line_args,
+ num_unsaved_files,
+ unsaved_files,
+ );
+ }
+
+ _dart_clang_createTranslationUnitFromSourceFile
+ _clang_createTranslationUnitFromSourceFile;
+
+ /// Same as \c clang_createTranslationUnit2, but returns
+ /// the \c CXTranslationUnit instead of an error code. In case of an error this
+ /// routine returns a \c NULL \c CXTranslationUnit, without further detailed
+ /// error codes.
+ ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnit(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> ast_filename,
+ ) {
+ _clang_createTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_createTranslationUnit,
+ _dart_clang_createTranslationUnit>('clang_createTranslationUnit');
+ return _clang_createTranslationUnit(
+ CIdx,
+ ast_filename,
+ );
+ }
+
+ _dart_clang_createTranslationUnit _clang_createTranslationUnit;
+
+ /// Create a translation unit from an AST file (\c -emit-ast).
+ ///
+ /// \param[out] out_TU A non-NULL pointer to store the created
+ /// \c CXTranslationUnit.
+ ///
+ /// \returns Zero on success, otherwise returns an error code.
+ int clang_createTranslationUnit2(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> ast_filename,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ ) {
+ _clang_createTranslationUnit2 ??= _dylib.lookupFunction<
+ _c_clang_createTranslationUnit2,
+ _dart_clang_createTranslationUnit2>('clang_createTranslationUnit2');
+ return _clang_createTranslationUnit2(
+ CIdx,
+ ast_filename,
+ out_TU,
+ );
+ }
+
+ _dart_clang_createTranslationUnit2 _clang_createTranslationUnit2;
+
+ /// Returns the set of flags that is suitable for parsing a translation
+ /// unit that is being edited.
+ ///
+ /// The set of flags returned provide options for \c clang_parseTranslationUnit()
+ /// to indicate that the translation unit is likely to be reparsed many times,
+ /// either explicitly (via \c clang_reparseTranslationUnit()) or implicitly
+ /// (e.g., by code completion (\c clang_codeCompletionAt())). The returned flag
+ /// set contains an unspecified set of optimizations (e.g., the precompiled
+ /// preamble) geared toward improving the performance of these routines. The
+ /// set of optimizations enabled may change from one version to the next.
+ int clang_defaultEditingTranslationUnitOptions() {
+ _clang_defaultEditingTranslationUnitOptions ??= _dylib.lookupFunction<
+ _c_clang_defaultEditingTranslationUnitOptions,
+ _dart_clang_defaultEditingTranslationUnitOptions>(
+ 'clang_defaultEditingTranslationUnitOptions');
+ return _clang_defaultEditingTranslationUnitOptions();
+ }
+
+ _dart_clang_defaultEditingTranslationUnitOptions
+ _clang_defaultEditingTranslationUnitOptions;
+
+ /// Same as \c clang_parseTranslationUnit2, but returns
+ /// the \c CXTranslationUnit instead of an error code. In case of an error this
+ /// routine returns a \c NULL \c CXTranslationUnit, without further detailed
+ /// error codes.
+ ffi.Pointer<CXTranslationUnitImpl> clang_parseTranslationUnit(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+ ) {
+ _clang_parseTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_parseTranslationUnit,
+ _dart_clang_parseTranslationUnit>('clang_parseTranslationUnit');
+ return _clang_parseTranslationUnit(
+ CIdx,
+ source_filename,
+ command_line_args,
+ num_command_line_args,
+ unsaved_files,
+ num_unsaved_files,
+ options,
+ );
+ }
+
+ _dart_clang_parseTranslationUnit _clang_parseTranslationUnit;
+
+ /// Parse the given source file and the translation unit corresponding
+ /// to that file.
+ ///
+ /// This routine is the main entry point for the Clang C API, providing the
+ /// ability to parse a source file into a translation unit that can then be
+ /// queried by other functions in the API. This routine accepts a set of
+ /// command-line arguments so that the compilation can be configured in the same
+ /// way that the compiler is configured on the command line.
+ ///
+ /// \param CIdx The index object with which the translation unit will be
+ /// associated.
+ ///
+ /// \param source_filename The name of the source file to load, or NULL if the
+ /// source file is included in \c command_line_args.
+ ///
+ /// \param command_line_args The command-line arguments that would be
+ /// passed to the \c clang executable if it were being invoked out-of-process.
+ /// These command-line options will be parsed and will affect how the translation
+ /// unit is parsed. Note that the following options are ignored: '-c',
+ /// '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
+ ///
+ /// \param num_command_line_args The number of command-line arguments in
+ /// \c command_line_args.
+ ///
+ /// \param unsaved_files the files that have not yet been saved to disk
+ /// but may be required for parsing, including the contents of
+ /// those files. The contents and name of these files (as specified by
+ /// CXUnsavedFile) are copied when necessary, so the client only needs to
+ /// guarantee their validity until the call to this function returns.
+ ///
+ /// \param num_unsaved_files the number of unsaved file entries in \p
+ /// unsaved_files.
+ ///
+ /// \param options A bitmask of options that affects how the translation unit
+ /// is managed but not its compilation. This should be a bitwise OR of the
+ /// CXTranslationUnit_XXX flags.
+ ///
+ /// \param[out] out_TU A non-NULL pointer to store the created
+ /// \c CXTranslationUnit, describing the parsed code and containing any
+ /// diagnostics produced by the compiler.
+ ///
+ /// \returns Zero on success, otherwise returns an error code.
+ int clang_parseTranslationUnit2(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ ) {
+ _clang_parseTranslationUnit2 ??= _dylib.lookupFunction<
+ _c_clang_parseTranslationUnit2,
+ _dart_clang_parseTranslationUnit2>('clang_parseTranslationUnit2');
+ return _clang_parseTranslationUnit2(
+ CIdx,
+ source_filename,
+ command_line_args,
+ num_command_line_args,
+ unsaved_files,
+ num_unsaved_files,
+ options,
+ out_TU,
+ );
+ }
+
+ _dart_clang_parseTranslationUnit2 _clang_parseTranslationUnit2;
+
+ /// Same as clang_parseTranslationUnit2 but requires a full command line
+ /// for \c command_line_args including argv[0]. This is useful if the standard
+ /// library paths are relative to the binary.
+ int clang_parseTranslationUnit2FullArgv(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ ) {
+ _clang_parseTranslationUnit2FullArgv ??= _dylib.lookupFunction<
+ _c_clang_parseTranslationUnit2FullArgv,
+ _dart_clang_parseTranslationUnit2FullArgv>(
+ 'clang_parseTranslationUnit2FullArgv');
+ return _clang_parseTranslationUnit2FullArgv(
+ CIdx,
+ source_filename,
+ command_line_args,
+ num_command_line_args,
+ unsaved_files,
+ num_unsaved_files,
+ options,
+ out_TU,
+ );
+ }
+
+ _dart_clang_parseTranslationUnit2FullArgv
+ _clang_parseTranslationUnit2FullArgv;
+
+ /// Returns the set of flags that is suitable for saving a translation
+ /// unit.
+ ///
+ /// The set of flags returned provide options for
+ /// \c clang_saveTranslationUnit() by default. The returned flag
+ /// set contains an unspecified set of options that save translation units with
+ /// the most commonly-requested data.
+ int clang_defaultSaveOptions(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ) {
+ _clang_defaultSaveOptions ??= _dylib.lookupFunction<
+ _c_clang_defaultSaveOptions,
+ _dart_clang_defaultSaveOptions>('clang_defaultSaveOptions');
+ return _clang_defaultSaveOptions(
+ TU,
+ );
+ }
+
+ _dart_clang_defaultSaveOptions _clang_defaultSaveOptions;
+
+ /// Saves a translation unit into a serialized representation of
+ /// that translation unit on disk.
+ ///
+ /// Any translation unit that was parsed without error can be saved
+ /// into a file. The translation unit can then be deserialized into a
+ /// new \c CXTranslationUnit with \c clang_createTranslationUnit() or,
+ /// if it is an incomplete translation unit that corresponds to a
+ /// header, used as a precompiled header when parsing other translation
+ /// units.
+ ///
+ /// \param TU The translation unit to save.
+ ///
+ /// \param FileName The file to which the translation unit will be saved.
+ ///
+ /// \param options A bitmask of options that affects how the translation unit
+ /// is saved. This should be a bitwise OR of the
+ /// CXSaveTranslationUnit_XXX flags.
+ ///
+ /// \returns A value that will match one of the enumerators of the CXSaveError
+ /// enumeration. Zero (CXSaveError_None) indicates that the translation unit was
+ /// saved successfully, while a non-zero value indicates that a problem occurred.
+ int clang_saveTranslationUnit(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<ffi.Int8> FileName,
+ int options,
+ ) {
+ _clang_saveTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_saveTranslationUnit,
+ _dart_clang_saveTranslationUnit>('clang_saveTranslationUnit');
+ return _clang_saveTranslationUnit(
+ TU,
+ FileName,
+ options,
+ );
+ }
+
+ _dart_clang_saveTranslationUnit _clang_saveTranslationUnit;
+
+ /// Suspend a translation unit in order to free memory associated with it.
+ ///
+ /// A suspended translation unit uses significantly less memory but on the other
+ /// side does not support any other calls than \c clang_reparseTranslationUnit
+ /// to resume it or \c clang_disposeTranslationUnit to dispose it completely.
+ int clang_suspendTranslationUnit(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ) {
+ _clang_suspendTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_suspendTranslationUnit,
+ _dart_clang_suspendTranslationUnit>('clang_suspendTranslationUnit');
+ return _clang_suspendTranslationUnit(
+ arg0,
+ );
+ }
+
+ _dart_clang_suspendTranslationUnit _clang_suspendTranslationUnit;
+
+ /// Destroy the specified CXTranslationUnit object.
+ void clang_disposeTranslationUnit(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ) {
+ _clang_disposeTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_disposeTranslationUnit,
+ _dart_clang_disposeTranslationUnit>('clang_disposeTranslationUnit');
+ return _clang_disposeTranslationUnit(
+ arg0,
+ );
+ }
+
+ _dart_clang_disposeTranslationUnit _clang_disposeTranslationUnit;
+
+ /// Returns the set of flags that is suitable for reparsing a translation
+ /// unit.
+ ///
+ /// The set of flags returned provide options for
+ /// \c clang_reparseTranslationUnit() by default. The returned flag
+ /// set contains an unspecified set of optimizations geared toward common uses
+ /// of reparsing. The set of optimizations enabled may change from one version
+ /// to the next.
+ int clang_defaultReparseOptions(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ) {
+ _clang_defaultReparseOptions ??= _dylib.lookupFunction<
+ _c_clang_defaultReparseOptions,
+ _dart_clang_defaultReparseOptions>('clang_defaultReparseOptions');
+ return _clang_defaultReparseOptions(
+ TU,
+ );
+ }
+
+ _dart_clang_defaultReparseOptions _clang_defaultReparseOptions;
+
+ /// Reparse the source files that produced this translation unit.
+ ///
+ /// This routine can be used to re-parse the source files that originally
+ /// created the given translation unit, for example because those source files
+ /// have changed (either on disk or as passed via \p unsaved_files). The
+ /// source code will be reparsed with the same command-line options as it
+ /// was originally parsed.
+ ///
+ /// Reparsing a translation unit invalidates all cursors and source locations
+ /// that refer into that translation unit. This makes reparsing a translation
+ /// unit semantically equivalent to destroying the translation unit and then
+ /// creating a new translation unit with the same command-line arguments.
+ /// However, it may be more efficient to reparse a translation
+ /// unit using this routine.
+ ///
+ /// \param TU The translation unit whose contents will be re-parsed. The
+ /// translation unit must originally have been built with
+ /// \c clang_createTranslationUnitFromSourceFile().
+ ///
+ /// \param num_unsaved_files The number of unsaved file entries in \p
+ /// unsaved_files.
+ ///
+ /// \param unsaved_files The files that have not yet been saved to disk
+ /// but may be required for parsing, including the contents of
+ /// those files. The contents and name of these files (as specified by
+ /// CXUnsavedFile) are copied when necessary, so the client only needs to
+ /// guarantee their validity until the call to this function returns.
+ ///
+ /// \param options A bitset of options composed of the flags in CXReparse_Flags.
+ /// The function \c clang_defaultReparseOptions() produces a default set of
+ /// options recommended for most uses, based on the translation unit.
+ ///
+ /// \returns 0 if the sources could be reparsed. A non-zero error code will be
+ /// returned if reparsing was impossible, such that the translation unit is
+ /// invalid. In such cases, the only valid call for \c TU is
+ /// \c clang_disposeTranslationUnit(TU). The error codes returned by this
+ /// routine are described by the \c CXErrorCode enum.
+ int clang_reparseTranslationUnit(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ int num_unsaved_files,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int options,
+ ) {
+ _clang_reparseTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_reparseTranslationUnit,
+ _dart_clang_reparseTranslationUnit>('clang_reparseTranslationUnit');
+ return _clang_reparseTranslationUnit(
+ TU,
+ num_unsaved_files,
+ unsaved_files,
+ options,
+ );
+ }
+
+ _dart_clang_reparseTranslationUnit _clang_reparseTranslationUnit;
+
+ /// Returns the human-readable null-terminated C string that represents
+ /// the name of the memory category. This string should never be freed.
+ ffi.Pointer<ffi.Int8> clang_getTUResourceUsageName(
+ int kind,
+ ) {
+ _clang_getTUResourceUsageName ??= _dylib.lookupFunction<
+ _c_clang_getTUResourceUsageName,
+ _dart_clang_getTUResourceUsageName>('clang_getTUResourceUsageName');
+ return _clang_getTUResourceUsageName(
+ kind,
+ );
+ }
+
+ _dart_clang_getTUResourceUsageName _clang_getTUResourceUsageName;
+
+ /// Get target information for this translation unit.
+ ///
+ /// The CXTargetInfo object cannot outlive the CXTranslationUnit object.
+ ffi.Pointer<CXTargetInfoImpl> clang_getTranslationUnitTargetInfo(
+ ffi.Pointer<CXTranslationUnitImpl> CTUnit,
+ ) {
+ _clang_getTranslationUnitTargetInfo ??= _dylib.lookupFunction<
+ _c_clang_getTranslationUnitTargetInfo,
+ _dart_clang_getTranslationUnitTargetInfo>(
+ 'clang_getTranslationUnitTargetInfo');
+ return _clang_getTranslationUnitTargetInfo(
+ CTUnit,
+ );
+ }
+
+ _dart_clang_getTranslationUnitTargetInfo _clang_getTranslationUnitTargetInfo;
+
+ /// Destroy the CXTargetInfo object.
+ void clang_TargetInfo_dispose(
+ ffi.Pointer<CXTargetInfoImpl> Info,
+ ) {
+ _clang_TargetInfo_dispose ??= _dylib.lookupFunction<
+ _c_clang_TargetInfo_dispose,
+ _dart_clang_TargetInfo_dispose>('clang_TargetInfo_dispose');
+ return _clang_TargetInfo_dispose(
+ Info,
+ );
+ }
+
+ _dart_clang_TargetInfo_dispose _clang_TargetInfo_dispose;
+
+ /// Get the pointer width of the target in bits.
+ ///
+ /// Returns -1 in case of error.
+ int clang_TargetInfo_getPointerWidth(
+ ffi.Pointer<CXTargetInfoImpl> Info,
+ ) {
+ _clang_TargetInfo_getPointerWidth ??= _dylib.lookupFunction<
+ _c_clang_TargetInfo_getPointerWidth,
+ _dart_clang_TargetInfo_getPointerWidth>(
+ 'clang_TargetInfo_getPointerWidth');
+ return _clang_TargetInfo_getPointerWidth(
+ Info,
+ );
+ }
+
+ _dart_clang_TargetInfo_getPointerWidth _clang_TargetInfo_getPointerWidth;
+
+ /// Determine whether the given cursor kind represents a declaration.
+ int clang_isDeclaration(
+ int arg0,
+ ) {
+ _clang_isDeclaration ??= _dylib.lookupFunction<_c_clang_isDeclaration,
+ _dart_clang_isDeclaration>('clang_isDeclaration');
+ return _clang_isDeclaration(
+ arg0,
+ );
+ }
+
+ _dart_clang_isDeclaration _clang_isDeclaration;
+
+ /// Determine whether the given cursor kind represents a simple
+ /// reference.
+ ///
+ /// Note that other kinds of cursors (such as expressions) can also refer to
+ /// other cursors. Use clang_getCursorReferenced() to determine whether a
+ /// particular cursor refers to another entity.
+ int clang_isReference(
+ int arg0,
+ ) {
+ _clang_isReference ??=
+ _dylib.lookupFunction<_c_clang_isReference, _dart_clang_isReference>(
+ 'clang_isReference');
+ return _clang_isReference(
+ arg0,
+ );
+ }
+
+ _dart_clang_isReference _clang_isReference;
+
+ /// Determine whether the given cursor kind represents an expression.
+ int clang_isExpression(
+ int arg0,
+ ) {
+ _clang_isExpression ??=
+ _dylib.lookupFunction<_c_clang_isExpression, _dart_clang_isExpression>(
+ 'clang_isExpression');
+ return _clang_isExpression(
+ arg0,
+ );
+ }
+
+ _dart_clang_isExpression _clang_isExpression;
+
+ /// Determine whether the given cursor kind represents a statement.
+ int clang_isStatement(
+ int arg0,
+ ) {
+ _clang_isStatement ??=
+ _dylib.lookupFunction<_c_clang_isStatement, _dart_clang_isStatement>(
+ 'clang_isStatement');
+ return _clang_isStatement(
+ arg0,
+ );
+ }
+
+ _dart_clang_isStatement _clang_isStatement;
+
+ /// Determine whether the given cursor kind represents an attribute.
+ int clang_isAttribute(
+ int arg0,
+ ) {
+ _clang_isAttribute ??=
+ _dylib.lookupFunction<_c_clang_isAttribute, _dart_clang_isAttribute>(
+ 'clang_isAttribute');
+ return _clang_isAttribute(
+ arg0,
+ );
+ }
+
+ _dart_clang_isAttribute _clang_isAttribute;
+
+ /// Determine whether the given cursor kind represents an invalid
+ /// cursor.
+ int clang_isInvalid(
+ int arg0,
+ ) {
+ _clang_isInvalid ??=
+ _dylib.lookupFunction<_c_clang_isInvalid, _dart_clang_isInvalid>(
+ 'clang_isInvalid');
+ return _clang_isInvalid(
+ arg0,
+ );
+ }
+
+ _dart_clang_isInvalid _clang_isInvalid;
+
+ /// Determine whether the given cursor kind represents a translation
+ /// unit.
+ int clang_isTranslationUnit(
+ int arg0,
+ ) {
+ _clang_isTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_isTranslationUnit,
+ _dart_clang_isTranslationUnit>('clang_isTranslationUnit');
+ return _clang_isTranslationUnit(
+ arg0,
+ );
+ }
+
+ _dart_clang_isTranslationUnit _clang_isTranslationUnit;
+
+ /// Determine whether the given cursor represents a preprocessing
+ /// element, such as a preprocessor directive or macro instantiation.
+ int clang_isPreprocessing(
+ int arg0,
+ ) {
+ _clang_isPreprocessing ??= _dylib.lookupFunction<_c_clang_isPreprocessing,
+ _dart_clang_isPreprocessing>('clang_isPreprocessing');
+ return _clang_isPreprocessing(
+ arg0,
+ );
+ }
+
+ _dart_clang_isPreprocessing _clang_isPreprocessing;
+
+ /// Determine whether the given cursor represents a currently
+ /// unexposed piece of the AST (e.g., CXCursor_UnexposedStmt).
+ int clang_isUnexposed(
+ int arg0,
+ ) {
+ _clang_isUnexposed ??=
+ _dylib.lookupFunction<_c_clang_isUnexposed, _dart_clang_isUnexposed>(
+ 'clang_isUnexposed');
+ return _clang_isUnexposed(
+ arg0,
+ );
+ }
+
+ _dart_clang_isUnexposed _clang_isUnexposed;
+
+ /// Free the memory associated with a \c CXPlatformAvailability structure.
+ void clang_disposeCXPlatformAvailability(
+ ffi.Pointer<CXPlatformAvailability> availability,
+ ) {
+ _clang_disposeCXPlatformAvailability ??= _dylib.lookupFunction<
+ _c_clang_disposeCXPlatformAvailability,
+ _dart_clang_disposeCXPlatformAvailability>(
+ 'clang_disposeCXPlatformAvailability');
+ return _clang_disposeCXPlatformAvailability(
+ availability,
+ );
+ }
+
+ _dart_clang_disposeCXPlatformAvailability
+ _clang_disposeCXPlatformAvailability;
+
+ /// Creates an empty CXCursorSet.
+ ffi.Pointer<CXCursorSetImpl> clang_createCXCursorSet() {
+ _clang_createCXCursorSet ??= _dylib.lookupFunction<
+ _c_clang_createCXCursorSet,
+ _dart_clang_createCXCursorSet>('clang_createCXCursorSet');
+ return _clang_createCXCursorSet();
+ }
+
+ _dart_clang_createCXCursorSet _clang_createCXCursorSet;
+
+ /// Disposes a CXCursorSet and releases its associated memory.
+ void clang_disposeCXCursorSet(
+ ffi.Pointer<CXCursorSetImpl> cset,
+ ) {
+ _clang_disposeCXCursorSet ??= _dylib.lookupFunction<
+ _c_clang_disposeCXCursorSet,
+ _dart_clang_disposeCXCursorSet>('clang_disposeCXCursorSet');
+ return _clang_disposeCXCursorSet(
+ cset,
+ );
+ }
+
+ _dart_clang_disposeCXCursorSet _clang_disposeCXCursorSet;
+
+ /// Free the set of overridden cursors returned by \c
+ /// clang_getOverriddenCursors().
+ void clang_disposeOverriddenCursors(
+ ffi.Pointer<CXCursor> overridden,
+ ) {
+ _clang_disposeOverriddenCursors ??= _dylib.lookupFunction<
+ _c_clang_disposeOverriddenCursors,
+ _dart_clang_disposeOverriddenCursors>('clang_disposeOverriddenCursors');
+ return _clang_disposeOverriddenCursors(
+ overridden,
+ );
+ }
+
+ _dart_clang_disposeOverriddenCursors _clang_disposeOverriddenCursors;
+
+ /// Get a property value for the given printing policy.
+ int clang_PrintingPolicy_getProperty(
+ ffi.Pointer<ffi.Void> Policy,
+ int Property,
+ ) {
+ _clang_PrintingPolicy_getProperty ??= _dylib.lookupFunction<
+ _c_clang_PrintingPolicy_getProperty,
+ _dart_clang_PrintingPolicy_getProperty>(
+ 'clang_PrintingPolicy_getProperty');
+ return _clang_PrintingPolicy_getProperty(
+ Policy,
+ Property,
+ );
+ }
+
+ _dart_clang_PrintingPolicy_getProperty _clang_PrintingPolicy_getProperty;
+
+ /// Set a property value for the given printing policy.
+ void clang_PrintingPolicy_setProperty(
+ ffi.Pointer<ffi.Void> Policy,
+ int Property,
+ int Value,
+ ) {
+ _clang_PrintingPolicy_setProperty ??= _dylib.lookupFunction<
+ _c_clang_PrintingPolicy_setProperty,
+ _dart_clang_PrintingPolicy_setProperty>(
+ 'clang_PrintingPolicy_setProperty');
+ return _clang_PrintingPolicy_setProperty(
+ Policy,
+ Property,
+ Value,
+ );
+ }
+
+ _dart_clang_PrintingPolicy_setProperty _clang_PrintingPolicy_setProperty;
+
+ /// Release a printing policy.
+ void clang_PrintingPolicy_dispose(
+ ffi.Pointer<ffi.Void> Policy,
+ ) {
+ _clang_PrintingPolicy_dispose ??= _dylib.lookupFunction<
+ _c_clang_PrintingPolicy_dispose,
+ _dart_clang_PrintingPolicy_dispose>('clang_PrintingPolicy_dispose');
+ return _clang_PrintingPolicy_dispose(
+ Policy,
+ );
+ }
+
+ _dart_clang_PrintingPolicy_dispose _clang_PrintingPolicy_dispose;
+
+ /// Given a CXFile header file, return the module that contains it, if one
+ /// exists.
+ ffi.Pointer<ffi.Void> clang_getModuleForFile(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+ ) {
+ _clang_getModuleForFile ??= _dylib.lookupFunction<_c_clang_getModuleForFile,
+ _dart_clang_getModuleForFile>('clang_getModuleForFile');
+ return _clang_getModuleForFile(
+ arg0,
+ arg1,
+ );
+ }
+
+ _dart_clang_getModuleForFile _clang_getModuleForFile;
+
+ /// \param Module a module object.
+ ///
+ /// \returns the module file where the provided module object came from.
+ ffi.Pointer<ffi.Void> clang_Module_getASTFile(
+ ffi.Pointer<ffi.Void> Module,
+ ) {
+ _clang_Module_getASTFile ??= _dylib.lookupFunction<
+ _c_clang_Module_getASTFile,
+ _dart_clang_Module_getASTFile>('clang_Module_getASTFile');
+ return _clang_Module_getASTFile(
+ Module,
+ );
+ }
+
+ _dart_clang_Module_getASTFile _clang_Module_getASTFile;
+
+ /// \param Module a module object.
+ ///
+ /// \returns the parent of a sub-module or NULL if the given module is top-level,
+ /// e.g. for 'std.vector' it will return the 'std' module.
+ ffi.Pointer<ffi.Void> clang_Module_getParent(
+ ffi.Pointer<ffi.Void> Module,
+ ) {
+ _clang_Module_getParent ??= _dylib.lookupFunction<_c_clang_Module_getParent,
+ _dart_clang_Module_getParent>('clang_Module_getParent');
+ return _clang_Module_getParent(
+ Module,
+ );
+ }
+
+ _dart_clang_Module_getParent _clang_Module_getParent;
+
+ /// \param Module a module object.
+ ///
+ /// \returns non-zero if the module is a system one.
+ int clang_Module_isSystem(
+ ffi.Pointer<ffi.Void> Module,
+ ) {
+ _clang_Module_isSystem ??= _dylib.lookupFunction<_c_clang_Module_isSystem,
+ _dart_clang_Module_isSystem>('clang_Module_isSystem');
+ return _clang_Module_isSystem(
+ Module,
+ );
+ }
+
+ _dart_clang_Module_isSystem _clang_Module_isSystem;
+
+ /// \param Module a module object.
+ ///
+ /// \returns the number of top level headers associated with this module.
+ int clang_Module_getNumTopLevelHeaders(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> Module,
+ ) {
+ _clang_Module_getNumTopLevelHeaders ??= _dylib.lookupFunction<
+ _c_clang_Module_getNumTopLevelHeaders,
+ _dart_clang_Module_getNumTopLevelHeaders>(
+ 'clang_Module_getNumTopLevelHeaders');
+ return _clang_Module_getNumTopLevelHeaders(
+ arg0,
+ Module,
+ );
+ }
+
+ _dart_clang_Module_getNumTopLevelHeaders _clang_Module_getNumTopLevelHeaders;
+
+ /// \param Module a module object.
+ ///
+ /// \param Index top level header index (zero-based).
+ ///
+ /// \returns the specified top level header associated with the module.
+ ffi.Pointer<ffi.Void> clang_Module_getTopLevelHeader(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> Module,
+ int Index,
+ ) {
+ _clang_Module_getTopLevelHeader ??= _dylib.lookupFunction<
+ _c_clang_Module_getTopLevelHeader,
+ _dart_clang_Module_getTopLevelHeader>('clang_Module_getTopLevelHeader');
+ return _clang_Module_getTopLevelHeader(
+ arg0,
+ Module,
+ Index,
+ );
+ }
+
+ _dart_clang_Module_getTopLevelHeader _clang_Module_getTopLevelHeader;
+
+ /// Annotate the given set of tokens by providing cursors for each token
+ /// that can be mapped to a specific entity within the abstract syntax tree.
+ ///
+ /// This token-annotation routine is equivalent to invoking
+ /// clang_getCursor() for the source locations of each of the
+ /// tokens. The cursors provided are filtered, so that only those
+ /// cursors that have a direct correspondence to the token are
+ /// accepted. For example, given a function call \c f(x),
+ /// clang_getCursor() would provide the following cursors:
+ ///
+ /// * when the cursor is over the 'f', a DeclRefExpr cursor referring to 'f'.
+ /// * when the cursor is over the '(' or the ')', a CallExpr referring to 'f'.
+ /// * when the cursor is over the 'x', a DeclRefExpr cursor referring to 'x'.
+ ///
+ /// Only the first and last of these cursors will occur within the
+ /// annotate, since the tokens "f" and "x' directly refer to a function
+ /// and a variable, respectively, but the parentheses are just a small
+ /// part of the full syntax of the function call expression, which is
+ /// not provided as an annotation.
+ ///
+ /// \param TU the translation unit that owns the given tokens.
+ ///
+ /// \param Tokens the set of tokens to annotate.
+ ///
+ /// \param NumTokens the number of tokens in \p Tokens.
+ ///
+ /// \param Cursors an array of \p NumTokens cursors, whose contents will be
+ /// replaced with the cursors corresponding to each token.
+ void clang_annotateTokens(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<CXToken> Tokens,
+ int NumTokens,
+ ffi.Pointer<CXCursor> Cursors,
+ ) {
+ _clang_annotateTokens ??= _dylib.lookupFunction<_c_clang_annotateTokens,
+ _dart_clang_annotateTokens>('clang_annotateTokens');
+ return _clang_annotateTokens(
+ TU,
+ Tokens,
+ NumTokens,
+ Cursors,
+ );
+ }
+
+ _dart_clang_annotateTokens _clang_annotateTokens;
+
+ /// Free the given set of tokens.
+ void clang_disposeTokens(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<CXToken> Tokens,
+ int NumTokens,
+ ) {
+ _clang_disposeTokens ??= _dylib.lookupFunction<_c_clang_disposeTokens,
+ _dart_clang_disposeTokens>('clang_disposeTokens');
+ return _clang_disposeTokens(
+ TU,
+ Tokens,
+ NumTokens,
+ );
+ }
+
+ _dart_clang_disposeTokens _clang_disposeTokens;
+
+ void clang_enableStackTraces() {
+ _clang_enableStackTraces ??= _dylib.lookupFunction<
+ _c_clang_enableStackTraces,
+ _dart_clang_enableStackTraces>('clang_enableStackTraces');
+ return _clang_enableStackTraces();
+ }
+
+ _dart_clang_enableStackTraces _clang_enableStackTraces;
+
+ void clang_executeOnThread(
+ ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
+ ffi.Pointer<ffi.Void> user_data,
+ int stack_size,
+ ) {
+ _clang_executeOnThread ??= _dylib.lookupFunction<_c_clang_executeOnThread,
+ _dart_clang_executeOnThread>('clang_executeOnThread');
+ return _clang_executeOnThread(
+ fn,
+ user_data,
+ stack_size,
+ );
+ }
+
+ _dart_clang_executeOnThread _clang_executeOnThread;
+
+ /// Determine the kind of a particular chunk within a completion string.
+ ///
+ /// \param completion_string the completion string to query.
+ ///
+ /// \param chunk_number the 0-based index of the chunk in the completion string.
+ ///
+ /// \returns the kind of the chunk at the index \c chunk_number.
+ int clang_getCompletionChunkKind(
+ ffi.Pointer<ffi.Void> completion_string,
+ int chunk_number,
+ ) {
+ _clang_getCompletionChunkKind ??= _dylib.lookupFunction<
+ _c_clang_getCompletionChunkKind,
+ _dart_clang_getCompletionChunkKind>('clang_getCompletionChunkKind');
+ return _clang_getCompletionChunkKind(
+ completion_string,
+ chunk_number,
+ );
+ }
+
+ _dart_clang_getCompletionChunkKind _clang_getCompletionChunkKind;
+
+ /// Retrieve the completion string associated with a particular chunk
+ /// within a completion string.
+ ///
+ /// \param completion_string the completion string to query.
+ ///
+ /// \param chunk_number the 0-based index of the chunk in the completion string.
+ ///
+ /// \returns the completion string associated with the chunk at index
+ /// \c chunk_number.
+ ffi.Pointer<ffi.Void> clang_getCompletionChunkCompletionString(
+ ffi.Pointer<ffi.Void> completion_string,
+ int chunk_number,
+ ) {
+ _clang_getCompletionChunkCompletionString ??= _dylib.lookupFunction<
+ _c_clang_getCompletionChunkCompletionString,
+ _dart_clang_getCompletionChunkCompletionString>(
+ 'clang_getCompletionChunkCompletionString');
+ return _clang_getCompletionChunkCompletionString(
+ completion_string,
+ chunk_number,
+ );
+ }
+
+ _dart_clang_getCompletionChunkCompletionString
+ _clang_getCompletionChunkCompletionString;
+
+ /// Retrieve the number of chunks in the given code-completion string.
+ int clang_getNumCompletionChunks(
+ ffi.Pointer<ffi.Void> completion_string,
+ ) {
+ _clang_getNumCompletionChunks ??= _dylib.lookupFunction<
+ _c_clang_getNumCompletionChunks,
+ _dart_clang_getNumCompletionChunks>('clang_getNumCompletionChunks');
+ return _clang_getNumCompletionChunks(
+ completion_string,
+ );
+ }
+
+ _dart_clang_getNumCompletionChunks _clang_getNumCompletionChunks;
+
+ /// Determine the priority of this code completion.
+ ///
+ /// The priority of a code completion indicates how likely it is that this
+ /// particular completion is the completion that the user will select. The
+ /// priority is selected by various internal heuristics.
+ ///
+ /// \param completion_string The completion string to query.
+ ///
+ /// \returns The priority of this completion string. Smaller values indicate
+ /// higher-priority (more likely) completions.
+ int clang_getCompletionPriority(
+ ffi.Pointer<ffi.Void> completion_string,
+ ) {
+ _clang_getCompletionPriority ??= _dylib.lookupFunction<
+ _c_clang_getCompletionPriority,
+ _dart_clang_getCompletionPriority>('clang_getCompletionPriority');
+ return _clang_getCompletionPriority(
+ completion_string,
+ );
+ }
+
+ _dart_clang_getCompletionPriority _clang_getCompletionPriority;
+
+ /// Determine the availability of the entity that this code-completion
+ /// string refers to.
+ ///
+ /// \param completion_string The completion string to query.
+ ///
+ /// \returns The availability of the completion string.
+ int clang_getCompletionAvailability(
+ ffi.Pointer<ffi.Void> completion_string,
+ ) {
+ _clang_getCompletionAvailability ??= _dylib.lookupFunction<
+ _c_clang_getCompletionAvailability,
+ _dart_clang_getCompletionAvailability>(
+ 'clang_getCompletionAvailability');
+ return _clang_getCompletionAvailability(
+ completion_string,
+ );
+ }
+
+ _dart_clang_getCompletionAvailability _clang_getCompletionAvailability;
+
+ /// Retrieve the number of annotations associated with the given
+ /// completion string.
+ ///
+ /// \param completion_string the completion string to query.
+ ///
+ /// \returns the number of annotations associated with the given completion
+ /// string.
+ int clang_getCompletionNumAnnotations(
+ ffi.Pointer<ffi.Void> completion_string,
+ ) {
+ _clang_getCompletionNumAnnotations ??= _dylib.lookupFunction<
+ _c_clang_getCompletionNumAnnotations,
+ _dart_clang_getCompletionNumAnnotations>(
+ 'clang_getCompletionNumAnnotations');
+ return _clang_getCompletionNumAnnotations(
+ completion_string,
+ );
+ }
+
+ _dart_clang_getCompletionNumAnnotations _clang_getCompletionNumAnnotations;
+
+ /// Retrieve the number of fix-its for the given completion index.
+ ///
+ /// Calling this makes sense only if CXCodeComplete_IncludeCompletionsWithFixIts
+ /// option was set.
+ ///
+ /// \param results The structure keeping all completion results
+ ///
+ /// \param completion_index The index of the completion
+ ///
+ /// \return The number of fix-its which must be applied before the completion at
+ /// completion_index can be applied
+ int clang_getCompletionNumFixIts(
+ ffi.Pointer<CXCodeCompleteResults> results,
+ int completion_index,
+ ) {
+ _clang_getCompletionNumFixIts ??= _dylib.lookupFunction<
+ _c_clang_getCompletionNumFixIts,
+ _dart_clang_getCompletionNumFixIts>('clang_getCompletionNumFixIts');
+ return _clang_getCompletionNumFixIts(
+ results,
+ completion_index,
+ );
+ }
+
+ _dart_clang_getCompletionNumFixIts _clang_getCompletionNumFixIts;
+
+ /// Returns a default set of code-completion options that can be
+ /// passed to\c clang_codeCompleteAt().
+ int clang_defaultCodeCompleteOptions() {
+ _clang_defaultCodeCompleteOptions ??= _dylib.lookupFunction<
+ _c_clang_defaultCodeCompleteOptions,
+ _dart_clang_defaultCodeCompleteOptions>(
+ 'clang_defaultCodeCompleteOptions');
+ return _clang_defaultCodeCompleteOptions();
+ }
+
+ _dart_clang_defaultCodeCompleteOptions _clang_defaultCodeCompleteOptions;
+
+ /// Perform code completion at a given location in a translation unit.
+ ///
+ /// This function performs code completion at a particular file, line, and
+ /// column within source code, providing results that suggest potential
+ /// code snippets based on the context of the completion. The basic model
+ /// for code completion is that Clang will parse a complete source file,
+ /// performing syntax checking up to the location where code-completion has
+ /// been requested. At that point, a special code-completion token is passed
+ /// to the parser, which recognizes this token and determines, based on the
+ /// current location in the C/Objective-C/C++ grammar and the state of
+ /// semantic analysis, what completions to provide. These completions are
+ /// returned via a new \c CXCodeCompleteResults structure.
+ ///
+ /// Code completion itself is meant to be triggered by the client when the
+ /// user types punctuation characters or whitespace, at which point the
+ /// code-completion location will coincide with the cursor. For example, if \c p
+ /// is a pointer, code-completion might be triggered after the "-" and then
+ /// after the ">" in \c p->. When the code-completion location is after the ">",
+ /// the completion results will provide, e.g., the members of the struct that
+ /// "p" points to. The client is responsible for placing the cursor at the
+ /// beginning of the token currently being typed, then filtering the results
+ /// based on the contents of the token. For example, when code-completing for
+ /// the expression \c p->get, the client should provide the location just after
+ /// the ">" (e.g., pointing at the "g") to this code-completion hook. Then, the
+ /// client can filter the results based on the current token text ("get"), only
+ /// showing those results that start with "get". The intent of this interface
+ /// is to separate the relatively high-latency acquisition of code-completion
+ /// results from the filtering of results on a per-character basis, which must
+ /// have a lower latency.
+ ///
+ /// \param TU The translation unit in which code-completion should
+ /// occur. The source files for this translation unit need not be
+ /// completely up-to-date (and the contents of those source files may
+ /// be overridden via \p unsaved_files). Cursors referring into the
+ /// translation unit may be invalidated by this invocation.
+ ///
+ /// \param complete_filename The name of the source file where code
+ /// completion should be performed. This filename may be any file
+ /// included in the translation unit.
+ ///
+ /// \param complete_line The line at which code-completion should occur.
+ ///
+ /// \param complete_column The column at which code-completion should occur.
+ /// Note that the column should point just after the syntactic construct that
+ /// initiated code completion, and not in the middle of a lexical token.
+ ///
+ /// \param unsaved_files the Files that have not yet been saved to disk
+ /// but may be required for parsing or code completion, including the
+ /// contents of those files. The contents and name of these files (as
+ /// specified by CXUnsavedFile) are copied when necessary, so the
+ /// client only needs to guarantee their validity until the call to
+ /// this function returns.
+ ///
+ /// \param num_unsaved_files The number of unsaved file entries in \p
+ /// unsaved_files.
+ ///
+ /// \param options Extra options that control the behavior of code
+ /// completion, expressed as a bitwise OR of the enumerators of the
+ /// CXCodeComplete_Flags enumeration. The
+ /// \c clang_defaultCodeCompleteOptions() function returns a default set
+ /// of code-completion options.
+ ///
+ /// \returns If successful, a new \c CXCodeCompleteResults structure
+ /// containing code-completion results, which should eventually be
+ /// freed with \c clang_disposeCodeCompleteResults(). If code
+ /// completion fails, returns NULL.
+ ffi.Pointer<CXCodeCompleteResults> clang_codeCompleteAt(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<ffi.Int8> complete_filename,
+ int complete_line,
+ int complete_column,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+ ) {
+ _clang_codeCompleteAt ??= _dylib.lookupFunction<_c_clang_codeCompleteAt,
+ _dart_clang_codeCompleteAt>('clang_codeCompleteAt');
+ return _clang_codeCompleteAt(
+ TU,
+ complete_filename,
+ complete_line,
+ complete_column,
+ unsaved_files,
+ num_unsaved_files,
+ options,
+ );
+ }
+
+ _dart_clang_codeCompleteAt _clang_codeCompleteAt;
+
+ /// Sort the code-completion results in case-insensitive alphabetical
+ /// order.
+ ///
+ /// \param Results The set of results to sort.
+ /// \param NumResults The number of results in \p Results.
+ void clang_sortCodeCompletionResults(
+ ffi.Pointer<CXCompletionResult> Results,
+ int NumResults,
+ ) {
+ _clang_sortCodeCompletionResults ??= _dylib.lookupFunction<
+ _c_clang_sortCodeCompletionResults,
+ _dart_clang_sortCodeCompletionResults>(
+ 'clang_sortCodeCompletionResults');
+ return _clang_sortCodeCompletionResults(
+ Results,
+ NumResults,
+ );
+ }
+
+ _dart_clang_sortCodeCompletionResults _clang_sortCodeCompletionResults;
+
+ /// Free the given set of code-completion results.
+ void clang_disposeCodeCompleteResults(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ ) {
+ _clang_disposeCodeCompleteResults ??= _dylib.lookupFunction<
+ _c_clang_disposeCodeCompleteResults,
+ _dart_clang_disposeCodeCompleteResults>(
+ 'clang_disposeCodeCompleteResults');
+ return _clang_disposeCodeCompleteResults(
+ Results,
+ );
+ }
+
+ _dart_clang_disposeCodeCompleteResults _clang_disposeCodeCompleteResults;
+
+ /// Determine the number of diagnostics produced prior to the
+ /// location where code completion was performed.
+ int clang_codeCompleteGetNumDiagnostics(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ ) {
+ _clang_codeCompleteGetNumDiagnostics ??= _dylib.lookupFunction<
+ _c_clang_codeCompleteGetNumDiagnostics,
+ _dart_clang_codeCompleteGetNumDiagnostics>(
+ 'clang_codeCompleteGetNumDiagnostics');
+ return _clang_codeCompleteGetNumDiagnostics(
+ Results,
+ );
+ }
+
+ _dart_clang_codeCompleteGetNumDiagnostics
+ _clang_codeCompleteGetNumDiagnostics;
+
+ /// Retrieve a diagnostic associated with the given code completion.
+ ///
+ /// \param Results the code completion results to query.
+ /// \param Index the zero-based diagnostic number to retrieve.
+ ///
+ /// \returns the requested diagnostic. This diagnostic must be freed
+ /// via a call to \c clang_disposeDiagnostic().
+ ffi.Pointer<ffi.Void> clang_codeCompleteGetDiagnostic(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ int Index,
+ ) {
+ _clang_codeCompleteGetDiagnostic ??= _dylib.lookupFunction<
+ _c_clang_codeCompleteGetDiagnostic,
+ _dart_clang_codeCompleteGetDiagnostic>(
+ 'clang_codeCompleteGetDiagnostic');
+ return _clang_codeCompleteGetDiagnostic(
+ Results,
+ Index,
+ );
+ }
+
+ _dart_clang_codeCompleteGetDiagnostic _clang_codeCompleteGetDiagnostic;
+
+ /// Determines what completions are appropriate for the context
+ /// the given code completion.
+ ///
+ /// \param Results the code completion results to query
+ ///
+ /// \returns the kinds of completions that are appropriate for use
+ /// along with the given code completion results.
+ int clang_codeCompleteGetContexts(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ ) {
+ _clang_codeCompleteGetContexts ??= _dylib.lookupFunction<
+ _c_clang_codeCompleteGetContexts,
+ _dart_clang_codeCompleteGetContexts>('clang_codeCompleteGetContexts');
+ return _clang_codeCompleteGetContexts(
+ Results,
+ );
+ }
+
+ _dart_clang_codeCompleteGetContexts _clang_codeCompleteGetContexts;
+
+ /// Returns the cursor kind for the container for the current code
+ /// completion context. The container is only guaranteed to be set for
+ /// contexts where a container exists (i.e. member accesses or Objective-C
+ /// message sends); if there is not a container, this function will return
+ /// CXCursor_InvalidCode.
+ ///
+ /// \param Results the code completion results to query
+ ///
+ /// \param IsIncomplete on return, this value will be false if Clang has complete
+ /// information about the container. If Clang does not have complete
+ /// information, this value will be true.
+ ///
+ /// \returns the container kind, or CXCursor_InvalidCode if there is not a
+ /// container
+ int clang_codeCompleteGetContainerKind(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ ffi.Pointer<ffi.Uint32> IsIncomplete,
+ ) {
+ _clang_codeCompleteGetContainerKind ??= _dylib.lookupFunction<
+ _c_clang_codeCompleteGetContainerKind,
+ _dart_clang_codeCompleteGetContainerKind>(
+ 'clang_codeCompleteGetContainerKind');
+ return _clang_codeCompleteGetContainerKind(
+ Results,
+ IsIncomplete,
+ );
+ }
+
+ _dart_clang_codeCompleteGetContainerKind _clang_codeCompleteGetContainerKind;
+
+ /// Enable/disable crash recovery.
+ ///
+ /// \param isEnabled Flag to indicate if crash recovery is enabled. A non-zero
+ /// value enables crash recovery, while 0 disables it.
+ void clang_toggleCrashRecovery(
+ int isEnabled,
+ ) {
+ _clang_toggleCrashRecovery ??= _dylib.lookupFunction<
+ _c_clang_toggleCrashRecovery,
+ _dart_clang_toggleCrashRecovery>('clang_toggleCrashRecovery');
+ return _clang_toggleCrashRecovery(
+ isEnabled,
+ );
+ }
+
+ _dart_clang_toggleCrashRecovery _clang_toggleCrashRecovery;
+
+ /// Visit the set of preprocessor inclusions in a translation unit.
+ /// The visitor function is called with the provided data for every included
+ /// file. This does not include headers included by the PCH file (unless one
+ /// is inspecting the inclusions in the PCH file itself).
+ void clang_getInclusions(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor_1>> visitor,
+ ffi.Pointer<ffi.Void> client_data,
+ ) {
+ _clang_getInclusions ??= _dylib.lookupFunction<_c_clang_getInclusions,
+ _dart_clang_getInclusions>('clang_getInclusions');
+ return _clang_getInclusions(
+ tu,
+ visitor,
+ client_data,
+ );
+ }
+
+ _dart_clang_getInclusions _clang_getInclusions;
+
+ /// Returns the kind of the evaluated result.
+ int clang_EvalResult_getKind(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_getKind ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_getKind,
+ _dart_clang_EvalResult_getKind>('clang_EvalResult_getKind');
+ return _clang_EvalResult_getKind(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_getKind _clang_EvalResult_getKind;
+
+ /// Returns the evaluation result as integer if the
+ /// kind is Int.
+ int clang_EvalResult_getAsInt(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_getAsInt ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_getAsInt,
+ _dart_clang_EvalResult_getAsInt>('clang_EvalResult_getAsInt');
+ return _clang_EvalResult_getAsInt(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_getAsInt _clang_EvalResult_getAsInt;
+
+ /// Returns the evaluation result as a long long integer if the
+ /// kind is Int. This prevents overflows that may happen if the result is
+ /// returned with clang_EvalResult_getAsInt.
+ int clang_EvalResult_getAsLongLong(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_getAsLongLong ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_getAsLongLong,
+ _dart_clang_EvalResult_getAsLongLong>('clang_EvalResult_getAsLongLong');
+ return _clang_EvalResult_getAsLongLong(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_getAsLongLong _clang_EvalResult_getAsLongLong;
+
+ /// Returns a non-zero value if the kind is Int and the evaluation
+ /// result resulted in an unsigned integer.
+ int clang_EvalResult_isUnsignedInt(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_isUnsignedInt ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_isUnsignedInt,
+ _dart_clang_EvalResult_isUnsignedInt>('clang_EvalResult_isUnsignedInt');
+ return _clang_EvalResult_isUnsignedInt(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_isUnsignedInt _clang_EvalResult_isUnsignedInt;
+
+ /// Returns the evaluation result as an unsigned integer if
+ /// the kind is Int and clang_EvalResult_isUnsignedInt is non-zero.
+ int clang_EvalResult_getAsUnsigned(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_getAsUnsigned ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_getAsUnsigned,
+ _dart_clang_EvalResult_getAsUnsigned>('clang_EvalResult_getAsUnsigned');
+ return _clang_EvalResult_getAsUnsigned(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_getAsUnsigned _clang_EvalResult_getAsUnsigned;
+
+ /// Returns the evaluation result as double if the
+ /// kind is double.
+ double clang_EvalResult_getAsDouble(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_getAsDouble ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_getAsDouble,
+ _dart_clang_EvalResult_getAsDouble>('clang_EvalResult_getAsDouble');
+ return _clang_EvalResult_getAsDouble(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_getAsDouble _clang_EvalResult_getAsDouble;
+
+ /// Returns the evaluation result as a constant string if the
+ /// kind is other than Int or float. User must not free this pointer,
+ /// instead call clang_EvalResult_dispose on the CXEvalResult returned
+ /// by clang_Cursor_Evaluate.
+ ffi.Pointer<ffi.Int8> clang_EvalResult_getAsStr(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_getAsStr ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_getAsStr,
+ _dart_clang_EvalResult_getAsStr>('clang_EvalResult_getAsStr');
+ return _clang_EvalResult_getAsStr(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_getAsStr _clang_EvalResult_getAsStr;
+
+ /// Disposes the created Eval memory.
+ void clang_EvalResult_dispose(
+ ffi.Pointer<ffi.Void> E,
+ ) {
+ _clang_EvalResult_dispose ??= _dylib.lookupFunction<
+ _c_clang_EvalResult_dispose,
+ _dart_clang_EvalResult_dispose>('clang_EvalResult_dispose');
+ return _clang_EvalResult_dispose(
+ E,
+ );
+ }
+
+ _dart_clang_EvalResult_dispose _clang_EvalResult_dispose;
+
+ /// Retrieve a remapping.
+ ///
+ /// \param path the path that contains metadata about remappings.
+ ///
+ /// \returns the requested remapping. This remapping must be freed
+ /// via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
+ ffi.Pointer<ffi.Void> clang_getRemappings(
+ ffi.Pointer<ffi.Int8> path,
+ ) {
+ _clang_getRemappings ??= _dylib.lookupFunction<_c_clang_getRemappings,
+ _dart_clang_getRemappings>('clang_getRemappings');
+ return _clang_getRemappings(
+ path,
+ );
+ }
+
+ _dart_clang_getRemappings _clang_getRemappings;
+
+ /// Retrieve a remapping.
+ ///
+ /// \param filePaths pointer to an array of file paths containing remapping info.
+ ///
+ /// \param numFiles number of file paths.
+ ///
+ /// \returns the requested remapping. This remapping must be freed
+ /// via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
+ ffi.Pointer<ffi.Void> clang_getRemappingsFromFileList(
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
+ int numFiles,
+ ) {
+ _clang_getRemappingsFromFileList ??= _dylib.lookupFunction<
+ _c_clang_getRemappingsFromFileList,
+ _dart_clang_getRemappingsFromFileList>(
+ 'clang_getRemappingsFromFileList');
+ return _clang_getRemappingsFromFileList(
+ filePaths,
+ numFiles,
+ );
+ }
+
+ _dart_clang_getRemappingsFromFileList _clang_getRemappingsFromFileList;
+
+ /// Determine the number of remappings.
+ int clang_remap_getNumFiles(
+ ffi.Pointer<ffi.Void> arg0,
+ ) {
+ _clang_remap_getNumFiles ??= _dylib.lookupFunction<
+ _c_clang_remap_getNumFiles,
+ _dart_clang_remap_getNumFiles>('clang_remap_getNumFiles');
+ return _clang_remap_getNumFiles(
+ arg0,
+ );
+ }
+
+ _dart_clang_remap_getNumFiles _clang_remap_getNumFiles;
+
+ /// Get the original and the associated filename from the remapping.
+ ///
+ /// \param original If non-NULL, will be set to the original filename.
+ ///
+ /// \param transformed If non-NULL, will be set to the filename that the original
+ /// is associated with.
+ void clang_remap_getFilenames(
+ ffi.Pointer<ffi.Void> arg0,
+ int index,
+ ffi.Pointer<CXString> original,
+ ffi.Pointer<CXString> transformed,
+ ) {
+ _clang_remap_getFilenames ??= _dylib.lookupFunction<
+ _c_clang_remap_getFilenames,
+ _dart_clang_remap_getFilenames>('clang_remap_getFilenames');
+ return _clang_remap_getFilenames(
+ arg0,
+ index,
+ original,
+ transformed,
+ );
+ }
+
+ _dart_clang_remap_getFilenames _clang_remap_getFilenames;
+
+ /// Dispose the remapping.
+ void clang_remap_dispose(
+ ffi.Pointer<ffi.Void> arg0,
+ ) {
+ _clang_remap_dispose ??= _dylib.lookupFunction<_c_clang_remap_dispose,
+ _dart_clang_remap_dispose>('clang_remap_dispose');
+ return _clang_remap_dispose(
+ arg0,
+ );
+ }
+
+ _dart_clang_remap_dispose _clang_remap_dispose;
+
+ int clang_index_isEntityObjCContainerKind(
+ int arg0,
+ ) {
+ _clang_index_isEntityObjCContainerKind ??= _dylib.lookupFunction<
+ _c_clang_index_isEntityObjCContainerKind,
+ _dart_clang_index_isEntityObjCContainerKind>(
+ 'clang_index_isEntityObjCContainerKind');
+ return _clang_index_isEntityObjCContainerKind(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_isEntityObjCContainerKind
+ _clang_index_isEntityObjCContainerKind;
+
+ ffi.Pointer<CXIdxObjCContainerDeclInfo> clang_index_getObjCContainerDeclInfo(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+ ) {
+ _clang_index_getObjCContainerDeclInfo ??= _dylib.lookupFunction<
+ _c_clang_index_getObjCContainerDeclInfo,
+ _dart_clang_index_getObjCContainerDeclInfo>(
+ 'clang_index_getObjCContainerDeclInfo');
+ return _clang_index_getObjCContainerDeclInfo(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getObjCContainerDeclInfo
+ _clang_index_getObjCContainerDeclInfo;
+
+ ffi.Pointer<CXIdxObjCInterfaceDeclInfo> clang_index_getObjCInterfaceDeclInfo(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+ ) {
+ _clang_index_getObjCInterfaceDeclInfo ??= _dylib.lookupFunction<
+ _c_clang_index_getObjCInterfaceDeclInfo,
+ _dart_clang_index_getObjCInterfaceDeclInfo>(
+ 'clang_index_getObjCInterfaceDeclInfo');
+ return _clang_index_getObjCInterfaceDeclInfo(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getObjCInterfaceDeclInfo
+ _clang_index_getObjCInterfaceDeclInfo;
+
+ ffi.Pointer<CXIdxObjCCategoryDeclInfo> clang_index_getObjCCategoryDeclInfo(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+ ) {
+ _clang_index_getObjCCategoryDeclInfo ??= _dylib.lookupFunction<
+ _c_clang_index_getObjCCategoryDeclInfo,
+ _dart_clang_index_getObjCCategoryDeclInfo>(
+ 'clang_index_getObjCCategoryDeclInfo');
+ return _clang_index_getObjCCategoryDeclInfo(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getObjCCategoryDeclInfo
+ _clang_index_getObjCCategoryDeclInfo;
+
+ ffi.Pointer<CXIdxObjCProtocolRefListInfo>
+ clang_index_getObjCProtocolRefListInfo(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+ ) {
+ _clang_index_getObjCProtocolRefListInfo ??= _dylib.lookupFunction<
+ _c_clang_index_getObjCProtocolRefListInfo,
+ _dart_clang_index_getObjCProtocolRefListInfo>(
+ 'clang_index_getObjCProtocolRefListInfo');
+ return _clang_index_getObjCProtocolRefListInfo(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getObjCProtocolRefListInfo
+ _clang_index_getObjCProtocolRefListInfo;
+
+ ffi.Pointer<CXIdxObjCPropertyDeclInfo> clang_index_getObjCPropertyDeclInfo(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+ ) {
+ _clang_index_getObjCPropertyDeclInfo ??= _dylib.lookupFunction<
+ _c_clang_index_getObjCPropertyDeclInfo,
+ _dart_clang_index_getObjCPropertyDeclInfo>(
+ 'clang_index_getObjCPropertyDeclInfo');
+ return _clang_index_getObjCPropertyDeclInfo(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getObjCPropertyDeclInfo
+ _clang_index_getObjCPropertyDeclInfo;
+
+ ffi.Pointer<CXIdxIBOutletCollectionAttrInfo>
+ clang_index_getIBOutletCollectionAttrInfo(
+ ffi.Pointer<CXIdxAttrInfo> arg0,
+ ) {
+ _clang_index_getIBOutletCollectionAttrInfo ??= _dylib.lookupFunction<
+ _c_clang_index_getIBOutletCollectionAttrInfo,
+ _dart_clang_index_getIBOutletCollectionAttrInfo>(
+ 'clang_index_getIBOutletCollectionAttrInfo');
+ return _clang_index_getIBOutletCollectionAttrInfo(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getIBOutletCollectionAttrInfo
+ _clang_index_getIBOutletCollectionAttrInfo;
+
+ ffi.Pointer<CXIdxCXXClassDeclInfo> clang_index_getCXXClassDeclInfo(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+ ) {
+ _clang_index_getCXXClassDeclInfo ??= _dylib.lookupFunction<
+ _c_clang_index_getCXXClassDeclInfo,
+ _dart_clang_index_getCXXClassDeclInfo>(
+ 'clang_index_getCXXClassDeclInfo');
+ return _clang_index_getCXXClassDeclInfo(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getCXXClassDeclInfo _clang_index_getCXXClassDeclInfo;
+
+ /// For retrieving a custom CXIdxClientContainer attached to a
+ /// container.
+ ffi.Pointer<ffi.Void> clang_index_getClientContainer(
+ ffi.Pointer<CXIdxContainerInfo> arg0,
+ ) {
+ _clang_index_getClientContainer ??= _dylib.lookupFunction<
+ _c_clang_index_getClientContainer,
+ _dart_clang_index_getClientContainer>('clang_index_getClientContainer');
+ return _clang_index_getClientContainer(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getClientContainer _clang_index_getClientContainer;
+
+ /// For setting a custom CXIdxClientContainer attached to a
+ /// container.
+ void clang_index_setClientContainer(
+ ffi.Pointer<CXIdxContainerInfo> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+ ) {
+ _clang_index_setClientContainer ??= _dylib.lookupFunction<
+ _c_clang_index_setClientContainer,
+ _dart_clang_index_setClientContainer>('clang_index_setClientContainer');
+ return _clang_index_setClientContainer(
+ arg0,
+ arg1,
+ );
+ }
+
+ _dart_clang_index_setClientContainer _clang_index_setClientContainer;
+
+ /// For retrieving a custom CXIdxClientEntity attached to an entity.
+ ffi.Pointer<ffi.Void> clang_index_getClientEntity(
+ ffi.Pointer<CXIdxEntityInfo> arg0,
+ ) {
+ _clang_index_getClientEntity ??= _dylib.lookupFunction<
+ _c_clang_index_getClientEntity,
+ _dart_clang_index_getClientEntity>('clang_index_getClientEntity');
+ return _clang_index_getClientEntity(
+ arg0,
+ );
+ }
+
+ _dart_clang_index_getClientEntity _clang_index_getClientEntity;
+
+ /// For setting a custom CXIdxClientEntity attached to an entity.
+ void clang_index_setClientEntity(
+ ffi.Pointer<CXIdxEntityInfo> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+ ) {
+ _clang_index_setClientEntity ??= _dylib.lookupFunction<
+ _c_clang_index_setClientEntity,
+ _dart_clang_index_setClientEntity>('clang_index_setClientEntity');
+ return _clang_index_setClientEntity(
+ arg0,
+ arg1,
+ );
+ }
+
+ _dart_clang_index_setClientEntity _clang_index_setClientEntity;
+
+ /// An indexing action/session, to be applied to one or multiple
+ /// translation units.
+ ///
+ /// \param CIdx The index object with which the index action will be associated.
+ ffi.Pointer<ffi.Void> clang_IndexAction_create(
+ ffi.Pointer<ffi.Void> CIdx,
+ ) {
+ _clang_IndexAction_create ??= _dylib.lookupFunction<
+ _c_clang_IndexAction_create,
+ _dart_clang_IndexAction_create>('clang_IndexAction_create');
+ return _clang_IndexAction_create(
+ CIdx,
+ );
+ }
+
+ _dart_clang_IndexAction_create _clang_IndexAction_create;
+
+ /// Destroy the given index action.
+ ///
+ /// The index action must not be destroyed until all of the translation units
+ /// created within that index action have been destroyed.
+ void clang_IndexAction_dispose(
+ ffi.Pointer<ffi.Void> arg0,
+ ) {
+ _clang_IndexAction_dispose ??= _dylib.lookupFunction<
+ _c_clang_IndexAction_dispose,
+ _dart_clang_IndexAction_dispose>('clang_IndexAction_dispose');
+ return _clang_IndexAction_dispose(
+ arg0,
+ );
+ }
+
+ _dart_clang_IndexAction_dispose _clang_IndexAction_dispose;
+
+ /// Index the given source file and the translation unit corresponding
+ /// to that file via callbacks implemented through #IndexerCallbacks.
+ ///
+ /// \param client_data pointer data supplied by the client, which will
+ /// be passed to the invoked callbacks.
+ ///
+ /// \param index_callbacks Pointer to indexing callbacks that the client
+ /// implements.
+ ///
+ /// \param index_callbacks_size Size of #IndexerCallbacks structure that gets
+ /// passed in index_callbacks.
+ ///
+ /// \param index_options A bitmask of options that affects how indexing is
+ /// performed. This should be a bitwise OR of the CXIndexOpt_XXX flags.
+ ///
+ /// \param[out] out_TU pointer to store a \c CXTranslationUnit that can be
+ /// reused after indexing is finished. Set to \c NULL if you do not require it.
+ ///
+ /// \returns 0 on success or if there were errors from which the compiler could
+ /// recover. If there is a failure from which there is no recovery, returns
+ /// a non-zero \c CXErrorCode.
+ ///
+ /// The rest of the parameters are the same as #clang_parseTranslationUnit.
+ int clang_indexSourceFile(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ int index_callbacks_size,
+ int index_options,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ int TU_options,
+ ) {
+ _clang_indexSourceFile ??= _dylib.lookupFunction<_c_clang_indexSourceFile,
+ _dart_clang_indexSourceFile>('clang_indexSourceFile');
+ return _clang_indexSourceFile(
+ arg0,
+ client_data,
+ index_callbacks,
+ index_callbacks_size,
+ index_options,
+ source_filename,
+ command_line_args,
+ num_command_line_args,
+ unsaved_files,
+ num_unsaved_files,
+ out_TU,
+ TU_options,
+ );
+ }
+
+ _dart_clang_indexSourceFile _clang_indexSourceFile;
+
+ /// Same as clang_indexSourceFile but requires a full command line
+ /// for \c command_line_args including argv[0]. This is useful if the standard
+ /// library paths are relative to the binary.
+ int clang_indexSourceFileFullArgv(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ int index_callbacks_size,
+ int index_options,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ int TU_options,
+ ) {
+ _clang_indexSourceFileFullArgv ??= _dylib.lookupFunction<
+ _c_clang_indexSourceFileFullArgv,
+ _dart_clang_indexSourceFileFullArgv>('clang_indexSourceFileFullArgv');
+ return _clang_indexSourceFileFullArgv(
+ arg0,
+ client_data,
+ index_callbacks,
+ index_callbacks_size,
+ index_options,
+ source_filename,
+ command_line_args,
+ num_command_line_args,
+ unsaved_files,
+ num_unsaved_files,
+ out_TU,
+ TU_options,
+ );
+ }
+
+ _dart_clang_indexSourceFileFullArgv _clang_indexSourceFileFullArgv;
+
+ /// Index the given translation unit via callbacks implemented through
+ /// #IndexerCallbacks.
+ ///
+ /// The order of callback invocations is not guaranteed to be the same as
+ /// when indexing a source file. The high level order will be:
+ ///
+ /// -Preprocessor callbacks invocations
+ /// -Declaration/reference callbacks invocations
+ /// -Diagnostic callback invocations
+ ///
+ /// The parameters are the same as #clang_indexSourceFile.
+ ///
+ /// \returns If there is a failure from which there is no recovery, returns
+ /// non-zero, otherwise returns 0.
+ int clang_indexTranslationUnit(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ int index_callbacks_size,
+ int index_options,
+ ffi.Pointer<CXTranslationUnitImpl> arg5,
+ ) {
+ _clang_indexTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_indexTranslationUnit,
+ _dart_clang_indexTranslationUnit>('clang_indexTranslationUnit');
+ return _clang_indexTranslationUnit(
+ arg0,
+ client_data,
+ index_callbacks,
+ index_callbacks_size,
+ index_options,
+ arg5,
+ );
+ }
+
+ _dart_clang_indexTranslationUnit _clang_indexTranslationUnit;
+
+ ffi.Pointer<ffi.Int8> clang_getCString_wrap(
+ ffi.Pointer<CXString> string,
+ ) {
+ _clang_getCString_wrap ??= _dylib.lookupFunction<_c_clang_getCString_wrap,
+ _dart_clang_getCString_wrap>('clang_getCString_wrap');
+ return _clang_getCString_wrap(
+ string,
+ );
+ }
+
+ _dart_clang_getCString_wrap _clang_getCString_wrap;
+
+ void clang_disposeString_wrap(
+ ffi.Pointer<CXString> string,
+ ) {
+ _clang_disposeString_wrap ??= _dylib.lookupFunction<
+ _c_clang_disposeString_wrap,
+ _dart_clang_disposeString_wrap>('clang_disposeString_wrap');
+ return _clang_disposeString_wrap(
+ string,
+ );
+ }
+
+ _dart_clang_disposeString_wrap _clang_disposeString_wrap;
+
+ int clang_getCursorKind_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorKind_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorKind_wrap,
+ _dart_clang_getCursorKind_wrap>('clang_getCursorKind_wrap');
+ return _clang_getCursorKind_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorKind_wrap _clang_getCursorKind_wrap;
+
+ ffi.Pointer<CXString> clang_getCursorKindSpelling_wrap(
+ int kind,
+ ) {
+ _clang_getCursorKindSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorKindSpelling_wrap,
+ _dart_clang_getCursorKindSpelling_wrap>(
+ 'clang_getCursorKindSpelling_wrap');
+ return _clang_getCursorKindSpelling_wrap(
+ kind,
+ );
+ }
+
+ _dart_clang_getCursorKindSpelling_wrap _clang_getCursorKindSpelling_wrap;
+
+ ffi.Pointer<CXType> clang_getCursorType_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorType_wrap,
+ _dart_clang_getCursorType_wrap>('clang_getCursorType_wrap');
+ return _clang_getCursorType_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorType_wrap _clang_getCursorType_wrap;
+
+ ffi.Pointer<CXString> clang_getTypeSpelling_wrap(
+ ffi.Pointer<CXType> type,
+ ) {
+ _clang_getTypeSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypeSpelling_wrap,
+ _dart_clang_getTypeSpelling_wrap>('clang_getTypeSpelling_wrap');
+ return _clang_getTypeSpelling_wrap(
+ type,
+ );
+ }
+
+ _dart_clang_getTypeSpelling_wrap _clang_getTypeSpelling_wrap;
+
+ ffi.Pointer<CXString> clang_getTypeKindSpelling_wrap(
+ int typeKind,
+ ) {
+ _clang_getTypeKindSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypeKindSpelling_wrap,
+ _dart_clang_getTypeKindSpelling_wrap>('clang_getTypeKindSpelling_wrap');
+ return _clang_getTypeKindSpelling_wrap(
+ typeKind,
+ );
+ }
+
+ _dart_clang_getTypeKindSpelling_wrap _clang_getTypeKindSpelling_wrap;
+
+ ffi.Pointer<CXType> clang_getResultType_wrap(
+ ffi.Pointer<CXType> functionType,
+ ) {
+ _clang_getResultType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getResultType_wrap,
+ _dart_clang_getResultType_wrap>('clang_getResultType_wrap');
+ return _clang_getResultType_wrap(
+ functionType,
+ );
+ }
+
+ _dart_clang_getResultType_wrap _clang_getResultType_wrap;
+
+ ffi.Pointer<CXType> clang_getPointeeType_wrap(
+ ffi.Pointer<CXType> pointerType,
+ ) {
+ _clang_getPointeeType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getPointeeType_wrap,
+ _dart_clang_getPointeeType_wrap>('clang_getPointeeType_wrap');
+ return _clang_getPointeeType_wrap(
+ pointerType,
+ );
+ }
+
+ _dart_clang_getPointeeType_wrap _clang_getPointeeType_wrap;
+
+ ffi.Pointer<CXType> clang_getCanonicalType_wrap(
+ ffi.Pointer<CXType> typerefType,
+ ) {
+ _clang_getCanonicalType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCanonicalType_wrap,
+ _dart_clang_getCanonicalType_wrap>('clang_getCanonicalType_wrap');
+ return _clang_getCanonicalType_wrap(
+ typerefType,
+ );
+ }
+
+ _dart_clang_getCanonicalType_wrap _clang_getCanonicalType_wrap;
+
+ ffi.Pointer<CXType> clang_Type_getNamedType_wrap(
+ ffi.Pointer<CXType> elaboratedType,
+ ) {
+ _clang_Type_getNamedType_wrap ??= _dylib.lookupFunction<
+ _c_clang_Type_getNamedType_wrap,
+ _dart_clang_Type_getNamedType_wrap>('clang_Type_getNamedType_wrap');
+ return _clang_Type_getNamedType_wrap(
+ elaboratedType,
+ );
+ }
+
+ _dart_clang_Type_getNamedType_wrap _clang_Type_getNamedType_wrap;
+
+ ffi.Pointer<CXCursor> clang_getTypeDeclaration_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getTypeDeclaration_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypeDeclaration_wrap,
+ _dart_clang_getTypeDeclaration_wrap>('clang_getTypeDeclaration_wrap');
+ return _clang_getTypeDeclaration_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getTypeDeclaration_wrap _clang_getTypeDeclaration_wrap;
+
+ ffi.Pointer<CXType> clang_getTypedefDeclUnderlyingType_wrap(
+ ffi.Pointer<CXCursor> cxcursor,
+ ) {
+ _clang_getTypedefDeclUnderlyingType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypedefDeclUnderlyingType_wrap,
+ _dart_clang_getTypedefDeclUnderlyingType_wrap>(
+ 'clang_getTypedefDeclUnderlyingType_wrap');
+ return _clang_getTypedefDeclUnderlyingType_wrap(
+ cxcursor,
+ );
+ }
+
+ _dart_clang_getTypedefDeclUnderlyingType_wrap
+ _clang_getTypedefDeclUnderlyingType_wrap;
+
+ /// The name of parameter, struct, typedef.
+ ffi.Pointer<CXString> clang_getCursorSpelling_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorSpelling_wrap,
+ _dart_clang_getCursorSpelling_wrap>('clang_getCursorSpelling_wrap');
+ return _clang_getCursorSpelling_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorSpelling_wrap _clang_getCursorSpelling_wrap;
+
+ ffi.Pointer<CXCursor> clang_getTranslationUnitCursor_wrap(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ) {
+ _clang_getTranslationUnitCursor_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTranslationUnitCursor_wrap,
+ _dart_clang_getTranslationUnitCursor_wrap>(
+ 'clang_getTranslationUnitCursor_wrap');
+ return _clang_getTranslationUnitCursor_wrap(
+ tu,
+ );
+ }
+
+ _dart_clang_getTranslationUnitCursor_wrap
+ _clang_getTranslationUnitCursor_wrap;
+
+ ffi.Pointer<CXString> clang_formatDiagnostic_wrap(
+ ffi.Pointer<ffi.Void> diag,
+ int opts,
+ ) {
+ _clang_formatDiagnostic_wrap ??= _dylib.lookupFunction<
+ _c_clang_formatDiagnostic_wrap,
+ _dart_clang_formatDiagnostic_wrap>('clang_formatDiagnostic_wrap');
+ return _clang_formatDiagnostic_wrap(
+ diag,
+ opts,
+ );
+ }
+
+ _dart_clang_formatDiagnostic_wrap _clang_formatDiagnostic_wrap;
+
+ /// Visitor is a function pointer with parameters having pointers to cxcursor
+ /// instead of cxcursor by default.
+ int clang_visitChildren_wrap(
+ ffi.Pointer<CXCursor> parent,
+ ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
+ ffi.Pointer<ffi.Void> clientData,
+ ) {
+ _clang_visitChildren_wrap ??= _dylib.lookupFunction<
+ _c_clang_visitChildren_wrap,
+ _dart_clang_visitChildren_wrap>('clang_visitChildren_wrap');
+ return _clang_visitChildren_wrap(
+ parent,
+ _modifiedVisitor,
+ clientData,
+ );
+ }
+
+ _dart_clang_visitChildren_wrap _clang_visitChildren_wrap;
+
+ int clang_Cursor_getNumArguments_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getNumArguments_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getNumArguments_wrap,
+ _dart_clang_Cursor_getNumArguments_wrap>(
+ 'clang_Cursor_getNumArguments_wrap');
+ return _clang_Cursor_getNumArguments_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getNumArguments_wrap _clang_Cursor_getNumArguments_wrap;
+
+ ffi.Pointer<CXCursor> clang_Cursor_getArgument_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ int i,
+ ) {
+ _clang_Cursor_getArgument_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getArgument_wrap,
+ _dart_clang_Cursor_getArgument_wrap>('clang_Cursor_getArgument_wrap');
+ return _clang_Cursor_getArgument_wrap(
+ cursor,
+ i,
+ );
+ }
+
+ _dart_clang_Cursor_getArgument_wrap _clang_Cursor_getArgument_wrap;
+
+ int clang_getNumArgTypes_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getNumArgTypes_wrap ??= _dylib.lookupFunction<
+ _c_clang_getNumArgTypes_wrap,
+ _dart_clang_getNumArgTypes_wrap>('clang_getNumArgTypes_wrap');
+ return _clang_getNumArgTypes_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getNumArgTypes_wrap _clang_getNumArgTypes_wrap;
+
+ ffi.Pointer<CXType> clang_getArgType_wrap(
+ ffi.Pointer<CXType> cxtype,
+ int i,
+ ) {
+ _clang_getArgType_wrap ??= _dylib.lookupFunction<_c_clang_getArgType_wrap,
+ _dart_clang_getArgType_wrap>('clang_getArgType_wrap');
+ return _clang_getArgType_wrap(
+ cxtype,
+ i,
+ );
+ }
+
+ _dart_clang_getArgType_wrap _clang_getArgType_wrap;
+
+ int clang_getEnumConstantDeclValue_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getEnumConstantDeclValue_wrap ??= _dylib.lookupFunction<
+ _c_clang_getEnumConstantDeclValue_wrap,
+ _dart_clang_getEnumConstantDeclValue_wrap>(
+ 'clang_getEnumConstantDeclValue_wrap');
+ return _clang_getEnumConstantDeclValue_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getEnumConstantDeclValue_wrap
+ _clang_getEnumConstantDeclValue_wrap;
+
+ /// Returns non-zero if the ranges are the same, zero if they differ.
+ int clang_equalRanges_wrap(
+ ffi.Pointer<CXSourceRange> c1,
+ ffi.Pointer<CXSourceRange> c2,
+ ) {
+ _clang_equalRanges_wrap ??= _dylib.lookupFunction<_c_clang_equalRanges_wrap,
+ _dart_clang_equalRanges_wrap>('clang_equalRanges_wrap');
+ return _clang_equalRanges_wrap(
+ c1,
+ c2,
+ );
+ }
+
+ _dart_clang_equalRanges_wrap _clang_equalRanges_wrap;
+
+ /// Returns the comment range.
+ ffi.Pointer<CXSourceRange> clang_Cursor_getCommentRange_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getCommentRange_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getCommentRange_wrap,
+ _dart_clang_Cursor_getCommentRange_wrap>(
+ 'clang_Cursor_getCommentRange_wrap');
+ return _clang_Cursor_getCommentRange_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getCommentRange_wrap _clang_Cursor_getCommentRange_wrap;
+
+ /// Returns the raw comment.
+ ffi.Pointer<CXString> clang_Cursor_getRawCommentText_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getRawCommentText_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getRawCommentText_wrap,
+ _dart_clang_Cursor_getRawCommentText_wrap>(
+ 'clang_Cursor_getRawCommentText_wrap');
+ return _clang_Cursor_getRawCommentText_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getRawCommentText_wrap
+ _clang_Cursor_getRawCommentText_wrap;
+
+ /// Returns the first paragraph of doxygen doc comment.
+ ffi.Pointer<CXString> clang_Cursor_getBriefCommentText_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getBriefCommentText_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getBriefCommentText_wrap,
+ _dart_clang_Cursor_getBriefCommentText_wrap>(
+ 'clang_Cursor_getBriefCommentText_wrap');
+ return _clang_Cursor_getBriefCommentText_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getBriefCommentText_wrap
+ _clang_Cursor_getBriefCommentText_wrap;
+
+ ffi.Pointer<CXSourceLocation> clang_getCursorLocation_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorLocation_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorLocation_wrap,
+ _dart_clang_getCursorLocation_wrap>('clang_getCursorLocation_wrap');
+ return _clang_getCursorLocation_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorLocation_wrap _clang_getCursorLocation_wrap;
+
+ void clang_getFileLocation_wrap(
+ ffi.Pointer<CXSourceLocation> location,
+ ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+ ffi.Pointer<ffi.Uint32> line,
+ ffi.Pointer<ffi.Uint32> column,
+ ffi.Pointer<ffi.Uint32> offset,
+ ) {
+ _clang_getFileLocation_wrap ??= _dylib.lookupFunction<
+ _c_clang_getFileLocation_wrap,
+ _dart_clang_getFileLocation_wrap>('clang_getFileLocation_wrap');
+ return _clang_getFileLocation_wrap(
+ location,
+ file,
+ line,
+ column,
+ offset,
+ );
+ }
+
+ _dart_clang_getFileLocation_wrap _clang_getFileLocation_wrap;
+
+ ffi.Pointer<CXString> clang_getFileName_wrap(
+ ffi.Pointer<ffi.Void> SFile,
+ ) {
+ _clang_getFileName_wrap ??= _dylib.lookupFunction<_c_clang_getFileName_wrap,
+ _dart_clang_getFileName_wrap>('clang_getFileName_wrap');
+ return _clang_getFileName_wrap(
+ SFile,
+ );
+ }
+
+ _dart_clang_getFileName_wrap _clang_getFileName_wrap;
+
+ int clang_getNumElements_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getNumElements_wrap ??= _dylib.lookupFunction<
+ _c_clang_getNumElements_wrap,
+ _dart_clang_getNumElements_wrap>('clang_getNumElements_wrap');
+ return _clang_getNumElements_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getNumElements_wrap _clang_getNumElements_wrap;
+
+ ffi.Pointer<CXType> clang_getArrayElementType_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getArrayElementType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getArrayElementType_wrap,
+ _dart_clang_getArrayElementType_wrap>('clang_getArrayElementType_wrap');
+ return _clang_getArrayElementType_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getArrayElementType_wrap _clang_getArrayElementType_wrap;
}
-/// Contains the results of code-completion.
+/// A character string.
///
-/// This data structure contains the results of code completion, as
-/// produced by \c clang_codeCompleteAt(). Its contents must be freed by
-/// \c clang_disposeCodeCompleteResults.
-class CXCodeCompleteResults extends ffi.Struct {
- /// The code-completion results.
- ffi.Pointer<CXCompletionResult> Results;
+/// The \c CXString type is used to return strings from the interface when
+/// the ownership of that string might differ from one call to the next.
+/// Use \c clang_getCString() to retrieve the string data and, once finished
+/// with the string data, call \c clang_disposeString() to free the string.
+class CXString extends ffi.Struct {
+ ffi.Pointer<ffi.Void> data;
- /// The number of code-completion results stored in the
- /// \c Results array.
@ffi.Uint32()
- int NumResults;
+ int private_flags;
}
-/// A single result of code completion.
-class CXCompletionResult extends ffi.Struct {
- /// The kind of entity that this completion refers to.
- ///
- /// The cursor kind will be a macro, keyword, or a declaration (one of the
- /// *Decl cursor kinds), describing the entity that the completion is
- /// referring to.
- ///
- /// \todo In the future, we would like to provide a full cursor, to allow
- /// the client to extract additional information from declaration.
- @ffi.Int32()
- int CursorKind;
+class CXStringSet extends ffi.Struct {
+ ffi.Pointer<CXString> Strings;
- /// The code-completion string that describes how to insert this
- /// code-completion result into the editing buffer.
- ffi.Pointer<ffi.Void> CompletionString;
+ @ffi.Uint32()
+ int Count;
}
-/// A cursor representing some element in the abstract syntax tree for
-/// a translation unit.
+class CXTargetInfoImpl extends ffi.Struct {}
+
+class CXTranslationUnitImpl extends ffi.Struct {}
+
+/// Provides the contents of a file that has not yet been saved to disk.
///
-/// The cursor abstraction unifies the different kinds of entities in a
-/// program--declaration, statements, expressions, references to declarations,
-/// etc.--under a single "cursor" abstraction with a common set of operations.
-/// Common operation for a cursor include: getting the physical location in
-/// a source file where the cursor points, getting the name associated with a
-/// cursor, and retrieving cursors for any child nodes of a particular cursor.
-///
-/// Cursors can be produced in two specific ways.
-/// clang_getTranslationUnitCursor() produces a cursor for a translation unit,
-/// from which one can use clang_visitChildren() to explore the rest of the
-/// translation unit. clang_getCursor() maps from a physical source location
-/// to the entity that resides at that location, allowing one to map from the
-/// source code into the AST.
-class CXCursor extends ffi.Struct {
- @ffi.Int32()
- int kind;
+/// Each CXUnsavedFile instance provides the name of a file on the
+/// system along with the current contents of that file that have not
+/// yet been saved to disk.
+class CXUnsavedFile extends ffi.Struct {
+ /// The file whose contents have not yet been saved.
+ ///
+ /// This file must already exist in the file system.
+ ffi.Pointer<ffi.Int8> Filename;
- @ffi.Int32()
- int xdata;
+ /// A buffer containing the unsaved contents of this file.
+ ffi.Pointer<ffi.Int8> Contents;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_1;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_2;
-
- /// Helper for array `data`.
- ArrayHelper_CXCursor_data_level0 get data =>
- ArrayHelper_CXCursor_data_level0(this, [3], 0, 0);
+ /// The length of the unsaved contents of this buffer.
+ @ffi.Uint64()
+ int Length;
}
-/// Helper for array `data` in struct `CXCursor`.
-class ArrayHelper_CXCursor_data_level0 {
- final CXCursor _struct;
- final List<int> dimensions;
- final int level;
- final int _absoluteIndex;
- int get length => dimensions[level];
- ArrayHelper_CXCursor_data_level0(
- this._struct, this.dimensions, this.level, this._absoluteIndex);
- void _checkBounds(int index) {
- if (index >= length || index < 0) {
- throw RangeError(
- 'Dimension $level: index not in range 0..${length} exclusive.');
- }
- }
+/// Describes a version number of the form major.minor.subminor.
+class CXVersion extends ffi.Struct {
+ /// The major version number, e.g., the '10' in '10.7.3'. A negative
+ /// value indicates that there is no version number at all.
+ @ffi.Int32()
+ int Major;
- ffi.Pointer<ffi.Void> operator [](int index) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- return _struct._exp_workaround_data_item_0;
- case 1:
- return _struct._exp_workaround_data_item_1;
- case 2:
- return _struct._exp_workaround_data_item_2;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
+ /// The minor version number, e.g., the '7' in '10.7.3'. This value
+ /// will be negative if no minor version number was provided, e.g., for
+ /// version '10'.
+ @ffi.Int32()
+ int Minor;
- void operator []=(int index, ffi.Pointer<ffi.Void> value) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- _struct._exp_workaround_data_item_0 = value;
- break;
- case 1:
- _struct._exp_workaround_data_item_1 = value;
- break;
- case 2:
- _struct._exp_workaround_data_item_2 = value;
- break;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
+ /// The subminor version number, e.g., the '3' in '10.7.3'. This value
+ /// will be negative if no minor or subminor version number was provided,
+ /// e.g., in version '10' or '10.7'.
+ @ffi.Int32()
+ int Subminor;
}
-class CXCursorAndRangeVisitor extends ffi.Struct {}
+class CXGlobalOptFlags {
+ /// Used to indicate that no special CXIndex options are needed.
+ static const int CXGlobalOpt_None = 0;
-class CXCursorSetImpl extends ffi.Struct {}
+ /// Used to indicate that threads that libclang creates for indexing
+ /// purposes should use background priority.
+ ///
+ /// Affects #clang_indexSourceFile, #clang_indexTranslationUnit,
+ /// #clang_parseTranslationUnit, #clang_saveTranslationUnit.
+ static const int CXGlobalOpt_ThreadBackgroundPriorityForIndexing = 1;
+
+ /// Used to indicate that threads that libclang creates for editing
+ /// purposes should use background priority.
+ ///
+ /// Affects #clang_reparseTranslationUnit, #clang_codeCompleteAt,
+ /// #clang_annotateTokens
+ static const int CXGlobalOpt_ThreadBackgroundPriorityForEditing = 2;
+
+ /// Used to indicate that all threads that libclang creates should use
+ /// background priority.
+ static const int CXGlobalOpt_ThreadBackgroundPriorityForAll = 3;
+}
/// Uniquely identifies a CXFile, that refers to the same underlying file,
/// across an indexing session.
class CXFileUniqueID extends ffi.Struct {
@ffi.Uint64()
- int _exp_workaround_data_item_0;
+ int _unique_data_item_0;
@ffi.Uint64()
- int _exp_workaround_data_item_1;
+ int _unique_data_item_1;
@ffi.Uint64()
- int _exp_workaround_data_item_2;
+ int _unique_data_item_2;
/// Helper for array `data`.
ArrayHelper_CXFileUniqueID_data_level0 get data =>
@@ -164,11 +3028,11 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- return _struct._exp_workaround_data_item_0;
+ return _struct._unique_data_item_0;
case 1:
- return _struct._exp_workaround_data_item_1;
+ return _struct._unique_data_item_1;
case 2:
- return _struct._exp_workaround_data_item_2;
+ return _struct._unique_data_item_2;
default:
throw Exception('Invalid Array Helper generated.');
}
@@ -178,13 +3042,13 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- _struct._exp_workaround_data_item_0 = value;
+ _struct._unique_data_item_0 = value;
break;
case 1:
- _struct._exp_workaround_data_item_1 = value;
+ _struct._unique_data_item_1 = value;
break;
case 2:
- _struct._exp_workaround_data_item_2 = value;
+ _struct._unique_data_item_2 = value;
break;
default:
throw Exception('Invalid Array Helper generated.');
@@ -192,160 +3056,14 @@
}
}
-class CXGlobalOptFlags {
- /// Used to indicate that no special CXIndex options are needed.
- static const int CXGlobalOpt_None = 0;
-
- /// Used to indicate that threads that libclang creates for indexing
- /// purposes should use background priority.
- ///
- /// Affects #clang_indexSourceFile, #clang_indexTranslationUnit,
- /// #clang_parseTranslationUnit, #clang_saveTranslationUnit.
- static const int CXGlobalOpt_ThreadBackgroundPriorityForIndexing = 1;
-
- /// Used to indicate that threads that libclang creates for editing
- /// purposes should use background priority.
- ///
- /// Affects #clang_reparseTranslationUnit, #clang_codeCompleteAt,
- /// #clang_annotateTokens
- static const int CXGlobalOpt_ThreadBackgroundPriorityForEditing = 2;
-
- /// Used to indicate that all threads that libclang creates should use
- /// background priority.
- static const int CXGlobalOpt_ThreadBackgroundPriorityForAll = 3;
-}
-
-class CXIdxAttrInfo extends ffi.Struct {}
-
-class CXIdxBaseClassInfo extends ffi.Struct {}
-
-class CXIdxCXXClassDeclInfo extends ffi.Struct {
- ffi.Pointer<CXIdxDeclInfo> declInfo;
-
- ffi.Pointer<ffi.Pointer<CXIdxBaseClassInfo>> bases;
-
- @ffi.Uint32()
- int numBases;
-}
-
-class CXIdxContainerInfo extends ffi.Struct {}
-
-class CXIdxDeclInfo extends ffi.Struct {}
-
-class CXIdxEntityInfo extends ffi.Struct {}
-
-/// Data for IndexerCallbacks#indexEntityReference.
-class CXIdxEntityRefInfo extends ffi.Struct {}
-
-class CXIdxIBOutletCollectionAttrInfo extends ffi.Struct {}
-
-/// Data for IndexerCallbacks#importedASTFile.
-class CXIdxImportedASTFileInfo extends ffi.Struct {}
-
-/// Data for ppIncludedFile callback.
-class CXIdxIncludedFileInfo extends ffi.Struct {}
-
-/// Source location passed to index callbacks.
-class CXIdxLoc extends ffi.Struct {
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_1;
-
- /// Helper for array `ptr_data`.
- ArrayHelper_CXIdxLoc_ptr_data_level0 get ptr_data =>
- ArrayHelper_CXIdxLoc_ptr_data_level0(this, [2], 0, 0);
- @ffi.Uint32()
- int int_data;
-}
-
-/// Helper for array `ptr_data` in struct `CXIdxLoc`.
-class ArrayHelper_CXIdxLoc_ptr_data_level0 {
- final CXIdxLoc _struct;
- final List<int> dimensions;
- final int level;
- final int _absoluteIndex;
- int get length => dimensions[level];
- ArrayHelper_CXIdxLoc_ptr_data_level0(
- this._struct, this.dimensions, this.level, this._absoluteIndex);
- void _checkBounds(int index) {
- if (index >= length || index < 0) {
- throw RangeError(
- 'Dimension $level: index not in range 0..${length} exclusive.');
- }
- }
-
- ffi.Pointer<ffi.Void> operator [](int index) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- return _struct._exp_workaround_ptr_data_item_0;
- case 1:
- return _struct._exp_workaround_ptr_data_item_1;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-
- void operator []=(int index, ffi.Pointer<ffi.Void> value) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- _struct._exp_workaround_ptr_data_item_0 = value;
- break;
- case 1:
- _struct._exp_workaround_ptr_data_item_1 = value;
- break;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-}
-
-class CXIdxObjCCategoryDeclInfo extends ffi.Struct {}
-
-class CXIdxObjCContainerDeclInfo extends ffi.Struct {
- ffi.Pointer<CXIdxDeclInfo> declInfo;
-
- @ffi.Int32()
- int kind;
-}
-
-class CXIdxObjCInterfaceDeclInfo extends ffi.Struct {
- ffi.Pointer<CXIdxObjCContainerDeclInfo> containerInfo;
-
- ffi.Pointer<CXIdxBaseClassInfo> superInfo;
-
- ffi.Pointer<CXIdxObjCProtocolRefListInfo> protocols;
-}
-
-class CXIdxObjCPropertyDeclInfo extends ffi.Struct {
- ffi.Pointer<CXIdxDeclInfo> declInfo;
-
- ffi.Pointer<CXIdxEntityInfo> getter;
-
- ffi.Pointer<CXIdxEntityInfo> setter;
-}
-
-class CXIdxObjCProtocolRefInfo extends ffi.Struct {}
-
-class CXIdxObjCProtocolRefListInfo extends ffi.Struct {
- ffi.Pointer<ffi.Pointer<CXIdxObjCProtocolRefInfo>> protocols;
-
- @ffi.Uint32()
- int numProtocols;
-}
-
-/// Describes the availability of a given entity on a particular platform, e.g.,
-/// a particular class might only be available on Mac OS 10.7 or newer.
-class CXPlatformAvailability extends ffi.Struct {}
-
/// Identifies a specific source location within a translation
/// unit.
///
/// Use clang_getExpansionLocation() or clang_getSpellingLocation()
/// to map a source location to a particular file, line, and column.
class CXSourceLocation extends ffi.Struct {
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_1;
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_1;
/// Helper for array `ptr_data`.
ArrayHelper_CXSourceLocation_ptr_data_level0 get ptr_data =>
@@ -374,9 +3092,9 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- return _struct._exp_workaround_ptr_data_item_0;
+ return _struct._unique_ptr_data_item_0;
case 1:
- return _struct._exp_workaround_ptr_data_item_1;
+ return _struct._unique_ptr_data_item_1;
default:
throw Exception('Invalid Array Helper generated.');
}
@@ -386,10 +3104,10 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- _struct._exp_workaround_ptr_data_item_0 = value;
+ _struct._unique_ptr_data_item_0 = value;
break;
case 1:
- _struct._exp_workaround_ptr_data_item_1 = value;
+ _struct._unique_ptr_data_item_1 = value;
break;
default:
throw Exception('Invalid Array Helper generated.');
@@ -402,8 +3120,8 @@
/// Use clang_getRangeStart() and clang_getRangeEnd() to retrieve the
/// starting and end locations from a source range, respectively.
class CXSourceRange extends ffi.Struct {
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_1;
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_1;
/// Helper for array `ptr_data`.
ArrayHelper_CXSourceRange_ptr_data_level0 get ptr_data =>
@@ -435,9 +3153,9 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- return _struct._exp_workaround_ptr_data_item_0;
+ return _struct._unique_ptr_data_item_0;
case 1:
- return _struct._exp_workaround_ptr_data_item_1;
+ return _struct._unique_ptr_data_item_1;
default:
throw Exception('Invalid Array Helper generated.');
}
@@ -447,10 +3165,10 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- _struct._exp_workaround_ptr_data_item_0 = value;
+ _struct._unique_ptr_data_item_0 = value;
break;
case 1:
- _struct._exp_workaround_ptr_data_item_1 = value;
+ _struct._unique_ptr_data_item_1 = value;
break;
default:
throw Exception('Invalid Array Helper generated.');
@@ -468,24 +3186,12 @@
ffi.Pointer<CXSourceRange> ranges;
}
-/// A character string.
-///
-/// The \c CXString type is used to return strings from the interface when
-/// the ownership of that string might differ from one call to the next.
-/// Use \c clang_getCString() to retrieve the string data and, once finished
-/// with the string data, call \c clang_disposeString() to free the string.
-class CXString extends ffi.Struct {
- ffi.Pointer<ffi.Void> data;
+class CXTUResourceUsageEntry extends ffi.Struct {
+ @ffi.Int32()
+ int kind;
- @ffi.Uint32()
- int private_flags;
-}
-
-class CXStringSet extends ffi.Struct {
- ffi.Pointer<CXString> Strings;
-
- @ffi.Uint32()
- int Count;
+ @ffi.Uint64()
+ int amount;
}
/// The memory usage of a CXTranslationUnit, broken into categories.
@@ -498,109 +3204,46 @@
ffi.Pointer<CXTUResourceUsageEntry> entries;
}
-class CXTUResourceUsageEntry extends ffi.Struct {
+/// A cursor representing some element in the abstract syntax tree for
+/// a translation unit.
+///
+/// The cursor abstraction unifies the different kinds of entities in a
+/// program--declaration, statements, expressions, references to declarations,
+/// etc.--under a single "cursor" abstraction with a common set of operations.
+/// Common operation for a cursor include: getting the physical location in
+/// a source file where the cursor points, getting the name associated with a
+/// cursor, and retrieving cursors for any child nodes of a particular cursor.
+///
+/// Cursors can be produced in two specific ways.
+/// clang_getTranslationUnitCursor() produces a cursor for a translation unit,
+/// from which one can use clang_visitChildren() to explore the rest of the
+/// translation unit. clang_getCursor() maps from a physical source location
+/// to the entity that resides at that location, allowing one to map from the
+/// source code into the AST.
+class CXCursor extends ffi.Struct {
@ffi.Int32()
int kind;
- @ffi.Uint64()
- int amount;
-}
-
-class CXTargetInfoImpl extends ffi.Struct {}
-
-/// Describes a single preprocessing token.
-class CXToken extends ffi.Struct {
- @ffi.Uint32()
- int _exp_workaround_int_data_item_0;
- @ffi.Uint32()
- int _exp_workaround_int_data_item_1;
- @ffi.Uint32()
- int _exp_workaround_int_data_item_2;
- @ffi.Uint32()
- int _exp_workaround_int_data_item_3;
-
- /// Helper for array `int_data`.
- ArrayHelper_CXToken_int_data_level0 get int_data =>
- ArrayHelper_CXToken_int_data_level0(this, [4], 0, 0);
- ffi.Pointer<ffi.Void> ptr_data;
-}
-
-/// Helper for array `int_data` in struct `CXToken`.
-class ArrayHelper_CXToken_int_data_level0 {
- final CXToken _struct;
- final List<int> dimensions;
- final int level;
- final int _absoluteIndex;
- int get length => dimensions[level];
- ArrayHelper_CXToken_int_data_level0(
- this._struct, this.dimensions, this.level, this._absoluteIndex);
- void _checkBounds(int index) {
- if (index >= length || index < 0) {
- throw RangeError(
- 'Dimension $level: index not in range 0..${length} exclusive.');
- }
- }
-
- int operator [](int index) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- return _struct._exp_workaround_int_data_item_0;
- case 1:
- return _struct._exp_workaround_int_data_item_1;
- case 2:
- return _struct._exp_workaround_int_data_item_2;
- case 3:
- return _struct._exp_workaround_int_data_item_3;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-
- void operator []=(int index, int value) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- _struct._exp_workaround_int_data_item_0 = value;
- break;
- case 1:
- _struct._exp_workaround_int_data_item_1 = value;
- break;
- case 2:
- _struct._exp_workaround_int_data_item_2 = value;
- break;
- case 3:
- _struct._exp_workaround_int_data_item_3 = value;
- break;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-}
-
-class CXTranslationUnitImpl extends ffi.Struct {}
-
-/// The type of an element in the abstract syntax tree.
-class CXType extends ffi.Struct {
@ffi.Int32()
- int kind;
+ int xdata;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_1;
+ ffi.Pointer<ffi.Void> _unique_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_data_item_1;
+ ffi.Pointer<ffi.Void> _unique_data_item_2;
/// Helper for array `data`.
- ArrayHelper_CXType_data_level0 get data =>
- ArrayHelper_CXType_data_level0(this, [2], 0, 0);
+ ArrayHelper_CXCursor_data_level0 get data =>
+ ArrayHelper_CXCursor_data_level0(this, [3], 0, 0);
}
-/// Helper for array `data` in struct `CXType`.
-class ArrayHelper_CXType_data_level0 {
- final CXType _struct;
+/// Helper for array `data` in struct `CXCursor`.
+class ArrayHelper_CXCursor_data_level0 {
+ final CXCursor _struct;
final List<int> dimensions;
final int level;
final int _absoluteIndex;
int get length => dimensions[level];
- ArrayHelper_CXType_data_level0(
+ ArrayHelper_CXCursor_data_level0(
this._struct, this.dimensions, this.level, this._absoluteIndex);
void _checkBounds(int index) {
if (index >= length || index < 0) {
@@ -613,9 +3256,11 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- return _struct._exp_workaround_data_item_0;
+ return _struct._unique_data_item_0;
case 1:
- return _struct._exp_workaround_data_item_1;
+ return _struct._unique_data_item_1;
+ case 2:
+ return _struct._unique_data_item_2;
default:
throw Exception('Invalid Array Helper generated.');
}
@@ -625,10 +3270,13 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- _struct._exp_workaround_data_item_0 = value;
+ _struct._unique_data_item_0 = value;
break;
case 1:
- _struct._exp_workaround_data_item_1 = value;
+ _struct._unique_data_item_1 = value;
+ break;
+ case 2:
+ _struct._unique_data_item_2 = value;
break;
default:
throw Exception('Invalid Array Helper generated.');
@@ -636,6 +3284,12 @@
}
}
+/// Describes the availability of a given entity on a particular platform, e.g.,
+/// a particular class might only be available on Mac OS 10.7 or newer.
+class CXPlatformAvailability extends ffi.Struct {}
+
+class CXCursorSetImpl extends ffi.Struct {}
+
/// Describes the kind of type
class CXTypeKind {
/// Represents an invalid type (e.g., where no type is available).
@@ -766,47 +3420,1787 @@
static const int CXType_ExtVector = 176;
}
-/// Provides the contents of a file that has not yet been saved to disk.
-///
-/// Each CXUnsavedFile instance provides the name of a file on the
-/// system along with the current contents of that file that have not
-/// yet been saved to disk.
-class CXUnsavedFile extends ffi.Struct {
- /// The file whose contents have not yet been saved.
+/// The type of an element in the abstract syntax tree.
+class CXType extends ffi.Struct {
+ @ffi.Int32()
+ int kind;
+
+ ffi.Pointer<ffi.Void> _unique_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_data_item_1;
+
+ /// Helper for array `data`.
+ ArrayHelper_CXType_data_level0 get data =>
+ ArrayHelper_CXType_data_level0(this, [2], 0, 0);
+}
+
+/// Helper for array `data` in struct `CXType`.
+class ArrayHelper_CXType_data_level0 {
+ final CXType _struct;
+ final List<int> dimensions;
+ final int level;
+ final int _absoluteIndex;
+ int get length => dimensions[level];
+ ArrayHelper_CXType_data_level0(
+ this._struct, this.dimensions, this.level, this._absoluteIndex);
+ void _checkBounds(int index) {
+ if (index >= length || index < 0) {
+ throw RangeError(
+ 'Dimension $level: index not in range 0..${length} exclusive.');
+ }
+ }
+
+ ffi.Pointer<ffi.Void> operator [](int index) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ return _struct._unique_data_item_0;
+ case 1:
+ return _struct._unique_data_item_1;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+
+ void operator []=(int index, ffi.Pointer<ffi.Void> value) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ _struct._unique_data_item_0 = value;
+ break;
+ case 1:
+ _struct._unique_data_item_1 = value;
+ break;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+}
+
+/// Describes a single preprocessing token.
+class CXToken extends ffi.Struct {
+ @ffi.Uint32()
+ int _unique_int_data_item_0;
+ @ffi.Uint32()
+ int _unique_int_data_item_1;
+ @ffi.Uint32()
+ int _unique_int_data_item_2;
+ @ffi.Uint32()
+ int _unique_int_data_item_3;
+
+ /// Helper for array `int_data`.
+ ArrayHelper_CXToken_int_data_level0 get int_data =>
+ ArrayHelper_CXToken_int_data_level0(this, [4], 0, 0);
+ ffi.Pointer<ffi.Void> ptr_data;
+}
+
+/// Helper for array `int_data` in struct `CXToken`.
+class ArrayHelper_CXToken_int_data_level0 {
+ final CXToken _struct;
+ final List<int> dimensions;
+ final int level;
+ final int _absoluteIndex;
+ int get length => dimensions[level];
+ ArrayHelper_CXToken_int_data_level0(
+ this._struct, this.dimensions, this.level, this._absoluteIndex);
+ void _checkBounds(int index) {
+ if (index >= length || index < 0) {
+ throw RangeError(
+ 'Dimension $level: index not in range 0..${length} exclusive.');
+ }
+ }
+
+ int operator [](int index) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ return _struct._unique_int_data_item_0;
+ case 1:
+ return _struct._unique_int_data_item_1;
+ case 2:
+ return _struct._unique_int_data_item_2;
+ case 3:
+ return _struct._unique_int_data_item_3;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+
+ void operator []=(int index, int value) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ _struct._unique_int_data_item_0 = value;
+ break;
+ case 1:
+ _struct._unique_int_data_item_1 = value;
+ break;
+ case 2:
+ _struct._unique_int_data_item_2 = value;
+ break;
+ case 3:
+ _struct._unique_int_data_item_3 = value;
+ break;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+}
+
+/// A single result of code completion.
+class CXCompletionResult extends ffi.Struct {
+ /// The kind of entity that this completion refers to.
///
- /// This file must already exist in the file system.
- ffi.Pointer<ffi.Int8> Filename;
+ /// The cursor kind will be a macro, keyword, or a declaration (one of the
+ /// *Decl cursor kinds), describing the entity that the completion is
+ /// referring to.
+ ///
+ /// \todo In the future, we would like to provide a full cursor, to allow
+ /// the client to extract additional information from declaration.
+ @ffi.Int32()
+ int CursorKind;
- /// A buffer containing the unsaved contents of this file.
- ffi.Pointer<ffi.Int8> Contents;
-
- /// The length of the unsaved contents of this buffer.
- @ffi.Uint64()
- int Length;
+ /// The code-completion string that describes how to insert this
+ /// code-completion result into the editing buffer.
+ ffi.Pointer<ffi.Void> CompletionString;
}
-/// Describes a version number of the form major.minor.subminor.
-class CXVersion extends ffi.Struct {
- /// The major version number, e.g., the '10' in '10.7.3'. A negative
- /// value indicates that there is no version number at all.
- @ffi.Int32()
- int Major;
+/// Contains the results of code-completion.
+///
+/// This data structure contains the results of code completion, as
+/// produced by \c clang_codeCompleteAt(). Its contents must be freed by
+/// \c clang_disposeCodeCompleteResults.
+class CXCodeCompleteResults extends ffi.Struct {
+ /// The code-completion results.
+ ffi.Pointer<CXCompletionResult> Results;
- /// The minor version number, e.g., the '7' in '10.7.3'. This value
- /// will be negative if no minor version number was provided, e.g., for
- /// version '10'.
- @ffi.Int32()
- int Minor;
-
- /// The subminor version number, e.g., the '3' in '10.7.3'. This value
- /// will be negative if no minor or subminor version number was provided,
- /// e.g., in version '10' or '10.7'.
- @ffi.Int32()
- int Subminor;
+ /// The number of code-completion results stored in the
+ /// \c Results array.
+ @ffi.Uint32()
+ int NumResults;
}
+class CXCursorAndRangeVisitor extends ffi.Struct {}
+
+/// Source location passed to index callbacks.
+class CXIdxLoc extends ffi.Struct {
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_1;
+
+ /// Helper for array `ptr_data`.
+ ArrayHelper_CXIdxLoc_ptr_data_level0 get ptr_data =>
+ ArrayHelper_CXIdxLoc_ptr_data_level0(this, [2], 0, 0);
+ @ffi.Uint32()
+ int int_data;
+}
+
+/// Helper for array `ptr_data` in struct `CXIdxLoc`.
+class ArrayHelper_CXIdxLoc_ptr_data_level0 {
+ final CXIdxLoc _struct;
+ final List<int> dimensions;
+ final int level;
+ final int _absoluteIndex;
+ int get length => dimensions[level];
+ ArrayHelper_CXIdxLoc_ptr_data_level0(
+ this._struct, this.dimensions, this.level, this._absoluteIndex);
+ void _checkBounds(int index) {
+ if (index >= length || index < 0) {
+ throw RangeError(
+ 'Dimension $level: index not in range 0..${length} exclusive.');
+ }
+ }
+
+ ffi.Pointer<ffi.Void> operator [](int index) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ return _struct._unique_ptr_data_item_0;
+ case 1:
+ return _struct._unique_ptr_data_item_1;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+
+ void operator []=(int index, ffi.Pointer<ffi.Void> value) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ _struct._unique_ptr_data_item_0 = value;
+ break;
+ case 1:
+ _struct._unique_ptr_data_item_1 = value;
+ break;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+}
+
+/// Data for ppIncludedFile callback.
+class CXIdxIncludedFileInfo extends ffi.Struct {}
+
+/// Data for IndexerCallbacks#importedASTFile.
+class CXIdxImportedASTFileInfo extends ffi.Struct {}
+
+class CXIdxAttrInfo extends ffi.Struct {}
+
+class CXIdxEntityInfo extends ffi.Struct {}
+
+class CXIdxContainerInfo extends ffi.Struct {}
+
+class CXIdxIBOutletCollectionAttrInfo extends ffi.Struct {}
+
+class CXIdxDeclInfo extends ffi.Struct {}
+
+class CXIdxObjCContainerDeclInfo extends ffi.Struct {
+ ffi.Pointer<CXIdxDeclInfo> declInfo;
+
+ @ffi.Int32()
+ int kind;
+}
+
+class CXIdxBaseClassInfo extends ffi.Struct {}
+
+class CXIdxObjCProtocolRefInfo extends ffi.Struct {}
+
+class CXIdxObjCProtocolRefListInfo extends ffi.Struct {
+ ffi.Pointer<ffi.Pointer<CXIdxObjCProtocolRefInfo>> protocols;
+
+ @ffi.Uint32()
+ int numProtocols;
+}
+
+class CXIdxObjCInterfaceDeclInfo extends ffi.Struct {
+ ffi.Pointer<CXIdxObjCContainerDeclInfo> containerInfo;
+
+ ffi.Pointer<CXIdxBaseClassInfo> superInfo;
+
+ ffi.Pointer<CXIdxObjCProtocolRefListInfo> protocols;
+}
+
+class CXIdxObjCCategoryDeclInfo extends ffi.Struct {}
+
+class CXIdxObjCPropertyDeclInfo extends ffi.Struct {
+ ffi.Pointer<CXIdxDeclInfo> declInfo;
+
+ ffi.Pointer<CXIdxEntityInfo> getter;
+
+ ffi.Pointer<CXIdxEntityInfo> setter;
+}
+
+class CXIdxCXXClassDeclInfo extends ffi.Struct {
+ ffi.Pointer<CXIdxDeclInfo> declInfo;
+
+ ffi.Pointer<ffi.Pointer<CXIdxBaseClassInfo>> bases;
+
+ @ffi.Uint32()
+ int numBases;
+}
+
+/// Data for IndexerCallbacks#indexEntityReference.
+class CXIdxEntityRefInfo extends ffi.Struct {}
+
/// A group of callbacks used by #clang_indexSourceFile and
/// #clang_indexTranslationUnit.
+class IndexerCallbacks extends ffi.Struct {
+ /// Called periodically to check whether indexing should be aborted.
+ /// Should return 0 to continue, and non-zero to abort.
+ ffi.Pointer<ffi.NativeFunction<_typedefC_3>> abortQuery;
+
+ /// Called at the end of indexing; passes the complete diagnostic set.
+ ffi.Pointer<ffi.NativeFunction<_typedefC_4>> diagnostic;
+
+ ffi.Pointer<ffi.NativeFunction<_typedefC_5>> enteredMainFile;
+
+ /// Called when a file gets \#included/\#imported.
+ ffi.Pointer<ffi.NativeFunction<_typedefC_6>> ppIncludedFile;
+
+ /// Called when a AST file (PCH or module) gets imported.
+ ///
+ /// AST files will not get indexed (there will not be callbacks to index all
+ /// the entities in an AST file). The recommended action is that, if the AST
+ /// file is not already indexed, to initiate a new indexing job specific to
+ /// the AST file.
+ ffi.Pointer<ffi.NativeFunction<_typedefC_7>> importedASTFile;
+
+ /// Called at the beginning of indexing a translation unit.
+ ffi.Pointer<ffi.NativeFunction<_typedefC_8>> startedTranslationUnit;
+
+ ffi.Pointer<ffi.NativeFunction<_typedefC_9>> indexDeclaration;
+
+ /// Called to index a reference of an entity.
+ ffi.Pointer<ffi.NativeFunction<_typedefC_10>> indexEntityReference;
+}
+
+typedef _c_clang_disposeStringSet = ffi.Void Function(
+ ffi.Pointer<CXStringSet> set,
+);
+
+typedef _dart_clang_disposeStringSet = void Function(
+ ffi.Pointer<CXStringSet> set,
+);
+
+typedef _c_clang_createIndex = ffi.Pointer<ffi.Void> Function(
+ ffi.Int32 excludeDeclarationsFromPCH,
+ ffi.Int32 displayDiagnostics,
+);
+
+typedef _dart_clang_createIndex = ffi.Pointer<ffi.Void> Function(
+ int excludeDeclarationsFromPCH,
+ int displayDiagnostics,
+);
+
+typedef _c_clang_disposeIndex = ffi.Void Function(
+ ffi.Pointer<ffi.Void> index,
+);
+
+typedef _dart_clang_disposeIndex = void Function(
+ ffi.Pointer<ffi.Void> index,
+);
+
+typedef _c_clang_CXIndex_setGlobalOptions = ffi.Void Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Uint32 options,
+);
+
+typedef _dart_clang_CXIndex_setGlobalOptions = void Function(
+ ffi.Pointer<ffi.Void> arg0,
+ int options,
+);
+
+typedef _c_clang_CXIndex_getGlobalOptions = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _dart_clang_CXIndex_getGlobalOptions = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _c_clang_CXIndex_setInvocationEmissionPathOption = ffi.Void Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Int8> Path,
+);
+
+typedef _dart_clang_CXIndex_setInvocationEmissionPathOption = void Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Int8> Path,
+);
+
+typedef _c_clang_getFileTime = ffi.Int64 Function(
+ ffi.Pointer<ffi.Void> SFile,
+);
+
+typedef _dart_clang_getFileTime = int Function(
+ ffi.Pointer<ffi.Void> SFile,
+);
+
+typedef _c_clang_getFileUniqueID = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> file,
+ ffi.Pointer<CXFileUniqueID> outID,
+);
+
+typedef _dart_clang_getFileUniqueID = int Function(
+ ffi.Pointer<ffi.Void> file,
+ ffi.Pointer<CXFileUniqueID> outID,
+);
+
+typedef _c_clang_isFileMultipleIncludeGuarded = ffi.Uint32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+);
+
+typedef _dart_clang_isFileMultipleIncludeGuarded = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+);
+
+typedef _c_clang_getFile = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Int8> file_name,
+);
+
+typedef _dart_clang_getFile = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Int8> file_name,
+);
+
+typedef _c_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+ ffi.Pointer<ffi.Uint64> size,
+);
+
+typedef _dart_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+ ffi.Pointer<ffi.Uint64> size,
+);
+
+typedef _c_clang_File_isEqual = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> file1,
+ ffi.Pointer<ffi.Void> file2,
+);
+
+typedef _dart_clang_File_isEqual = int Function(
+ ffi.Pointer<ffi.Void> file1,
+ ffi.Pointer<ffi.Void> file2,
+);
+
+typedef _c_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+);
+
+typedef _dart_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.Void> file,
+);
+
+typedef _c_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+);
+
+typedef _dart_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList>
+ Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+);
+
+typedef _c_clang_disposeSourceRangeList = ffi.Void Function(
+ ffi.Pointer<CXSourceRangeList> ranges,
+);
+
+typedef _dart_clang_disposeSourceRangeList = void Function(
+ ffi.Pointer<CXSourceRangeList> ranges,
+);
+
+typedef _c_clang_getNumDiagnosticsInSet = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> Diags,
+);
+
+typedef _dart_clang_getNumDiagnosticsInSet = int Function(
+ ffi.Pointer<ffi.Void> Diags,
+);
+
+typedef _c_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> Diags,
+ ffi.Uint32 Index,
+);
+
+typedef _dart_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> Diags,
+ int Index,
+);
+
+typedef _c_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Int8> file,
+ ffi.Pointer<ffi.Int32> error,
+ ffi.Pointer<CXString> errorString,
+);
+
+typedef _dart_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Int8> file,
+ ffi.Pointer<ffi.Int32> error,
+ ffi.Pointer<CXString> errorString,
+);
+
+typedef _c_clang_disposeDiagnosticSet = ffi.Void Function(
+ ffi.Pointer<ffi.Void> Diags,
+);
+
+typedef _dart_clang_disposeDiagnosticSet = void Function(
+ ffi.Pointer<ffi.Void> Diags,
+);
+
+typedef _c_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> D,
+);
+
+typedef _dart_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> D,
+);
+
+typedef _c_clang_getNumDiagnostics = ffi.Uint32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+);
+
+typedef _dart_clang_getNumDiagnostics = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+);
+
+typedef _c_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+ ffi.Uint32 Index,
+);
+
+typedef _dart_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+ int Index,
+);
+
+typedef _c_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+);
+
+typedef _dart_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+);
+
+typedef _c_clang_disposeDiagnostic = ffi.Void Function(
+ ffi.Pointer<ffi.Void> Diagnostic,
+);
+
+typedef _dart_clang_disposeDiagnostic = void Function(
+ ffi.Pointer<ffi.Void> Diagnostic,
+);
+
+typedef _c_clang_defaultDiagnosticDisplayOptions = ffi.Uint32 Function();
+
+typedef _dart_clang_defaultDiagnosticDisplayOptions = int Function();
+
+typedef _c_clang_getDiagnosticSeverity = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _dart_clang_getDiagnosticSeverity = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _c_clang_getDiagnosticCategory = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _dart_clang_getDiagnosticCategory = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _c_clang_getDiagnosticNumRanges = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _dart_clang_getDiagnosticNumRanges = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _c_clang_getDiagnosticNumFixIts = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> Diagnostic,
+);
+
+typedef _dart_clang_getDiagnosticNumFixIts = int Function(
+ ffi.Pointer<ffi.Void> Diagnostic,
+);
+
+typedef _c_clang_createTranslationUnitFromSourceFile
+ = ffi.Pointer<CXTranslationUnitImpl> Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Int32 num_clang_command_line_args,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+);
+
+typedef _dart_clang_createTranslationUnitFromSourceFile
+ = ffi.Pointer<CXTranslationUnitImpl> Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ int num_clang_command_line_args,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
+ int num_unsaved_files,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+);
+
+typedef _c_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
+ Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> ast_filename,
+);
+
+typedef _dart_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
+ Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> ast_filename,
+);
+
+typedef _c_clang_createTranslationUnit2 = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> ast_filename,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+);
+
+typedef _dart_clang_createTranslationUnit2 = int Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> ast_filename,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+);
+
+typedef _c_clang_defaultEditingTranslationUnitOptions = ffi.Uint32 Function();
+
+typedef _dart_clang_defaultEditingTranslationUnitOptions = int Function();
+
+typedef _c_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
+ Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ ffi.Int32 num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Uint32 options,
+);
+
+typedef _dart_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
+ Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+);
+
+typedef _c_clang_parseTranslationUnit2 = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ ffi.Int32 num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Uint32 options,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+);
+
+typedef _dart_clang_parseTranslationUnit2 = int Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+);
+
+typedef _c_clang_parseTranslationUnit2FullArgv = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ ffi.Int32 num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Uint32 options,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+);
+
+typedef _dart_clang_parseTranslationUnit2FullArgv = int Function(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+);
+
+typedef _c_clang_defaultSaveOptions = ffi.Uint32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+);
+
+typedef _dart_clang_defaultSaveOptions = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+);
+
+typedef _c_clang_saveTranslationUnit = ffi.Int32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<ffi.Int8> FileName,
+ ffi.Uint32 options,
+);
+
+typedef _dart_clang_saveTranslationUnit = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<ffi.Int8> FileName,
+ int options,
+);
+
+typedef _c_clang_suspendTranslationUnit = ffi.Uint32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+);
+
+typedef _dart_clang_suspendTranslationUnit = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+);
+
+typedef _c_clang_disposeTranslationUnit = ffi.Void Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+);
+
+typedef _dart_clang_disposeTranslationUnit = void Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+);
+
+typedef _c_clang_defaultReparseOptions = ffi.Uint32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+);
+
+typedef _dart_clang_defaultReparseOptions = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+);
+
+typedef _c_clang_reparseTranslationUnit = ffi.Int32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ffi.Uint32 options,
+);
+
+typedef _dart_clang_reparseTranslationUnit = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ int num_unsaved_files,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int options,
+);
+
+typedef _c_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
+ ffi.Int32 kind,
+);
+
+typedef _dart_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
+ int kind,
+);
+
+typedef _c_clang_getTranslationUnitTargetInfo = ffi.Pointer<CXTargetInfoImpl>
+ Function(
+ ffi.Pointer<CXTranslationUnitImpl> CTUnit,
+);
+
+typedef _dart_clang_getTranslationUnitTargetInfo = ffi.Pointer<CXTargetInfoImpl>
+ Function(
+ ffi.Pointer<CXTranslationUnitImpl> CTUnit,
+);
+
+typedef _c_clang_TargetInfo_dispose = ffi.Void Function(
+ ffi.Pointer<CXTargetInfoImpl> Info,
+);
+
+typedef _dart_clang_TargetInfo_dispose = void Function(
+ ffi.Pointer<CXTargetInfoImpl> Info,
+);
+
+typedef _c_clang_TargetInfo_getPointerWidth = ffi.Int32 Function(
+ ffi.Pointer<CXTargetInfoImpl> Info,
+);
+
+typedef _dart_clang_TargetInfo_getPointerWidth = int Function(
+ ffi.Pointer<CXTargetInfoImpl> Info,
+);
+
+typedef _c_clang_isDeclaration = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isDeclaration = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isReference = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isReference = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isExpression = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isExpression = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isStatement = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isStatement = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isAttribute = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isAttribute = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isInvalid = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isInvalid = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isTranslationUnit = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isTranslationUnit = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isPreprocessing = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isPreprocessing = int Function(
+ int arg0,
+);
+
+typedef _c_clang_isUnexposed = ffi.Uint32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_isUnexposed = int Function(
+ int arg0,
+);
+
+typedef _c_clang_disposeCXPlatformAvailability = ffi.Void Function(
+ ffi.Pointer<CXPlatformAvailability> availability,
+);
+
+typedef _dart_clang_disposeCXPlatformAvailability = void Function(
+ ffi.Pointer<CXPlatformAvailability> availability,
+);
+
+typedef _c_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl> Function();
+
+typedef _dart_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl> Function();
+
+typedef _c_clang_disposeCXCursorSet = ffi.Void Function(
+ ffi.Pointer<CXCursorSetImpl> cset,
+);
+
+typedef _dart_clang_disposeCXCursorSet = void Function(
+ ffi.Pointer<CXCursorSetImpl> cset,
+);
+
+typedef _c_clang_disposeOverriddenCursors = ffi.Void Function(
+ ffi.Pointer<CXCursor> overridden,
+);
+
+typedef _dart_clang_disposeOverriddenCursors = void Function(
+ ffi.Pointer<CXCursor> overridden,
+);
+
+typedef _c_clang_PrintingPolicy_getProperty = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> Policy,
+ ffi.Int32 Property,
+);
+
+typedef _dart_clang_PrintingPolicy_getProperty = int Function(
+ ffi.Pointer<ffi.Void> Policy,
+ int Property,
+);
+
+typedef _c_clang_PrintingPolicy_setProperty = ffi.Void Function(
+ ffi.Pointer<ffi.Void> Policy,
+ ffi.Int32 Property,
+ ffi.Uint32 Value,
+);
+
+typedef _dart_clang_PrintingPolicy_setProperty = void Function(
+ ffi.Pointer<ffi.Void> Policy,
+ int Property,
+ int Value,
+);
+
+typedef _c_clang_PrintingPolicy_dispose = ffi.Void Function(
+ ffi.Pointer<ffi.Void> Policy,
+);
+
+typedef _dart_clang_PrintingPolicy_dispose = void Function(
+ ffi.Pointer<ffi.Void> Policy,
+);
+
+typedef _c_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+);
+
+typedef _dart_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+);
+
+typedef _c_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _dart_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _c_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _dart_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _c_clang_Module_isSystem = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _dart_clang_Module_isSystem = int Function(
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _c_clang_Module_getNumTopLevelHeaders = ffi.Uint32 Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _dart_clang_Module_getNumTopLevelHeaders = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> Module,
+);
+
+typedef _c_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> Module,
+ ffi.Uint32 Index,
+);
+
+typedef _dart_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ffi.Pointer<ffi.Void> Module,
+ int Index,
+);
+
+typedef _c_clang_annotateTokens = ffi.Void Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<CXToken> Tokens,
+ ffi.Uint32 NumTokens,
+ ffi.Pointer<CXCursor> Cursors,
+);
+
+typedef _dart_clang_annotateTokens = void Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<CXToken> Tokens,
+ int NumTokens,
+ ffi.Pointer<CXCursor> Cursors,
+);
+
+typedef _c_clang_disposeTokens = ffi.Void Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<CXToken> Tokens,
+ ffi.Uint32 NumTokens,
+);
+
+typedef _dart_clang_disposeTokens = void Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<CXToken> Tokens,
+ int NumTokens,
+);
+
+typedef _c_clang_enableStackTraces = ffi.Void Function();
+
+typedef _dart_clang_enableStackTraces = void Function();
+
+typedef _typedefC_1 = ffi.Void Function(
+ ffi.Pointer<ffi.Void>,
+);
+
+typedef _c_clang_executeOnThread = ffi.Void Function(
+ ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
+ ffi.Pointer<ffi.Void> user_data,
+ ffi.Uint32 stack_size,
+);
+
+typedef _dart_clang_executeOnThread = void Function(
+ ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
+ ffi.Pointer<ffi.Void> user_data,
+ int stack_size,
+);
+
+typedef _c_clang_getCompletionChunkKind = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> completion_string,
+ ffi.Uint32 chunk_number,
+);
+
+typedef _dart_clang_getCompletionChunkKind = int Function(
+ ffi.Pointer<ffi.Void> completion_string,
+ int chunk_number,
+);
+
+typedef _c_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
+ Function(
+ ffi.Pointer<ffi.Void> completion_string,
+ ffi.Uint32 chunk_number,
+);
+
+typedef _dart_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
+ Function(
+ ffi.Pointer<ffi.Void> completion_string,
+ int chunk_number,
+);
+
+typedef _c_clang_getNumCompletionChunks = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _dart_clang_getNumCompletionChunks = int Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _c_clang_getCompletionPriority = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _dart_clang_getCompletionPriority = int Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _c_clang_getCompletionAvailability = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _dart_clang_getCompletionAvailability = int Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _c_clang_getCompletionNumAnnotations = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _dart_clang_getCompletionNumAnnotations = int Function(
+ ffi.Pointer<ffi.Void> completion_string,
+);
+
+typedef _c_clang_getCompletionNumFixIts = ffi.Uint32 Function(
+ ffi.Pointer<CXCodeCompleteResults> results,
+ ffi.Uint32 completion_index,
+);
+
+typedef _dart_clang_getCompletionNumFixIts = int Function(
+ ffi.Pointer<CXCodeCompleteResults> results,
+ int completion_index,
+);
+
+typedef _c_clang_defaultCodeCompleteOptions = ffi.Uint32 Function();
+
+typedef _dart_clang_defaultCodeCompleteOptions = int Function();
+
+typedef _c_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults> Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<ffi.Int8> complete_filename,
+ ffi.Uint32 complete_line,
+ ffi.Uint32 complete_column,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Uint32 options,
+);
+
+typedef _dart_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults>
+ Function(
+ ffi.Pointer<CXTranslationUnitImpl> TU,
+ ffi.Pointer<ffi.Int8> complete_filename,
+ int complete_line,
+ int complete_column,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+);
+
+typedef _c_clang_sortCodeCompletionResults = ffi.Void Function(
+ ffi.Pointer<CXCompletionResult> Results,
+ ffi.Uint32 NumResults,
+);
+
+typedef _dart_clang_sortCodeCompletionResults = void Function(
+ ffi.Pointer<CXCompletionResult> Results,
+ int NumResults,
+);
+
+typedef _c_clang_disposeCodeCompleteResults = ffi.Void Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+);
+
+typedef _dart_clang_disposeCodeCompleteResults = void Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+);
+
+typedef _c_clang_codeCompleteGetNumDiagnostics = ffi.Uint32 Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+);
+
+typedef _dart_clang_codeCompleteGetNumDiagnostics = int Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+);
+
+typedef _c_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ ffi.Uint32 Index,
+);
+
+typedef _dart_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ int Index,
+);
+
+typedef _c_clang_codeCompleteGetContexts = ffi.Uint64 Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+);
+
+typedef _dart_clang_codeCompleteGetContexts = int Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+);
+
+typedef _c_clang_codeCompleteGetContainerKind = ffi.Int32 Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ ffi.Pointer<ffi.Uint32> IsIncomplete,
+);
+
+typedef _dart_clang_codeCompleteGetContainerKind = int Function(
+ ffi.Pointer<CXCodeCompleteResults> Results,
+ ffi.Pointer<ffi.Uint32> IsIncomplete,
+);
+
+typedef _c_clang_toggleCrashRecovery = ffi.Void Function(
+ ffi.Uint32 isEnabled,
+);
+
+typedef _dart_clang_toggleCrashRecovery = void Function(
+ int isEnabled,
+);
+
+typedef CXInclusionVisitor_1 = ffi.Void Function(
+ ffi.Pointer<ffi.Void>,
+ ffi.Pointer<CXSourceLocation>,
+ ffi.Uint32,
+ ffi.Pointer<ffi.Void>,
+);
+
+typedef _c_clang_getInclusions = ffi.Void Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor_1>> visitor,
+ ffi.Pointer<ffi.Void> client_data,
+);
+
+typedef _dart_clang_getInclusions = void Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor_1>> visitor,
+ ffi.Pointer<ffi.Void> client_data,
+);
+
+typedef _c_clang_EvalResult_getKind = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_getKind = int Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_EvalResult_getAsInt = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_getAsInt = int Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_EvalResult_getAsLongLong = ffi.Int64 Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_getAsLongLong = int Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_EvalResult_isUnsignedInt = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_isUnsignedInt = int Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_EvalResult_getAsUnsigned = ffi.Uint64 Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_getAsUnsigned = int Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_EvalResult_getAsDouble = ffi.Double Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_getAsDouble = double Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_EvalResult_dispose = ffi.Void Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _dart_clang_EvalResult_dispose = void Function(
+ ffi.Pointer<ffi.Void> E,
+);
+
+typedef _c_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Int8> path,
+);
+
+typedef _dart_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Int8> path,
+);
+
+typedef _c_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
+ ffi.Uint32 numFiles,
+);
+
+typedef _dart_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
+ int numFiles,
+);
+
+typedef _c_clang_remap_getNumFiles = ffi.Uint32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _dart_clang_remap_getNumFiles = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _c_clang_remap_getFilenames = ffi.Void Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Uint32 index,
+ ffi.Pointer<CXString> original,
+ ffi.Pointer<CXString> transformed,
+);
+
+typedef _dart_clang_remap_getFilenames = void Function(
+ ffi.Pointer<ffi.Void> arg0,
+ int index,
+ ffi.Pointer<CXString> original,
+ ffi.Pointer<CXString> transformed,
+);
+
+typedef _c_clang_remap_dispose = ffi.Void Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _dart_clang_remap_dispose = void Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _c_clang_index_isEntityObjCContainerKind = ffi.Int32 Function(
+ ffi.Int32 arg0,
+);
+
+typedef _dart_clang_index_isEntityObjCContainerKind = int Function(
+ int arg0,
+);
+
+typedef _c_clang_index_getObjCContainerDeclInfo
+ = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _dart_clang_index_getObjCContainerDeclInfo
+ = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _c_clang_index_getObjCInterfaceDeclInfo
+ = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _dart_clang_index_getObjCInterfaceDeclInfo
+ = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _c_clang_index_getObjCCategoryDeclInfo
+ = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _dart_clang_index_getObjCCategoryDeclInfo
+ = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _c_clang_index_getObjCProtocolRefListInfo
+ = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _dart_clang_index_getObjCProtocolRefListInfo
+ = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _c_clang_index_getObjCPropertyDeclInfo
+ = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _dart_clang_index_getObjCPropertyDeclInfo
+ = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _c_clang_index_getIBOutletCollectionAttrInfo
+ = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
+ ffi.Pointer<CXIdxAttrInfo> arg0,
+);
+
+typedef _dart_clang_index_getIBOutletCollectionAttrInfo
+ = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
+ ffi.Pointer<CXIdxAttrInfo> arg0,
+);
+
+typedef _c_clang_index_getCXXClassDeclInfo = ffi.Pointer<CXIdxCXXClassDeclInfo>
+ Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _dart_clang_index_getCXXClassDeclInfo
+ = ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
+ ffi.Pointer<CXIdxDeclInfo> arg0,
+);
+
+typedef _c_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXIdxContainerInfo> arg0,
+);
+
+typedef _dart_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXIdxContainerInfo> arg0,
+);
+
+typedef _c_clang_index_setClientContainer = ffi.Void Function(
+ ffi.Pointer<CXIdxContainerInfo> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+);
+
+typedef _dart_clang_index_setClientContainer = void Function(
+ ffi.Pointer<CXIdxContainerInfo> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+);
+
+typedef _c_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXIdxEntityInfo> arg0,
+);
+
+typedef _dart_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<CXIdxEntityInfo> arg0,
+);
+
+typedef _c_clang_index_setClientEntity = ffi.Void Function(
+ ffi.Pointer<CXIdxEntityInfo> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+);
+
+typedef _dart_clang_index_setClientEntity = void Function(
+ ffi.Pointer<CXIdxEntityInfo> arg0,
+ ffi.Pointer<ffi.Void> arg1,
+);
+
+typedef _c_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> CIdx,
+);
+
+typedef _dart_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
+ ffi.Pointer<ffi.Void> CIdx,
+);
+
+typedef _c_clang_IndexAction_dispose = ffi.Void Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _dart_clang_IndexAction_dispose = void Function(
+ ffi.Pointer<ffi.Void> arg0,
+);
+
+typedef _c_clang_indexSourceFile = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ ffi.Uint32 index_callbacks_size,
+ ffi.Uint32 index_options,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ ffi.Int32 num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ ffi.Uint32 TU_options,
+);
+
+typedef _dart_clang_indexSourceFile = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ int index_callbacks_size,
+ int index_options,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ int TU_options,
+);
+
+typedef _c_clang_indexSourceFileFullArgv = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ ffi.Uint32 index_callbacks_size,
+ ffi.Uint32 index_options,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ ffi.Int32 num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ ffi.Uint32 num_unsaved_files,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ ffi.Uint32 TU_options,
+);
+
+typedef _dart_clang_indexSourceFileFullArgv = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ int index_callbacks_size,
+ int index_options,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
+ int TU_options,
+);
+
+typedef _c_clang_indexTranslationUnit = ffi.Int32 Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ ffi.Uint32 index_callbacks_size,
+ ffi.Uint32 index_options,
+ ffi.Pointer<CXTranslationUnitImpl> arg5,
+);
+
+typedef _dart_clang_indexTranslationUnit = int Function(
+ ffi.Pointer<ffi.Void> arg0,
+ ffi.Pointer<ffi.Void> client_data,
+ ffi.Pointer<IndexerCallbacks> index_callbacks,
+ int index_callbacks_size,
+ int index_options,
+ ffi.Pointer<CXTranslationUnitImpl> arg5,
+);
+
+typedef _c_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _dart_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _c_clang_disposeString_wrap = ffi.Void Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _dart_clang_disposeString_wrap = void Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _c_clang_getCursorKind_wrap = ffi.Int32 Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorKind_wrap = int Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Int32 kind,
+);
+
+typedef _dart_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ int kind,
+);
+
+typedef _c_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXType> type,
+);
+
+typedef _dart_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXType> type,
+);
+
+typedef _c_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Int32 typeKind,
+);
+
+typedef _dart_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ int typeKind,
+);
+
+typedef _c_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> functionType,
+);
+
+typedef _dart_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> functionType,
+);
+
+typedef _c_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> pointerType,
+);
+
+typedef _dart_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> pointerType,
+);
+
+typedef _c_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> typerefType,
+);
+
+typedef _dart_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> typerefType,
+);
+
+typedef _c_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> elaboratedType,
+);
+
+typedef _dart_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> elaboratedType,
+);
+
+typedef _c_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _c_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
+ Function(
+ ffi.Pointer<CXCursor> cxcursor,
+);
+
+typedef _dart_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
+ Function(
+ ffi.Pointer<CXCursor> cxcursor,
+);
+
+typedef _c_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+);
+
+typedef _dart_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor>
+ Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+);
+
+typedef _c_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> diag,
+ ffi.Int32 opts,
+);
+
+typedef _dart_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> diag,
+ int opts,
+);
+
+typedef ModifiedCXCursorVisitor_1 = ffi.Int32 Function(
+ ffi.Pointer<CXCursor>,
+ ffi.Pointer<CXCursor>,
+ ffi.Pointer<ffi.Void>,
+);
+
+typedef _c_clang_visitChildren_wrap = ffi.Uint32 Function(
+ ffi.Pointer<CXCursor> parent,
+ ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
+ ffi.Pointer<ffi.Void> clientData,
+);
+
+typedef _dart_clang_visitChildren_wrap = int Function(
+ ffi.Pointer<CXCursor> parent,
+ ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
+ ffi.Pointer<ffi.Void> clientData,
+);
+
+typedef _c_clang_Cursor_getNumArguments_wrap = ffi.Int32 Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getNumArguments_wrap = int Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXCursor> cursor,
+ ffi.Uint32 i,
+);
+
+typedef _dart_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXCursor> cursor,
+ int i,
+);
+
+typedef _c_clang_getNumArgTypes_wrap = ffi.Int32 Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getNumArgTypes_wrap = int Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _c_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+ ffi.Uint32 i,
+);
+
+typedef _dart_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+ int i,
+);
+
+typedef _c_clang_getEnumConstantDeclValue_wrap = ffi.Int64 Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getEnumConstantDeclValue_wrap = int Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_equalRanges_wrap = ffi.Uint32 Function(
+ ffi.Pointer<CXSourceRange> c1,
+ ffi.Pointer<CXSourceRange> c2,
+);
+
+typedef _dart_clang_equalRanges_wrap = int Function(
+ ffi.Pointer<CXSourceRange> c1,
+ ffi.Pointer<CXSourceRange> c2,
+);
+
+typedef _c_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getFileLocation_wrap = ffi.Void Function(
+ ffi.Pointer<CXSourceLocation> location,
+ ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+ ffi.Pointer<ffi.Uint32> line,
+ ffi.Pointer<ffi.Uint32> column,
+ ffi.Pointer<ffi.Uint32> offset,
+);
+
+typedef _dart_clang_getFileLocation_wrap = void Function(
+ ffi.Pointer<CXSourceLocation> location,
+ ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+ ffi.Pointer<ffi.Uint32> line,
+ ffi.Pointer<ffi.Uint32> column,
+ ffi.Pointer<ffi.Uint32> offset,
+);
+
+typedef _c_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> SFile,
+);
+
+typedef _dart_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> SFile,
+);
+
+typedef _c_clang_getNumElements_wrap = ffi.Uint64 Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getNumElements_wrap = int Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _c_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
typedef _typedefC_3 = ffi.Int32 Function(
ffi.Pointer<ffi.Void>,
ffi.Pointer<ffi.Void>,
@@ -848,4276 +5242,3 @@
ffi.Pointer<ffi.Void>,
ffi.Pointer<CXIdxEntityRefInfo>,
);
-
-class IndexerCallbacks extends ffi.Struct {
- /// Called periodically to check whether indexing should be aborted.
- /// Should return 0 to continue, and non-zero to abort.
- ffi.Pointer<ffi.NativeFunction<_typedefC_3>> abortQuery;
-
- /// Called at the end of indexing; passes the complete diagnostic set.
- ffi.Pointer<ffi.NativeFunction<_typedefC_4>> diagnostic;
-
- ffi.Pointer<ffi.NativeFunction<_typedefC_5>> enteredMainFile;
-
- /// Called when a file gets \#included/\#imported.
- ffi.Pointer<ffi.NativeFunction<_typedefC_6>> ppIncludedFile;
-
- /// Called when a AST file (PCH or module) gets imported.
- ///
- /// AST files will not get indexed (there will not be callbacks to index all
- /// the entities in an AST file). The recommended action is that, if the AST
- /// file is not already indexed, to initiate a new indexing job specific to
- /// the AST file.
- ffi.Pointer<ffi.NativeFunction<_typedefC_7>> importedASTFile;
-
- /// Called at the beginning of indexing a translation unit.
- ffi.Pointer<ffi.NativeFunction<_typedefC_8>> startedTranslationUnit;
-
- ffi.Pointer<ffi.NativeFunction<_typedefC_9>> indexDeclaration;
-
- /// Called to index a reference of an entity.
- ffi.Pointer<ffi.NativeFunction<_typedefC_10>> indexEntityReference;
-}
-
-/// Gets the general options associated with a CXIndex.
-///
-/// \returns A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags that
-/// are associated with the given CXIndex object.
-int clang_CXIndex_getGlobalOptions(
- ffi.Pointer<ffi.Void> arg0,
-) {
- return _clang_CXIndex_getGlobalOptions(
- arg0,
- );
-}
-
-final _dart_clang_CXIndex_getGlobalOptions _clang_CXIndex_getGlobalOptions =
- _dylib.lookupFunction<_c_clang_CXIndex_getGlobalOptions,
- _dart_clang_CXIndex_getGlobalOptions>('clang_CXIndex_getGlobalOptions');
-
-typedef _c_clang_CXIndex_getGlobalOptions = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_CXIndex_getGlobalOptions = int Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-/// Sets general options associated with a CXIndex.
-///
-/// For example:
-/// \code
-/// CXIndex idx = ...;
-/// clang_CXIndex_setGlobalOptions(idx,
-/// clang_CXIndex_getGlobalOptions(idx) |
-/// CXGlobalOpt_ThreadBackgroundPriorityForIndexing);
-/// \endcode
-///
-/// \param options A bitmask of options, a bitwise OR of CXGlobalOpt_XXX flags.
-void clang_CXIndex_setGlobalOptions(
- ffi.Pointer<ffi.Void> arg0,
- int options,
-) {
- return _clang_CXIndex_setGlobalOptions(
- arg0,
- options,
- );
-}
-
-final _dart_clang_CXIndex_setGlobalOptions _clang_CXIndex_setGlobalOptions =
- _dylib.lookupFunction<_c_clang_CXIndex_setGlobalOptions,
- _dart_clang_CXIndex_setGlobalOptions>('clang_CXIndex_setGlobalOptions');
-
-typedef _c_clang_CXIndex_setGlobalOptions = ffi.Void Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Uint32 options,
-);
-
-typedef _dart_clang_CXIndex_setGlobalOptions = void Function(
- ffi.Pointer<ffi.Void> arg0,
- int options,
-);
-
-/// Sets the invocation emission path option in a CXIndex.
-///
-/// The invocation emission path specifies a path which will contain log
-/// files for certain libclang invocations. A null value (default) implies that
-/// libclang invocations are not logged..
-void clang_CXIndex_setInvocationEmissionPathOption(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Int8> Path,
-) {
- return _clang_CXIndex_setInvocationEmissionPathOption(
- arg0,
- Path,
- );
-}
-
-final _dart_clang_CXIndex_setInvocationEmissionPathOption
- _clang_CXIndex_setInvocationEmissionPathOption = _dylib.lookupFunction<
- _c_clang_CXIndex_setInvocationEmissionPathOption,
- _dart_clang_CXIndex_setInvocationEmissionPathOption>(
- 'clang_CXIndex_setInvocationEmissionPathOption');
-
-typedef _c_clang_CXIndex_setInvocationEmissionPathOption = ffi.Void Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Int8> Path,
-);
-
-typedef _dart_clang_CXIndex_setInvocationEmissionPathOption = void Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Int8> Path,
-);
-
-ffi.Pointer<CXCursor> clang_Cursor_getArgument_wrap(
- ffi.Pointer<CXCursor> cursor,
- int i,
-) {
- return _clang_Cursor_getArgument_wrap(
- cursor,
- i,
- );
-}
-
-final _dart_clang_Cursor_getArgument_wrap _clang_Cursor_getArgument_wrap =
- _dylib.lookupFunction<_c_clang_Cursor_getArgument_wrap,
- _dart_clang_Cursor_getArgument_wrap>('clang_Cursor_getArgument_wrap');
-
-typedef _c_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXCursor> cursor,
- ffi.Uint32 i,
-);
-
-typedef _dart_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXCursor> cursor,
- int i,
-);
-
-/// Returns the first paragraph of doxygen doc comment.
-ffi.Pointer<CXString> clang_Cursor_getBriefCommentText_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getBriefCommentText_wrap(
- cursor,
- );
-}
-
-final _dart_clang_Cursor_getBriefCommentText_wrap
- _clang_Cursor_getBriefCommentText_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getBriefCommentText_wrap,
- _dart_clang_Cursor_getBriefCommentText_wrap>(
- 'clang_Cursor_getBriefCommentText_wrap');
-
-typedef _c_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Returns the comment range.
-ffi.Pointer<CXSourceRange> clang_Cursor_getCommentRange_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getCommentRange_wrap(
- cursor,
- );
-}
-
-final _dart_clang_Cursor_getCommentRange_wrap
- _clang_Cursor_getCommentRange_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getCommentRange_wrap,
- _dart_clang_Cursor_getCommentRange_wrap>(
- 'clang_Cursor_getCommentRange_wrap');
-
-typedef _c_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-int clang_Cursor_getNumArguments_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getNumArguments_wrap(
- cursor,
- );
-}
-
-final _dart_clang_Cursor_getNumArguments_wrap
- _clang_Cursor_getNumArguments_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getNumArguments_wrap,
- _dart_clang_Cursor_getNumArguments_wrap>(
- 'clang_Cursor_getNumArguments_wrap');
-
-typedef _c_clang_Cursor_getNumArguments_wrap = ffi.Int32 Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getNumArguments_wrap = int Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Returns the raw comment.
-ffi.Pointer<CXString> clang_Cursor_getRawCommentText_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getRawCommentText_wrap(
- cursor,
- );
-}
-
-final _dart_clang_Cursor_getRawCommentText_wrap
- _clang_Cursor_getRawCommentText_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getRawCommentText_wrap,
- _dart_clang_Cursor_getRawCommentText_wrap>(
- 'clang_Cursor_getRawCommentText_wrap');
-
-typedef _c_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Disposes the created Eval memory.
-void clang_EvalResult_dispose(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_dispose(
- E,
- );
-}
-
-final _dart_clang_EvalResult_dispose _clang_EvalResult_dispose =
- _dylib.lookupFunction<_c_clang_EvalResult_dispose,
- _dart_clang_EvalResult_dispose>('clang_EvalResult_dispose');
-
-typedef _c_clang_EvalResult_dispose = ffi.Void Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_dispose = void Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns the evaluation result as double if the
-/// kind is double.
-double clang_EvalResult_getAsDouble(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_getAsDouble(
- E,
- );
-}
-
-final _dart_clang_EvalResult_getAsDouble _clang_EvalResult_getAsDouble =
- _dylib.lookupFunction<_c_clang_EvalResult_getAsDouble,
- _dart_clang_EvalResult_getAsDouble>('clang_EvalResult_getAsDouble');
-
-typedef _c_clang_EvalResult_getAsDouble = ffi.Double Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsDouble = double Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns the evaluation result as integer if the
-/// kind is Int.
-int clang_EvalResult_getAsInt(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_getAsInt(
- E,
- );
-}
-
-final _dart_clang_EvalResult_getAsInt _clang_EvalResult_getAsInt =
- _dylib.lookupFunction<_c_clang_EvalResult_getAsInt,
- _dart_clang_EvalResult_getAsInt>('clang_EvalResult_getAsInt');
-
-typedef _c_clang_EvalResult_getAsInt = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsInt = int Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns the evaluation result as a long long integer if the
-/// kind is Int. This prevents overflows that may happen if the result is
-/// returned with clang_EvalResult_getAsInt.
-int clang_EvalResult_getAsLongLong(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_getAsLongLong(
- E,
- );
-}
-
-final _dart_clang_EvalResult_getAsLongLong _clang_EvalResult_getAsLongLong =
- _dylib.lookupFunction<_c_clang_EvalResult_getAsLongLong,
- _dart_clang_EvalResult_getAsLongLong>('clang_EvalResult_getAsLongLong');
-
-typedef _c_clang_EvalResult_getAsLongLong = ffi.Int64 Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsLongLong = int Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns the evaluation result as a constant string if the
-/// kind is other than Int or float. User must not free this pointer,
-/// instead call clang_EvalResult_dispose on the CXEvalResult returned
-/// by clang_Cursor_Evaluate.
-ffi.Pointer<ffi.Int8> clang_EvalResult_getAsStr(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_getAsStr(
- E,
- );
-}
-
-final _dart_clang_EvalResult_getAsStr _clang_EvalResult_getAsStr =
- _dylib.lookupFunction<_c_clang_EvalResult_getAsStr,
- _dart_clang_EvalResult_getAsStr>('clang_EvalResult_getAsStr');
-
-typedef _c_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsStr = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns the evaluation result as an unsigned integer if
-/// the kind is Int and clang_EvalResult_isUnsignedInt is non-zero.
-int clang_EvalResult_getAsUnsigned(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_getAsUnsigned(
- E,
- );
-}
-
-final _dart_clang_EvalResult_getAsUnsigned _clang_EvalResult_getAsUnsigned =
- _dylib.lookupFunction<_c_clang_EvalResult_getAsUnsigned,
- _dart_clang_EvalResult_getAsUnsigned>('clang_EvalResult_getAsUnsigned');
-
-typedef _c_clang_EvalResult_getAsUnsigned = ffi.Uint64 Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getAsUnsigned = int Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns the kind of the evaluated result.
-int clang_EvalResult_getKind(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_getKind(
- E,
- );
-}
-
-final _dart_clang_EvalResult_getKind _clang_EvalResult_getKind =
- _dylib.lookupFunction<_c_clang_EvalResult_getKind,
- _dart_clang_EvalResult_getKind>('clang_EvalResult_getKind');
-
-typedef _c_clang_EvalResult_getKind = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_getKind = int Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns a non-zero value if the kind is Int and the evaluation
-/// result resulted in an unsigned integer.
-int clang_EvalResult_isUnsignedInt(
- ffi.Pointer<ffi.Void> E,
-) {
- return _clang_EvalResult_isUnsignedInt(
- E,
- );
-}
-
-final _dart_clang_EvalResult_isUnsignedInt _clang_EvalResult_isUnsignedInt =
- _dylib.lookupFunction<_c_clang_EvalResult_isUnsignedInt,
- _dart_clang_EvalResult_isUnsignedInt>('clang_EvalResult_isUnsignedInt');
-
-typedef _c_clang_EvalResult_isUnsignedInt = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-typedef _dart_clang_EvalResult_isUnsignedInt = int Function(
- ffi.Pointer<ffi.Void> E,
-);
-
-/// Returns non-zero if the \c file1 and \c file2 point to the same file,
-/// or they are both NULL.
-int clang_File_isEqual(
- ffi.Pointer<ffi.Void> file1,
- ffi.Pointer<ffi.Void> file2,
-) {
- return _clang_File_isEqual(
- file1,
- file2,
- );
-}
-
-final _dart_clang_File_isEqual _clang_File_isEqual =
- _dylib.lookupFunction<_c_clang_File_isEqual, _dart_clang_File_isEqual>(
- 'clang_File_isEqual');
-
-typedef _c_clang_File_isEqual = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> file1,
- ffi.Pointer<ffi.Void> file2,
-);
-
-typedef _dart_clang_File_isEqual = int Function(
- ffi.Pointer<ffi.Void> file1,
- ffi.Pointer<ffi.Void> file2,
-);
-
-/// An indexing action/session, to be applied to one or multiple
-/// translation units.
-///
-/// \param CIdx The index object with which the index action will be associated.
-ffi.Pointer<ffi.Void> clang_IndexAction_create(
- ffi.Pointer<ffi.Void> CIdx,
-) {
- return _clang_IndexAction_create(
- CIdx,
- );
-}
-
-final _dart_clang_IndexAction_create _clang_IndexAction_create =
- _dylib.lookupFunction<_c_clang_IndexAction_create,
- _dart_clang_IndexAction_create>('clang_IndexAction_create');
-
-typedef _c_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> CIdx,
-);
-
-typedef _dart_clang_IndexAction_create = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> CIdx,
-);
-
-/// Destroy the given index action.
-///
-/// The index action must not be destroyed until all of the translation units
-/// created within that index action have been destroyed.
-void clang_IndexAction_dispose(
- ffi.Pointer<ffi.Void> arg0,
-) {
- return _clang_IndexAction_dispose(
- arg0,
- );
-}
-
-final _dart_clang_IndexAction_dispose _clang_IndexAction_dispose =
- _dylib.lookupFunction<_c_clang_IndexAction_dispose,
- _dart_clang_IndexAction_dispose>('clang_IndexAction_dispose');
-
-typedef _c_clang_IndexAction_dispose = ffi.Void Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_IndexAction_dispose = void Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-/// \param Module a module object.
-///
-/// \returns the module file where the provided module object came from.
-ffi.Pointer<ffi.Void> clang_Module_getASTFile(
- ffi.Pointer<ffi.Void> Module,
-) {
- return _clang_Module_getASTFile(
- Module,
- );
-}
-
-final _dart_clang_Module_getASTFile _clang_Module_getASTFile = _dylib
- .lookupFunction<_c_clang_Module_getASTFile, _dart_clang_Module_getASTFile>(
- 'clang_Module_getASTFile');
-
-typedef _c_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getASTFile = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> Module,
-);
-
-/// \param Module a module object.
-///
-/// \returns the number of top level headers associated with this module.
-int clang_Module_getNumTopLevelHeaders(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> Module,
-) {
- return _clang_Module_getNumTopLevelHeaders(
- arg0,
- Module,
- );
-}
-
-final _dart_clang_Module_getNumTopLevelHeaders
- _clang_Module_getNumTopLevelHeaders = _dylib.lookupFunction<
- _c_clang_Module_getNumTopLevelHeaders,
- _dart_clang_Module_getNumTopLevelHeaders>(
- 'clang_Module_getNumTopLevelHeaders');
-
-typedef _c_clang_Module_getNumTopLevelHeaders = ffi.Uint32 Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getNumTopLevelHeaders = int Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> Module,
-);
-
-/// \param Module a module object.
-///
-/// \returns the parent of a sub-module or NULL if the given module is top-level,
-/// e.g. for 'std.vector' it will return the 'std' module.
-ffi.Pointer<ffi.Void> clang_Module_getParent(
- ffi.Pointer<ffi.Void> Module,
-) {
- return _clang_Module_getParent(
- Module,
- );
-}
-
-final _dart_clang_Module_getParent _clang_Module_getParent = _dylib
- .lookupFunction<_c_clang_Module_getParent, _dart_clang_Module_getParent>(
- 'clang_Module_getParent');
-
-typedef _c_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_getParent = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> Module,
-);
-
-/// \param Module a module object.
-///
-/// \param Index top level header index (zero-based).
-///
-/// \returns the specified top level header associated with the module.
-ffi.Pointer<ffi.Void> clang_Module_getTopLevelHeader(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> Module,
- int Index,
-) {
- return _clang_Module_getTopLevelHeader(
- arg0,
- Module,
- Index,
- );
-}
-
-final _dart_clang_Module_getTopLevelHeader _clang_Module_getTopLevelHeader =
- _dylib.lookupFunction<_c_clang_Module_getTopLevelHeader,
- _dart_clang_Module_getTopLevelHeader>('clang_Module_getTopLevelHeader');
-
-typedef _c_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> Module,
- ffi.Uint32 Index,
-);
-
-typedef _dart_clang_Module_getTopLevelHeader = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> Module,
- int Index,
-);
-
-/// \param Module a module object.
-///
-/// \returns non-zero if the module is a system one.
-int clang_Module_isSystem(
- ffi.Pointer<ffi.Void> Module,
-) {
- return _clang_Module_isSystem(
- Module,
- );
-}
-
-final _dart_clang_Module_isSystem _clang_Module_isSystem = _dylib
- .lookupFunction<_c_clang_Module_isSystem, _dart_clang_Module_isSystem>(
- 'clang_Module_isSystem');
-
-typedef _c_clang_Module_isSystem = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> Module,
-);
-
-typedef _dart_clang_Module_isSystem = int Function(
- ffi.Pointer<ffi.Void> Module,
-);
-
-/// Release a printing policy.
-void clang_PrintingPolicy_dispose(
- ffi.Pointer<ffi.Void> Policy,
-) {
- return _clang_PrintingPolicy_dispose(
- Policy,
- );
-}
-
-final _dart_clang_PrintingPolicy_dispose _clang_PrintingPolicy_dispose =
- _dylib.lookupFunction<_c_clang_PrintingPolicy_dispose,
- _dart_clang_PrintingPolicy_dispose>('clang_PrintingPolicy_dispose');
-
-typedef _c_clang_PrintingPolicy_dispose = ffi.Void Function(
- ffi.Pointer<ffi.Void> Policy,
-);
-
-typedef _dart_clang_PrintingPolicy_dispose = void Function(
- ffi.Pointer<ffi.Void> Policy,
-);
-
-/// Get a property value for the given printing policy.
-int clang_PrintingPolicy_getProperty(
- ffi.Pointer<ffi.Void> Policy,
- int Property,
-) {
- return _clang_PrintingPolicy_getProperty(
- Policy,
- Property,
- );
-}
-
-final _dart_clang_PrintingPolicy_getProperty _clang_PrintingPolicy_getProperty =
- _dylib.lookupFunction<_c_clang_PrintingPolicy_getProperty,
- _dart_clang_PrintingPolicy_getProperty>(
- 'clang_PrintingPolicy_getProperty');
-
-typedef _c_clang_PrintingPolicy_getProperty = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> Policy,
- ffi.Int32 Property,
-);
-
-typedef _dart_clang_PrintingPolicy_getProperty = int Function(
- ffi.Pointer<ffi.Void> Policy,
- int Property,
-);
-
-/// Set a property value for the given printing policy.
-void clang_PrintingPolicy_setProperty(
- ffi.Pointer<ffi.Void> Policy,
- int Property,
- int Value,
-) {
- return _clang_PrintingPolicy_setProperty(
- Policy,
- Property,
- Value,
- );
-}
-
-final _dart_clang_PrintingPolicy_setProperty _clang_PrintingPolicy_setProperty =
- _dylib.lookupFunction<_c_clang_PrintingPolicy_setProperty,
- _dart_clang_PrintingPolicy_setProperty>(
- 'clang_PrintingPolicy_setProperty');
-
-typedef _c_clang_PrintingPolicy_setProperty = ffi.Void Function(
- ffi.Pointer<ffi.Void> Policy,
- ffi.Int32 Property,
- ffi.Uint32 Value,
-);
-
-typedef _dart_clang_PrintingPolicy_setProperty = void Function(
- ffi.Pointer<ffi.Void> Policy,
- int Property,
- int Value,
-);
-
-/// Destroy the CXTargetInfo object.
-void clang_TargetInfo_dispose(
- ffi.Pointer<CXTargetInfoImpl> Info,
-) {
- return _clang_TargetInfo_dispose(
- Info,
- );
-}
-
-final _dart_clang_TargetInfo_dispose _clang_TargetInfo_dispose =
- _dylib.lookupFunction<_c_clang_TargetInfo_dispose,
- _dart_clang_TargetInfo_dispose>('clang_TargetInfo_dispose');
-
-typedef _c_clang_TargetInfo_dispose = ffi.Void Function(
- ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_dispose = void Function(
- ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-/// Get the pointer width of the target in bits.
-///
-/// Returns -1 in case of error.
-int clang_TargetInfo_getPointerWidth(
- ffi.Pointer<CXTargetInfoImpl> Info,
-) {
- return _clang_TargetInfo_getPointerWidth(
- Info,
- );
-}
-
-final _dart_clang_TargetInfo_getPointerWidth _clang_TargetInfo_getPointerWidth =
- _dylib.lookupFunction<_c_clang_TargetInfo_getPointerWidth,
- _dart_clang_TargetInfo_getPointerWidth>(
- 'clang_TargetInfo_getPointerWidth');
-
-typedef _c_clang_TargetInfo_getPointerWidth = ffi.Int32 Function(
- ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-typedef _dart_clang_TargetInfo_getPointerWidth = int Function(
- ffi.Pointer<CXTargetInfoImpl> Info,
-);
-
-ffi.Pointer<CXType> clang_Type_getNamedType_wrap(
- ffi.Pointer<CXType> elaboratedType,
-) {
- return _clang_Type_getNamedType_wrap(
- elaboratedType,
- );
-}
-
-final _dart_clang_Type_getNamedType_wrap _clang_Type_getNamedType_wrap =
- _dylib.lookupFunction<_c_clang_Type_getNamedType_wrap,
- _dart_clang_Type_getNamedType_wrap>('clang_Type_getNamedType_wrap');
-
-typedef _c_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> elaboratedType,
-);
-
-typedef _dart_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> elaboratedType,
-);
-
-/// Annotate the given set of tokens by providing cursors for each token
-/// that can be mapped to a specific entity within the abstract syntax tree.
-///
-/// This token-annotation routine is equivalent to invoking
-/// clang_getCursor() for the source locations of each of the
-/// tokens. The cursors provided are filtered, so that only those
-/// cursors that have a direct correspondence to the token are
-/// accepted. For example, given a function call \c f(x),
-/// clang_getCursor() would provide the following cursors:
-///
-/// * when the cursor is over the 'f', a DeclRefExpr cursor referring to 'f'.
-/// * when the cursor is over the '(' or the ')', a CallExpr referring to 'f'.
-/// * when the cursor is over the 'x', a DeclRefExpr cursor referring to 'x'.
-///
-/// Only the first and last of these cursors will occur within the
-/// annotate, since the tokens "f" and "x' directly refer to a function
-/// and a variable, respectively, but the parentheses are just a small
-/// part of the full syntax of the function call expression, which is
-/// not provided as an annotation.
-///
-/// \param TU the translation unit that owns the given tokens.
-///
-/// \param Tokens the set of tokens to annotate.
-///
-/// \param NumTokens the number of tokens in \p Tokens.
-///
-/// \param Cursors an array of \p NumTokens cursors, whose contents will be
-/// replaced with the cursors corresponding to each token.
-void clang_annotateTokens(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<CXToken> Tokens,
- int NumTokens,
- ffi.Pointer<CXCursor> Cursors,
-) {
- return _clang_annotateTokens(
- TU,
- Tokens,
- NumTokens,
- Cursors,
- );
-}
-
-final _dart_clang_annotateTokens _clang_annotateTokens =
- _dylib.lookupFunction<_c_clang_annotateTokens, _dart_clang_annotateTokens>(
- 'clang_annotateTokens');
-
-typedef _c_clang_annotateTokens = ffi.Void Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<CXToken> Tokens,
- ffi.Uint32 NumTokens,
- ffi.Pointer<CXCursor> Cursors,
-);
-
-typedef _dart_clang_annotateTokens = void Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<CXToken> Tokens,
- int NumTokens,
- ffi.Pointer<CXCursor> Cursors,
-);
-
-/// Perform code completion at a given location in a translation unit.
-///
-/// This function performs code completion at a particular file, line, and
-/// column within source code, providing results that suggest potential
-/// code snippets based on the context of the completion. The basic model
-/// for code completion is that Clang will parse a complete source file,
-/// performing syntax checking up to the location where code-completion has
-/// been requested. At that point, a special code-completion token is passed
-/// to the parser, which recognizes this token and determines, based on the
-/// current location in the C/Objective-C/C++ grammar and the state of
-/// semantic analysis, what completions to provide. These completions are
-/// returned via a new \c CXCodeCompleteResults structure.
-///
-/// Code completion itself is meant to be triggered by the client when the
-/// user types punctuation characters or whitespace, at which point the
-/// code-completion location will coincide with the cursor. For example, if \c p
-/// is a pointer, code-completion might be triggered after the "-" and then
-/// after the ">" in \c p->. When the code-completion location is after the ">",
-/// the completion results will provide, e.g., the members of the struct that
-/// "p" points to. The client is responsible for placing the cursor at the
-/// beginning of the token currently being typed, then filtering the results
-/// based on the contents of the token. For example, when code-completing for
-/// the expression \c p->get, the client should provide the location just after
-/// the ">" (e.g., pointing at the "g") to this code-completion hook. Then, the
-/// client can filter the results based on the current token text ("get"), only
-/// showing those results that start with "get". The intent of this interface
-/// is to separate the relatively high-latency acquisition of code-completion
-/// results from the filtering of results on a per-character basis, which must
-/// have a lower latency.
-///
-/// \param TU The translation unit in which code-completion should
-/// occur. The source files for this translation unit need not be
-/// completely up-to-date (and the contents of those source files may
-/// be overridden via \p unsaved_files). Cursors referring into the
-/// translation unit may be invalidated by this invocation.
-///
-/// \param complete_filename The name of the source file where code
-/// completion should be performed. This filename may be any file
-/// included in the translation unit.
-///
-/// \param complete_line The line at which code-completion should occur.
-///
-/// \param complete_column The column at which code-completion should occur.
-/// Note that the column should point just after the syntactic construct that
-/// initiated code completion, and not in the middle of a lexical token.
-///
-/// \param unsaved_files the Files that have not yet been saved to disk
-/// but may be required for parsing or code completion, including the
-/// contents of those files. The contents and name of these files (as
-/// specified by CXUnsavedFile) are copied when necessary, so the
-/// client only needs to guarantee their validity until the call to
-/// this function returns.
-///
-/// \param num_unsaved_files The number of unsaved file entries in \p
-/// unsaved_files.
-///
-/// \param options Extra options that control the behavior of code
-/// completion, expressed as a bitwise OR of the enumerators of the
-/// CXCodeComplete_Flags enumeration. The
-/// \c clang_defaultCodeCompleteOptions() function returns a default set
-/// of code-completion options.
-///
-/// \returns If successful, a new \c CXCodeCompleteResults structure
-/// containing code-completion results, which should eventually be
-/// freed with \c clang_disposeCodeCompleteResults(). If code
-/// completion fails, returns NULL.
-ffi.Pointer<CXCodeCompleteResults> clang_codeCompleteAt(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<ffi.Int8> complete_filename,
- int complete_line,
- int complete_column,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
-) {
- return _clang_codeCompleteAt(
- TU,
- complete_filename,
- complete_line,
- complete_column,
- unsaved_files,
- num_unsaved_files,
- options,
- );
-}
-
-final _dart_clang_codeCompleteAt _clang_codeCompleteAt =
- _dylib.lookupFunction<_c_clang_codeCompleteAt, _dart_clang_codeCompleteAt>(
- 'clang_codeCompleteAt');
-
-typedef _c_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults> Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<ffi.Int8> complete_filename,
- ffi.Uint32 complete_line,
- ffi.Uint32 complete_column,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- ffi.Uint32 num_unsaved_files,
- ffi.Uint32 options,
-);
-
-typedef _dart_clang_codeCompleteAt = ffi.Pointer<CXCodeCompleteResults>
- Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<ffi.Int8> complete_filename,
- int complete_line,
- int complete_column,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
-);
-
-/// Returns the cursor kind for the container for the current code
-/// completion context. The container is only guaranteed to be set for
-/// contexts where a container exists (i.e. member accesses or Objective-C
-/// message sends); if there is not a container, this function will return
-/// CXCursor_InvalidCode.
-///
-/// \param Results the code completion results to query
-///
-/// \param IsIncomplete on return, this value will be false if Clang has complete
-/// information about the container. If Clang does not have complete
-/// information, this value will be true.
-///
-/// \returns the container kind, or CXCursor_InvalidCode if there is not a
-/// container
-int clang_codeCompleteGetContainerKind(
- ffi.Pointer<CXCodeCompleteResults> Results,
- ffi.Pointer<ffi.Uint32> IsIncomplete,
-) {
- return _clang_codeCompleteGetContainerKind(
- Results,
- IsIncomplete,
- );
-}
-
-final _dart_clang_codeCompleteGetContainerKind
- _clang_codeCompleteGetContainerKind = _dylib.lookupFunction<
- _c_clang_codeCompleteGetContainerKind,
- _dart_clang_codeCompleteGetContainerKind>(
- 'clang_codeCompleteGetContainerKind');
-
-typedef _c_clang_codeCompleteGetContainerKind = ffi.Int32 Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
- ffi.Pointer<ffi.Uint32> IsIncomplete,
-);
-
-typedef _dart_clang_codeCompleteGetContainerKind = int Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
- ffi.Pointer<ffi.Uint32> IsIncomplete,
-);
-
-/// Determines what completions are appropriate for the context
-/// the given code completion.
-///
-/// \param Results the code completion results to query
-///
-/// \returns the kinds of completions that are appropriate for use
-/// along with the given code completion results.
-int clang_codeCompleteGetContexts(
- ffi.Pointer<CXCodeCompleteResults> Results,
-) {
- return _clang_codeCompleteGetContexts(
- Results,
- );
-}
-
-final _dart_clang_codeCompleteGetContexts _clang_codeCompleteGetContexts =
- _dylib.lookupFunction<_c_clang_codeCompleteGetContexts,
- _dart_clang_codeCompleteGetContexts>('clang_codeCompleteGetContexts');
-
-typedef _c_clang_codeCompleteGetContexts = ffi.Uint64 Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetContexts = int Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-/// Retrieve a diagnostic associated with the given code completion.
-///
-/// \param Results the code completion results to query.
-/// \param Index the zero-based diagnostic number to retrieve.
-///
-/// \returns the requested diagnostic. This diagnostic must be freed
-/// via a call to \c clang_disposeDiagnostic().
-ffi.Pointer<ffi.Void> clang_codeCompleteGetDiagnostic(
- ffi.Pointer<CXCodeCompleteResults> Results,
- int Index,
-) {
- return _clang_codeCompleteGetDiagnostic(
- Results,
- Index,
- );
-}
-
-final _dart_clang_codeCompleteGetDiagnostic _clang_codeCompleteGetDiagnostic =
- _dylib.lookupFunction<_c_clang_codeCompleteGetDiagnostic,
- _dart_clang_codeCompleteGetDiagnostic>(
- 'clang_codeCompleteGetDiagnostic');
-
-typedef _c_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
- ffi.Uint32 Index,
-);
-
-typedef _dart_clang_codeCompleteGetDiagnostic = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
- int Index,
-);
-
-/// Determine the number of diagnostics produced prior to the
-/// location where code completion was performed.
-int clang_codeCompleteGetNumDiagnostics(
- ffi.Pointer<CXCodeCompleteResults> Results,
-) {
- return _clang_codeCompleteGetNumDiagnostics(
- Results,
- );
-}
-
-final _dart_clang_codeCompleteGetNumDiagnostics
- _clang_codeCompleteGetNumDiagnostics = _dylib.lookupFunction<
- _c_clang_codeCompleteGetNumDiagnostics,
- _dart_clang_codeCompleteGetNumDiagnostics>(
- 'clang_codeCompleteGetNumDiagnostics');
-
-typedef _c_clang_codeCompleteGetNumDiagnostics = ffi.Uint32 Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_codeCompleteGetNumDiagnostics = int Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-/// Creates an empty CXCursorSet.
-ffi.Pointer<CXCursorSetImpl> clang_createCXCursorSet() {
- return _clang_createCXCursorSet();
-}
-
-final _dart_clang_createCXCursorSet _clang_createCXCursorSet = _dylib
- .lookupFunction<_c_clang_createCXCursorSet, _dart_clang_createCXCursorSet>(
- 'clang_createCXCursorSet');
-
-typedef _c_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl> Function();
-
-typedef _dart_clang_createCXCursorSet = ffi.Pointer<CXCursorSetImpl> Function();
-
-/// Provides a shared context for creating translation units.
-///
-/// It provides two options:
-///
-/// - excludeDeclarationsFromPCH: When non-zero, allows enumeration of "local"
-/// declarations (when loading any new translation units). A "local" declaration
-/// is one that belongs in the translation unit itself and not in a precompiled
-/// header that was used by the translation unit. If zero, all declarations
-/// will be enumerated.
-///
-/// Here is an example:
-///
-/// \code
-/// // excludeDeclsFromPCH = 1, displayDiagnostics=1
-/// Idx = clang_createIndex(1, 1);
-///
-/// // IndexTest.pch was produced with the following command:
-/// // "clang -x c IndexTest.h -emit-ast -o IndexTest.pch"
-/// TU = clang_createTranslationUnit(Idx, "IndexTest.pch");
-///
-/// // This will load all the symbols from 'IndexTest.pch'
-/// clang_visitChildren(clang_getTranslationUnitCursor(TU),
-/// TranslationUnitVisitor, 0);
-/// clang_disposeTranslationUnit(TU);
-///
-/// // This will load all the symbols from 'IndexTest.c', excluding symbols
-/// // from 'IndexTest.pch'.
-/// char *args[] = { "-Xclang", "-include-pch=IndexTest.pch" };
-/// TU = clang_createTranslationUnitFromSourceFile(Idx, "IndexTest.c", 2, args,
-/// 0, 0);
-/// clang_visitChildren(clang_getTranslationUnitCursor(TU),
-/// TranslationUnitVisitor, 0);
-/// clang_disposeTranslationUnit(TU);
-/// \endcode
-///
-/// This process of creating the 'pch', loading it separately, and using it (via
-/// -include-pch) allows 'excludeDeclsFromPCH' to remove redundant callbacks
-/// (which gives the indexer the same performance benefit as the compiler).
-ffi.Pointer<ffi.Void> clang_createIndex(
- int excludeDeclarationsFromPCH,
- int displayDiagnostics,
-) {
- return _clang_createIndex(
- excludeDeclarationsFromPCH,
- displayDiagnostics,
- );
-}
-
-final _dart_clang_createIndex _clang_createIndex =
- _dylib.lookupFunction<_c_clang_createIndex, _dart_clang_createIndex>(
- 'clang_createIndex');
-
-typedef _c_clang_createIndex = ffi.Pointer<ffi.Void> Function(
- ffi.Int32 excludeDeclarationsFromPCH,
- ffi.Int32 displayDiagnostics,
-);
-
-typedef _dart_clang_createIndex = ffi.Pointer<ffi.Void> Function(
- int excludeDeclarationsFromPCH,
- int displayDiagnostics,
-);
-
-/// Same as \c clang_createTranslationUnit2, but returns
-/// the \c CXTranslationUnit instead of an error code. In case of an error this
-/// routine returns a \c NULL \c CXTranslationUnit, without further detailed
-/// error codes.
-ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnit(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> ast_filename,
-) {
- return _clang_createTranslationUnit(
- CIdx,
- ast_filename,
- );
-}
-
-final _dart_clang_createTranslationUnit _clang_createTranslationUnit =
- _dylib.lookupFunction<_c_clang_createTranslationUnit,
- _dart_clang_createTranslationUnit>('clang_createTranslationUnit');
-
-typedef _c_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
- Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> ast_filename,
-);
-
-typedef _dart_clang_createTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
- Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> ast_filename,
-);
-
-/// Create a translation unit from an AST file (\c -emit-ast).
-///
-/// \param[out] out_TU A non-NULL pointer to store the created
-/// \c CXTranslationUnit.
-///
-/// \returns Zero on success, otherwise returns an error code.
-int clang_createTranslationUnit2(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> ast_filename,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-) {
- return _clang_createTranslationUnit2(
- CIdx,
- ast_filename,
- out_TU,
- );
-}
-
-final _dart_clang_createTranslationUnit2 _clang_createTranslationUnit2 =
- _dylib.lookupFunction<_c_clang_createTranslationUnit2,
- _dart_clang_createTranslationUnit2>('clang_createTranslationUnit2');
-
-typedef _c_clang_createTranslationUnit2 = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> ast_filename,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_createTranslationUnit2 = int Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> ast_filename,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-/// Return the CXTranslationUnit for a given source file and the provided
-/// command line arguments one would pass to the compiler.
-///
-/// Note: The 'source_filename' argument is optional. If the caller provides a
-/// NULL pointer, the name of the source file is expected to reside in the
-/// specified command line arguments.
-///
-/// Note: When encountered in 'clang_command_line_args', the following options
-/// are ignored:
-///
-/// '-c'
-/// '-emit-ast'
-/// '-fsyntax-only'
-/// '-o \<output file>' (both '-o' and '\<output file>' are ignored)
-///
-/// \param CIdx The index object with which the translation unit will be
-/// associated.
-///
-/// \param source_filename The name of the source file to load, or NULL if the
-/// source file is included in \p clang_command_line_args.
-///
-/// \param num_clang_command_line_args The number of command-line arguments in
-/// \p clang_command_line_args.
-///
-/// \param clang_command_line_args The command-line arguments that would be
-/// passed to the \c clang executable if it were being invoked out-of-process.
-/// These command-line options will be parsed and will affect how the translation
-/// unit is parsed. Note that the following options are ignored: '-c',
-/// '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
-///
-/// \param num_unsaved_files the number of unsaved file entries in \p
-/// unsaved_files.
-///
-/// \param unsaved_files the files that have not yet been saved to disk
-/// but may be required for code completion, including the contents of
-/// those files. The contents and name of these files (as specified by
-/// CXUnsavedFile) are copied when necessary, so the client only needs to
-/// guarantee their validity until the call to this function returns.
-ffi.Pointer<CXTranslationUnitImpl> clang_createTranslationUnitFromSourceFile(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- int num_clang_command_line_args,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
- int num_unsaved_files,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
-) {
- return _clang_createTranslationUnitFromSourceFile(
- CIdx,
- source_filename,
- num_clang_command_line_args,
- clang_command_line_args,
- num_unsaved_files,
- unsaved_files,
- );
-}
-
-final _dart_clang_createTranslationUnitFromSourceFile
- _clang_createTranslationUnitFromSourceFile = _dylib.lookupFunction<
- _c_clang_createTranslationUnitFromSourceFile,
- _dart_clang_createTranslationUnitFromSourceFile>(
- 'clang_createTranslationUnitFromSourceFile');
-
-typedef _c_clang_createTranslationUnitFromSourceFile
- = ffi.Pointer<CXTranslationUnitImpl> Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Int32 num_clang_command_line_args,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
- ffi.Uint32 num_unsaved_files,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
-);
-
-typedef _dart_clang_createTranslationUnitFromSourceFile
- = ffi.Pointer<CXTranslationUnitImpl> Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- int num_clang_command_line_args,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> clang_command_line_args,
- int num_unsaved_files,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
-);
-
-/// Returns a default set of code-completion options that can be
-/// passed to\c clang_codeCompleteAt().
-int clang_defaultCodeCompleteOptions() {
- return _clang_defaultCodeCompleteOptions();
-}
-
-final _dart_clang_defaultCodeCompleteOptions _clang_defaultCodeCompleteOptions =
- _dylib.lookupFunction<_c_clang_defaultCodeCompleteOptions,
- _dart_clang_defaultCodeCompleteOptions>(
- 'clang_defaultCodeCompleteOptions');
-
-typedef _c_clang_defaultCodeCompleteOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultCodeCompleteOptions = int Function();
-
-/// Retrieve the set of display options most similar to the
-/// default behavior of the clang compiler.
-///
-/// \returns A set of display options suitable for use with \c
-/// clang_formatDiagnostic().
-int clang_defaultDiagnosticDisplayOptions() {
- return _clang_defaultDiagnosticDisplayOptions();
-}
-
-final _dart_clang_defaultDiagnosticDisplayOptions
- _clang_defaultDiagnosticDisplayOptions = _dylib.lookupFunction<
- _c_clang_defaultDiagnosticDisplayOptions,
- _dart_clang_defaultDiagnosticDisplayOptions>(
- 'clang_defaultDiagnosticDisplayOptions');
-
-typedef _c_clang_defaultDiagnosticDisplayOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultDiagnosticDisplayOptions = int Function();
-
-/// Returns the set of flags that is suitable for parsing a translation
-/// unit that is being edited.
-///
-/// The set of flags returned provide options for \c clang_parseTranslationUnit()
-/// to indicate that the translation unit is likely to be reparsed many times,
-/// either explicitly (via \c clang_reparseTranslationUnit()) or implicitly
-/// (e.g., by code completion (\c clang_codeCompletionAt())). The returned flag
-/// set contains an unspecified set of optimizations (e.g., the precompiled
-/// preamble) geared toward improving the performance of these routines. The
-/// set of optimizations enabled may change from one version to the next.
-int clang_defaultEditingTranslationUnitOptions() {
- return _clang_defaultEditingTranslationUnitOptions();
-}
-
-final _dart_clang_defaultEditingTranslationUnitOptions
- _clang_defaultEditingTranslationUnitOptions = _dylib.lookupFunction<
- _c_clang_defaultEditingTranslationUnitOptions,
- _dart_clang_defaultEditingTranslationUnitOptions>(
- 'clang_defaultEditingTranslationUnitOptions');
-
-typedef _c_clang_defaultEditingTranslationUnitOptions = ffi.Uint32 Function();
-
-typedef _dart_clang_defaultEditingTranslationUnitOptions = int Function();
-
-/// Returns the set of flags that is suitable for reparsing a translation
-/// unit.
-///
-/// The set of flags returned provide options for
-/// \c clang_reparseTranslationUnit() by default. The returned flag
-/// set contains an unspecified set of optimizations geared toward common uses
-/// of reparsing. The set of optimizations enabled may change from one version
-/// to the next.
-int clang_defaultReparseOptions(
- ffi.Pointer<CXTranslationUnitImpl> TU,
-) {
- return _clang_defaultReparseOptions(
- TU,
- );
-}
-
-final _dart_clang_defaultReparseOptions _clang_defaultReparseOptions =
- _dylib.lookupFunction<_c_clang_defaultReparseOptions,
- _dart_clang_defaultReparseOptions>('clang_defaultReparseOptions');
-
-typedef _c_clang_defaultReparseOptions = ffi.Uint32 Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_defaultReparseOptions = int Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-/// Returns the set of flags that is suitable for saving a translation
-/// unit.
-///
-/// The set of flags returned provide options for
-/// \c clang_saveTranslationUnit() by default. The returned flag
-/// set contains an unspecified set of options that save translation units with
-/// the most commonly-requested data.
-int clang_defaultSaveOptions(
- ffi.Pointer<CXTranslationUnitImpl> TU,
-) {
- return _clang_defaultSaveOptions(
- TU,
- );
-}
-
-final _dart_clang_defaultSaveOptions _clang_defaultSaveOptions =
- _dylib.lookupFunction<_c_clang_defaultSaveOptions,
- _dart_clang_defaultSaveOptions>('clang_defaultSaveOptions');
-
-typedef _c_clang_defaultSaveOptions = ffi.Uint32 Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-typedef _dart_clang_defaultSaveOptions = int Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
-);
-
-/// Disposes a CXCursorSet and releases its associated memory.
-void clang_disposeCXCursorSet(
- ffi.Pointer<CXCursorSetImpl> cset,
-) {
- return _clang_disposeCXCursorSet(
- cset,
- );
-}
-
-final _dart_clang_disposeCXCursorSet _clang_disposeCXCursorSet =
- _dylib.lookupFunction<_c_clang_disposeCXCursorSet,
- _dart_clang_disposeCXCursorSet>('clang_disposeCXCursorSet');
-
-typedef _c_clang_disposeCXCursorSet = ffi.Void Function(
- ffi.Pointer<CXCursorSetImpl> cset,
-);
-
-typedef _dart_clang_disposeCXCursorSet = void Function(
- ffi.Pointer<CXCursorSetImpl> cset,
-);
-
-/// Free the memory associated with a \c CXPlatformAvailability structure.
-void clang_disposeCXPlatformAvailability(
- ffi.Pointer<CXPlatformAvailability> availability,
-) {
- return _clang_disposeCXPlatformAvailability(
- availability,
- );
-}
-
-final _dart_clang_disposeCXPlatformAvailability
- _clang_disposeCXPlatformAvailability = _dylib.lookupFunction<
- _c_clang_disposeCXPlatformAvailability,
- _dart_clang_disposeCXPlatformAvailability>(
- 'clang_disposeCXPlatformAvailability');
-
-typedef _c_clang_disposeCXPlatformAvailability = ffi.Void Function(
- ffi.Pointer<CXPlatformAvailability> availability,
-);
-
-typedef _dart_clang_disposeCXPlatformAvailability = void Function(
- ffi.Pointer<CXPlatformAvailability> availability,
-);
-
-/// Free the given set of code-completion results.
-void clang_disposeCodeCompleteResults(
- ffi.Pointer<CXCodeCompleteResults> Results,
-) {
- return _clang_disposeCodeCompleteResults(
- Results,
- );
-}
-
-final _dart_clang_disposeCodeCompleteResults _clang_disposeCodeCompleteResults =
- _dylib.lookupFunction<_c_clang_disposeCodeCompleteResults,
- _dart_clang_disposeCodeCompleteResults>(
- 'clang_disposeCodeCompleteResults');
-
-typedef _c_clang_disposeCodeCompleteResults = ffi.Void Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-typedef _dart_clang_disposeCodeCompleteResults = void Function(
- ffi.Pointer<CXCodeCompleteResults> Results,
-);
-
-/// Destroy a diagnostic.
-void clang_disposeDiagnostic(
- ffi.Pointer<ffi.Void> Diagnostic,
-) {
- return _clang_disposeDiagnostic(
- Diagnostic,
- );
-}
-
-final _dart_clang_disposeDiagnostic _clang_disposeDiagnostic = _dylib
- .lookupFunction<_c_clang_disposeDiagnostic, _dart_clang_disposeDiagnostic>(
- 'clang_disposeDiagnostic');
-
-typedef _c_clang_disposeDiagnostic = ffi.Void Function(
- ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_disposeDiagnostic = void Function(
- ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-/// Release a CXDiagnosticSet and all of its contained diagnostics.
-void clang_disposeDiagnosticSet(
- ffi.Pointer<ffi.Void> Diags,
-) {
- return _clang_disposeDiagnosticSet(
- Diags,
- );
-}
-
-final _dart_clang_disposeDiagnosticSet _clang_disposeDiagnosticSet =
- _dylib.lookupFunction<_c_clang_disposeDiagnosticSet,
- _dart_clang_disposeDiagnosticSet>('clang_disposeDiagnosticSet');
-
-typedef _c_clang_disposeDiagnosticSet = ffi.Void Function(
- ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _dart_clang_disposeDiagnosticSet = void Function(
- ffi.Pointer<ffi.Void> Diags,
-);
-
-/// Destroy the given index.
-///
-/// The index must not be destroyed until all of the translation units created
-/// within that index have been destroyed.
-void clang_disposeIndex(
- ffi.Pointer<ffi.Void> index,
-) {
- return _clang_disposeIndex(
- index,
- );
-}
-
-final _dart_clang_disposeIndex _clang_disposeIndex =
- _dylib.lookupFunction<_c_clang_disposeIndex, _dart_clang_disposeIndex>(
- 'clang_disposeIndex');
-
-typedef _c_clang_disposeIndex = ffi.Void Function(
- ffi.Pointer<ffi.Void> index,
-);
-
-typedef _dart_clang_disposeIndex = void Function(
- ffi.Pointer<ffi.Void> index,
-);
-
-/// Free the set of overridden cursors returned by \c
-/// clang_getOverriddenCursors().
-void clang_disposeOverriddenCursors(
- ffi.Pointer<CXCursor> overridden,
-) {
- return _clang_disposeOverriddenCursors(
- overridden,
- );
-}
-
-final _dart_clang_disposeOverriddenCursors _clang_disposeOverriddenCursors =
- _dylib.lookupFunction<_c_clang_disposeOverriddenCursors,
- _dart_clang_disposeOverriddenCursors>('clang_disposeOverriddenCursors');
-
-typedef _c_clang_disposeOverriddenCursors = ffi.Void Function(
- ffi.Pointer<CXCursor> overridden,
-);
-
-typedef _dart_clang_disposeOverriddenCursors = void Function(
- ffi.Pointer<CXCursor> overridden,
-);
-
-/// Destroy the given \c CXSourceRangeList.
-void clang_disposeSourceRangeList(
- ffi.Pointer<CXSourceRangeList> ranges,
-) {
- return _clang_disposeSourceRangeList(
- ranges,
- );
-}
-
-final _dart_clang_disposeSourceRangeList _clang_disposeSourceRangeList =
- _dylib.lookupFunction<_c_clang_disposeSourceRangeList,
- _dart_clang_disposeSourceRangeList>('clang_disposeSourceRangeList');
-
-typedef _c_clang_disposeSourceRangeList = ffi.Void Function(
- ffi.Pointer<CXSourceRangeList> ranges,
-);
-
-typedef _dart_clang_disposeSourceRangeList = void Function(
- ffi.Pointer<CXSourceRangeList> ranges,
-);
-
-/// Free the given string set.
-void clang_disposeStringSet(
- ffi.Pointer<CXStringSet> set,
-) {
- return _clang_disposeStringSet(
- set,
- );
-}
-
-final _dart_clang_disposeStringSet _clang_disposeStringSet = _dylib
- .lookupFunction<_c_clang_disposeStringSet, _dart_clang_disposeStringSet>(
- 'clang_disposeStringSet');
-
-typedef _c_clang_disposeStringSet = ffi.Void Function(
- ffi.Pointer<CXStringSet> set,
-);
-
-typedef _dart_clang_disposeStringSet = void Function(
- ffi.Pointer<CXStringSet> set,
-);
-
-void clang_disposeString_wrap(
- ffi.Pointer<CXString> string,
-) {
- return _clang_disposeString_wrap(
- string,
- );
-}
-
-final _dart_clang_disposeString_wrap _clang_disposeString_wrap =
- _dylib.lookupFunction<_c_clang_disposeString_wrap,
- _dart_clang_disposeString_wrap>('clang_disposeString_wrap');
-
-typedef _c_clang_disposeString_wrap = ffi.Void Function(
- ffi.Pointer<CXString> string,
-);
-
-typedef _dart_clang_disposeString_wrap = void Function(
- ffi.Pointer<CXString> string,
-);
-
-/// Free the given set of tokens.
-void clang_disposeTokens(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<CXToken> Tokens,
- int NumTokens,
-) {
- return _clang_disposeTokens(
- TU,
- Tokens,
- NumTokens,
- );
-}
-
-final _dart_clang_disposeTokens _clang_disposeTokens =
- _dylib.lookupFunction<_c_clang_disposeTokens, _dart_clang_disposeTokens>(
- 'clang_disposeTokens');
-
-typedef _c_clang_disposeTokens = ffi.Void Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<CXToken> Tokens,
- ffi.Uint32 NumTokens,
-);
-
-typedef _dart_clang_disposeTokens = void Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<CXToken> Tokens,
- int NumTokens,
-);
-
-/// Destroy the specified CXTranslationUnit object.
-void clang_disposeTranslationUnit(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-) {
- return _clang_disposeTranslationUnit(
- arg0,
- );
-}
-
-final _dart_clang_disposeTranslationUnit _clang_disposeTranslationUnit =
- _dylib.lookupFunction<_c_clang_disposeTranslationUnit,
- _dart_clang_disposeTranslationUnit>('clang_disposeTranslationUnit');
-
-typedef _c_clang_disposeTranslationUnit = ffi.Void Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_disposeTranslationUnit = void Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-void clang_enableStackTraces() {
- return _clang_enableStackTraces();
-}
-
-final _dart_clang_enableStackTraces _clang_enableStackTraces = _dylib
- .lookupFunction<_c_clang_enableStackTraces, _dart_clang_enableStackTraces>(
- 'clang_enableStackTraces');
-
-typedef _c_clang_enableStackTraces = ffi.Void Function();
-
-typedef _dart_clang_enableStackTraces = void Function();
-
-/// Returns non-zero if the ranges are the same, zero if they differ.
-int clang_equalRanges_wrap(
- ffi.Pointer<CXSourceRange> c1,
- ffi.Pointer<CXSourceRange> c2,
-) {
- return _clang_equalRanges_wrap(
- c1,
- c2,
- );
-}
-
-final _dart_clang_equalRanges_wrap _clang_equalRanges_wrap = _dylib
- .lookupFunction<_c_clang_equalRanges_wrap, _dart_clang_equalRanges_wrap>(
- 'clang_equalRanges_wrap');
-
-typedef _c_clang_equalRanges_wrap = ffi.Uint32 Function(
- ffi.Pointer<CXSourceRange> c1,
- ffi.Pointer<CXSourceRange> c2,
-);
-
-typedef _dart_clang_equalRanges_wrap = int Function(
- ffi.Pointer<CXSourceRange> c1,
- ffi.Pointer<CXSourceRange> c2,
-);
-
-typedef _typedefC_1 = ffi.Void Function(
- ffi.Pointer<ffi.Void>,
-);
-
-void clang_executeOnThread(
- ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
- ffi.Pointer<ffi.Void> user_data,
- int stack_size,
-) {
- return _clang_executeOnThread(
- fn,
- user_data,
- stack_size,
- );
-}
-
-final _dart_clang_executeOnThread _clang_executeOnThread = _dylib
- .lookupFunction<_c_clang_executeOnThread, _dart_clang_executeOnThread>(
- 'clang_executeOnThread');
-
-typedef _c_clang_executeOnThread = ffi.Void Function(
- ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
- ffi.Pointer<ffi.Void> user_data,
- ffi.Uint32 stack_size,
-);
-
-typedef _dart_clang_executeOnThread = void Function(
- ffi.Pointer<ffi.NativeFunction<_typedefC_1>> fn,
- ffi.Pointer<ffi.Void> user_data,
- int stack_size,
-);
-
-ffi.Pointer<CXString> clang_formatDiagnostic_wrap(
- ffi.Pointer<ffi.Void> diag,
- int opts,
-) {
- return _clang_formatDiagnostic_wrap(
- diag,
- opts,
- );
-}
-
-final _dart_clang_formatDiagnostic_wrap _clang_formatDiagnostic_wrap =
- _dylib.lookupFunction<_c_clang_formatDiagnostic_wrap,
- _dart_clang_formatDiagnostic_wrap>('clang_formatDiagnostic_wrap');
-
-typedef _c_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> diag,
- ffi.Int32 opts,
-);
-
-typedef _dart_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> diag,
- int opts,
-);
-
-/// Retrieve all ranges from all files that were skipped by the
-/// preprocessor.
-///
-/// The preprocessor will skip lines when they are surrounded by an
-/// if/ifdef/ifndef directive whose condition does not evaluate to true.
-ffi.Pointer<CXSourceRangeList> clang_getAllSkippedRanges(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-) {
- return _clang_getAllSkippedRanges(
- tu,
- );
-}
-
-final _dart_clang_getAllSkippedRanges _clang_getAllSkippedRanges =
- _dylib.lookupFunction<_c_clang_getAllSkippedRanges,
- _dart_clang_getAllSkippedRanges>('clang_getAllSkippedRanges');
-
-typedef _c_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-typedef _dart_clang_getAllSkippedRanges = ffi.Pointer<CXSourceRangeList>
- Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-ffi.Pointer<CXType> clang_getArgType_wrap(
- ffi.Pointer<CXType> cxtype,
- int i,
-) {
- return _clang_getArgType_wrap(
- cxtype,
- i,
- );
-}
-
-final _dart_clang_getArgType_wrap _clang_getArgType_wrap = _dylib
- .lookupFunction<_c_clang_getArgType_wrap, _dart_clang_getArgType_wrap>(
- 'clang_getArgType_wrap');
-
-typedef _c_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
- ffi.Uint32 i,
-);
-
-typedef _dart_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
- int i,
-);
-
-ffi.Pointer<CXType> clang_getArrayElementType_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getArrayElementType_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getArrayElementType_wrap _clang_getArrayElementType_wrap =
- _dylib.lookupFunction<_c_clang_getArrayElementType_wrap,
- _dart_clang_getArrayElementType_wrap>('clang_getArrayElementType_wrap');
-
-typedef _c_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-ffi.Pointer<ffi.Int8> clang_getCString_wrap(
- ffi.Pointer<CXString> string,
-) {
- return _clang_getCString_wrap(
- string,
- );
-}
-
-final _dart_clang_getCString_wrap _clang_getCString_wrap = _dylib
- .lookupFunction<_c_clang_getCString_wrap, _dart_clang_getCString_wrap>(
- 'clang_getCString_wrap');
-
-typedef _c_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<CXString> string,
-);
-
-typedef _dart_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<CXString> string,
-);
-
-ffi.Pointer<CXType> clang_getCanonicalType_wrap(
- ffi.Pointer<CXType> typerefType,
-) {
- return _clang_getCanonicalType_wrap(
- typerefType,
- );
-}
-
-final _dart_clang_getCanonicalType_wrap _clang_getCanonicalType_wrap =
- _dylib.lookupFunction<_c_clang_getCanonicalType_wrap,
- _dart_clang_getCanonicalType_wrap>('clang_getCanonicalType_wrap');
-
-typedef _c_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> typerefType,
-);
-
-typedef _dart_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> typerefType,
-);
-
-/// Retrieve the child diagnostics of a CXDiagnostic.
-///
-/// This CXDiagnosticSet does not need to be released by
-/// clang_disposeDiagnosticSet.
-ffi.Pointer<ffi.Void> clang_getChildDiagnostics(
- ffi.Pointer<ffi.Void> D,
-) {
- return _clang_getChildDiagnostics(
- D,
- );
-}
-
-final _dart_clang_getChildDiagnostics _clang_getChildDiagnostics =
- _dylib.lookupFunction<_c_clang_getChildDiagnostics,
- _dart_clang_getChildDiagnostics>('clang_getChildDiagnostics');
-
-typedef _c_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> D,
-);
-
-typedef _dart_clang_getChildDiagnostics = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> D,
-);
-
-/// Determine the availability of the entity that this code-completion
-/// string refers to.
-///
-/// \param completion_string The completion string to query.
-///
-/// \returns The availability of the completion string.
-int clang_getCompletionAvailability(
- ffi.Pointer<ffi.Void> completion_string,
-) {
- return _clang_getCompletionAvailability(
- completion_string,
- );
-}
-
-final _dart_clang_getCompletionAvailability _clang_getCompletionAvailability =
- _dylib.lookupFunction<_c_clang_getCompletionAvailability,
- _dart_clang_getCompletionAvailability>(
- 'clang_getCompletionAvailability');
-
-typedef _c_clang_getCompletionAvailability = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionAvailability = int Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-/// Retrieve the completion string associated with a particular chunk
-/// within a completion string.
-///
-/// \param completion_string the completion string to query.
-///
-/// \param chunk_number the 0-based index of the chunk in the completion string.
-///
-/// \returns the completion string associated with the chunk at index
-/// \c chunk_number.
-ffi.Pointer<ffi.Void> clang_getCompletionChunkCompletionString(
- ffi.Pointer<ffi.Void> completion_string,
- int chunk_number,
-) {
- return _clang_getCompletionChunkCompletionString(
- completion_string,
- chunk_number,
- );
-}
-
-final _dart_clang_getCompletionChunkCompletionString
- _clang_getCompletionChunkCompletionString = _dylib.lookupFunction<
- _c_clang_getCompletionChunkCompletionString,
- _dart_clang_getCompletionChunkCompletionString>(
- 'clang_getCompletionChunkCompletionString');
-
-typedef _c_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
- Function(
- ffi.Pointer<ffi.Void> completion_string,
- ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkCompletionString = ffi.Pointer<ffi.Void>
- Function(
- ffi.Pointer<ffi.Void> completion_string,
- int chunk_number,
-);
-
-/// Determine the kind of a particular chunk within a completion string.
-///
-/// \param completion_string the completion string to query.
-///
-/// \param chunk_number the 0-based index of the chunk in the completion string.
-///
-/// \returns the kind of the chunk at the index \c chunk_number.
-int clang_getCompletionChunkKind(
- ffi.Pointer<ffi.Void> completion_string,
- int chunk_number,
-) {
- return _clang_getCompletionChunkKind(
- completion_string,
- chunk_number,
- );
-}
-
-final _dart_clang_getCompletionChunkKind _clang_getCompletionChunkKind =
- _dylib.lookupFunction<_c_clang_getCompletionChunkKind,
- _dart_clang_getCompletionChunkKind>('clang_getCompletionChunkKind');
-
-typedef _c_clang_getCompletionChunkKind = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> completion_string,
- ffi.Uint32 chunk_number,
-);
-
-typedef _dart_clang_getCompletionChunkKind = int Function(
- ffi.Pointer<ffi.Void> completion_string,
- int chunk_number,
-);
-
-/// Retrieve the number of annotations associated with the given
-/// completion string.
-///
-/// \param completion_string the completion string to query.
-///
-/// \returns the number of annotations associated with the given completion
-/// string.
-int clang_getCompletionNumAnnotations(
- ffi.Pointer<ffi.Void> completion_string,
-) {
- return _clang_getCompletionNumAnnotations(
- completion_string,
- );
-}
-
-final _dart_clang_getCompletionNumAnnotations
- _clang_getCompletionNumAnnotations = _dylib.lookupFunction<
- _c_clang_getCompletionNumAnnotations,
- _dart_clang_getCompletionNumAnnotations>(
- 'clang_getCompletionNumAnnotations');
-
-typedef _c_clang_getCompletionNumAnnotations = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionNumAnnotations = int Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-/// Retrieve the number of fix-its for the given completion index.
-///
-/// Calling this makes sense only if CXCodeComplete_IncludeCompletionsWithFixIts
-/// option was set.
-///
-/// \param results The structure keeping all completion results
-///
-/// \param completion_index The index of the completion
-///
-/// \return The number of fix-its which must be applied before the completion at
-/// completion_index can be applied
-int clang_getCompletionNumFixIts(
- ffi.Pointer<CXCodeCompleteResults> results,
- int completion_index,
-) {
- return _clang_getCompletionNumFixIts(
- results,
- completion_index,
- );
-}
-
-final _dart_clang_getCompletionNumFixIts _clang_getCompletionNumFixIts =
- _dylib.lookupFunction<_c_clang_getCompletionNumFixIts,
- _dart_clang_getCompletionNumFixIts>('clang_getCompletionNumFixIts');
-
-typedef _c_clang_getCompletionNumFixIts = ffi.Uint32 Function(
- ffi.Pointer<CXCodeCompleteResults> results,
- ffi.Uint32 completion_index,
-);
-
-typedef _dart_clang_getCompletionNumFixIts = int Function(
- ffi.Pointer<CXCodeCompleteResults> results,
- int completion_index,
-);
-
-/// Determine the priority of this code completion.
-///
-/// The priority of a code completion indicates how likely it is that this
-/// particular completion is the completion that the user will select. The
-/// priority is selected by various internal heuristics.
-///
-/// \param completion_string The completion string to query.
-///
-/// \returns The priority of this completion string. Smaller values indicate
-/// higher-priority (more likely) completions.
-int clang_getCompletionPriority(
- ffi.Pointer<ffi.Void> completion_string,
-) {
- return _clang_getCompletionPriority(
- completion_string,
- );
-}
-
-final _dart_clang_getCompletionPriority _clang_getCompletionPriority =
- _dylib.lookupFunction<_c_clang_getCompletionPriority,
- _dart_clang_getCompletionPriority>('clang_getCompletionPriority');
-
-typedef _c_clang_getCompletionPriority = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getCompletionPriority = int Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-ffi.Pointer<CXString> clang_getCursorKindSpelling_wrap(
- int kind,
-) {
- return _clang_getCursorKindSpelling_wrap(
- kind,
- );
-}
-
-final _dart_clang_getCursorKindSpelling_wrap _clang_getCursorKindSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getCursorKindSpelling_wrap,
- _dart_clang_getCursorKindSpelling_wrap>(
- 'clang_getCursorKindSpelling_wrap');
-
-typedef _c_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Int32 kind,
-);
-
-typedef _dart_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
- int kind,
-);
-
-int clang_getCursorKind_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorKind_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorKind_wrap _clang_getCursorKind_wrap =
- _dylib.lookupFunction<_c_clang_getCursorKind_wrap,
- _dart_clang_getCursorKind_wrap>('clang_getCursorKind_wrap');
-
-typedef _c_clang_getCursorKind_wrap = ffi.Int32 Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorKind_wrap = int Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-ffi.Pointer<CXSourceLocation> clang_getCursorLocation_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorLocation_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorLocation_wrap _clang_getCursorLocation_wrap =
- _dylib.lookupFunction<_c_clang_getCursorLocation_wrap,
- _dart_clang_getCursorLocation_wrap>('clang_getCursorLocation_wrap');
-
-typedef _c_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// The name of parameter, struct, typedef.
-ffi.Pointer<CXString> clang_getCursorSpelling_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorSpelling_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorSpelling_wrap _clang_getCursorSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getCursorSpelling_wrap,
- _dart_clang_getCursorSpelling_wrap>('clang_getCursorSpelling_wrap');
-
-typedef _c_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-ffi.Pointer<CXType> clang_getCursorType_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorType_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorType_wrap _clang_getCursorType_wrap =
- _dylib.lookupFunction<_c_clang_getCursorType_wrap,
- _dart_clang_getCursorType_wrap>('clang_getCursorType_wrap');
-
-typedef _c_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Retrieve a diagnostic associated with the given translation unit.
-///
-/// \param Unit the translation unit to query.
-/// \param Index the zero-based diagnostic number to retrieve.
-///
-/// \returns the requested diagnostic. This diagnostic must be freed
-/// via a call to \c clang_disposeDiagnostic().
-ffi.Pointer<ffi.Void> clang_getDiagnostic(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
- int Index,
-) {
- return _clang_getDiagnostic(
- Unit,
- Index,
- );
-}
-
-final _dart_clang_getDiagnostic _clang_getDiagnostic =
- _dylib.lookupFunction<_c_clang_getDiagnostic, _dart_clang_getDiagnostic>(
- 'clang_getDiagnostic');
-
-typedef _c_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
- ffi.Uint32 Index,
-);
-
-typedef _dart_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
- int Index,
-);
-
-/// Retrieve the category number for this diagnostic.
-///
-/// Diagnostics can be categorized into groups along with other, related
-/// diagnostics (e.g., diagnostics under the same warning flag). This routine
-/// retrieves the category number for the given diagnostic.
-///
-/// \returns The number of the category that contains this diagnostic, or zero
-/// if this diagnostic is uncategorized.
-int clang_getDiagnosticCategory(
- ffi.Pointer<ffi.Void> arg0,
-) {
- return _clang_getDiagnosticCategory(
- arg0,
- );
-}
-
-final _dart_clang_getDiagnosticCategory _clang_getDiagnosticCategory =
- _dylib.lookupFunction<_c_clang_getDiagnosticCategory,
- _dart_clang_getDiagnosticCategory>('clang_getDiagnosticCategory');
-
-typedef _c_clang_getDiagnosticCategory = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticCategory = int Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-/// Retrieve a diagnostic associated with the given CXDiagnosticSet.
-///
-/// \param Diags the CXDiagnosticSet to query.
-/// \param Index the zero-based diagnostic number to retrieve.
-///
-/// \returns the requested diagnostic. This diagnostic must be freed
-/// via a call to \c clang_disposeDiagnostic().
-ffi.Pointer<ffi.Void> clang_getDiagnosticInSet(
- ffi.Pointer<ffi.Void> Diags,
- int Index,
-) {
- return _clang_getDiagnosticInSet(
- Diags,
- Index,
- );
-}
-
-final _dart_clang_getDiagnosticInSet _clang_getDiagnosticInSet =
- _dylib.lookupFunction<_c_clang_getDiagnosticInSet,
- _dart_clang_getDiagnosticInSet>('clang_getDiagnosticInSet');
-
-typedef _c_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> Diags,
- ffi.Uint32 Index,
-);
-
-typedef _dart_clang_getDiagnosticInSet = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Void> Diags,
- int Index,
-);
-
-/// Determine the number of fix-it hints associated with the
-/// given diagnostic.
-int clang_getDiagnosticNumFixIts(
- ffi.Pointer<ffi.Void> Diagnostic,
-) {
- return _clang_getDiagnosticNumFixIts(
- Diagnostic,
- );
-}
-
-final _dart_clang_getDiagnosticNumFixIts _clang_getDiagnosticNumFixIts =
- _dylib.lookupFunction<_c_clang_getDiagnosticNumFixIts,
- _dart_clang_getDiagnosticNumFixIts>('clang_getDiagnosticNumFixIts');
-
-typedef _c_clang_getDiagnosticNumFixIts = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_getDiagnosticNumFixIts = int Function(
- ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-/// Determine the number of source ranges associated with the given
-/// diagnostic.
-int clang_getDiagnosticNumRanges(
- ffi.Pointer<ffi.Void> arg0,
-) {
- return _clang_getDiagnosticNumRanges(
- arg0,
- );
-}
-
-final _dart_clang_getDiagnosticNumRanges _clang_getDiagnosticNumRanges =
- _dylib.lookupFunction<_c_clang_getDiagnosticNumRanges,
- _dart_clang_getDiagnosticNumRanges>('clang_getDiagnosticNumRanges');
-
-typedef _c_clang_getDiagnosticNumRanges = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticNumRanges = int Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-/// Retrieve the complete set of diagnostics associated with a
-/// translation unit.
-///
-/// \param Unit the translation unit to query.
-ffi.Pointer<ffi.Void> clang_getDiagnosticSetFromTU(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-) {
- return _clang_getDiagnosticSetFromTU(
- Unit,
- );
-}
-
-final _dart_clang_getDiagnosticSetFromTU _clang_getDiagnosticSetFromTU =
- _dylib.lookupFunction<_c_clang_getDiagnosticSetFromTU,
- _dart_clang_getDiagnosticSetFromTU>('clang_getDiagnosticSetFromTU');
-
-typedef _c_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getDiagnosticSetFromTU = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-/// Determine the severity of the given diagnostic.
-int clang_getDiagnosticSeverity(
- ffi.Pointer<ffi.Void> arg0,
-) {
- return _clang_getDiagnosticSeverity(
- arg0,
- );
-}
-
-final _dart_clang_getDiagnosticSeverity _clang_getDiagnosticSeverity =
- _dylib.lookupFunction<_c_clang_getDiagnosticSeverity,
- _dart_clang_getDiagnosticSeverity>('clang_getDiagnosticSeverity');
-
-typedef _c_clang_getDiagnosticSeverity = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_getDiagnosticSeverity = int Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-int clang_getEnumConstantDeclValue_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getEnumConstantDeclValue_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getEnumConstantDeclValue_wrap
- _clang_getEnumConstantDeclValue_wrap = _dylib.lookupFunction<
- _c_clang_getEnumConstantDeclValue_wrap,
- _dart_clang_getEnumConstantDeclValue_wrap>(
- 'clang_getEnumConstantDeclValue_wrap');
-
-typedef _c_clang_getEnumConstantDeclValue_wrap = ffi.Int64 Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getEnumConstantDeclValue_wrap = int Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Retrieve a file handle within the given translation unit.
-///
-/// \param tu the translation unit
-///
-/// \param file_name the name of the file.
-///
-/// \returns the file handle for the named file in the translation unit \p tu,
-/// or a NULL file handle if the file was not a part of this translation unit.
-ffi.Pointer<ffi.Void> clang_getFile(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Int8> file_name,
-) {
- return _clang_getFile(
- tu,
- file_name,
- );
-}
-
-final _dart_clang_getFile _clang_getFile = _dylib
- .lookupFunction<_c_clang_getFile, _dart_clang_getFile>('clang_getFile');
-
-typedef _c_clang_getFile = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Int8> file_name,
-);
-
-typedef _dart_clang_getFile = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Int8> file_name,
-);
-
-/// Retrieve the buffer associated with the given file.
-///
-/// \param tu the translation unit
-///
-/// \param file the file for which to retrieve the buffer.
-///
-/// \param size [out] if non-NULL, will be set to the size of the buffer.
-///
-/// \returns a pointer to the buffer in memory that holds the contents of
-/// \p file, or a NULL pointer when the file is not loaded.
-ffi.Pointer<ffi.Int8> clang_getFileContents(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
- ffi.Pointer<ffi.Uint64> size,
-) {
- return _clang_getFileContents(
- tu,
- file,
- size,
- );
-}
-
-final _dart_clang_getFileContents _clang_getFileContents = _dylib
- .lookupFunction<_c_clang_getFileContents, _dart_clang_getFileContents>(
- 'clang_getFileContents');
-
-typedef _c_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
- ffi.Pointer<ffi.Uint64> size,
-);
-
-typedef _dart_clang_getFileContents = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
- ffi.Pointer<ffi.Uint64> size,
-);
-
-void clang_getFileLocation_wrap(
- ffi.Pointer<CXSourceLocation> location,
- ffi.Pointer<ffi.Pointer<ffi.Void>> file,
- ffi.Pointer<ffi.Uint32> line,
- ffi.Pointer<ffi.Uint32> column,
- ffi.Pointer<ffi.Uint32> offset,
-) {
- return _clang_getFileLocation_wrap(
- location,
- file,
- line,
- column,
- offset,
- );
-}
-
-final _dart_clang_getFileLocation_wrap _clang_getFileLocation_wrap =
- _dylib.lookupFunction<_c_clang_getFileLocation_wrap,
- _dart_clang_getFileLocation_wrap>('clang_getFileLocation_wrap');
-
-typedef _c_clang_getFileLocation_wrap = ffi.Void Function(
- ffi.Pointer<CXSourceLocation> location,
- ffi.Pointer<ffi.Pointer<ffi.Void>> file,
- ffi.Pointer<ffi.Uint32> line,
- ffi.Pointer<ffi.Uint32> column,
- ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getFileLocation_wrap = void Function(
- ffi.Pointer<CXSourceLocation> location,
- ffi.Pointer<ffi.Pointer<ffi.Void>> file,
- ffi.Pointer<ffi.Uint32> line,
- ffi.Pointer<ffi.Uint32> column,
- ffi.Pointer<ffi.Uint32> offset,
-);
-
-ffi.Pointer<CXString> clang_getFileName_wrap(
- ffi.Pointer<ffi.Void> SFile,
-) {
- return _clang_getFileName_wrap(
- SFile,
- );
-}
-
-final _dart_clang_getFileName_wrap _clang_getFileName_wrap = _dylib
- .lookupFunction<_c_clang_getFileName_wrap, _dart_clang_getFileName_wrap>(
- 'clang_getFileName_wrap');
-
-typedef _c_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> SFile,
-);
-
-/// Retrieve the last modification time of the given file.
-int clang_getFileTime(
- ffi.Pointer<ffi.Void> SFile,
-) {
- return _clang_getFileTime(
- SFile,
- );
-}
-
-final _dart_clang_getFileTime _clang_getFileTime =
- _dylib.lookupFunction<_c_clang_getFileTime, _dart_clang_getFileTime>(
- 'clang_getFileTime');
-
-typedef _c_clang_getFileTime = ffi.Int64 Function(
- ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileTime = int Function(
- ffi.Pointer<ffi.Void> SFile,
-);
-
-/// Retrieve the unique ID for the given \c file.
-///
-/// \param file the file to get the ID for.
-/// \param outID stores the returned CXFileUniqueID.
-/// \returns If there was a failure getting the unique ID, returns non-zero,
-/// otherwise returns 0.
-int clang_getFileUniqueID(
- ffi.Pointer<ffi.Void> file,
- ffi.Pointer<CXFileUniqueID> outID,
-) {
- return _clang_getFileUniqueID(
- file,
- outID,
- );
-}
-
-final _dart_clang_getFileUniqueID _clang_getFileUniqueID = _dylib
- .lookupFunction<_c_clang_getFileUniqueID, _dart_clang_getFileUniqueID>(
- 'clang_getFileUniqueID');
-
-typedef _c_clang_getFileUniqueID = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> file,
- ffi.Pointer<CXFileUniqueID> outID,
-);
-
-typedef _dart_clang_getFileUniqueID = int Function(
- ffi.Pointer<ffi.Void> file,
- ffi.Pointer<CXFileUniqueID> outID,
-);
-
-typedef CXInclusionVisitor_1 = ffi.Void Function(
- ffi.Pointer<ffi.Void>,
- ffi.Pointer<CXSourceLocation>,
- ffi.Uint32,
- ffi.Pointer<ffi.Void>,
-);
-
-/// Visit the set of preprocessor inclusions in a translation unit.
-/// The visitor function is called with the provided data for every included
-/// file. This does not include headers included by the PCH file (unless one
-/// is inspecting the inclusions in the PCH file itself).
-void clang_getInclusions(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor_1>> visitor,
- ffi.Pointer<ffi.Void> client_data,
-) {
- return _clang_getInclusions(
- tu,
- visitor,
- client_data,
- );
-}
-
-final _dart_clang_getInclusions _clang_getInclusions =
- _dylib.lookupFunction<_c_clang_getInclusions, _dart_clang_getInclusions>(
- 'clang_getInclusions');
-
-typedef _c_clang_getInclusions = ffi.Void Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor_1>> visitor,
- ffi.Pointer<ffi.Void> client_data,
-);
-
-typedef _dart_clang_getInclusions = void Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.NativeFunction<CXInclusionVisitor_1>> visitor,
- ffi.Pointer<ffi.Void> client_data,
-);
-
-/// Given a CXFile header file, return the module that contains it, if one
-/// exists.
-ffi.Pointer<ffi.Void> clang_getModuleForFile(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> arg1,
-) {
- return _clang_getModuleForFile(
- arg0,
- arg1,
- );
-}
-
-final _dart_clang_getModuleForFile _clang_getModuleForFile = _dylib
- .lookupFunction<_c_clang_getModuleForFile, _dart_clang_getModuleForFile>(
- 'clang_getModuleForFile');
-
-typedef _c_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_getModuleForFile = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
- ffi.Pointer<ffi.Void> arg1,
-);
-
-int clang_getNumArgTypes_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getNumArgTypes_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getNumArgTypes_wrap _clang_getNumArgTypes_wrap =
- _dylib.lookupFunction<_c_clang_getNumArgTypes_wrap,
- _dart_clang_getNumArgTypes_wrap>('clang_getNumArgTypes_wrap');
-
-typedef _c_clang_getNumArgTypes_wrap = ffi.Int32 Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getNumArgTypes_wrap = int Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-/// Retrieve the number of chunks in the given code-completion string.
-int clang_getNumCompletionChunks(
- ffi.Pointer<ffi.Void> completion_string,
-) {
- return _clang_getNumCompletionChunks(
- completion_string,
- );
-}
-
-final _dart_clang_getNumCompletionChunks _clang_getNumCompletionChunks =
- _dylib.lookupFunction<_c_clang_getNumCompletionChunks,
- _dart_clang_getNumCompletionChunks>('clang_getNumCompletionChunks');
-
-typedef _c_clang_getNumCompletionChunks = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-typedef _dart_clang_getNumCompletionChunks = int Function(
- ffi.Pointer<ffi.Void> completion_string,
-);
-
-/// Determine the number of diagnostics produced for the given
-/// translation unit.
-int clang_getNumDiagnostics(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-) {
- return _clang_getNumDiagnostics(
- Unit,
- );
-}
-
-final _dart_clang_getNumDiagnostics _clang_getNumDiagnostics = _dylib
- .lookupFunction<_c_clang_getNumDiagnostics, _dart_clang_getNumDiagnostics>(
- 'clang_getNumDiagnostics');
-
-typedef _c_clang_getNumDiagnostics = ffi.Uint32 Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getNumDiagnostics = int Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-/// Determine the number of diagnostics in a CXDiagnosticSet.
-int clang_getNumDiagnosticsInSet(
- ffi.Pointer<ffi.Void> Diags,
-) {
- return _clang_getNumDiagnosticsInSet(
- Diags,
- );
-}
-
-final _dart_clang_getNumDiagnosticsInSet _clang_getNumDiagnosticsInSet =
- _dylib.lookupFunction<_c_clang_getNumDiagnosticsInSet,
- _dart_clang_getNumDiagnosticsInSet>('clang_getNumDiagnosticsInSet');
-
-typedef _c_clang_getNumDiagnosticsInSet = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> Diags,
-);
-
-typedef _dart_clang_getNumDiagnosticsInSet = int Function(
- ffi.Pointer<ffi.Void> Diags,
-);
-
-int clang_getNumElements_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getNumElements_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getNumElements_wrap _clang_getNumElements_wrap =
- _dylib.lookupFunction<_c_clang_getNumElements_wrap,
- _dart_clang_getNumElements_wrap>('clang_getNumElements_wrap');
-
-typedef _c_clang_getNumElements_wrap = ffi.Uint64 Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getNumElements_wrap = int Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-ffi.Pointer<CXType> clang_getPointeeType_wrap(
- ffi.Pointer<CXType> pointerType,
-) {
- return _clang_getPointeeType_wrap(
- pointerType,
- );
-}
-
-final _dart_clang_getPointeeType_wrap _clang_getPointeeType_wrap =
- _dylib.lookupFunction<_c_clang_getPointeeType_wrap,
- _dart_clang_getPointeeType_wrap>('clang_getPointeeType_wrap');
-
-typedef _c_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> pointerType,
-);
-
-typedef _dart_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> pointerType,
-);
-
-/// Retrieve a remapping.
-///
-/// \param path the path that contains metadata about remappings.
-///
-/// \returns the requested remapping. This remapping must be freed
-/// via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
-ffi.Pointer<ffi.Void> clang_getRemappings(
- ffi.Pointer<ffi.Int8> path,
-) {
- return _clang_getRemappings(
- path,
- );
-}
-
-final _dart_clang_getRemappings _clang_getRemappings =
- _dylib.lookupFunction<_c_clang_getRemappings, _dart_clang_getRemappings>(
- 'clang_getRemappings');
-
-typedef _c_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Int8> path,
-);
-
-typedef _dart_clang_getRemappings = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Int8> path,
-);
-
-/// Retrieve a remapping.
-///
-/// \param filePaths pointer to an array of file paths containing remapping info.
-///
-/// \param numFiles number of file paths.
-///
-/// \returns the requested remapping. This remapping must be freed
-/// via a call to \c clang_remap_dispose(). Can return NULL if an error occurred.
-ffi.Pointer<ffi.Void> clang_getRemappingsFromFileList(
- ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
- int numFiles,
-) {
- return _clang_getRemappingsFromFileList(
- filePaths,
- numFiles,
- );
-}
-
-final _dart_clang_getRemappingsFromFileList _clang_getRemappingsFromFileList =
- _dylib.lookupFunction<_c_clang_getRemappingsFromFileList,
- _dart_clang_getRemappingsFromFileList>(
- 'clang_getRemappingsFromFileList');
-
-typedef _c_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
- ffi.Uint32 numFiles,
-);
-
-typedef _dart_clang_getRemappingsFromFileList = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Pointer<ffi.Int8>> filePaths,
- int numFiles,
-);
-
-ffi.Pointer<CXType> clang_getResultType_wrap(
- ffi.Pointer<CXType> functionType,
-) {
- return _clang_getResultType_wrap(
- functionType,
- );
-}
-
-final _dart_clang_getResultType_wrap _clang_getResultType_wrap =
- _dylib.lookupFunction<_c_clang_getResultType_wrap,
- _dart_clang_getResultType_wrap>('clang_getResultType_wrap');
-
-typedef _c_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> functionType,
-);
-
-typedef _dart_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> functionType,
-);
-
-/// Retrieve all ranges that were skipped by the preprocessor.
-///
-/// The preprocessor will skip lines when they are surrounded by an
-/// if/ifdef/ifndef directive whose condition does not evaluate to true.
-ffi.Pointer<CXSourceRangeList> clang_getSkippedRanges(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
-) {
- return _clang_getSkippedRanges(
- tu,
- file,
- );
-}
-
-final _dart_clang_getSkippedRanges _clang_getSkippedRanges = _dylib
- .lookupFunction<_c_clang_getSkippedRanges, _dart_clang_getSkippedRanges>(
- 'clang_getSkippedRanges');
-
-typedef _c_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_getSkippedRanges = ffi.Pointer<CXSourceRangeList> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
-);
-
-/// Returns the human-readable null-terminated C string that represents
-/// the name of the memory category. This string should never be freed.
-ffi.Pointer<ffi.Int8> clang_getTUResourceUsageName(
- int kind,
-) {
- return _clang_getTUResourceUsageName(
- kind,
- );
-}
-
-final _dart_clang_getTUResourceUsageName _clang_getTUResourceUsageName =
- _dylib.lookupFunction<_c_clang_getTUResourceUsageName,
- _dart_clang_getTUResourceUsageName>('clang_getTUResourceUsageName');
-
-typedef _c_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
- ffi.Int32 kind,
-);
-
-typedef _dart_clang_getTUResourceUsageName = ffi.Pointer<ffi.Int8> Function(
- int kind,
-);
-
-ffi.Pointer<CXCursor> clang_getTranslationUnitCursor_wrap(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-) {
- return _clang_getTranslationUnitCursor_wrap(
- tu,
- );
-}
-
-final _dart_clang_getTranslationUnitCursor_wrap
- _clang_getTranslationUnitCursor_wrap = _dylib.lookupFunction<
- _c_clang_getTranslationUnitCursor_wrap,
- _dart_clang_getTranslationUnitCursor_wrap>(
- 'clang_getTranslationUnitCursor_wrap');
-
-typedef _c_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-typedef _dart_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor>
- Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-/// Get target information for this translation unit.
-///
-/// The CXTargetInfo object cannot outlive the CXTranslationUnit object.
-ffi.Pointer<CXTargetInfoImpl> clang_getTranslationUnitTargetInfo(
- ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-) {
- return _clang_getTranslationUnitTargetInfo(
- CTUnit,
- );
-}
-
-final _dart_clang_getTranslationUnitTargetInfo
- _clang_getTranslationUnitTargetInfo = _dylib.lookupFunction<
- _c_clang_getTranslationUnitTargetInfo,
- _dart_clang_getTranslationUnitTargetInfo>(
- 'clang_getTranslationUnitTargetInfo');
-
-typedef _c_clang_getTranslationUnitTargetInfo = ffi.Pointer<CXTargetInfoImpl>
- Function(
- ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-typedef _dart_clang_getTranslationUnitTargetInfo = ffi.Pointer<CXTargetInfoImpl>
- Function(
- ffi.Pointer<CXTranslationUnitImpl> CTUnit,
-);
-
-ffi.Pointer<CXCursor> clang_getTypeDeclaration_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getTypeDeclaration_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getTypeDeclaration_wrap _clang_getTypeDeclaration_wrap =
- _dylib.lookupFunction<_c_clang_getTypeDeclaration_wrap,
- _dart_clang_getTypeDeclaration_wrap>('clang_getTypeDeclaration_wrap');
-
-typedef _c_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-ffi.Pointer<CXString> clang_getTypeKindSpelling_wrap(
- int typeKind,
-) {
- return _clang_getTypeKindSpelling_wrap(
- typeKind,
- );
-}
-
-final _dart_clang_getTypeKindSpelling_wrap _clang_getTypeKindSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getTypeKindSpelling_wrap,
- _dart_clang_getTypeKindSpelling_wrap>('clang_getTypeKindSpelling_wrap');
-
-typedef _c_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Int32 typeKind,
-);
-
-typedef _dart_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
- int typeKind,
-);
-
-ffi.Pointer<CXString> clang_getTypeSpelling_wrap(
- ffi.Pointer<CXType> type,
-) {
- return _clang_getTypeSpelling_wrap(
- type,
- );
-}
-
-final _dart_clang_getTypeSpelling_wrap _clang_getTypeSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getTypeSpelling_wrap,
- _dart_clang_getTypeSpelling_wrap>('clang_getTypeSpelling_wrap');
-
-typedef _c_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXType> type,
-);
-
-typedef _dart_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXType> type,
-);
-
-ffi.Pointer<CXType> clang_getTypedefDeclUnderlyingType_wrap(
- ffi.Pointer<CXCursor> cxcursor,
-) {
- return _clang_getTypedefDeclUnderlyingType_wrap(
- cxcursor,
- );
-}
-
-final _dart_clang_getTypedefDeclUnderlyingType_wrap
- _clang_getTypedefDeclUnderlyingType_wrap = _dylib.lookupFunction<
- _c_clang_getTypedefDeclUnderlyingType_wrap,
- _dart_clang_getTypedefDeclUnderlyingType_wrap>(
- 'clang_getTypedefDeclUnderlyingType_wrap');
-
-typedef _c_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
- Function(
- ffi.Pointer<CXCursor> cxcursor,
-);
-
-typedef _dart_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
- Function(
- ffi.Pointer<CXCursor> cxcursor,
-);
-
-/// Index the given source file and the translation unit corresponding
-/// to that file via callbacks implemented through #IndexerCallbacks.
-///
-/// \param client_data pointer data supplied by the client, which will
-/// be passed to the invoked callbacks.
-///
-/// \param index_callbacks Pointer to indexing callbacks that the client
-/// implements.
-///
-/// \param index_callbacks_size Size of #IndexerCallbacks structure that gets
-/// passed in index_callbacks.
-///
-/// \param index_options A bitmask of options that affects how indexing is
-/// performed. This should be a bitwise OR of the CXIndexOpt_XXX flags.
-///
-/// \param[out] out_TU pointer to store a \c CXTranslationUnit that can be
-/// reused after indexing is finished. Set to \c NULL if you do not require it.
-///
-/// \returns 0 on success or if there were errors from which the compiler could
-/// recover. If there is a failure from which there is no recovery, returns
-/// a non-zero \c CXErrorCode.
-///
-/// The rest of the parameters are the same as #clang_parseTranslationUnit.
-int clang_indexSourceFile(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- int index_callbacks_size,
- int index_options,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
- int TU_options,
-) {
- return _clang_indexSourceFile(
- arg0,
- client_data,
- index_callbacks,
- index_callbacks_size,
- index_options,
- source_filename,
- command_line_args,
- num_command_line_args,
- unsaved_files,
- num_unsaved_files,
- out_TU,
- TU_options,
- );
-}
-
-final _dart_clang_indexSourceFile _clang_indexSourceFile = _dylib
- .lookupFunction<_c_clang_indexSourceFile, _dart_clang_indexSourceFile>(
- 'clang_indexSourceFile');
-
-typedef _c_clang_indexSourceFile = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- ffi.Uint32 index_callbacks_size,
- ffi.Uint32 index_options,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- ffi.Int32 num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- ffi.Uint32 num_unsaved_files,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
- ffi.Uint32 TU_options,
-);
-
-typedef _dart_clang_indexSourceFile = int Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- int index_callbacks_size,
- int index_options,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
- int TU_options,
-);
-
-/// Same as clang_indexSourceFile but requires a full command line
-/// for \c command_line_args including argv[0]. This is useful if the standard
-/// library paths are relative to the binary.
-int clang_indexSourceFileFullArgv(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- int index_callbacks_size,
- int index_options,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
- int TU_options,
-) {
- return _clang_indexSourceFileFullArgv(
- arg0,
- client_data,
- index_callbacks,
- index_callbacks_size,
- index_options,
- source_filename,
- command_line_args,
- num_command_line_args,
- unsaved_files,
- num_unsaved_files,
- out_TU,
- TU_options,
- );
-}
-
-final _dart_clang_indexSourceFileFullArgv _clang_indexSourceFileFullArgv =
- _dylib.lookupFunction<_c_clang_indexSourceFileFullArgv,
- _dart_clang_indexSourceFileFullArgv>('clang_indexSourceFileFullArgv');
-
-typedef _c_clang_indexSourceFileFullArgv = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- ffi.Uint32 index_callbacks_size,
- ffi.Uint32 index_options,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- ffi.Int32 num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- ffi.Uint32 num_unsaved_files,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
- ffi.Uint32 TU_options,
-);
-
-typedef _dart_clang_indexSourceFileFullArgv = int Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- int index_callbacks_size,
- int index_options,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
- int TU_options,
-);
-
-/// Index the given translation unit via callbacks implemented through
-/// #IndexerCallbacks.
-///
-/// The order of callback invocations is not guaranteed to be the same as
-/// when indexing a source file. The high level order will be:
-///
-/// -Preprocessor callbacks invocations
-/// -Declaration/reference callbacks invocations
-/// -Diagnostic callback invocations
-///
-/// The parameters are the same as #clang_indexSourceFile.
-///
-/// \returns If there is a failure from which there is no recovery, returns
-/// non-zero, otherwise returns 0.
-int clang_indexTranslationUnit(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- int index_callbacks_size,
- int index_options,
- ffi.Pointer<CXTranslationUnitImpl> arg5,
-) {
- return _clang_indexTranslationUnit(
- arg0,
- client_data,
- index_callbacks,
- index_callbacks_size,
- index_options,
- arg5,
- );
-}
-
-final _dart_clang_indexTranslationUnit _clang_indexTranslationUnit =
- _dylib.lookupFunction<_c_clang_indexTranslationUnit,
- _dart_clang_indexTranslationUnit>('clang_indexTranslationUnit');
-
-typedef _c_clang_indexTranslationUnit = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- ffi.Uint32 index_callbacks_size,
- ffi.Uint32 index_options,
- ffi.Pointer<CXTranslationUnitImpl> arg5,
-);
-
-typedef _dart_clang_indexTranslationUnit = int Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Pointer<ffi.Void> client_data,
- ffi.Pointer<IndexerCallbacks> index_callbacks,
- int index_callbacks_size,
- int index_options,
- ffi.Pointer<CXTranslationUnitImpl> arg5,
-);
-
-ffi.Pointer<CXIdxCXXClassDeclInfo> clang_index_getCXXClassDeclInfo(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-) {
- return _clang_index_getCXXClassDeclInfo(
- arg0,
- );
-}
-
-final _dart_clang_index_getCXXClassDeclInfo _clang_index_getCXXClassDeclInfo =
- _dylib.lookupFunction<_c_clang_index_getCXXClassDeclInfo,
- _dart_clang_index_getCXXClassDeclInfo>(
- 'clang_index_getCXXClassDeclInfo');
-
-typedef _c_clang_index_getCXXClassDeclInfo = ffi.Pointer<CXIdxCXXClassDeclInfo>
- Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getCXXClassDeclInfo
- = ffi.Pointer<CXIdxCXXClassDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-/// For retrieving a custom CXIdxClientContainer attached to a
-/// container.
-ffi.Pointer<ffi.Void> clang_index_getClientContainer(
- ffi.Pointer<CXIdxContainerInfo> arg0,
-) {
- return _clang_index_getClientContainer(
- arg0,
- );
-}
-
-final _dart_clang_index_getClientContainer _clang_index_getClientContainer =
- _dylib.lookupFunction<_c_clang_index_getClientContainer,
- _dart_clang_index_getClientContainer>('clang_index_getClientContainer');
-
-typedef _c_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXIdxContainerInfo> arg0,
-);
-
-typedef _dart_clang_index_getClientContainer = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXIdxContainerInfo> arg0,
-);
-
-/// For retrieving a custom CXIdxClientEntity attached to an entity.
-ffi.Pointer<ffi.Void> clang_index_getClientEntity(
- ffi.Pointer<CXIdxEntityInfo> arg0,
-) {
- return _clang_index_getClientEntity(
- arg0,
- );
-}
-
-final _dart_clang_index_getClientEntity _clang_index_getClientEntity =
- _dylib.lookupFunction<_c_clang_index_getClientEntity,
- _dart_clang_index_getClientEntity>('clang_index_getClientEntity');
-
-typedef _c_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXIdxEntityInfo> arg0,
-);
-
-typedef _dart_clang_index_getClientEntity = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<CXIdxEntityInfo> arg0,
-);
-
-ffi.Pointer<CXIdxIBOutletCollectionAttrInfo>
- clang_index_getIBOutletCollectionAttrInfo(
- ffi.Pointer<CXIdxAttrInfo> arg0,
-) {
- return _clang_index_getIBOutletCollectionAttrInfo(
- arg0,
- );
-}
-
-final _dart_clang_index_getIBOutletCollectionAttrInfo
- _clang_index_getIBOutletCollectionAttrInfo = _dylib.lookupFunction<
- _c_clang_index_getIBOutletCollectionAttrInfo,
- _dart_clang_index_getIBOutletCollectionAttrInfo>(
- 'clang_index_getIBOutletCollectionAttrInfo');
-
-typedef _c_clang_index_getIBOutletCollectionAttrInfo
- = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
- ffi.Pointer<CXIdxAttrInfo> arg0,
-);
-
-typedef _dart_clang_index_getIBOutletCollectionAttrInfo
- = ffi.Pointer<CXIdxIBOutletCollectionAttrInfo> Function(
- ffi.Pointer<CXIdxAttrInfo> arg0,
-);
-
-ffi.Pointer<CXIdxObjCCategoryDeclInfo> clang_index_getObjCCategoryDeclInfo(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-) {
- return _clang_index_getObjCCategoryDeclInfo(
- arg0,
- );
-}
-
-final _dart_clang_index_getObjCCategoryDeclInfo
- _clang_index_getObjCCategoryDeclInfo = _dylib.lookupFunction<
- _c_clang_index_getObjCCategoryDeclInfo,
- _dart_clang_index_getObjCCategoryDeclInfo>(
- 'clang_index_getObjCCategoryDeclInfo');
-
-typedef _c_clang_index_getObjCCategoryDeclInfo
- = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCCategoryDeclInfo
- = ffi.Pointer<CXIdxObjCCategoryDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-ffi.Pointer<CXIdxObjCContainerDeclInfo> clang_index_getObjCContainerDeclInfo(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-) {
- return _clang_index_getObjCContainerDeclInfo(
- arg0,
- );
-}
-
-final _dart_clang_index_getObjCContainerDeclInfo
- _clang_index_getObjCContainerDeclInfo = _dylib.lookupFunction<
- _c_clang_index_getObjCContainerDeclInfo,
- _dart_clang_index_getObjCContainerDeclInfo>(
- 'clang_index_getObjCContainerDeclInfo');
-
-typedef _c_clang_index_getObjCContainerDeclInfo
- = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCContainerDeclInfo
- = ffi.Pointer<CXIdxObjCContainerDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-ffi.Pointer<CXIdxObjCInterfaceDeclInfo> clang_index_getObjCInterfaceDeclInfo(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-) {
- return _clang_index_getObjCInterfaceDeclInfo(
- arg0,
- );
-}
-
-final _dart_clang_index_getObjCInterfaceDeclInfo
- _clang_index_getObjCInterfaceDeclInfo = _dylib.lookupFunction<
- _c_clang_index_getObjCInterfaceDeclInfo,
- _dart_clang_index_getObjCInterfaceDeclInfo>(
- 'clang_index_getObjCInterfaceDeclInfo');
-
-typedef _c_clang_index_getObjCInterfaceDeclInfo
- = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCInterfaceDeclInfo
- = ffi.Pointer<CXIdxObjCInterfaceDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-ffi.Pointer<CXIdxObjCPropertyDeclInfo> clang_index_getObjCPropertyDeclInfo(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-) {
- return _clang_index_getObjCPropertyDeclInfo(
- arg0,
- );
-}
-
-final _dart_clang_index_getObjCPropertyDeclInfo
- _clang_index_getObjCPropertyDeclInfo = _dylib.lookupFunction<
- _c_clang_index_getObjCPropertyDeclInfo,
- _dart_clang_index_getObjCPropertyDeclInfo>(
- 'clang_index_getObjCPropertyDeclInfo');
-
-typedef _c_clang_index_getObjCPropertyDeclInfo
- = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCPropertyDeclInfo
- = ffi.Pointer<CXIdxObjCPropertyDeclInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-ffi.Pointer<CXIdxObjCProtocolRefListInfo>
- clang_index_getObjCProtocolRefListInfo(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-) {
- return _clang_index_getObjCProtocolRefListInfo(
- arg0,
- );
-}
-
-final _dart_clang_index_getObjCProtocolRefListInfo
- _clang_index_getObjCProtocolRefListInfo = _dylib.lookupFunction<
- _c_clang_index_getObjCProtocolRefListInfo,
- _dart_clang_index_getObjCProtocolRefListInfo>(
- 'clang_index_getObjCProtocolRefListInfo');
-
-typedef _c_clang_index_getObjCProtocolRefListInfo
- = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-typedef _dart_clang_index_getObjCProtocolRefListInfo
- = ffi.Pointer<CXIdxObjCProtocolRefListInfo> Function(
- ffi.Pointer<CXIdxDeclInfo> arg0,
-);
-
-int clang_index_isEntityObjCContainerKind(
- int arg0,
-) {
- return _clang_index_isEntityObjCContainerKind(
- arg0,
- );
-}
-
-final _dart_clang_index_isEntityObjCContainerKind
- _clang_index_isEntityObjCContainerKind = _dylib.lookupFunction<
- _c_clang_index_isEntityObjCContainerKind,
- _dart_clang_index_isEntityObjCContainerKind>(
- 'clang_index_isEntityObjCContainerKind');
-
-typedef _c_clang_index_isEntityObjCContainerKind = ffi.Int32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_index_isEntityObjCContainerKind = int Function(
- int arg0,
-);
-
-/// For setting a custom CXIdxClientContainer attached to a
-/// container.
-void clang_index_setClientContainer(
- ffi.Pointer<CXIdxContainerInfo> arg0,
- ffi.Pointer<ffi.Void> arg1,
-) {
- return _clang_index_setClientContainer(
- arg0,
- arg1,
- );
-}
-
-final _dart_clang_index_setClientContainer _clang_index_setClientContainer =
- _dylib.lookupFunction<_c_clang_index_setClientContainer,
- _dart_clang_index_setClientContainer>('clang_index_setClientContainer');
-
-typedef _c_clang_index_setClientContainer = ffi.Void Function(
- ffi.Pointer<CXIdxContainerInfo> arg0,
- ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_index_setClientContainer = void Function(
- ffi.Pointer<CXIdxContainerInfo> arg0,
- ffi.Pointer<ffi.Void> arg1,
-);
-
-/// For setting a custom CXIdxClientEntity attached to an entity.
-void clang_index_setClientEntity(
- ffi.Pointer<CXIdxEntityInfo> arg0,
- ffi.Pointer<ffi.Void> arg1,
-) {
- return _clang_index_setClientEntity(
- arg0,
- arg1,
- );
-}
-
-final _dart_clang_index_setClientEntity _clang_index_setClientEntity =
- _dylib.lookupFunction<_c_clang_index_setClientEntity,
- _dart_clang_index_setClientEntity>('clang_index_setClientEntity');
-
-typedef _c_clang_index_setClientEntity = ffi.Void Function(
- ffi.Pointer<CXIdxEntityInfo> arg0,
- ffi.Pointer<ffi.Void> arg1,
-);
-
-typedef _dart_clang_index_setClientEntity = void Function(
- ffi.Pointer<CXIdxEntityInfo> arg0,
- ffi.Pointer<ffi.Void> arg1,
-);
-
-/// Determine whether the given cursor kind represents an attribute.
-int clang_isAttribute(
- int arg0,
-) {
- return _clang_isAttribute(
- arg0,
- );
-}
-
-final _dart_clang_isAttribute _clang_isAttribute =
- _dylib.lookupFunction<_c_clang_isAttribute, _dart_clang_isAttribute>(
- 'clang_isAttribute');
-
-typedef _c_clang_isAttribute = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isAttribute = int Function(
- int arg0,
-);
-
-/// Determine whether the given cursor kind represents a declaration.
-int clang_isDeclaration(
- int arg0,
-) {
- return _clang_isDeclaration(
- arg0,
- );
-}
-
-final _dart_clang_isDeclaration _clang_isDeclaration =
- _dylib.lookupFunction<_c_clang_isDeclaration, _dart_clang_isDeclaration>(
- 'clang_isDeclaration');
-
-typedef _c_clang_isDeclaration = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isDeclaration = int Function(
- int arg0,
-);
-
-/// Determine whether the given cursor kind represents an expression.
-int clang_isExpression(
- int arg0,
-) {
- return _clang_isExpression(
- arg0,
- );
-}
-
-final _dart_clang_isExpression _clang_isExpression =
- _dylib.lookupFunction<_c_clang_isExpression, _dart_clang_isExpression>(
- 'clang_isExpression');
-
-typedef _c_clang_isExpression = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isExpression = int Function(
- int arg0,
-);
-
-/// Determine whether the given header is guarded against
-/// multiple inclusions, either with the conventional
-/// \#ifndef/\#define/\#endif macro guards or with \#pragma once.
-int clang_isFileMultipleIncludeGuarded(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
-) {
- return _clang_isFileMultipleIncludeGuarded(
- tu,
- file,
- );
-}
-
-final _dart_clang_isFileMultipleIncludeGuarded
- _clang_isFileMultipleIncludeGuarded = _dylib.lookupFunction<
- _c_clang_isFileMultipleIncludeGuarded,
- _dart_clang_isFileMultipleIncludeGuarded>(
- 'clang_isFileMultipleIncludeGuarded');
-
-typedef _c_clang_isFileMultipleIncludeGuarded = ffi.Uint32 Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
-);
-
-typedef _dart_clang_isFileMultipleIncludeGuarded = int Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
- ffi.Pointer<ffi.Void> file,
-);
-
-/// Determine whether the given cursor kind represents an invalid
-/// cursor.
-int clang_isInvalid(
- int arg0,
-) {
- return _clang_isInvalid(
- arg0,
- );
-}
-
-final _dart_clang_isInvalid _clang_isInvalid =
- _dylib.lookupFunction<_c_clang_isInvalid, _dart_clang_isInvalid>(
- 'clang_isInvalid');
-
-typedef _c_clang_isInvalid = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isInvalid = int Function(
- int arg0,
-);
-
-/// Determine whether the given cursor represents a preprocessing
-/// element, such as a preprocessor directive or macro instantiation.
-int clang_isPreprocessing(
- int arg0,
-) {
- return _clang_isPreprocessing(
- arg0,
- );
-}
-
-final _dart_clang_isPreprocessing _clang_isPreprocessing = _dylib
- .lookupFunction<_c_clang_isPreprocessing, _dart_clang_isPreprocessing>(
- 'clang_isPreprocessing');
-
-typedef _c_clang_isPreprocessing = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isPreprocessing = int Function(
- int arg0,
-);
-
-/// Determine whether the given cursor kind represents a simple
-/// reference.
-///
-/// Note that other kinds of cursors (such as expressions) can also refer to
-/// other cursors. Use clang_getCursorReferenced() to determine whether a
-/// particular cursor refers to another entity.
-int clang_isReference(
- int arg0,
-) {
- return _clang_isReference(
- arg0,
- );
-}
-
-final _dart_clang_isReference _clang_isReference =
- _dylib.lookupFunction<_c_clang_isReference, _dart_clang_isReference>(
- 'clang_isReference');
-
-typedef _c_clang_isReference = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isReference = int Function(
- int arg0,
-);
-
-/// Determine whether the given cursor kind represents a statement.
-int clang_isStatement(
- int arg0,
-) {
- return _clang_isStatement(
- arg0,
- );
-}
-
-final _dart_clang_isStatement _clang_isStatement =
- _dylib.lookupFunction<_c_clang_isStatement, _dart_clang_isStatement>(
- 'clang_isStatement');
-
-typedef _c_clang_isStatement = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isStatement = int Function(
- int arg0,
-);
-
-/// Determine whether the given cursor kind represents a translation
-/// unit.
-int clang_isTranslationUnit(
- int arg0,
-) {
- return _clang_isTranslationUnit(
- arg0,
- );
-}
-
-final _dart_clang_isTranslationUnit _clang_isTranslationUnit = _dylib
- .lookupFunction<_c_clang_isTranslationUnit, _dart_clang_isTranslationUnit>(
- 'clang_isTranslationUnit');
-
-typedef _c_clang_isTranslationUnit = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isTranslationUnit = int Function(
- int arg0,
-);
-
-/// Determine whether the given cursor represents a currently
-/// unexposed piece of the AST (e.g., CXCursor_UnexposedStmt).
-int clang_isUnexposed(
- int arg0,
-) {
- return _clang_isUnexposed(
- arg0,
- );
-}
-
-final _dart_clang_isUnexposed _clang_isUnexposed =
- _dylib.lookupFunction<_c_clang_isUnexposed, _dart_clang_isUnexposed>(
- 'clang_isUnexposed');
-
-typedef _c_clang_isUnexposed = ffi.Uint32 Function(
- ffi.Int32 arg0,
-);
-
-typedef _dart_clang_isUnexposed = int Function(
- int arg0,
-);
-
-/// Deserialize a set of diagnostics from a Clang diagnostics bitcode
-/// file.
-///
-/// \param file The name of the file to deserialize.
-/// \param error A pointer to a enum value recording if there was a problem
-/// deserializing the diagnostics.
-/// \param errorString A pointer to a CXString for recording the error string
-/// if the file was not successfully loaded.
-///
-/// \returns A loaded CXDiagnosticSet if successful, and NULL otherwise. These
-/// diagnostics should be released using clang_disposeDiagnosticSet().
-ffi.Pointer<ffi.Void> clang_loadDiagnostics(
- ffi.Pointer<ffi.Int8> file,
- ffi.Pointer<ffi.Int32> error,
- ffi.Pointer<CXString> errorString,
-) {
- return _clang_loadDiagnostics(
- file,
- error,
- errorString,
- );
-}
-
-final _dart_clang_loadDiagnostics _clang_loadDiagnostics = _dylib
- .lookupFunction<_c_clang_loadDiagnostics, _dart_clang_loadDiagnostics>(
- 'clang_loadDiagnostics');
-
-typedef _c_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Int8> file,
- ffi.Pointer<ffi.Int32> error,
- ffi.Pointer<CXString> errorString,
-);
-
-typedef _dart_clang_loadDiagnostics = ffi.Pointer<ffi.Void> Function(
- ffi.Pointer<ffi.Int8> file,
- ffi.Pointer<ffi.Int32> error,
- ffi.Pointer<CXString> errorString,
-);
-
-/// Same as \c clang_parseTranslationUnit2, but returns
-/// the \c CXTranslationUnit instead of an error code. In case of an error this
-/// routine returns a \c NULL \c CXTranslationUnit, without further detailed
-/// error codes.
-ffi.Pointer<CXTranslationUnitImpl> clang_parseTranslationUnit(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
-) {
- return _clang_parseTranslationUnit(
- CIdx,
- source_filename,
- command_line_args,
- num_command_line_args,
- unsaved_files,
- num_unsaved_files,
- options,
- );
-}
-
-final _dart_clang_parseTranslationUnit _clang_parseTranslationUnit =
- _dylib.lookupFunction<_c_clang_parseTranslationUnit,
- _dart_clang_parseTranslationUnit>('clang_parseTranslationUnit');
-
-typedef _c_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
- Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- ffi.Int32 num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- ffi.Uint32 num_unsaved_files,
- ffi.Uint32 options,
-);
-
-typedef _dart_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
- Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
-);
-
-/// Parse the given source file and the translation unit corresponding
-/// to that file.
-///
-/// This routine is the main entry point for the Clang C API, providing the
-/// ability to parse a source file into a translation unit that can then be
-/// queried by other functions in the API. This routine accepts a set of
-/// command-line arguments so that the compilation can be configured in the same
-/// way that the compiler is configured on the command line.
-///
-/// \param CIdx The index object with which the translation unit will be
-/// associated.
-///
-/// \param source_filename The name of the source file to load, or NULL if the
-/// source file is included in \c command_line_args.
-///
-/// \param command_line_args The command-line arguments that would be
-/// passed to the \c clang executable if it were being invoked out-of-process.
-/// These command-line options will be parsed and will affect how the translation
-/// unit is parsed. Note that the following options are ignored: '-c',
-/// '-emit-ast', '-fsyntax-only' (which is the default), and '-o \<output file>'.
-///
-/// \param num_command_line_args The number of command-line arguments in
-/// \c command_line_args.
-///
-/// \param unsaved_files the files that have not yet been saved to disk
-/// but may be required for parsing, including the contents of
-/// those files. The contents and name of these files (as specified by
-/// CXUnsavedFile) are copied when necessary, so the client only needs to
-/// guarantee their validity until the call to this function returns.
-///
-/// \param num_unsaved_files the number of unsaved file entries in \p
-/// unsaved_files.
-///
-/// \param options A bitmask of options that affects how the translation unit
-/// is managed but not its compilation. This should be a bitwise OR of the
-/// CXTranslationUnit_XXX flags.
-///
-/// \param[out] out_TU A non-NULL pointer to store the created
-/// \c CXTranslationUnit, describing the parsed code and containing any
-/// diagnostics produced by the compiler.
-///
-/// \returns Zero on success, otherwise returns an error code.
-int clang_parseTranslationUnit2(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-) {
- return _clang_parseTranslationUnit2(
- CIdx,
- source_filename,
- command_line_args,
- num_command_line_args,
- unsaved_files,
- num_unsaved_files,
- options,
- out_TU,
- );
-}
-
-final _dart_clang_parseTranslationUnit2 _clang_parseTranslationUnit2 =
- _dylib.lookupFunction<_c_clang_parseTranslationUnit2,
- _dart_clang_parseTranslationUnit2>('clang_parseTranslationUnit2');
-
-typedef _c_clang_parseTranslationUnit2 = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- ffi.Int32 num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- ffi.Uint32 num_unsaved_files,
- ffi.Uint32 options,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_parseTranslationUnit2 = int Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-/// Same as clang_parseTranslationUnit2 but requires a full command line
-/// for \c command_line_args including argv[0]. This is useful if the standard
-/// library paths are relative to the binary.
-int clang_parseTranslationUnit2FullArgv(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-) {
- return _clang_parseTranslationUnit2FullArgv(
- CIdx,
- source_filename,
- command_line_args,
- num_command_line_args,
- unsaved_files,
- num_unsaved_files,
- options,
- out_TU,
- );
-}
-
-final _dart_clang_parseTranslationUnit2FullArgv
- _clang_parseTranslationUnit2FullArgv = _dylib.lookupFunction<
- _c_clang_parseTranslationUnit2FullArgv,
- _dart_clang_parseTranslationUnit2FullArgv>(
- 'clang_parseTranslationUnit2FullArgv');
-
-typedef _c_clang_parseTranslationUnit2FullArgv = ffi.Int32 Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- ffi.Int32 num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- ffi.Uint32 num_unsaved_files,
- ffi.Uint32 options,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-typedef _dart_clang_parseTranslationUnit2FullArgv = int Function(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
- ffi.Pointer<ffi.Pointer<CXTranslationUnitImpl>> out_TU,
-);
-
-/// Dispose the remapping.
-void clang_remap_dispose(
- ffi.Pointer<ffi.Void> arg0,
-) {
- return _clang_remap_dispose(
- arg0,
- );
-}
-
-final _dart_clang_remap_dispose _clang_remap_dispose =
- _dylib.lookupFunction<_c_clang_remap_dispose, _dart_clang_remap_dispose>(
- 'clang_remap_dispose');
-
-typedef _c_clang_remap_dispose = ffi.Void Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_remap_dispose = void Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-/// Get the original and the associated filename from the remapping.
-///
-/// \param original If non-NULL, will be set to the original filename.
-///
-/// \param transformed If non-NULL, will be set to the filename that the original
-/// is associated with.
-void clang_remap_getFilenames(
- ffi.Pointer<ffi.Void> arg0,
- int index,
- ffi.Pointer<CXString> original,
- ffi.Pointer<CXString> transformed,
-) {
- return _clang_remap_getFilenames(
- arg0,
- index,
- original,
- transformed,
- );
-}
-
-final _dart_clang_remap_getFilenames _clang_remap_getFilenames =
- _dylib.lookupFunction<_c_clang_remap_getFilenames,
- _dart_clang_remap_getFilenames>('clang_remap_getFilenames');
-
-typedef _c_clang_remap_getFilenames = ffi.Void Function(
- ffi.Pointer<ffi.Void> arg0,
- ffi.Uint32 index,
- ffi.Pointer<CXString> original,
- ffi.Pointer<CXString> transformed,
-);
-
-typedef _dart_clang_remap_getFilenames = void Function(
- ffi.Pointer<ffi.Void> arg0,
- int index,
- ffi.Pointer<CXString> original,
- ffi.Pointer<CXString> transformed,
-);
-
-/// Determine the number of remappings.
-int clang_remap_getNumFiles(
- ffi.Pointer<ffi.Void> arg0,
-) {
- return _clang_remap_getNumFiles(
- arg0,
- );
-}
-
-final _dart_clang_remap_getNumFiles _clang_remap_getNumFiles = _dylib
- .lookupFunction<_c_clang_remap_getNumFiles, _dart_clang_remap_getNumFiles>(
- 'clang_remap_getNumFiles');
-
-typedef _c_clang_remap_getNumFiles = ffi.Uint32 Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-typedef _dart_clang_remap_getNumFiles = int Function(
- ffi.Pointer<ffi.Void> arg0,
-);
-
-/// Reparse the source files that produced this translation unit.
-///
-/// This routine can be used to re-parse the source files that originally
-/// created the given translation unit, for example because those source files
-/// have changed (either on disk or as passed via \p unsaved_files). The
-/// source code will be reparsed with the same command-line options as it
-/// was originally parsed.
-///
-/// Reparsing a translation unit invalidates all cursors and source locations
-/// that refer into that translation unit. This makes reparsing a translation
-/// unit semantically equivalent to destroying the translation unit and then
-/// creating a new translation unit with the same command-line arguments.
-/// However, it may be more efficient to reparse a translation
-/// unit using this routine.
-///
-/// \param TU The translation unit whose contents will be re-parsed. The
-/// translation unit must originally have been built with
-/// \c clang_createTranslationUnitFromSourceFile().
-///
-/// \param num_unsaved_files The number of unsaved file entries in \p
-/// unsaved_files.
-///
-/// \param unsaved_files The files that have not yet been saved to disk
-/// but may be required for parsing, including the contents of
-/// those files. The contents and name of these files (as specified by
-/// CXUnsavedFile) are copied when necessary, so the client only needs to
-/// guarantee their validity until the call to this function returns.
-///
-/// \param options A bitset of options composed of the flags in CXReparse_Flags.
-/// The function \c clang_defaultReparseOptions() produces a default set of
-/// options recommended for most uses, based on the translation unit.
-///
-/// \returns 0 if the sources could be reparsed. A non-zero error code will be
-/// returned if reparsing was impossible, such that the translation unit is
-/// invalid. In such cases, the only valid call for \c TU is
-/// \c clang_disposeTranslationUnit(TU). The error codes returned by this
-/// routine are described by the \c CXErrorCode enum.
-int clang_reparseTranslationUnit(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- int num_unsaved_files,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int options,
-) {
- return _clang_reparseTranslationUnit(
- TU,
- num_unsaved_files,
- unsaved_files,
- options,
- );
-}
-
-final _dart_clang_reparseTranslationUnit _clang_reparseTranslationUnit =
- _dylib.lookupFunction<_c_clang_reparseTranslationUnit,
- _dart_clang_reparseTranslationUnit>('clang_reparseTranslationUnit');
-
-typedef _c_clang_reparseTranslationUnit = ffi.Int32 Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Uint32 num_unsaved_files,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- ffi.Uint32 options,
-);
-
-typedef _dart_clang_reparseTranslationUnit = int Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- int num_unsaved_files,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int options,
-);
-
-/// Saves a translation unit into a serialized representation of
-/// that translation unit on disk.
-///
-/// Any translation unit that was parsed without error can be saved
-/// into a file. The translation unit can then be deserialized into a
-/// new \c CXTranslationUnit with \c clang_createTranslationUnit() or,
-/// if it is an incomplete translation unit that corresponds to a
-/// header, used as a precompiled header when parsing other translation
-/// units.
-///
-/// \param TU The translation unit to save.
-///
-/// \param FileName The file to which the translation unit will be saved.
-///
-/// \param options A bitmask of options that affects how the translation unit
-/// is saved. This should be a bitwise OR of the
-/// CXSaveTranslationUnit_XXX flags.
-///
-/// \returns A value that will match one of the enumerators of the CXSaveError
-/// enumeration. Zero (CXSaveError_None) indicates that the translation unit was
-/// saved successfully, while a non-zero value indicates that a problem occurred.
-int clang_saveTranslationUnit(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<ffi.Int8> FileName,
- int options,
-) {
- return _clang_saveTranslationUnit(
- TU,
- FileName,
- options,
- );
-}
-
-final _dart_clang_saveTranslationUnit _clang_saveTranslationUnit =
- _dylib.lookupFunction<_c_clang_saveTranslationUnit,
- _dart_clang_saveTranslationUnit>('clang_saveTranslationUnit');
-
-typedef _c_clang_saveTranslationUnit = ffi.Int32 Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<ffi.Int8> FileName,
- ffi.Uint32 options,
-);
-
-typedef _dart_clang_saveTranslationUnit = int Function(
- ffi.Pointer<CXTranslationUnitImpl> TU,
- ffi.Pointer<ffi.Int8> FileName,
- int options,
-);
-
-/// Sort the code-completion results in case-insensitive alphabetical
-/// order.
-///
-/// \param Results The set of results to sort.
-/// \param NumResults The number of results in \p Results.
-void clang_sortCodeCompletionResults(
- ffi.Pointer<CXCompletionResult> Results,
- int NumResults,
-) {
- return _clang_sortCodeCompletionResults(
- Results,
- NumResults,
- );
-}
-
-final _dart_clang_sortCodeCompletionResults _clang_sortCodeCompletionResults =
- _dylib.lookupFunction<_c_clang_sortCodeCompletionResults,
- _dart_clang_sortCodeCompletionResults>(
- 'clang_sortCodeCompletionResults');
-
-typedef _c_clang_sortCodeCompletionResults = ffi.Void Function(
- ffi.Pointer<CXCompletionResult> Results,
- ffi.Uint32 NumResults,
-);
-
-typedef _dart_clang_sortCodeCompletionResults = void Function(
- ffi.Pointer<CXCompletionResult> Results,
- int NumResults,
-);
-
-/// Suspend a translation unit in order to free memory associated with it.
-///
-/// A suspended translation unit uses significantly less memory but on the other
-/// side does not support any other calls than \c clang_reparseTranslationUnit
-/// to resume it or \c clang_disposeTranslationUnit to dispose it completely.
-int clang_suspendTranslationUnit(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-) {
- return _clang_suspendTranslationUnit(
- arg0,
- );
-}
-
-final _dart_clang_suspendTranslationUnit _clang_suspendTranslationUnit =
- _dylib.lookupFunction<_c_clang_suspendTranslationUnit,
- _dart_clang_suspendTranslationUnit>('clang_suspendTranslationUnit');
-
-typedef _c_clang_suspendTranslationUnit = ffi.Uint32 Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_suspendTranslationUnit = int Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-/// Enable/disable crash recovery.
-///
-/// \param isEnabled Flag to indicate if crash recovery is enabled. A non-zero
-/// value enables crash recovery, while 0 disables it.
-void clang_toggleCrashRecovery(
- int isEnabled,
-) {
- return _clang_toggleCrashRecovery(
- isEnabled,
- );
-}
-
-final _dart_clang_toggleCrashRecovery _clang_toggleCrashRecovery =
- _dylib.lookupFunction<_c_clang_toggleCrashRecovery,
- _dart_clang_toggleCrashRecovery>('clang_toggleCrashRecovery');
-
-typedef _c_clang_toggleCrashRecovery = ffi.Void Function(
- ffi.Uint32 isEnabled,
-);
-
-typedef _dart_clang_toggleCrashRecovery = void Function(
- int isEnabled,
-);
-
-typedef ModifiedCXCursorVisitor_1 = ffi.Int32 Function(
- ffi.Pointer<CXCursor>,
- ffi.Pointer<CXCursor>,
- ffi.Pointer<ffi.Void>,
-);
-
-/// Visitor is a function pointer with parameters having pointers to cxcursor
-/// instead of cxcursor by default.
-int clang_visitChildren_wrap(
- ffi.Pointer<CXCursor> parent,
- ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
- ffi.Pointer<ffi.Void> clientData,
-) {
- return _clang_visitChildren_wrap(
- parent,
- _modifiedVisitor,
- clientData,
- );
-}
-
-final _dart_clang_visitChildren_wrap _clang_visitChildren_wrap =
- _dylib.lookupFunction<_c_clang_visitChildren_wrap,
- _dart_clang_visitChildren_wrap>('clang_visitChildren_wrap');
-
-typedef _c_clang_visitChildren_wrap = ffi.Uint32 Function(
- ffi.Pointer<CXCursor> parent,
- ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
- ffi.Pointer<ffi.Void> clientData,
-);
-
-typedef _dart_clang_visitChildren_wrap = int Function(
- ffi.Pointer<CXCursor> parent,
- ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
- ffi.Pointer<ffi.Void> clientData,
-);
diff --git a/example/libclang-example/pubspec.yaml b/example/libclang-example/pubspec.yaml
index c29adb8..22acef7 100644
--- a/example/libclang-example/pubspec.yaml
+++ b/example/libclang-example/pubspec.yaml
@@ -59,8 +59,10 @@
unsigned long long: 8
enum: 4
- # Default is 'init'
- init-function-name: init
+ # Default is 'NativeLibrary'
+ name: 'LibClang'
+
+ description: 'Holds bindings to LibClang.'
# False by default.
array-workaround: true
diff --git a/example/simple/generated_bindings.dart b/example/simple/generated_bindings.dart
index 54409b1..1976074 100644
--- a/example/simple/generated_bindings.dart
+++ b/example/simple/generated_bindings.dart
@@ -3,27 +3,89 @@
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
-/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+/// Bindings to `headers/example.h`.
+class NativeLibrary {
+ /// Holds the Dynamic library.
+ final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary) {
- _dylib = dynamicLibrary;
+ /// The symbols are looked up in [dynamicLibrary].
+ NativeLibrary(ffi.DynamicLibrary dynamicLibrary) : _dylib = dynamicLibrary;
+
+ /// Adds 2 integers.
+ int sum(
+ int a,
+ int b,
+ ) {
+ _sum ??= _dylib.lookupFunction<_c_sum, _dart_sum>('sum');
+ return _sum(
+ a,
+ b,
+ );
+ }
+
+ _dart_sum _sum;
+
+ /// Subtracts 2 integers.
+ int subtract(
+ ffi.Pointer<ffi.Int32> a,
+ int b,
+ ) {
+ _subtract ??=
+ _dylib.lookupFunction<_c_subtract, _dart_subtract>('subtract');
+ return _subtract(
+ a,
+ b,
+ );
+ }
+
+ _dart_subtract _subtract;
+
+ /// Multiplies 2 integers, returns pointer to an integer,.
+ ffi.Pointer<ffi.Int32> multiply(
+ int a,
+ int b,
+ ) {
+ _multiply ??=
+ _dylib.lookupFunction<_c_multiply, _dart_multiply>('multiply');
+ return _multiply(
+ a,
+ b,
+ );
+ }
+
+ _dart_multiply _multiply;
+
+ /// Divides 2 integers, returns pointer to a float.
+ ffi.Pointer<ffi.Float> divide(
+ int a,
+ int b,
+ ) {
+ _divide ??= _dylib.lookupFunction<_c_divide, _dart_divide>('divide');
+ return _divide(
+ a,
+ b,
+ );
+ }
+
+ _dart_divide _divide;
+
+ /// Divides 2 floats, returns a pointer to double.
+ ffi.Pointer<ffi.Double> dividePercision(
+ ffi.Pointer<ffi.Float> a,
+ ffi.Pointer<ffi.Float> b,
+ ) {
+ _dividePercision ??=
+ _dylib.lookupFunction<_c_dividePercision, _dart_dividePercision>(
+ 'dividePercision');
+ return _dividePercision(
+ a,
+ b,
+ );
+ }
+
+ _dart_dividePercision _dividePercision;
}
-/// Adds 2 integers.
-int sum(
- int a,
- int b,
-) {
- return _sum(
- a,
- b,
- );
-}
-
-final _dart_sum _sum = _dylib.lookupFunction<_c_sum, _dart_sum>('sum');
-
typedef _c_sum = ffi.Int32 Function(
ffi.Int32 a,
ffi.Int32 b,
@@ -34,20 +96,6 @@
int b,
);
-/// Subtracts 2 integers.
-int subtract(
- ffi.Pointer<ffi.Int32> a,
- int b,
-) {
- return _subtract(
- a,
- b,
- );
-}
-
-final _dart_subtract _subtract =
- _dylib.lookupFunction<_c_subtract, _dart_subtract>('subtract');
-
typedef _c_subtract = ffi.Int32 Function(
ffi.Pointer<ffi.Int32> a,
ffi.Int32 b,
@@ -58,20 +106,6 @@
int b,
);
-/// Multiplies 2 integers, returns pointer to an integer,.
-ffi.Pointer<ffi.Int32> multiply(
- int a,
- int b,
-) {
- return _multiply(
- a,
- b,
- );
-}
-
-final _dart_multiply _multiply =
- _dylib.lookupFunction<_c_multiply, _dart_multiply>('multiply');
-
typedef _c_multiply = ffi.Pointer<ffi.Int32> Function(
ffi.Int32 a,
ffi.Int32 b,
@@ -82,20 +116,6 @@
int b,
);
-/// Divides 2 integers, returns pointer to a float.
-ffi.Pointer<ffi.Float> divide(
- int a,
- int b,
-) {
- return _divide(
- a,
- b,
- );
-}
-
-final _dart_divide _divide =
- _dylib.lookupFunction<_c_divide, _dart_divide>('divide');
-
typedef _c_divide = ffi.Pointer<ffi.Float> Function(
ffi.Int32 a,
ffi.Int32 b,
@@ -106,21 +126,6 @@
int b,
);
-/// Divides 2 floats, returns a pointer to double.
-ffi.Pointer<ffi.Double> dividePercision(
- ffi.Pointer<ffi.Float> a,
- ffi.Pointer<ffi.Float> b,
-) {
- return _dividePercision(
- a,
- b,
- );
-}
-
-final _dart_dividePercision _dividePercision =
- _dylib.lookupFunction<_c_dividePercision, _dart_dividePercision>(
- 'dividePercision');
-
typedef _c_dividePercision = ffi.Pointer<ffi.Double> Function(
ffi.Pointer<ffi.Float> a,
ffi.Pointer<ffi.Float> b,
diff --git a/example/simple/pubspec.yaml b/example/simple/pubspec.yaml
index 454c138..58aaa7e 100644
--- a/example/simple/pubspec.yaml
+++ b/example/simple/pubspec.yaml
@@ -12,6 +12,8 @@
path: '../../'
ffigen:
+ name: NativeLibrary
+ description: Bindings to `headers/example.h`.
output: 'generated_bindings.dart'
headers:
- 'headers/example.h'
diff --git a/lib/src/code_generator.dart b/lib/src/code_generator.dart
index 9af6dbe..9eb01b6 100644
--- a/lib/src/code_generator.dart
+++ b/lib/src/code_generator.dart
@@ -13,5 +13,5 @@
export 'code_generator/library.dart';
export 'code_generator/struc.dart';
export 'code_generator/type.dart';
-export 'code_generator/typedefc.dart';
+export 'code_generator/typedef.dart';
diff --git a/lib/src/code_generator/binding.dart b/lib/src/code_generator/binding.dart
index f37c72c..507de6c 100644
--- a/lib/src/code_generator/binding.dart
+++ b/lib/src/code_generator/binding.dart
@@ -5,9 +5,12 @@
import 'package:meta/meta.dart';
import 'binding_string.dart';
+import 'typedef.dart';
import 'writer.dart';
/// Base class for all Bindings.
+///
+/// Do not extend directly, use [LookUpBinding] or [NoLookUpBinding].
abstract class Binding {
String name;
@@ -15,6 +18,24 @@
Binding({@required this.name, this.dartDoc});
+ /// Return typedef dependencies.
+ List<Typedef> getTypedefDependencies(Writer w);
+
/// Converts a Binding to its actual string representation.
+ ///
+ /// Note: This does not print the typedef dependencies.
+ /// Must call [getTypedefDependencies] first.
BindingString toBindingString(Writer w);
}
+
+/// Base class for bindings which look up symbols in dynamic library.
+abstract class LookUpBinding extends Binding {
+ LookUpBinding({String name, String dartDoc})
+ : super(name: name, dartDoc: dartDoc);
+}
+
+/// Base class for bindings which don't look up symbols in dynamic library.
+abstract class NoLookUpBinding extends Binding {
+ NoLookUpBinding({String name, String dartDoc})
+ : super(name: name, dartDoc: dartDoc);
+}
diff --git a/lib/src/code_generator/constant.dart b/lib/src/code_generator/constant.dart
index dd5c657..d64e7ac 100644
--- a/lib/src/code_generator/constant.dart
+++ b/lib/src/code_generator/constant.dart
@@ -2,11 +2,13 @@
// 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.
+import 'package:ffigen/src/code_generator/typedef.dart';
import 'package:meta/meta.dart';
import 'binding.dart';
import 'binding_string.dart';
import 'type.dart';
+import 'utils.dart';
import 'writer.dart';
/// A simple Constant.
@@ -20,7 +22,7 @@
/// ```dart
/// const int name = 10;
/// ```
-class Constant extends Binding {
+class Constant extends NoLookUpBinding {
final Type type;
/// The rawValue is pasted as it is.
@@ -41,9 +43,7 @@
final constantName = name;
if (dartDoc != null) {
- s.write('/// ');
- s.writeAll(dartDoc.split('\n'), '\n/// ');
- s.write('\n');
+ s.write(makeDartDoc(dartDoc));
}
s.write('const ${type.getDartType(w)} $constantName = $rawValue;\n\n');
@@ -51,4 +51,7 @@
return BindingString(
type: BindingStringType.constant, string: s.toString());
}
+
+ @override
+ List<Typedef> getTypedefDependencies(Writer w) => const [];
}
diff --git a/lib/src/code_generator/enum_class.dart b/lib/src/code_generator/enum_class.dart
index 1baea18..f578793 100644
--- a/lib/src/code_generator/enum_class.dart
+++ b/lib/src/code_generator/enum_class.dart
@@ -2,6 +2,7 @@
// 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.
+import 'package:ffigen/src/code_generator/typedef.dart';
import 'package:meta/meta.dart';
import 'binding.dart';
@@ -23,7 +24,7 @@
/// static const banana = 10;
/// }
/// ```
-class EnumClass extends Binding {
+class EnumClass extends NoLookUpBinding {
final List<EnumConstant> enumConstants;
EnumClass({
@@ -39,9 +40,7 @@
final enclosingClassName = name;
if (dartDoc != null) {
- s.write('/// ');
- s.writeAll(dartDoc.split('\n'), '\n/// ');
- s.write('\n');
+ s.write(makeDartDoc(dartDoc));
}
/// Adding [enclosingClassName] because dart doesn't allow class member
@@ -52,8 +51,7 @@
s.write('class $enclosingClassName {\n');
const depth = ' ';
for (final ec in enumConstants) {
- final enum_value_name =
- localUniqueNamer.makeUnique(ec.name);
+ final enum_value_name = localUniqueNamer.makeUnique(ec.name);
if (ec.dartDoc != null) {
s.write(depth + '/// ');
s.writeAll(ec.dartDoc.split('\n'), '\n' + depth + '/// ');
@@ -66,6 +64,9 @@
return BindingString(
type: BindingStringType.enumClass, string: s.toString());
}
+
+ @override
+ List<Typedef> getTypedefDependencies(Writer w) => const [];
}
/// Represents a single value in an enum.
diff --git a/lib/src/code_generator/func.dart b/lib/src/code_generator/func.dart
index ffc1509..4c321be 100644
--- a/lib/src/code_generator/func.dart
+++ b/lib/src/code_generator/func.dart
@@ -2,11 +2,13 @@
// 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.
+import 'package:ffigen/src/code_generator.dart';
import 'package:meta/meta.dart';
import 'binding.dart';
import 'binding_string.dart';
import 'type.dart';
+import 'utils.dart';
import 'writer.dart';
/// A binding for C function.
@@ -27,7 +29,7 @@
///
/// typedef _dart_sum = int Function(int a, int b);
/// ```
-class Func extends Binding {
+class Func extends LookUpBinding {
final String lookupSymbolName;
final Type returnType;
final List<Parameter> parameters;
@@ -50,30 +52,70 @@
}
}
+ List<Typedef> _typedefDependencies;
+ @override
+ List<Typedef> getTypedefDependencies(Writer w) {
+ if (_typedefDependencies == null) {
+ _typedefDependencies = <Typedef>[];
+
+ /// Ensure name conflicts are resolved for [cType] and [dartType] typedefs.
+ cType.name = _uniqueTypedefName(cType.name, w);
+ dartType.name = _uniqueTypedefName(dartType.name, w);
+
+ // Add typedef's required by parameters.
+ for (final p in parameters) {
+ final base = p.type.getBaseType();
+ if (base.broadType == BroadType.NativeFunction) {
+ // Resolve name conflicts in typedef's required by parameters before using.
+ base.nativeFunc.name = _uniqueTypedefName(base.nativeFunc.name, w);
+ _typedefDependencies.add(base.nativeFunc);
+ }
+ }
+ // Add C function typedef.
+ _typedefDependencies.add(cType);
+ // Add Dart function typedef.
+ _typedefDependencies.add(dartType);
+ }
+ return _typedefDependencies;
+ }
+
+ /// Checks if typedef name is unique in both top level and wrapper level.
+ /// And only marks it as used at top-level.
+ String _uniqueTypedefName(String name, Writer w) {
+ final base = name;
+ String uniqueName = name;
+ int suffix = 0;
+ while (w.topLevelUniqueNamer.isUsed(uniqueName) ||
+ w.wrapperLevelUniqueNamer.isUsed(uniqueName)) {
+ suffix++;
+ uniqueName = base + suffix.toString();
+ }
+ w.topLevelUniqueNamer.markUsed(uniqueName);
+ return uniqueName;
+ }
+
+ Typedef _cType, _dartType;
+ Typedef get cType => _cType ??= Typedef(
+ name: '_c_$name',
+ returnType: returnType,
+ parameters: parameters,
+ typedefType: TypedefType.C,
+ );
+ Typedef get dartType => _dartType ??= Typedef(
+ name: '_dart_$name',
+ returnType: returnType,
+ parameters: parameters,
+ typedefType: TypedefType.Dart,
+ );
+
@override
BindingString toBindingString(Writer w) {
final s = StringBuffer();
final enclosingFuncName = name;
-
- // Ensure name conflicts are resolved for typedefs generated.
- final funcVarName = w.uniqueNamer.makeUnique('_$name');
- final typedefC = w.uniqueNamer.makeUnique('_c_$name');
- final typedefDart = w.uniqueNamer.makeUnique('_dart_$name');
-
- // Write typedef's required by parameters and resolve name conflicts.
- for (final p in parameters) {
- final base = p.type.getBaseType();
- if (base.broadType == BroadType.NativeFunction) {
- base.nativeFunc.name =
- w.uniqueNamer.makeUnique(base.nativeFunc.name);
- s.write(base.nativeFunc.toTypedefString(w));
- }
- }
+ final funcVarName = w.wrapperLevelUniqueNamer.makeUnique('_$name');
if (dartDoc != null) {
- s.write('/// ');
- s.writeAll(dartDoc.split('\n'), '\n/// ');
- s.write('\n');
+ s.write(makeDartDoc(dartDoc));
}
// Write enclosing function.
@@ -82,30 +124,18 @@
s.write(' ${p.type.getDartType(w)} ${p.name},\n');
}
s.write(') {\n');
+ s.write(
+ "$funcVarName ??= ${w.dylibIdentifier}.lookupFunction<${cType.name},${dartType.name}>('$lookupSymbolName');\n");
+
s.write(' return $funcVarName(\n');
for (final p in parameters) {
s.write(' ${p.name},\n');
}
s.write(' );\n');
- s.write('}\n\n');
+ s.write('}\n');
- // Write function with dylib lookup.
- s.write(
- "final $typedefDart $funcVarName = ${w.dylibIdentifier}.lookupFunction<$typedefC,$typedefDart>('$lookupSymbolName');\n\n");
-
- // Write typdef for C.
- s.write('typedef $typedefC = ${returnType.getCType(w)} Function(\n');
- for (final p in parameters) {
- s.write(' ${p.type.getCType(w)} ${p.name},\n');
- }
- s.write(');\n\n');
-
- // Write typdef for dart.
- s.write('typedef $typedefDart = ${returnType.getDartType(w)} Function(\n');
- for (final p in parameters) {
- s.write(' ${p.type.getDartType(w)} ${p.name},\n');
- }
- s.write(');\n\n');
+ // Write function variable.
+ s.write('${dartType.name} $funcVarName;\n\n');
return BindingString(type: BindingStringType.func, string: s.toString());
}
diff --git a/lib/src/code_generator/global.dart b/lib/src/code_generator/global.dart
index 2e41d82..f1f919f 100644
--- a/lib/src/code_generator/global.dart
+++ b/lib/src/code_generator/global.dart
@@ -2,11 +2,13 @@
// 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.
+import 'package:ffigen/src/code_generator/typedef.dart';
import 'package:meta/meta.dart';
import 'binding.dart';
import 'binding_string.dart';
import 'type.dart';
+import 'utils.dart';
import 'writer.dart';
/// A binding to a global variable
@@ -19,7 +21,7 @@
/// ```dart
/// final int a = _dylib.lookup<ffi.Int32>('a').value;
/// ```
-class Global extends Binding {
+class Global extends LookUpBinding {
final String lookupSymbolName;
final Type type;
@@ -35,14 +37,19 @@
final s = StringBuffer();
final globalVarName = name;
if (dartDoc != null) {
- s.write('/// ');
- s.writeAll(dartDoc.split('\n'), '\n/// ');
- s.write('\n');
+ s.write(makeDartDoc(dartDoc));
}
+ final holderVarName =
+ w.wrapperLevelUniqueNamer.makeUnique('_$globalVarName');
s.write(
- "final ${type.getDartType(w)} $globalVarName = ${w.dylibIdentifier}.lookup<${type.getCType(w)}>('$lookupSymbolName').value;\n\n");
+ '${w.ffiLibraryPrefix}.Pointer<${type.getCType(w)}> $holderVarName;\n');
+ s.write(
+ "${type.getDartType(w)} get $globalVarName => ($holderVarName ??= ${w.dylibIdentifier}.lookup<${type.getCType(w)}>('$lookupSymbolName')).value;\n\n");
return BindingString(type: BindingStringType.global, string: s.toString());
}
+
+ @override
+ List<Typedef> getTypedefDependencies(Writer w) => const [];
}
diff --git a/lib/src/code_generator/library.dart b/lib/src/code_generator/library.dart
index 027c1f1..13a7340 100644
--- a/lib/src/code_generator/library.dart
+++ b/lib/src/code_generator/library.dart
@@ -22,29 +22,50 @@
Writer get writer => _writer;
Library({
+ @required String name,
+ String description,
@required this.bindings,
String header,
- String initFunctionIdentifier = 'init',
}) {
- // Handle any declaration-declaration name conflict.
- final declConflictHandler = UniqueNamer({});
- for (final b in bindings) {
+ // Seperate bindings which require lookup.
+ final lookUpBindings = bindings.whereType<LookUpBinding>().toList();
+ final noLookUpBindings = bindings.whereType<NoLookUpBinding>().toList();
+
+ /// Handle any declaration-declaration name conflict in [lookUpBindings].
+ final lookUpDeclConflictHandler = UniqueNamer({});
+ for (final b in lookUpBindings) {
// Print warning if name was conflicting and has been changed.
- if (declConflictHandler.isUsed(b.name)) {
+ if (lookUpDeclConflictHandler.isUsed(b.name)) {
final oldName = b.name;
- b.name = declConflictHandler.makeUnique(b.name);
+ b.name = lookUpDeclConflictHandler.makeUnique(b.name);
_logger.warning(
"Resolved name conflict: Declaration '$oldName' and has been renamed to '${b.name}'.");
} else {
- declConflictHandler.markUsed(b.name);
+ lookUpDeclConflictHandler.markUsed(b.name);
}
}
- final declarationNames = bindings.map((e) => e.name).toSet();
+ /// Handle any declaration-declaration name conflict in [noLookUpBindings].
+ final noLookUpDeclConflictHandler = UniqueNamer({});
+ for (final b in noLookUpBindings) {
+ // Print warning if name was conflicting and has been changed.
+ if (noLookUpDeclConflictHandler.isUsed(b.name)) {
+ final oldName = b.name;
+ b.name = noLookUpDeclConflictHandler.makeUnique(b.name);
+
+ _logger.warning(
+ "Resolved name conflict: Declaration '$oldName' and has been renamed to '${b.name}'.");
+ } else {
+ noLookUpDeclConflictHandler.markUsed(b.name);
+ }
+ }
+
_writer = Writer(
- usedUpNames: declarationNames,
- initFunctionIdentifier: initFunctionIdentifier,
+ lookUpBindings: lookUpBindings,
+ noLookUpBindings: noLookUpBindings,
+ className: name,
+ classDocComment: description,
header: header,
);
}
@@ -64,13 +85,6 @@
}
}
- /// Generates bindings and stores it in given [Writer].
- void _generate(Writer w) {
- for (final b in bindings) {
- w.addBindingString(b.toBindingString(w));
- }
- }
-
/// Formats a file using `dartfmt`.
void _dartFmt(String path) {
final result = Process.runSync('dartfmt', ['-w', path],
@@ -83,7 +97,6 @@
/// Generates the bindings.
String generate() {
final w = writer;
- _generate(w);
return w.generate();
}
diff --git a/lib/src/code_generator/struc.dart b/lib/src/code_generator/struc.dart
index 949c239..7c41a47 100644
--- a/lib/src/code_generator/struc.dart
+++ b/lib/src/code_generator/struc.dart
@@ -2,6 +2,7 @@
// 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.
+import 'package:ffigen/src/code_generator/typedef.dart';
import 'package:meta/meta.dart';
import 'binding.dart';
@@ -34,7 +35,7 @@
///
/// }
/// ```
-class Struc extends Binding {
+class Struc extends NoLookUpBinding {
List<Member> members;
Struc({
@@ -54,29 +55,36 @@
return array;
}
+ List<Typedef> _typedefDependencies;
+ @override
+ List<Typedef> getTypedefDependencies(Writer w) {
+ if (_typedefDependencies == null) {
+ _typedefDependencies = <Typedef>[];
+
+ // Write typedef's required by members and resolve name conflicts.
+ for (final m in members) {
+ final base = m.type.getBaseType();
+ if (base.broadType == BroadType.NativeFunction) {
+ base.nativeFunc.name =
+ w.topLevelUniqueNamer.makeUnique(base.nativeFunc.name);
+ _typedefDependencies.add(base.nativeFunc);
+ }
+ }
+ }
+ return _typedefDependencies;
+ }
+
@override
BindingString toBindingString(Writer w) {
members = members ?? [];
final s = StringBuffer();
final enclosingClassName = name;
if (dartDoc != null) {
- s.write('/// ');
- s.writeAll(dartDoc.split('\n'), '\n/// ');
- s.write('\n');
+ s.write(makeDartDoc(dartDoc));
}
final helpers = <ArrayHelper>[];
- // Write typedef's required by members and resolve name conflicts.
- for (final m in members) {
- final base = m.type.getBaseType();
- if (base.broadType == BroadType.NativeFunction) {
- base.nativeFunc.name =
- w.uniqueNamer.makeUnique(base.nativeFunc.name);
- s.write(base.nativeFunc.toTypedefString(w));
- }
- }
-
final expandedArrayItemPrefix = getUniqueExpandedArrayItemPrefix();
/// Adding [enclosingClassName] because dart doesn't allow class member
diff --git a/lib/src/code_generator/type.dart b/lib/src/code_generator/type.dart
index a07b776..ad69ea4 100644
--- a/lib/src/code_generator/type.dart
+++ b/lib/src/code_generator/type.dart
@@ -5,7 +5,7 @@
import 'package:meta/meta.dart';
import 'struc.dart';
-import 'typedefc.dart';
+import 'typedef.dart';
import 'writer.dart';
class _SubType {
@@ -67,8 +67,8 @@
/// Reference to the [Struc] binding this type refers to.
Struc struc;
- /// Reference to the [TypedefC] this type refers to.
- TypedefC nativeFunc;
+ /// Reference to the [Typedef] this type refers to.
+ Typedef nativeFunc;
/// For providing [SupportedNativeType] only.
final SupportedNativeType nativeType;
@@ -101,7 +101,7 @@
factory Type.struct(Struc struc) {
return Type._(broadType: BroadType.Struct, struc: struc);
}
- factory Type.nativeFunc(TypedefC nativeFunc) {
+ factory Type.nativeFunc(Typedef nativeFunc) {
return Type._(broadType: BroadType.NativeFunction, nativeFunc: nativeFunc);
}
factory Type.nativeType(SupportedNativeType nativeType) {
diff --git a/lib/src/code_generator/typedef.dart b/lib/src/code_generator/typedef.dart
new file mode 100644
index 0000000..17b6dee
--- /dev/null
+++ b/lib/src/code_generator/typedef.dart
@@ -0,0 +1,67 @@
+// 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.
+
+import 'package:ffigen/src/code_generator.dart';
+import 'package:meta/meta.dart';
+
+import 'func.dart' show Parameter;
+import 'type.dart';
+import 'utils.dart';
+import 'writer.dart';
+
+/// A simple typedef, Expands to -
+///
+/// ```dart
+/// typedef $name = $returnType Function(
+/// $parameter1...,
+/// $parameter2...,
+/// .
+/// .
+/// );
+/// ```
+/// Return/Parameter types can be of for C/Dart signarture depending on [typedefType].
+///
+/// Note: re-set [name] after resolving name conflicts.
+class Typedef {
+ String name;
+ String dartDoc;
+ final Type returnType;
+ final TypedefType typedefType;
+ final List<Parameter> parameters;
+
+ Typedef({
+ @required this.name,
+ this.dartDoc,
+ @required this.returnType,
+ @required this.typedefType,
+ List<Parameter> parameters,
+ }) : parameters = parameters ?? [];
+
+ String toTypedefString(Writer w) {
+ final s = StringBuffer();
+ if (dartDoc != null) {
+ s.write(makeDartDoc(dartDoc));
+ }
+ final typedefName = name;
+
+ if (typedefType == TypedefType.C) {
+ s.write('typedef $typedefName = ${returnType.getCType(w)} Function(\n');
+ for (final p in parameters) {
+ s.write(' ${p.type.getCType(w)} ${p.name},\n');
+ }
+ s.write(');\n\n');
+ } else {
+ s.write(
+ 'typedef $typedefName = ${returnType.getDartType(w)} Function(\n');
+ for (final p in parameters) {
+ s.write(' ${p.type.getDartType(w)} ${p.name},\n');
+ }
+ s.write(');\n\n');
+ }
+
+ return s.toString();
+ }
+}
+
+enum TypedefType { C, Dart }
diff --git a/lib/src/code_generator/typedefc.dart b/lib/src/code_generator/typedefc.dart
deleted file mode 100644
index 28075aa..0000000
--- a/lib/src/code_generator/typedefc.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// 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.
-
-import 'package:meta/meta.dart';
-
-import 'func.dart' show Parameter;
-import 'type.dart';
-import 'writer.dart';
-
-/// A simple typedef function for C functions, Expands to -
-///
-/// ```dart
-/// typedef $name = $returnType Function(
-/// $parameter1...,
-/// $parameter2...,
-/// .
-/// .
-/// );
-/// ```
-/// Used for generating typedefs for `Pointer<NativeFunction>`.
-///
-/// Name conflict resolution must be done before using.
-class TypedefC {
- String name;
- String dartDoc;
- final Type returnType;
- final List<Parameter> parameters;
-
- TypedefC({
- @required this.name,
- this.dartDoc,
- @required this.returnType,
- List<Parameter> parameters,
- }) : parameters = parameters ?? [];
-
- String toTypedefString(Writer w) {
- final s = StringBuffer();
-
- if (dartDoc != null) {
- s.write('/// ');
- s.writeAll(dartDoc.split('\n'), '\n/// ');
- s.write('\n');
- }
-
- s.write('typedef $name = ${returnType.getCType(w)} Function(\n');
- for (final p in parameters) {
- s.write(' ${p.type.getCType(w)} ${p.name},\n');
- }
- s.write(');\n\n');
-
- return s.toString();
- }
-}
diff --git a/lib/src/code_generator/utils.dart b/lib/src/code_generator/utils.dart
index fbb1cce..800b7f8 100644
--- a/lib/src/code_generator/utils.dart
+++ b/lib/src/code_generator/utils.dart
@@ -35,3 +35,15 @@
return !_usedUpNames.contains(name);
}
}
+
+/// Converts [text] to a dart doc comment.
+///
+/// Comment is split on new lines only.
+String makeDartDoc(String text) {
+ final s = StringBuffer();
+ s.write('/// ');
+ s.writeAll(text.split('\n'), '\n/// ');
+ s.write('\n');
+
+ return s.toString();
+}
diff --git a/lib/src/code_generator/writer.dart b/lib/src/code_generator/writer.dart
index aa8129c..55a451a 100644
--- a/lib/src/code_generator/writer.dart
+++ b/lib/src/code_generator/writer.dart
@@ -5,48 +5,74 @@
import 'package:ffigen/src/code_generator/utils.dart';
import 'package:meta/meta.dart';
-import 'binding_string.dart';
+import 'binding.dart';
+import 'typedef.dart';
/// To store generated String bindings.
class Writer {
final String header;
- String _initFunctionIdentifier;
- final UniqueNamer uniqueNamer;
+ /// Holds bindings, which lookup symbols.
+ final List<Binding> lookUpBindings;
+
+ /// Holds bindings which don't lookup symbols.
+ final List<Binding> noLookUpBindings;
+
+ String _className;
+ final String classDocComment;
String _ffiLibraryPrefix;
- String get ffiLibraryPrefix =>
- _ffiLibraryPrefix ??= uniqueNamer.makeUnique('ffi');
+ String get ffiLibraryPrefix => _ffiLibraryPrefix;
String _dylibIdentifier;
- String get dylibIdentifier =>
- _dylibIdentifier ??= uniqueNamer.makeUnique('_dylib');
+ String get dylibIdentifier => _dylibIdentifier;
+
+ UniqueNamer _topLevelUniqueNamer, _wrapperLevelUniqueNamer;
+ UniqueNamer get topLevelUniqueNamer => _topLevelUniqueNamer;
+ UniqueNamer get wrapperLevelUniqueNamer => _wrapperLevelUniqueNamer;
String _arrayHelperClassPrefix;
/// Guaranteed to be a unique prefix.
String get arrayHelperClassPrefix => _arrayHelperClassPrefix;
- final List<BindingString> _bindings = [];
-
- /// [usedUpNames] should contain names of all the declarations which are
+ /// [_usedUpNames] should contain names of all the declarations which are
/// already used. This is used to avoid name collisions.
Writer({
- @required Set<String> usedUpNames,
- String initFunctionIdentifier = 'init',
+ @required this.lookUpBindings,
+ @required this.noLookUpBindings,
+ @required String className,
+ this.classDocComment,
this.header,
- }) : uniqueNamer = UniqueNamer(usedUpNames),
- assert(initFunctionIdentifier != null) {
- _initFunctionIdentifier =
- uniqueNamer.makeUnique(initFunctionIdentifier);
+ }) : assert(className != null) {
+ final globalLevelNameSet = noLookUpBindings.map((e) => e.name).toSet();
+ final wrapperLevelNameSet = lookUpBindings.map((e) => e.name).toSet();
+ final allNameSet = <String>{}
+ ..addAll(globalLevelNameSet)
+ ..addAll(wrapperLevelNameSet);
+
+ _topLevelUniqueNamer = UniqueNamer(globalLevelNameSet);
+ _wrapperLevelUniqueNamer = UniqueNamer(wrapperLevelNameSet);
+ final allLevelsUniqueNamer = UniqueNamer(allNameSet);
+
+ /// Wrapper class name must be unique among all names.
+ _className = allLevelsUniqueNamer.makeUnique(className);
+ wrapperLevelUniqueNamer.markUsed(_className);
+ topLevelUniqueNamer.markUsed(_className);
+
+ /// [_ffiLibraryPrefix] should be unique in top level.
+ _ffiLibraryPrefix = topLevelUniqueNamer.makeUnique('ffi');
+
+ /// [_dylibIdentifier] should be unique in top level.
+ _dylibIdentifier = wrapperLevelUniqueNamer.makeUnique('_dylib');
/// Finding a unique prefix for Array Helper Classes and store into
/// [_arrayHelperClassPrefix].
final base = 'ArrayHelper';
_arrayHelperClassPrefix = base;
int suffixInt = 0;
- for (int i = 0; i < usedUpNames.length; i++) {
- if (usedUpNames.elementAt(i).startsWith(_arrayHelperClassPrefix)) {
+ for (int i = 0; i < allNameSet.length; i++) {
+ if (allNameSet.elementAt(i).startsWith(_arrayHelperClassPrefix)) {
// Not a unique prefix, start over with a new suffix.
i = -1;
suffixInt++;
@@ -54,6 +80,8 @@
}
}
}
+
+ /// Writes all bindings to a String.
String generate() {
final s = StringBuffer();
@@ -63,35 +91,57 @@
s.write('\n');
} else {
// Write default header, in case none was provided.
- s.write('''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
-/// Generated by `package:ffigen`.
-''');
+ s.write(makeDartDoc(
+ 'AUTO GENERATED FILE, DO NOT EDIT.\n\nGenerated by `package:ffigen`.'));
}
// Write neccesary imports.
s.write("import 'dart:ffi' as $ffiLibraryPrefix;\n");
s.write('\n');
- // Write dylib.
- s.write('/// Holds the Dynamic library.\n');
- s.write('$ffiLibraryPrefix.DynamicLibrary ${dylibIdentifier};\n');
- s.write('\n');
- s.write('/// Initialises the Dynamic library.\n');
- s.write(
- 'void $_initFunctionIdentifier($ffiLibraryPrefix.DynamicLibrary dynamicLibrary){\n');
- s.write(' ${dylibIdentifier} = dynamicLibrary;\n');
- s.write('}\n');
+ final dependencies = <Typedef>[];
- // Write bindings.
- for (final bs in _bindings) {
- s.write(bs.string);
+ /// Get typedef dependencies, these will be written at the end.
+ for (final b in lookUpBindings) {
+ dependencies.addAll(b.getTypedefDependencies(this));
+ }
+ for (final b in noLookUpBindings) {
+ dependencies.addAll(b.getTypedefDependencies(this));
+ }
+
+ /// Write [lookUpBindings].
+ if (lookUpBindings.isNotEmpty) {
+ // Write doc comment for wrapper class.
+ if (classDocComment != null) {
+ s.write(makeDartDoc(classDocComment));
+ }
+ // Write wrapper classs.
+ s.write('class $_className{\n');
+ // Write dylib.
+ s.write('/// Holds the Dynamic library.\n');
+ s.write('final $ffiLibraryPrefix.DynamicLibrary ${dylibIdentifier};\n');
+ s.write('\n');
+ //Write doc comment for wrapper class constructor.
+ s.write(makeDartDoc('The symbols are looked up in [dynamicLibrary].'));
+ // Write wrapper class constructor.
+ s.write(
+ '${_className}($ffiLibraryPrefix.DynamicLibrary dynamicLibrary): $dylibIdentifier = dynamicLibrary;\n\n');
+ for (final b in lookUpBindings) {
+ s.write(b.toBindingString(this).string);
+ }
+ s.write('}\n\n');
+ }
+
+ /// Write [noLookUpBindings].
+ for (final b in noLookUpBindings) {
+ s.write(b.toBindingString(this).string);
+ }
+
+ // Write typedef dependencies.
+ for (final d in dependencies) {
+ s.write(d.toTypedefString(this));
}
return s.toString();
}
-
- void addBindingString(BindingString b) {
- _bindings.add(b);
- }
}
diff --git a/lib/src/config_provider/config.dart b/lib/src/config_provider/config.dart
index 7abfb66..3e6e336 100644
--- a/lib/src/config_provider/config.dart
+++ b/lib/src/config_provider/config.dart
@@ -64,11 +64,15 @@
/// If tool should generate array workarounds.
///
- /// If false(default), structs with inline array members will have all its members removed.
+ /// If false(default), structs with inline array members will have all its
+ /// members removed.
bool arrayWorkaround;
- /// Name of the init function used to initialise the dynamic library.
- String initFunctionName;
+ /// Name of the wrapper class.
+ String wrapperName;
+
+ /// Doc comment for the wrapper class.
+ String wrapperDocComment;
/// Header of the generated bindings.
String preamble;
@@ -99,11 +103,13 @@
var _result = true;
for (final key in specs.keys) {
final spec = specs[key];
- if (spec.isRequired && !map.containsKey(key)) {
+ if (map.containsKey(key)) {
+ _result = _result && spec.validator(key, map[key]);
+ } else if (spec.requirement == Requirement.yes) {
_logger.severe("Key '${key}' is required.");
_result = false;
- } else if (map.containsKey(key)) {
- _result = _result && spec.validator(key, map[key]);
+ } else if (spec.requirement == Requirement.prefer) {
+ _logger.warning("Prefer adding Key '$key' to your config.");
}
}
// Warn about unknown keys.
@@ -137,7 +143,7 @@
return <String, Specification>{
strings.output: Specification<String>(
description: 'Output file name',
- isRequired: true,
+ requirement: Requirement.yes,
validator: outputValidator,
extractor: outputExtractor,
extractedResult: (dynamic result) => output = result as String,
@@ -145,7 +151,7 @@
strings.libclang_dylib_folder: Specification<String>(
description:
'Path to folder containing libclang dynamic library, used to parse C headers',
- isRequired: false,
+ requirement: Requirement.no,
defaultValue: () => getDylibPath(Platform.script
.resolve(path.join('..', 'tool', 'wrapped_libclang'))
.toFilePath()),
@@ -156,7 +162,7 @@
),
strings.headers: Specification<List<String>>(
description: 'List of C headers to generate bindings of',
- isRequired: true,
+ requirement: Requirement.yes,
validator: headersValidator,
extractor: headersExtractor,
extractedResult: (dynamic result) => headers = result as List<String>,
@@ -172,7 +178,7 @@
),
strings.compilerOpts: Specification<List<String>>(
description: 'Raw compiler options to pass to clang compiler',
- isRequired: false,
+ requirement: Requirement.no,
validator: compilerOptsValidator,
extractor: compilerOptsExtractor,
extractedResult: (dynamic result) =>
@@ -180,7 +186,7 @@
),
strings.functions: Specification<Declaration>(
description: 'Filter for functions',
- isRequired: false,
+ requirement: Requirement.no,
validator: declarationConfigValidator,
extractor: declarationConfigExtractor,
defaultValue: () => Declaration(declarationTypeName: 'Function'),
@@ -191,7 +197,7 @@
),
strings.structs: Specification<Declaration>(
description: 'Filter for Structs',
- isRequired: false,
+ requirement: Requirement.no,
validator: declarationConfigValidator,
extractor: declarationConfigExtractor,
defaultValue: () => Declaration(declarationTypeName: 'Struct'),
@@ -202,7 +208,7 @@
),
strings.enums: Specification<Declaration>(
description: 'Filter for enums',
- isRequired: false,
+ requirement: Requirement.no,
validator: declarationConfigValidator,
extractor: declarationConfigExtractor,
defaultValue: () => Declaration(declarationTypeName: 'Enum'),
@@ -227,7 +233,7 @@
),
strings.sort: Specification<bool>(
description: 'whether or not to sort the bindings alphabetically',
- isRequired: false,
+ requirement: Requirement.no,
validator: booleanValidator,
extractor: booleanExtractor,
defaultValue: () => false,
@@ -235,7 +241,7 @@
),
strings.useSupportedTypedefs: Specification<bool>(
description: 'whether or not to directly map supported typedef by name',
- isRequired: false,
+ requirement: Requirement.no,
validator: booleanValidator,
extractor: booleanExtractor,
defaultValue: () => true,
@@ -244,7 +250,7 @@
),
strings.comments: Specification<String>(
description: 'Type of comment to extract',
- isRequired: false,
+ requirement: Requirement.no,
validator: commentValidator,
extractor: commentExtractor,
defaultValue: () => strings.brief,
@@ -253,24 +259,32 @@
strings.arrayWorkaround: Specification<bool>(
description:
'whether or not to generate workarounds for inline arrays in structures',
- isRequired: false,
+ requirement: Requirement.no,
validator: booleanValidator,
extractor: booleanExtractor,
defaultValue: () => false,
extractedResult: (dynamic result) => arrayWorkaround = result as bool,
),
- strings.initFunctionName: Specification<String>(
- description: 'Name of the init function to use',
- isRequired: false,
+ strings.name: Specification<String>(
+ description: 'Name of the wrapper class',
+ requirement: Requirement.prefer,
+ validator: dartClassNameValidator,
+ extractor: stringExtractor,
+ defaultValue: () => 'NativeLibrary',
+ extractedResult: (dynamic result) => wrapperName = result as String,
+ ),
+ strings.description: Specification<String>(
+ description: 'Doc comment for the wrapper class',
+ requirement: Requirement.prefer,
validator: nonEmptyStringValidator,
extractor: stringExtractor,
- defaultValue: () => 'init',
+ defaultValue: () => null,
extractedResult: (dynamic result) =>
- initFunctionName = result as String,
+ wrapperDocComment = result as String,
),
strings.preamble: Specification<String>(
- description: 'Header String for the generated bindings',
- isRequired: false,
+ description: 'Raw header string for the generated file',
+ requirement: Requirement.no,
validator: nonEmptyStringValidator,
extractor: stringExtractor,
extractedResult: (dynamic result) => preamble = result as String,
@@ -288,7 +302,7 @@
final E Function(dynamic map) extractor;
final E Function() defaultValue;
- final bool isRequired;
+ final Requirement requirement;
final void Function(dynamic result) extractedResult;
Specification({
@@ -297,10 +311,12 @@
@required this.validator,
@required this.extractor,
this.defaultValue,
- this.isRequired = false,
+ this.requirement = Requirement.no,
});
}
+enum Requirement { yes, prefer, no }
+
class HeaderFilter {
Set<String> includedInclusionHeaders;
Set<String> excludedInclusionHeaders;
diff --git a/lib/src/config_provider/spec_utils.dart b/lib/src/config_provider/spec_utils.dart
index 560cc59..70cccdd 100644
--- a/lib/src/config_provider/spec_utils.dart
+++ b/lib/src/config_provider/spec_utils.dart
@@ -280,6 +280,17 @@
}
}
+bool dartClassNameValidator(String name, dynamic value) {
+ if (value is String &&
+ RegExp('[a-zA-Z]+[_a-zA-Z0-9]*').stringMatch(value) == value) {
+ return true;
+ } else {
+ _logger.severe(
+ "Expected value of key '$name' to be a valid public class name.");
+ return false;
+ }
+}
+
String commentExtractor(dynamic value) => value as String;
bool commentValidator(String name, dynamic value) {
diff --git a/lib/src/header_parser/clang_bindings/clang_bindings.dart b/lib/src/header_parser/clang_bindings/clang_bindings.dart
index e71a162..2e6469c 100644
--- a/lib/src/header_parser/clang_bindings/clang_bindings.dart
+++ b/lib/src/header_parser/clang_bindings/clang_bindings.dart
@@ -3,55 +3,613 @@
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
-/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+/// Holds bindings to LibClang.
+class Clang {
+ /// Holds the Dynamic library.
+ final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary __dylib) {
- _dylib = __dylib;
+ /// The symbols are looked up in [dynamicLIbrary].
+ Clang(ffi.DynamicLibrary dynamicLibrary) : _dylib = dynamicLibrary;
+
+ /// Provides a shared context for creating translation units.
+ ffi.Pointer<ffi.Void> clang_createIndex(
+ int excludeDeclarationsFromPCH,
+ int displayDiagnostics,
+ ) {
+ _clang_createIndex ??=
+ _dylib.lookupFunction<_c_clang_createIndex, _dart_clang_createIndex>(
+ 'clang_createIndex');
+ return _clang_createIndex(
+ excludeDeclarationsFromPCH,
+ displayDiagnostics,
+ );
+ }
+
+ _dart_clang_createIndex _clang_createIndex;
+
+ /// Destroy the given index.
+ void clang_disposeIndex(
+ ffi.Pointer<ffi.Void> index,
+ ) {
+ _clang_disposeIndex ??=
+ _dylib.lookupFunction<_c_clang_disposeIndex, _dart_clang_disposeIndex>(
+ 'clang_disposeIndex');
+ return _clang_disposeIndex(
+ index,
+ );
+ }
+
+ _dart_clang_disposeIndex _clang_disposeIndex;
+
+ /// Determine the number of diagnostics produced for the given translation
+ /// unit.
+ int clang_getNumDiagnostics(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+ ) {
+ _clang_getNumDiagnostics ??= _dylib.lookupFunction<
+ _c_clang_getNumDiagnostics,
+ _dart_clang_getNumDiagnostics>('clang_getNumDiagnostics');
+ return _clang_getNumDiagnostics(
+ Unit,
+ );
+ }
+
+ _dart_clang_getNumDiagnostics _clang_getNumDiagnostics;
+
+ /// Retrieve a diagnostic associated with the given translation unit.
+ ffi.Pointer<ffi.Void> clang_getDiagnostic(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+ int Index,
+ ) {
+ _clang_getDiagnostic ??= _dylib.lookupFunction<_c_clang_getDiagnostic,
+ _dart_clang_getDiagnostic>('clang_getDiagnostic');
+ return _clang_getDiagnostic(
+ Unit,
+ Index,
+ );
+ }
+
+ _dart_clang_getDiagnostic _clang_getDiagnostic;
+
+ /// Destroy a diagnostic.
+ void clang_disposeDiagnostic(
+ ffi.Pointer<ffi.Void> Diagnostic,
+ ) {
+ _clang_disposeDiagnostic ??= _dylib.lookupFunction<
+ _c_clang_disposeDiagnostic,
+ _dart_clang_disposeDiagnostic>('clang_disposeDiagnostic');
+ return _clang_disposeDiagnostic(
+ Diagnostic,
+ );
+ }
+
+ _dart_clang_disposeDiagnostic _clang_disposeDiagnostic;
+
+ /// Same as clang_parseTranslationUnit2, but returns the CXTranslationUnit
+ /// instead of an error code. In case of an error this routine returns a NULL
+ /// CXTranslationUnit, without further detailed error codes.
+ ffi.Pointer<CXTranslationUnitImpl> clang_parseTranslationUnit(
+ ffi.Pointer<ffi.Void> CIdx,
+ ffi.Pointer<ffi.Int8> source_filename,
+ ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
+ int num_command_line_args,
+ ffi.Pointer<CXUnsavedFile> unsaved_files,
+ int num_unsaved_files,
+ int options,
+ ) {
+ _clang_parseTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_parseTranslationUnit,
+ _dart_clang_parseTranslationUnit>('clang_parseTranslationUnit');
+ return _clang_parseTranslationUnit(
+ CIdx,
+ source_filename,
+ command_line_args,
+ num_command_line_args,
+ unsaved_files,
+ num_unsaved_files,
+ options,
+ );
+ }
+
+ _dart_clang_parseTranslationUnit _clang_parseTranslationUnit;
+
+ /// Destroy the specified CXTranslationUnit object.
+ void clang_disposeTranslationUnit(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+ ) {
+ _clang_disposeTranslationUnit ??= _dylib.lookupFunction<
+ _c_clang_disposeTranslationUnit,
+ _dart_clang_disposeTranslationUnit>('clang_disposeTranslationUnit');
+ return _clang_disposeTranslationUnit(
+ arg0,
+ );
+ }
+
+ _dart_clang_disposeTranslationUnit _clang_disposeTranslationUnit;
+
+ ffi.Pointer<ffi.Int8> clang_getCString_wrap(
+ ffi.Pointer<CXString> string,
+ ) {
+ _clang_getCString_wrap ??= _dylib.lookupFunction<_c_clang_getCString_wrap,
+ _dart_clang_getCString_wrap>('clang_getCString_wrap');
+ return _clang_getCString_wrap(
+ string,
+ );
+ }
+
+ _dart_clang_getCString_wrap _clang_getCString_wrap;
+
+ void clang_disposeString_wrap(
+ ffi.Pointer<CXString> string,
+ ) {
+ _clang_disposeString_wrap ??= _dylib.lookupFunction<
+ _c_clang_disposeString_wrap,
+ _dart_clang_disposeString_wrap>('clang_disposeString_wrap');
+ return _clang_disposeString_wrap(
+ string,
+ );
+ }
+
+ _dart_clang_disposeString_wrap _clang_disposeString_wrap;
+
+ int clang_getCursorKind_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorKind_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorKind_wrap,
+ _dart_clang_getCursorKind_wrap>('clang_getCursorKind_wrap');
+ return _clang_getCursorKind_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorKind_wrap _clang_getCursorKind_wrap;
+
+ ffi.Pointer<CXString> clang_getCursorKindSpelling_wrap(
+ int kind,
+ ) {
+ _clang_getCursorKindSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorKindSpelling_wrap,
+ _dart_clang_getCursorKindSpelling_wrap>(
+ 'clang_getCursorKindSpelling_wrap');
+ return _clang_getCursorKindSpelling_wrap(
+ kind,
+ );
+ }
+
+ _dart_clang_getCursorKindSpelling_wrap _clang_getCursorKindSpelling_wrap;
+
+ ffi.Pointer<CXType> clang_getCursorType_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorType_wrap,
+ _dart_clang_getCursorType_wrap>('clang_getCursorType_wrap');
+ return _clang_getCursorType_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorType_wrap _clang_getCursorType_wrap;
+
+ ffi.Pointer<CXString> clang_getTypeSpelling_wrap(
+ ffi.Pointer<CXType> type,
+ ) {
+ _clang_getTypeSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypeSpelling_wrap,
+ _dart_clang_getTypeSpelling_wrap>('clang_getTypeSpelling_wrap');
+ return _clang_getTypeSpelling_wrap(
+ type,
+ );
+ }
+
+ _dart_clang_getTypeSpelling_wrap _clang_getTypeSpelling_wrap;
+
+ ffi.Pointer<CXString> clang_getTypeKindSpelling_wrap(
+ int typeKind,
+ ) {
+ _clang_getTypeKindSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypeKindSpelling_wrap,
+ _dart_clang_getTypeKindSpelling_wrap>('clang_getTypeKindSpelling_wrap');
+ return _clang_getTypeKindSpelling_wrap(
+ typeKind,
+ );
+ }
+
+ _dart_clang_getTypeKindSpelling_wrap _clang_getTypeKindSpelling_wrap;
+
+ ffi.Pointer<CXType> clang_getResultType_wrap(
+ ffi.Pointer<CXType> functionType,
+ ) {
+ _clang_getResultType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getResultType_wrap,
+ _dart_clang_getResultType_wrap>('clang_getResultType_wrap');
+ return _clang_getResultType_wrap(
+ functionType,
+ );
+ }
+
+ _dart_clang_getResultType_wrap _clang_getResultType_wrap;
+
+ ffi.Pointer<CXType> clang_getPointeeType_wrap(
+ ffi.Pointer<CXType> pointerType,
+ ) {
+ _clang_getPointeeType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getPointeeType_wrap,
+ _dart_clang_getPointeeType_wrap>('clang_getPointeeType_wrap');
+ return _clang_getPointeeType_wrap(
+ pointerType,
+ );
+ }
+
+ _dart_clang_getPointeeType_wrap _clang_getPointeeType_wrap;
+
+ ffi.Pointer<CXType> clang_getCanonicalType_wrap(
+ ffi.Pointer<CXType> typerefType,
+ ) {
+ _clang_getCanonicalType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCanonicalType_wrap,
+ _dart_clang_getCanonicalType_wrap>('clang_getCanonicalType_wrap');
+ return _clang_getCanonicalType_wrap(
+ typerefType,
+ );
+ }
+
+ _dart_clang_getCanonicalType_wrap _clang_getCanonicalType_wrap;
+
+ ffi.Pointer<CXType> clang_Type_getNamedType_wrap(
+ ffi.Pointer<CXType> elaboratedType,
+ ) {
+ _clang_Type_getNamedType_wrap ??= _dylib.lookupFunction<
+ _c_clang_Type_getNamedType_wrap,
+ _dart_clang_Type_getNamedType_wrap>('clang_Type_getNamedType_wrap');
+ return _clang_Type_getNamedType_wrap(
+ elaboratedType,
+ );
+ }
+
+ _dart_clang_Type_getNamedType_wrap _clang_Type_getNamedType_wrap;
+
+ ffi.Pointer<CXCursor> clang_getTypeDeclaration_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getTypeDeclaration_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypeDeclaration_wrap,
+ _dart_clang_getTypeDeclaration_wrap>('clang_getTypeDeclaration_wrap');
+ return _clang_getTypeDeclaration_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getTypeDeclaration_wrap _clang_getTypeDeclaration_wrap;
+
+ ffi.Pointer<CXType> clang_getTypedefDeclUnderlyingType_wrap(
+ ffi.Pointer<CXCursor> cxcursor,
+ ) {
+ _clang_getTypedefDeclUnderlyingType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTypedefDeclUnderlyingType_wrap,
+ _dart_clang_getTypedefDeclUnderlyingType_wrap>(
+ 'clang_getTypedefDeclUnderlyingType_wrap');
+ return _clang_getTypedefDeclUnderlyingType_wrap(
+ cxcursor,
+ );
+ }
+
+ _dart_clang_getTypedefDeclUnderlyingType_wrap
+ _clang_getTypedefDeclUnderlyingType_wrap;
+
+ /// The name of parameter, struct, typedef.
+ ffi.Pointer<CXString> clang_getCursorSpelling_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorSpelling_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorSpelling_wrap,
+ _dart_clang_getCursorSpelling_wrap>('clang_getCursorSpelling_wrap');
+ return _clang_getCursorSpelling_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorSpelling_wrap _clang_getCursorSpelling_wrap;
+
+ ffi.Pointer<CXCursor> clang_getTranslationUnitCursor_wrap(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+ ) {
+ _clang_getTranslationUnitCursor_wrap ??= _dylib.lookupFunction<
+ _c_clang_getTranslationUnitCursor_wrap,
+ _dart_clang_getTranslationUnitCursor_wrap>(
+ 'clang_getTranslationUnitCursor_wrap');
+ return _clang_getTranslationUnitCursor_wrap(
+ tu,
+ );
+ }
+
+ _dart_clang_getTranslationUnitCursor_wrap
+ _clang_getTranslationUnitCursor_wrap;
+
+ ffi.Pointer<CXString> clang_formatDiagnostic_wrap(
+ ffi.Pointer<ffi.Void> diag,
+ int opts,
+ ) {
+ _clang_formatDiagnostic_wrap ??= _dylib.lookupFunction<
+ _c_clang_formatDiagnostic_wrap,
+ _dart_clang_formatDiagnostic_wrap>('clang_formatDiagnostic_wrap');
+ return _clang_formatDiagnostic_wrap(
+ diag,
+ opts,
+ );
+ }
+
+ _dart_clang_formatDiagnostic_wrap _clang_formatDiagnostic_wrap;
+
+ /// Visitor is a function pointer with parameters having pointers to cxcursor
+ /// instead of cxcursor by default.
+ int clang_visitChildren_wrap(
+ ffi.Pointer<CXCursor> parent,
+ ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
+ ffi.Pointer<ffi.Void> clientData,
+ ) {
+ _clang_visitChildren_wrap ??= _dylib.lookupFunction<
+ _c_clang_visitChildren_wrap,
+ _dart_clang_visitChildren_wrap>('clang_visitChildren_wrap');
+ return _clang_visitChildren_wrap(
+ parent,
+ _modifiedVisitor,
+ clientData,
+ );
+ }
+
+ _dart_clang_visitChildren_wrap _clang_visitChildren_wrap;
+
+ int clang_Cursor_getNumArguments_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getNumArguments_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getNumArguments_wrap,
+ _dart_clang_Cursor_getNumArguments_wrap>(
+ 'clang_Cursor_getNumArguments_wrap');
+ return _clang_Cursor_getNumArguments_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getNumArguments_wrap _clang_Cursor_getNumArguments_wrap;
+
+ ffi.Pointer<CXCursor> clang_Cursor_getArgument_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ int i,
+ ) {
+ _clang_Cursor_getArgument_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getArgument_wrap,
+ _dart_clang_Cursor_getArgument_wrap>('clang_Cursor_getArgument_wrap');
+ return _clang_Cursor_getArgument_wrap(
+ cursor,
+ i,
+ );
+ }
+
+ _dart_clang_Cursor_getArgument_wrap _clang_Cursor_getArgument_wrap;
+
+ int clang_getNumArgTypes_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getNumArgTypes_wrap ??= _dylib.lookupFunction<
+ _c_clang_getNumArgTypes_wrap,
+ _dart_clang_getNumArgTypes_wrap>('clang_getNumArgTypes_wrap');
+ return _clang_getNumArgTypes_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getNumArgTypes_wrap _clang_getNumArgTypes_wrap;
+
+ ffi.Pointer<CXType> clang_getArgType_wrap(
+ ffi.Pointer<CXType> cxtype,
+ int i,
+ ) {
+ _clang_getArgType_wrap ??= _dylib.lookupFunction<_c_clang_getArgType_wrap,
+ _dart_clang_getArgType_wrap>('clang_getArgType_wrap');
+ return _clang_getArgType_wrap(
+ cxtype,
+ i,
+ );
+ }
+
+ _dart_clang_getArgType_wrap _clang_getArgType_wrap;
+
+ int clang_getEnumConstantDeclValue_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getEnumConstantDeclValue_wrap ??= _dylib.lookupFunction<
+ _c_clang_getEnumConstantDeclValue_wrap,
+ _dart_clang_getEnumConstantDeclValue_wrap>(
+ 'clang_getEnumConstantDeclValue_wrap');
+ return _clang_getEnumConstantDeclValue_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getEnumConstantDeclValue_wrap
+ _clang_getEnumConstantDeclValue_wrap;
+
+ /// Returns non-zero if the ranges are the same, zero if they differ.
+ int clang_equalRanges_wrap(
+ ffi.Pointer<CXSourceRange> c1,
+ ffi.Pointer<CXSourceRange> c2,
+ ) {
+ _clang_equalRanges_wrap ??= _dylib.lookupFunction<_c_clang_equalRanges_wrap,
+ _dart_clang_equalRanges_wrap>('clang_equalRanges_wrap');
+ return _clang_equalRanges_wrap(
+ c1,
+ c2,
+ );
+ }
+
+ _dart_clang_equalRanges_wrap _clang_equalRanges_wrap;
+
+ /// Returns the comment range.
+ ffi.Pointer<CXSourceRange> clang_Cursor_getCommentRange_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getCommentRange_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getCommentRange_wrap,
+ _dart_clang_Cursor_getCommentRange_wrap>(
+ 'clang_Cursor_getCommentRange_wrap');
+ return _clang_Cursor_getCommentRange_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getCommentRange_wrap _clang_Cursor_getCommentRange_wrap;
+
+ /// Returns the raw comment.
+ ffi.Pointer<CXString> clang_Cursor_getRawCommentText_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getRawCommentText_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getRawCommentText_wrap,
+ _dart_clang_Cursor_getRawCommentText_wrap>(
+ 'clang_Cursor_getRawCommentText_wrap');
+ return _clang_Cursor_getRawCommentText_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getRawCommentText_wrap
+ _clang_Cursor_getRawCommentText_wrap;
+
+ /// Returns the first paragraph of doxygen doc comment.
+ ffi.Pointer<CXString> clang_Cursor_getBriefCommentText_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_Cursor_getBriefCommentText_wrap ??= _dylib.lookupFunction<
+ _c_clang_Cursor_getBriefCommentText_wrap,
+ _dart_clang_Cursor_getBriefCommentText_wrap>(
+ 'clang_Cursor_getBriefCommentText_wrap');
+ return _clang_Cursor_getBriefCommentText_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_Cursor_getBriefCommentText_wrap
+ _clang_Cursor_getBriefCommentText_wrap;
+
+ ffi.Pointer<CXSourceLocation> clang_getCursorLocation_wrap(
+ ffi.Pointer<CXCursor> cursor,
+ ) {
+ _clang_getCursorLocation_wrap ??= _dylib.lookupFunction<
+ _c_clang_getCursorLocation_wrap,
+ _dart_clang_getCursorLocation_wrap>('clang_getCursorLocation_wrap');
+ return _clang_getCursorLocation_wrap(
+ cursor,
+ );
+ }
+
+ _dart_clang_getCursorLocation_wrap _clang_getCursorLocation_wrap;
+
+ void clang_getFileLocation_wrap(
+ ffi.Pointer<CXSourceLocation> location,
+ ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+ ffi.Pointer<ffi.Uint32> line,
+ ffi.Pointer<ffi.Uint32> column,
+ ffi.Pointer<ffi.Uint32> offset,
+ ) {
+ _clang_getFileLocation_wrap ??= _dylib.lookupFunction<
+ _c_clang_getFileLocation_wrap,
+ _dart_clang_getFileLocation_wrap>('clang_getFileLocation_wrap');
+ return _clang_getFileLocation_wrap(
+ location,
+ file,
+ line,
+ column,
+ offset,
+ );
+ }
+
+ _dart_clang_getFileLocation_wrap _clang_getFileLocation_wrap;
+
+ ffi.Pointer<CXString> clang_getFileName_wrap(
+ ffi.Pointer<ffi.Void> SFile,
+ ) {
+ _clang_getFileName_wrap ??= _dylib.lookupFunction<_c_clang_getFileName_wrap,
+ _dart_clang_getFileName_wrap>('clang_getFileName_wrap');
+ return _clang_getFileName_wrap(
+ SFile,
+ );
+ }
+
+ _dart_clang_getFileName_wrap _clang_getFileName_wrap;
+
+ int clang_getNumElements_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getNumElements_wrap ??= _dylib.lookupFunction<
+ _c_clang_getNumElements_wrap,
+ _dart_clang_getNumElements_wrap>('clang_getNumElements_wrap');
+ return _clang_getNumElements_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getNumElements_wrap _clang_getNumElements_wrap;
+
+ ffi.Pointer<CXType> clang_getArrayElementType_wrap(
+ ffi.Pointer<CXType> cxtype,
+ ) {
+ _clang_getArrayElementType_wrap ??= _dylib.lookupFunction<
+ _c_clang_getArrayElementType_wrap,
+ _dart_clang_getArrayElementType_wrap>('clang_getArrayElementType_wrap');
+ return _clang_getArrayElementType_wrap(
+ cxtype,
+ );
+ }
+
+ _dart_clang_getArrayElementType_wrap _clang_getArrayElementType_wrap;
}
-/// Describes how the traversal of the children of a particular cursor should
-/// proceed after visiting a particular child cursor.
-class CXChildVisitResult {
- /// Terminates the cursor traversal.
- static const int CXChildVisit_Break = 0;
+/// A character string.
+class CXString extends ffi.Struct {
+ ffi.Pointer<ffi.Void> data;
- /// Continues the cursor traversal with the next sibling of the cursor just
- /// visited, without visiting its children.
- static const int CXChildVisit_Continue = 1;
-
- /// Recursively traverse the children of this cursor, using the same visitor
- /// and client data.
- static const int CXChildVisit_Recurse = 2;
+ @ffi.Uint32()
+ int private_flags;
}
-/// A cursor representing some element in the abstract syntax tree for a
-/// translation unit.
-class CXCursor extends ffi.Struct {
- @ffi.Int32()
- int kind;
+class CXTranslationUnitImpl extends ffi.Struct {}
- @ffi.Int32()
- int xdata;
+/// Provides the contents of a file that has not yet been saved to disk.
+class CXUnsavedFile extends ffi.Struct {
+ /// The file whose contents have not yet been saved.
+ ffi.Pointer<ffi.Int8> Filename;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_1;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_2;
+ /// A buffer containing the unsaved contents of this file.
+ ffi.Pointer<ffi.Int8> Contents;
- /// Helper for array `data`.
- ArrayHelper_CXCursor_data_level0 get data =>
- ArrayHelper_CXCursor_data_level0(this, [3], 0, 0);
+ /// The length of the unsaved contents of this buffer.
+ @ffi.Uint64()
+ int Length;
}
-/// Helper for array `data` in struct `CXCursor`.
-class ArrayHelper_CXCursor_data_level0 {
- final CXCursor _struct;
+/// Identifies a specific source location within a translation unit.
+class CXSourceLocation extends ffi.Struct {
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_1;
+
+ /// Helper for array `ptr_data`.
+ ArrayHelper_CXSourceLocation_ptr_data_level0 get ptr_data =>
+ ArrayHelper_CXSourceLocation_ptr_data_level0(this, [2], 0, 0);
+ @ffi.Uint32()
+ int int_data;
+}
+
+/// Helper for array `ptr_data` in struct `CXSourceLocation`.
+class ArrayHelper_CXSourceLocation_ptr_data_level0 {
+ final CXSourceLocation _struct;
final List<int> dimensions;
final int level;
final int _absoluteIndex;
int get length => dimensions[level];
- ArrayHelper_CXCursor_data_level0(
+ ArrayHelper_CXSourceLocation_ptr_data_level0(
this._struct, this.dimensions, this.level, this._absoluteIndex);
void _checkBounds(int index) {
if (index >= length || index < 0) {
@@ -64,11 +622,9 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- return _struct._exp_workaround_data_item_0;
+ return _struct._unique_ptr_data_item_0;
case 1:
- return _struct._exp_workaround_data_item_1;
- case 2:
- return _struct._exp_workaround_data_item_2;
+ return _struct._unique_ptr_data_item_1;
default:
throw Exception('Invalid Array Helper generated.');
}
@@ -78,13 +634,10 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- _struct._exp_workaround_data_item_0 = value;
+ _struct._unique_ptr_data_item_0 = value;
break;
case 1:
- _struct._exp_workaround_data_item_1 = value;
- break;
- case 2:
- _struct._exp_workaround_data_item_2 = value;
+ _struct._unique_ptr_data_item_1 = value;
break;
default:
throw Exception('Invalid Array Helper generated.');
@@ -92,6 +645,151 @@
}
}
+/// Identifies a half-open character range in the source code.
+class CXSourceRange extends ffi.Struct {
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_ptr_data_item_1;
+
+ /// Helper for array `ptr_data`.
+ ArrayHelper_CXSourceRange_ptr_data_level0 get ptr_data =>
+ ArrayHelper_CXSourceRange_ptr_data_level0(this, [2], 0, 0);
+ @ffi.Uint32()
+ int begin_int_data;
+
+ @ffi.Uint32()
+ int end_int_data;
+}
+
+/// Helper for array `ptr_data` in struct `CXSourceRange`.
+class ArrayHelper_CXSourceRange_ptr_data_level0 {
+ final CXSourceRange _struct;
+ final List<int> dimensions;
+ final int level;
+ final int _absoluteIndex;
+ int get length => dimensions[level];
+ ArrayHelper_CXSourceRange_ptr_data_level0(
+ this._struct, this.dimensions, this.level, this._absoluteIndex);
+ void _checkBounds(int index) {
+ if (index >= length || index < 0) {
+ throw RangeError(
+ 'Dimension $level: index not in range 0..${length} exclusive.');
+ }
+ }
+
+ ffi.Pointer<ffi.Void> operator [](int index) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ return _struct._unique_ptr_data_item_0;
+ case 1:
+ return _struct._unique_ptr_data_item_1;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+
+ void operator []=(int index, ffi.Pointer<ffi.Void> value) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ _struct._unique_ptr_data_item_0 = value;
+ break;
+ case 1:
+ _struct._unique_ptr_data_item_1 = value;
+ break;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+}
+
+/// Options to control the display of diagnostics.
+class CXDiagnosticDisplayOptions {
+ /// Display the source-location information where the diagnostic was located.
+ static const int CXDiagnostic_DisplaySourceLocation = 1;
+
+ /// If displaying the source-location information of the diagnostic, also
+ /// include the column number.
+ static const int CXDiagnostic_DisplayColumn = 2;
+
+ /// If displaying the source-location information of the diagnostic, also
+ /// include information about source ranges in a machine-parsable format.
+ static const int CXDiagnostic_DisplaySourceRanges = 4;
+
+ /// Display the option name associated with this diagnostic, if any.
+ static const int CXDiagnostic_DisplayOption = 8;
+
+ /// Display the category number associated with this diagnostic, if any.
+ static const int CXDiagnostic_DisplayCategoryId = 16;
+
+ /// Display the category name associated with this diagnostic, if any.
+ static const int CXDiagnostic_DisplayCategoryName = 32;
+}
+
+/// Flags that control the creation of translation units.
+class CXTranslationUnit_Flags {
+ /// Used to indicate that no special translation-unit options are needed.
+ static const int CXTranslationUnit_None = 0;
+
+ /// Used to indicate that the parser should construct a "detailed"
+ /// preprocessing record, including all macro definitions and instantiations.
+ static const int CXTranslationUnit_DetailedPreprocessingRecord = 1;
+
+ /// Used to indicate that the translation unit is incomplete.
+ static const int CXTranslationUnit_Incomplete = 2;
+
+ /// Used to indicate that the translation unit should be built with an
+ /// implicit precompiled header for the preamble.
+ static const int CXTranslationUnit_PrecompiledPreamble = 4;
+
+ /// Used to indicate that the translation unit should cache some
+ /// code-completion results with each reparse of the source file.
+ static const int CXTranslationUnit_CacheCompletionResults = 8;
+
+ /// Used to indicate that the translation unit will be serialized with
+ /// clang_saveTranslationUnit.
+ static const int CXTranslationUnit_ForSerialization = 16;
+
+ /// DEPRECATED: Enabled chained precompiled preambles in C++.
+ static const int CXTranslationUnit_CXXChainedPCH = 32;
+
+ /// Used to indicate that function/method bodies should be skipped while
+ /// parsing.
+ static const int CXTranslationUnit_SkipFunctionBodies = 64;
+
+ /// Used to indicate that brief documentation comments should be included into
+ /// the set of code completions returned from this translation unit.
+ static const int CXTranslationUnit_IncludeBriefCommentsInCodeCompletion = 128;
+
+ /// Used to indicate that the precompiled preamble should be created on the
+ /// first parse. Otherwise it will be created on the first reparse. This
+ /// trades runtime on the first parse (serializing the preamble takes time)
+ /// for reduced runtime on the second parse (can now reuse the preamble).
+ static const int CXTranslationUnit_CreatePreambleOnFirstParse = 256;
+
+ /// Do not stop processing when fatal errors are encountered.
+ static const int CXTranslationUnit_KeepGoing = 512;
+
+ /// Sets the preprocessor in a mode for parsing a single file only.
+ static const int CXTranslationUnit_SingleFileParse = 1024;
+
+ /// Used in combination with CXTranslationUnit_SkipFunctionBodies to constrain
+ /// the skipping of function bodies to the preamble.
+ static const int CXTranslationUnit_LimitSkipFunctionBodiesToPreamble = 2048;
+
+ /// Used to indicate that attributed types should be included in CXType.
+ static const int CXTranslationUnit_IncludeAttributedTypes = 4096;
+
+ /// Used to indicate that implicit attributes should be visited.
+ static const int CXTranslationUnit_VisitImplicitAttributes = 8192;
+
+ /// Used to indicate that non-errors from included files should be ignored.
+ static const int CXTranslationUnit_IgnoreNonErrorsFromIncludedFiles = 16384;
+
+ /// Tells the preprocessor not to skip excluded conditional blocks.
+ static const int CXTranslationUnit_RetainExcludedConditionalBlocks = 32768;
+}
+
/// Describes the kind of entity that a cursor refers to.
class CXCursorKind {
/// A declaration whose specific kind is not exposed via this interface.
@@ -744,237 +1442,32 @@
static const int CXCursor_OverloadCandidate = 700;
}
-/// Options to control the display of diagnostics.
-class CXDiagnosticDisplayOptions {
- /// Display the source-location information where the diagnostic was located.
- static const int CXDiagnostic_DisplaySourceLocation = 1;
-
- /// If displaying the source-location information of the diagnostic, also
- /// include the column number.
- static const int CXDiagnostic_DisplayColumn = 2;
-
- /// If displaying the source-location information of the diagnostic, also
- /// include information about source ranges in a machine-parsable format.
- static const int CXDiagnostic_DisplaySourceRanges = 4;
-
- /// Display the option name associated with this diagnostic, if any.
- static const int CXDiagnostic_DisplayOption = 8;
-
- /// Display the category number associated with this diagnostic, if any.
- static const int CXDiagnostic_DisplayCategoryId = 16;
-
- /// Display the category name associated with this diagnostic, if any.
- static const int CXDiagnostic_DisplayCategoryName = 32;
-}
-
-/// Identifies a specific source location within a translation unit.
-class CXSourceLocation extends ffi.Struct {
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_1;
-
- /// Helper for array `ptr_data`.
- ArrayHelper_CXSourceLocation_ptr_data_level0 get ptr_data =>
- ArrayHelper_CXSourceLocation_ptr_data_level0(this, [2], 0, 0);
- @ffi.Uint32()
- int int_data;
-}
-
-/// Helper for array `ptr_data` in struct `CXSourceLocation`.
-class ArrayHelper_CXSourceLocation_ptr_data_level0 {
- final CXSourceLocation _struct;
- final List<int> dimensions;
- final int level;
- final int _absoluteIndex;
- int get length => dimensions[level];
- ArrayHelper_CXSourceLocation_ptr_data_level0(
- this._struct, this.dimensions, this.level, this._absoluteIndex);
- void _checkBounds(int index) {
- if (index >= length || index < 0) {
- throw RangeError(
- 'Dimension $level: index not in range 0..${length} exclusive.');
- }
- }
-
- ffi.Pointer<ffi.Void> operator [](int index) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- return _struct._exp_workaround_ptr_data_item_0;
- case 1:
- return _struct._exp_workaround_ptr_data_item_1;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-
- void operator []=(int index, ffi.Pointer<ffi.Void> value) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- _struct._exp_workaround_ptr_data_item_0 = value;
- break;
- case 1:
- _struct._exp_workaround_ptr_data_item_1 = value;
- break;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-}
-
-/// Identifies a half-open character range in the source code.
-class CXSourceRange extends ffi.Struct {
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_ptr_data_item_1;
-
- /// Helper for array `ptr_data`.
- ArrayHelper_CXSourceRange_ptr_data_level0 get ptr_data =>
- ArrayHelper_CXSourceRange_ptr_data_level0(this, [2], 0, 0);
- @ffi.Uint32()
- int begin_int_data;
-
- @ffi.Uint32()
- int end_int_data;
-}
-
-/// Helper for array `ptr_data` in struct `CXSourceRange`.
-class ArrayHelper_CXSourceRange_ptr_data_level0 {
- final CXSourceRange _struct;
- final List<int> dimensions;
- final int level;
- final int _absoluteIndex;
- int get length => dimensions[level];
- ArrayHelper_CXSourceRange_ptr_data_level0(
- this._struct, this.dimensions, this.level, this._absoluteIndex);
- void _checkBounds(int index) {
- if (index >= length || index < 0) {
- throw RangeError(
- 'Dimension $level: index not in range 0..${length} exclusive.');
- }
- }
-
- ffi.Pointer<ffi.Void> operator [](int index) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- return _struct._exp_workaround_ptr_data_item_0;
- case 1:
- return _struct._exp_workaround_ptr_data_item_1;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-
- void operator []=(int index, ffi.Pointer<ffi.Void> value) {
- _checkBounds(index);
- switch (_absoluteIndex + index) {
- case 0:
- _struct._exp_workaround_ptr_data_item_0 = value;
- break;
- case 1:
- _struct._exp_workaround_ptr_data_item_1 = value;
- break;
- default:
- throw Exception('Invalid Array Helper generated.');
- }
- }
-}
-
-/// A character string.
-class CXString extends ffi.Struct {
- ffi.Pointer<ffi.Void> data;
-
- @ffi.Uint32()
- int private_flags;
-}
-
-class CXTranslationUnitImpl extends ffi.Struct {}
-
-/// Flags that control the creation of translation units.
-class CXTranslationUnit_Flags {
- /// Used to indicate that no special translation-unit options are needed.
- static const int CXTranslationUnit_None = 0;
-
- /// Used to indicate that the parser should construct a "detailed"
- /// preprocessing record, including all macro definitions and instantiations.
- static const int CXTranslationUnit_DetailedPreprocessingRecord = 1;
-
- /// Used to indicate that the translation unit is incomplete.
- static const int CXTranslationUnit_Incomplete = 2;
-
- /// Used to indicate that the translation unit should be built with an
- /// implicit precompiled header for the preamble.
- static const int CXTranslationUnit_PrecompiledPreamble = 4;
-
- /// Used to indicate that the translation unit should cache some
- /// code-completion results with each reparse of the source file.
- static const int CXTranslationUnit_CacheCompletionResults = 8;
-
- /// Used to indicate that the translation unit will be serialized with
- /// clang_saveTranslationUnit.
- static const int CXTranslationUnit_ForSerialization = 16;
-
- /// DEPRECATED: Enabled chained precompiled preambles in C++.
- static const int CXTranslationUnit_CXXChainedPCH = 32;
-
- /// Used to indicate that function/method bodies should be skipped while
- /// parsing.
- static const int CXTranslationUnit_SkipFunctionBodies = 64;
-
- /// Used to indicate that brief documentation comments should be included into
- /// the set of code completions returned from this translation unit.
- static const int CXTranslationUnit_IncludeBriefCommentsInCodeCompletion = 128;
-
- /// Used to indicate that the precompiled preamble should be created on the
- /// first parse. Otherwise it will be created on the first reparse. This
- /// trades runtime on the first parse (serializing the preamble takes time)
- /// for reduced runtime on the second parse (can now reuse the preamble).
- static const int CXTranslationUnit_CreatePreambleOnFirstParse = 256;
-
- /// Do not stop processing when fatal errors are encountered.
- static const int CXTranslationUnit_KeepGoing = 512;
-
- /// Sets the preprocessor in a mode for parsing a single file only.
- static const int CXTranslationUnit_SingleFileParse = 1024;
-
- /// Used in combination with CXTranslationUnit_SkipFunctionBodies to constrain
- /// the skipping of function bodies to the preamble.
- static const int CXTranslationUnit_LimitSkipFunctionBodiesToPreamble = 2048;
-
- /// Used to indicate that attributed types should be included in CXType.
- static const int CXTranslationUnit_IncludeAttributedTypes = 4096;
-
- /// Used to indicate that implicit attributes should be visited.
- static const int CXTranslationUnit_VisitImplicitAttributes = 8192;
-
- /// Used to indicate that non-errors from included files should be ignored.
- static const int CXTranslationUnit_IgnoreNonErrorsFromIncludedFiles = 16384;
-
- /// Tells the preprocessor not to skip excluded conditional blocks.
- static const int CXTranslationUnit_RetainExcludedConditionalBlocks = 32768;
-}
-
-/// The type of an element in the abstract syntax tree.
-class CXType extends ffi.Struct {
+/// A cursor representing some element in the abstract syntax tree for a
+/// translation unit.
+class CXCursor extends ffi.Struct {
@ffi.Int32()
int kind;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_0;
- ffi.Pointer<ffi.Void> _exp_workaround_data_item_1;
+ @ffi.Int32()
+ int xdata;
+
+ ffi.Pointer<ffi.Void> _unique_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_data_item_1;
+ ffi.Pointer<ffi.Void> _unique_data_item_2;
/// Helper for array `data`.
- ArrayHelper_CXType_data_level0 get data =>
- ArrayHelper_CXType_data_level0(this, [2], 0, 0);
+ ArrayHelper_CXCursor_data_level0 get data =>
+ ArrayHelper_CXCursor_data_level0(this, [3], 0, 0);
}
-/// Helper for array `data` in struct `CXType`.
-class ArrayHelper_CXType_data_level0 {
- final CXType _struct;
+/// Helper for array `data` in struct `CXCursor`.
+class ArrayHelper_CXCursor_data_level0 {
+ final CXCursor _struct;
final List<int> dimensions;
final int level;
final int _absoluteIndex;
int get length => dimensions[level];
- ArrayHelper_CXType_data_level0(
+ ArrayHelper_CXCursor_data_level0(
this._struct, this.dimensions, this.level, this._absoluteIndex);
void _checkBounds(int index) {
if (index >= length || index < 0) {
@@ -987,9 +1480,11 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- return _struct._exp_workaround_data_item_0;
+ return _struct._unique_data_item_0;
case 1:
- return _struct._exp_workaround_data_item_1;
+ return _struct._unique_data_item_1;
+ case 2:
+ return _struct._unique_data_item_2;
default:
throw Exception('Invalid Array Helper generated.');
}
@@ -999,10 +1494,13 @@
_checkBounds(index);
switch (_absoluteIndex + index) {
case 0:
- _struct._exp_workaround_data_item_0 = value;
+ _struct._unique_data_item_0 = value;
break;
case 1:
- _struct._exp_workaround_data_item_1 = value;
+ _struct._unique_data_item_1 = value;
+ break;
+ case 2:
+ _struct._unique_data_item_2 = value;
break;
default:
throw Exception('Invalid Array Helper generated.');
@@ -1137,174 +1635,77 @@
static const int CXType_ExtVector = 176;
}
-/// Provides the contents of a file that has not yet been saved to disk.
-class CXUnsavedFile extends ffi.Struct {
- /// The file whose contents have not yet been saved.
- ffi.Pointer<ffi.Int8> Filename;
+/// The type of an element in the abstract syntax tree.
+class CXType extends ffi.Struct {
+ @ffi.Int32()
+ int kind;
- /// A buffer containing the unsaved contents of this file.
- ffi.Pointer<ffi.Int8> Contents;
+ ffi.Pointer<ffi.Void> _unique_data_item_0;
+ ffi.Pointer<ffi.Void> _unique_data_item_1;
- /// The length of the unsaved contents of this buffer.
- @ffi.Uint64()
- int Length;
+ /// Helper for array `data`.
+ ArrayHelper_CXType_data_level0 get data =>
+ ArrayHelper_CXType_data_level0(this, [2], 0, 0);
}
-ffi.Pointer<CXCursor> clang_Cursor_getArgument_wrap(
- ffi.Pointer<CXCursor> cursor,
- int i,
-) {
- return _clang_Cursor_getArgument_wrap(
- cursor,
- i,
- );
+/// Helper for array `data` in struct `CXType`.
+class ArrayHelper_CXType_data_level0 {
+ final CXType _struct;
+ final List<int> dimensions;
+ final int level;
+ final int _absoluteIndex;
+ int get length => dimensions[level];
+ ArrayHelper_CXType_data_level0(
+ this._struct, this.dimensions, this.level, this._absoluteIndex);
+ void _checkBounds(int index) {
+ if (index >= length || index < 0) {
+ throw RangeError(
+ 'Dimension $level: index not in range 0..${length} exclusive.');
+ }
+ }
+
+ ffi.Pointer<ffi.Void> operator [](int index) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ return _struct._unique_data_item_0;
+ case 1:
+ return _struct._unique_data_item_1;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
+
+ void operator []=(int index, ffi.Pointer<ffi.Void> value) {
+ _checkBounds(index);
+ switch (_absoluteIndex + index) {
+ case 0:
+ _struct._unique_data_item_0 = value;
+ break;
+ case 1:
+ _struct._unique_data_item_1 = value;
+ break;
+ default:
+ throw Exception('Invalid Array Helper generated.');
+ }
+ }
}
-final _dart_clang_Cursor_getArgument_wrap _clang_Cursor_getArgument_wrap =
- _dylib.lookupFunction<_c_clang_Cursor_getArgument_wrap,
- _dart_clang_Cursor_getArgument_wrap>('clang_Cursor_getArgument_wrap');
+/// Describes how the traversal of the children of a particular cursor should
+/// proceed after visiting a particular child cursor.
+class CXChildVisitResult {
+ /// Terminates the cursor traversal.
+ static const int CXChildVisit_Break = 0;
-typedef _c_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXCursor> cursor,
- ffi.Uint32 i,
-);
+ /// Continues the cursor traversal with the next sibling of the cursor just
+ /// visited, without visiting its children.
+ static const int CXChildVisit_Continue = 1;
-typedef _dart_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXCursor> cursor,
- int i,
-);
-
-/// Returns the first paragraph of doxygen doc comment.
-ffi.Pointer<CXString> clang_Cursor_getBriefCommentText_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getBriefCommentText_wrap(
- cursor,
- );
+ /// Recursively traverse the children of this cursor, using the same visitor
+ /// and client data.
+ static const int CXChildVisit_Recurse = 2;
}
-final _dart_clang_Cursor_getBriefCommentText_wrap
- _clang_Cursor_getBriefCommentText_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getBriefCommentText_wrap,
- _dart_clang_Cursor_getBriefCommentText_wrap>(
- 'clang_Cursor_getBriefCommentText_wrap');
-
-typedef _c_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Returns the comment range.
-ffi.Pointer<CXSourceRange> clang_Cursor_getCommentRange_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getCommentRange_wrap(
- cursor,
- );
-}
-
-final _dart_clang_Cursor_getCommentRange_wrap
- _clang_Cursor_getCommentRange_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getCommentRange_wrap,
- _dart_clang_Cursor_getCommentRange_wrap>(
- 'clang_Cursor_getCommentRange_wrap');
-
-typedef _c_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-int clang_Cursor_getNumArguments_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getNumArguments_wrap(
- cursor,
- );
-}
-
-final _dart_clang_Cursor_getNumArguments_wrap
- _clang_Cursor_getNumArguments_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getNumArguments_wrap,
- _dart_clang_Cursor_getNumArguments_wrap>(
- 'clang_Cursor_getNumArguments_wrap');
-
-typedef _c_clang_Cursor_getNumArguments_wrap = ffi.Int32 Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getNumArguments_wrap = int Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Returns the raw comment.
-ffi.Pointer<CXString> clang_Cursor_getRawCommentText_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_Cursor_getRawCommentText_wrap(
- cursor,
- );
-}
-
-final _dart_clang_Cursor_getRawCommentText_wrap
- _clang_Cursor_getRawCommentText_wrap = _dylib.lookupFunction<
- _c_clang_Cursor_getRawCommentText_wrap,
- _dart_clang_Cursor_getRawCommentText_wrap>(
- 'clang_Cursor_getRawCommentText_wrap');
-
-typedef _c_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-ffi.Pointer<CXType> clang_Type_getNamedType_wrap(
- ffi.Pointer<CXType> elaboratedType,
-) {
- return _clang_Type_getNamedType_wrap(
- elaboratedType,
- );
-}
-
-final _dart_clang_Type_getNamedType_wrap _clang_Type_getNamedType_wrap =
- _dylib.lookupFunction<_c_clang_Type_getNamedType_wrap,
- _dart_clang_Type_getNamedType_wrap>('clang_Type_getNamedType_wrap');
-
-typedef _c_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> elaboratedType,
-);
-
-typedef _dart_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> elaboratedType,
-);
-
-/// Provides a shared context for creating translation units.
-ffi.Pointer<ffi.Void> clang_createIndex(
- int excludeDeclarationsFromPCH,
- int displayDiagnostics,
-) {
- return _clang_createIndex(
- excludeDeclarationsFromPCH,
- displayDiagnostics,
- );
-}
-
-final _dart_clang_createIndex _clang_createIndex =
- _dylib.lookupFunction<_c_clang_createIndex, _dart_clang_createIndex>(
- 'clang_createIndex');
-
typedef _c_clang_createIndex = ffi.Pointer<ffi.Void> Function(
ffi.Int32 excludeDeclarationsFromPCH,
ffi.Int32 displayDiagnostics,
@@ -1315,40 +1716,6 @@
int displayDiagnostics,
);
-/// Destroy a diagnostic.
-void clang_disposeDiagnostic(
- ffi.Pointer<ffi.Void> Diagnostic,
-) {
- return _clang_disposeDiagnostic(
- Diagnostic,
- );
-}
-
-final _dart_clang_disposeDiagnostic _clang_disposeDiagnostic = _dylib
- .lookupFunction<_c_clang_disposeDiagnostic, _dart_clang_disposeDiagnostic>(
- 'clang_disposeDiagnostic');
-
-typedef _c_clang_disposeDiagnostic = ffi.Void Function(
- ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-typedef _dart_clang_disposeDiagnostic = void Function(
- ffi.Pointer<ffi.Void> Diagnostic,
-);
-
-/// Destroy the given index.
-void clang_disposeIndex(
- ffi.Pointer<ffi.Void> index,
-) {
- return _clang_disposeIndex(
- index,
- );
-}
-
-final _dart_clang_disposeIndex _clang_disposeIndex =
- _dylib.lookupFunction<_c_clang_disposeIndex, _dart_clang_disposeIndex>(
- 'clang_disposeIndex');
-
typedef _c_clang_disposeIndex = ffi.Void Function(
ffi.Pointer<ffi.Void> index,
);
@@ -1357,298 +1724,13 @@
ffi.Pointer<ffi.Void> index,
);
-void clang_disposeString_wrap(
- ffi.Pointer<CXString> string,
-) {
- return _clang_disposeString_wrap(
- string,
- );
-}
-
-final _dart_clang_disposeString_wrap _clang_disposeString_wrap =
- _dylib.lookupFunction<_c_clang_disposeString_wrap,
- _dart_clang_disposeString_wrap>('clang_disposeString_wrap');
-
-typedef _c_clang_disposeString_wrap = ffi.Void Function(
- ffi.Pointer<CXString> string,
-);
-
-typedef _dart_clang_disposeString_wrap = void Function(
- ffi.Pointer<CXString> string,
-);
-
-/// Destroy the specified CXTranslationUnit object.
-void clang_disposeTranslationUnit(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-) {
- return _clang_disposeTranslationUnit(
- arg0,
- );
-}
-
-final _dart_clang_disposeTranslationUnit _clang_disposeTranslationUnit =
- _dylib.lookupFunction<_c_clang_disposeTranslationUnit,
- _dart_clang_disposeTranslationUnit>('clang_disposeTranslationUnit');
-
-typedef _c_clang_disposeTranslationUnit = ffi.Void Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-typedef _dart_clang_disposeTranslationUnit = void Function(
- ffi.Pointer<CXTranslationUnitImpl> arg0,
-);
-
-/// Returns non-zero if the ranges are the same, zero if they differ.
-int clang_equalRanges_wrap(
- ffi.Pointer<CXSourceRange> c1,
- ffi.Pointer<CXSourceRange> c2,
-) {
- return _clang_equalRanges_wrap(
- c1,
- c2,
- );
-}
-
-final _dart_clang_equalRanges_wrap _clang_equalRanges_wrap = _dylib
- .lookupFunction<_c_clang_equalRanges_wrap, _dart_clang_equalRanges_wrap>(
- 'clang_equalRanges_wrap');
-
-typedef _c_clang_equalRanges_wrap = ffi.Uint32 Function(
- ffi.Pointer<CXSourceRange> c1,
- ffi.Pointer<CXSourceRange> c2,
-);
-
-typedef _dart_clang_equalRanges_wrap = int Function(
- ffi.Pointer<CXSourceRange> c1,
- ffi.Pointer<CXSourceRange> c2,
-);
-
-ffi.Pointer<CXString> clang_formatDiagnostic_wrap(
- ffi.Pointer<ffi.Void> diag,
- int opts,
-) {
- return _clang_formatDiagnostic_wrap(
- diag,
- opts,
- );
-}
-
-final _dart_clang_formatDiagnostic_wrap _clang_formatDiagnostic_wrap =
- _dylib.lookupFunction<_c_clang_formatDiagnostic_wrap,
- _dart_clang_formatDiagnostic_wrap>('clang_formatDiagnostic_wrap');
-
-typedef _c_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> diag,
- ffi.Int32 opts,
-);
-
-typedef _dart_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> diag,
- int opts,
-);
-
-ffi.Pointer<CXType> clang_getArgType_wrap(
- ffi.Pointer<CXType> cxtype,
- int i,
-) {
- return _clang_getArgType_wrap(
- cxtype,
- i,
- );
-}
-
-final _dart_clang_getArgType_wrap _clang_getArgType_wrap = _dylib
- .lookupFunction<_c_clang_getArgType_wrap, _dart_clang_getArgType_wrap>(
- 'clang_getArgType_wrap');
-
-typedef _c_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
- ffi.Uint32 i,
-);
-
-typedef _dart_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
- int i,
-);
-
-ffi.Pointer<CXType> clang_getArrayElementType_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getArrayElementType_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getArrayElementType_wrap _clang_getArrayElementType_wrap =
- _dylib.lookupFunction<_c_clang_getArrayElementType_wrap,
- _dart_clang_getArrayElementType_wrap>('clang_getArrayElementType_wrap');
-
-typedef _c_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-ffi.Pointer<ffi.Int8> clang_getCString_wrap(
- ffi.Pointer<CXString> string,
-) {
- return _clang_getCString_wrap(
- string,
- );
-}
-
-final _dart_clang_getCString_wrap _clang_getCString_wrap = _dylib
- .lookupFunction<_c_clang_getCString_wrap, _dart_clang_getCString_wrap>(
- 'clang_getCString_wrap');
-
-typedef _c_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<CXString> string,
-);
-
-typedef _dart_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
- ffi.Pointer<CXString> string,
-);
-
-ffi.Pointer<CXType> clang_getCanonicalType_wrap(
- ffi.Pointer<CXType> typerefType,
-) {
- return _clang_getCanonicalType_wrap(
- typerefType,
- );
-}
-
-final _dart_clang_getCanonicalType_wrap _clang_getCanonicalType_wrap =
- _dylib.lookupFunction<_c_clang_getCanonicalType_wrap,
- _dart_clang_getCanonicalType_wrap>('clang_getCanonicalType_wrap');
-
-typedef _c_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> typerefType,
-);
-
-typedef _dart_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> typerefType,
-);
-
-ffi.Pointer<CXString> clang_getCursorKindSpelling_wrap(
- int kind,
-) {
- return _clang_getCursorKindSpelling_wrap(
- kind,
- );
-}
-
-final _dart_clang_getCursorKindSpelling_wrap _clang_getCursorKindSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getCursorKindSpelling_wrap,
- _dart_clang_getCursorKindSpelling_wrap>(
- 'clang_getCursorKindSpelling_wrap');
-
-typedef _c_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Int32 kind,
-);
-
-typedef _dart_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
- int kind,
-);
-
-int clang_getCursorKind_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorKind_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorKind_wrap _clang_getCursorKind_wrap =
- _dylib.lookupFunction<_c_clang_getCursorKind_wrap,
- _dart_clang_getCursorKind_wrap>('clang_getCursorKind_wrap');
-
-typedef _c_clang_getCursorKind_wrap = ffi.Int32 Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorKind_wrap = int Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-ffi.Pointer<CXSourceLocation> clang_getCursorLocation_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorLocation_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorLocation_wrap _clang_getCursorLocation_wrap =
- _dylib.lookupFunction<_c_clang_getCursorLocation_wrap,
- _dart_clang_getCursorLocation_wrap>('clang_getCursorLocation_wrap');
-
-typedef _c_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
- Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// The name of parameter, struct, typedef.
-ffi.Pointer<CXString> clang_getCursorSpelling_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorSpelling_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorSpelling_wrap _clang_getCursorSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getCursorSpelling_wrap,
- _dart_clang_getCursorSpelling_wrap>('clang_getCursorSpelling_wrap');
-
-typedef _c_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-ffi.Pointer<CXType> clang_getCursorType_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getCursorType_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getCursorType_wrap _clang_getCursorType_wrap =
- _dylib.lookupFunction<_c_clang_getCursorType_wrap,
- _dart_clang_getCursorType_wrap>('clang_getCursorType_wrap');
-
-typedef _c_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-typedef _dart_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXCursor> cursor,
-);
-
-/// Retrieve a diagnostic associated with the given translation unit.
-ffi.Pointer<ffi.Void> clang_getDiagnostic(
+typedef _c_clang_getNumDiagnostics = ffi.Uint32 Function(
ffi.Pointer<CXTranslationUnitImpl> Unit,
- int Index,
-) {
- return _clang_getDiagnostic(
- Unit,
- Index,
- );
-}
+);
-final _dart_clang_getDiagnostic _clang_getDiagnostic =
- _dylib.lookupFunction<_c_clang_getDiagnostic, _dart_clang_getDiagnostic>(
- 'clang_getDiagnostic');
+typedef _dart_clang_getNumDiagnostics = int Function(
+ ffi.Pointer<CXTranslationUnitImpl> Unit,
+);
typedef _c_clang_getDiagnostic = ffi.Pointer<ffi.Void> Function(
ffi.Pointer<CXTranslationUnitImpl> Unit,
@@ -1660,319 +1742,14 @@
int Index,
);
-int clang_getEnumConstantDeclValue_wrap(
- ffi.Pointer<CXCursor> cursor,
-) {
- return _clang_getEnumConstantDeclValue_wrap(
- cursor,
- );
-}
-
-final _dart_clang_getEnumConstantDeclValue_wrap
- _clang_getEnumConstantDeclValue_wrap = _dylib.lookupFunction<
- _c_clang_getEnumConstantDeclValue_wrap,
- _dart_clang_getEnumConstantDeclValue_wrap>(
- 'clang_getEnumConstantDeclValue_wrap');
-
-typedef _c_clang_getEnumConstantDeclValue_wrap = ffi.Int64 Function(
- ffi.Pointer<CXCursor> cursor,
+typedef _c_clang_disposeDiagnostic = ffi.Void Function(
+ ffi.Pointer<ffi.Void> Diagnostic,
);
-typedef _dart_clang_getEnumConstantDeclValue_wrap = int Function(
- ffi.Pointer<CXCursor> cursor,
+typedef _dart_clang_disposeDiagnostic = void Function(
+ ffi.Pointer<ffi.Void> Diagnostic,
);
-void clang_getFileLocation_wrap(
- ffi.Pointer<CXSourceLocation> location,
- ffi.Pointer<ffi.Pointer<ffi.Void>> file,
- ffi.Pointer<ffi.Uint32> line,
- ffi.Pointer<ffi.Uint32> column,
- ffi.Pointer<ffi.Uint32> offset,
-) {
- return _clang_getFileLocation_wrap(
- location,
- file,
- line,
- column,
- offset,
- );
-}
-
-final _dart_clang_getFileLocation_wrap _clang_getFileLocation_wrap =
- _dylib.lookupFunction<_c_clang_getFileLocation_wrap,
- _dart_clang_getFileLocation_wrap>('clang_getFileLocation_wrap');
-
-typedef _c_clang_getFileLocation_wrap = ffi.Void Function(
- ffi.Pointer<CXSourceLocation> location,
- ffi.Pointer<ffi.Pointer<ffi.Void>> file,
- ffi.Pointer<ffi.Uint32> line,
- ffi.Pointer<ffi.Uint32> column,
- ffi.Pointer<ffi.Uint32> offset,
-);
-
-typedef _dart_clang_getFileLocation_wrap = void Function(
- ffi.Pointer<CXSourceLocation> location,
- ffi.Pointer<ffi.Pointer<ffi.Void>> file,
- ffi.Pointer<ffi.Uint32> line,
- ffi.Pointer<ffi.Uint32> column,
- ffi.Pointer<ffi.Uint32> offset,
-);
-
-ffi.Pointer<CXString> clang_getFileName_wrap(
- ffi.Pointer<ffi.Void> SFile,
-) {
- return _clang_getFileName_wrap(
- SFile,
- );
-}
-
-final _dart_clang_getFileName_wrap _clang_getFileName_wrap = _dylib
- .lookupFunction<_c_clang_getFileName_wrap, _dart_clang_getFileName_wrap>(
- 'clang_getFileName_wrap');
-
-typedef _c_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> SFile,
-);
-
-typedef _dart_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<ffi.Void> SFile,
-);
-
-int clang_getNumArgTypes_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getNumArgTypes_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getNumArgTypes_wrap _clang_getNumArgTypes_wrap =
- _dylib.lookupFunction<_c_clang_getNumArgTypes_wrap,
- _dart_clang_getNumArgTypes_wrap>('clang_getNumArgTypes_wrap');
-
-typedef _c_clang_getNumArgTypes_wrap = ffi.Int32 Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getNumArgTypes_wrap = int Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-/// Determine the number of diagnostics produced for the given translation unit.
-int clang_getNumDiagnostics(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-) {
- return _clang_getNumDiagnostics(
- Unit,
- );
-}
-
-final _dart_clang_getNumDiagnostics _clang_getNumDiagnostics = _dylib
- .lookupFunction<_c_clang_getNumDiagnostics, _dart_clang_getNumDiagnostics>(
- 'clang_getNumDiagnostics');
-
-typedef _c_clang_getNumDiagnostics = ffi.Uint32 Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-typedef _dart_clang_getNumDiagnostics = int Function(
- ffi.Pointer<CXTranslationUnitImpl> Unit,
-);
-
-int clang_getNumElements_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getNumElements_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getNumElements_wrap _clang_getNumElements_wrap =
- _dylib.lookupFunction<_c_clang_getNumElements_wrap,
- _dart_clang_getNumElements_wrap>('clang_getNumElements_wrap');
-
-typedef _c_clang_getNumElements_wrap = ffi.Uint64 Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getNumElements_wrap = int Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-ffi.Pointer<CXType> clang_getPointeeType_wrap(
- ffi.Pointer<CXType> pointerType,
-) {
- return _clang_getPointeeType_wrap(
- pointerType,
- );
-}
-
-final _dart_clang_getPointeeType_wrap _clang_getPointeeType_wrap =
- _dylib.lookupFunction<_c_clang_getPointeeType_wrap,
- _dart_clang_getPointeeType_wrap>('clang_getPointeeType_wrap');
-
-typedef _c_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> pointerType,
-);
-
-typedef _dart_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> pointerType,
-);
-
-ffi.Pointer<CXType> clang_getResultType_wrap(
- ffi.Pointer<CXType> functionType,
-) {
- return _clang_getResultType_wrap(
- functionType,
- );
-}
-
-final _dart_clang_getResultType_wrap _clang_getResultType_wrap =
- _dylib.lookupFunction<_c_clang_getResultType_wrap,
- _dart_clang_getResultType_wrap>('clang_getResultType_wrap');
-
-typedef _c_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> functionType,
-);
-
-typedef _dart_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
- ffi.Pointer<CXType> functionType,
-);
-
-ffi.Pointer<CXCursor> clang_getTranslationUnitCursor_wrap(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-) {
- return _clang_getTranslationUnitCursor_wrap(
- tu,
- );
-}
-
-final _dart_clang_getTranslationUnitCursor_wrap
- _clang_getTranslationUnitCursor_wrap = _dylib.lookupFunction<
- _c_clang_getTranslationUnitCursor_wrap,
- _dart_clang_getTranslationUnitCursor_wrap>(
- 'clang_getTranslationUnitCursor_wrap');
-
-typedef _c_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-typedef _dart_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor>
- Function(
- ffi.Pointer<CXTranslationUnitImpl> tu,
-);
-
-ffi.Pointer<CXCursor> clang_getTypeDeclaration_wrap(
- ffi.Pointer<CXType> cxtype,
-) {
- return _clang_getTypeDeclaration_wrap(
- cxtype,
- );
-}
-
-final _dart_clang_getTypeDeclaration_wrap _clang_getTypeDeclaration_wrap =
- _dylib.lookupFunction<_c_clang_getTypeDeclaration_wrap,
- _dart_clang_getTypeDeclaration_wrap>('clang_getTypeDeclaration_wrap');
-
-typedef _c_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-typedef _dart_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
- ffi.Pointer<CXType> cxtype,
-);
-
-ffi.Pointer<CXString> clang_getTypeKindSpelling_wrap(
- int typeKind,
-) {
- return _clang_getTypeKindSpelling_wrap(
- typeKind,
- );
-}
-
-final _dart_clang_getTypeKindSpelling_wrap _clang_getTypeKindSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getTypeKindSpelling_wrap,
- _dart_clang_getTypeKindSpelling_wrap>('clang_getTypeKindSpelling_wrap');
-
-typedef _c_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Int32 typeKind,
-);
-
-typedef _dart_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
- int typeKind,
-);
-
-ffi.Pointer<CXString> clang_getTypeSpelling_wrap(
- ffi.Pointer<CXType> type,
-) {
- return _clang_getTypeSpelling_wrap(
- type,
- );
-}
-
-final _dart_clang_getTypeSpelling_wrap _clang_getTypeSpelling_wrap =
- _dylib.lookupFunction<_c_clang_getTypeSpelling_wrap,
- _dart_clang_getTypeSpelling_wrap>('clang_getTypeSpelling_wrap');
-
-typedef _c_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXType> type,
-);
-
-typedef _dart_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
- ffi.Pointer<CXType> type,
-);
-
-ffi.Pointer<CXType> clang_getTypedefDeclUnderlyingType_wrap(
- ffi.Pointer<CXCursor> cxcursor,
-) {
- return _clang_getTypedefDeclUnderlyingType_wrap(
- cxcursor,
- );
-}
-
-final _dart_clang_getTypedefDeclUnderlyingType_wrap
- _clang_getTypedefDeclUnderlyingType_wrap = _dylib.lookupFunction<
- _c_clang_getTypedefDeclUnderlyingType_wrap,
- _dart_clang_getTypedefDeclUnderlyingType_wrap>(
- 'clang_getTypedefDeclUnderlyingType_wrap');
-
-typedef _c_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
- Function(
- ffi.Pointer<CXCursor> cxcursor,
-);
-
-typedef _dart_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
- Function(
- ffi.Pointer<CXCursor> cxcursor,
-);
-
-/// Same as clang_parseTranslationUnit2, but returns the CXTranslationUnit
-/// instead of an error code. In case of an error this routine returns a NULL
-/// CXTranslationUnit, without further detailed error codes.
-ffi.Pointer<CXTranslationUnitImpl> clang_parseTranslationUnit(
- ffi.Pointer<ffi.Void> CIdx,
- ffi.Pointer<ffi.Int8> source_filename,
- ffi.Pointer<ffi.Pointer<ffi.Int8>> command_line_args,
- int num_command_line_args,
- ffi.Pointer<CXUnsavedFile> unsaved_files,
- int num_unsaved_files,
- int options,
-) {
- return _clang_parseTranslationUnit(
- CIdx,
- source_filename,
- command_line_args,
- num_command_line_args,
- unsaved_files,
- num_unsaved_files,
- options,
- );
-}
-
-final _dart_clang_parseTranslationUnit _clang_parseTranslationUnit =
- _dylib.lookupFunction<_c_clang_parseTranslationUnit,
- _dart_clang_parseTranslationUnit>('clang_parseTranslationUnit');
-
typedef _c_clang_parseTranslationUnit = ffi.Pointer<CXTranslationUnitImpl>
Function(
ffi.Pointer<ffi.Void> CIdx,
@@ -1995,30 +1772,153 @@
int options,
);
+typedef _c_clang_disposeTranslationUnit = ffi.Void Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+);
+
+typedef _dart_clang_disposeTranslationUnit = void Function(
+ ffi.Pointer<CXTranslationUnitImpl> arg0,
+);
+
+typedef _c_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _dart_clang_getCString_wrap = ffi.Pointer<ffi.Int8> Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _c_clang_disposeString_wrap = ffi.Void Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _dart_clang_disposeString_wrap = void Function(
+ ffi.Pointer<CXString> string,
+);
+
+typedef _c_clang_getCursorKind_wrap = ffi.Int32 Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorKind_wrap = int Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Int32 kind,
+);
+
+typedef _dart_clang_getCursorKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ int kind,
+);
+
+typedef _c_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXType> type,
+);
+
+typedef _dart_clang_getTypeSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXType> type,
+);
+
+typedef _c_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Int32 typeKind,
+);
+
+typedef _dart_clang_getTypeKindSpelling_wrap = ffi.Pointer<CXString> Function(
+ int typeKind,
+);
+
+typedef _c_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> functionType,
+);
+
+typedef _dart_clang_getResultType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> functionType,
+);
+
+typedef _c_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> pointerType,
+);
+
+typedef _dart_clang_getPointeeType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> pointerType,
+);
+
+typedef _c_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> typerefType,
+);
+
+typedef _dart_clang_getCanonicalType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> typerefType,
+);
+
+typedef _c_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> elaboratedType,
+);
+
+typedef _dart_clang_Type_getNamedType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> elaboratedType,
+);
+
+typedef _c_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getTypeDeclaration_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _c_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
+ Function(
+ ffi.Pointer<CXCursor> cxcursor,
+);
+
+typedef _dart_clang_getTypedefDeclUnderlyingType_wrap = ffi.Pointer<CXType>
+ Function(
+ ffi.Pointer<CXCursor> cxcursor,
+);
+
+typedef _c_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorSpelling_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+);
+
+typedef _dart_clang_getTranslationUnitCursor_wrap = ffi.Pointer<CXCursor>
+ Function(
+ ffi.Pointer<CXTranslationUnitImpl> tu,
+);
+
+typedef _c_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> diag,
+ ffi.Int32 opts,
+);
+
+typedef _dart_clang_formatDiagnostic_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> diag,
+ int opts,
+);
+
typedef ModifiedCXCursorVisitor_1 = ffi.Int32 Function(
ffi.Pointer<CXCursor>,
ffi.Pointer<CXCursor>,
ffi.Pointer<ffi.Void>,
);
-/// Visitor is a function pointer with parameters having pointers to cxcursor
-/// instead of cxcursor by default.
-int clang_visitChildren_wrap(
- ffi.Pointer<CXCursor> parent,
- ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
- ffi.Pointer<ffi.Void> clientData,
-) {
- return _clang_visitChildren_wrap(
- parent,
- _modifiedVisitor,
- clientData,
- );
-}
-
-final _dart_clang_visitChildren_wrap _clang_visitChildren_wrap =
- _dylib.lookupFunction<_c_clang_visitChildren_wrap,
- _dart_clang_visitChildren_wrap>('clang_visitChildren_wrap');
-
typedef _c_clang_visitChildren_wrap = ffi.Uint32 Function(
ffi.Pointer<CXCursor> parent,
ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
@@ -2030,3 +1930,136 @@
ffi.Pointer<ffi.NativeFunction<ModifiedCXCursorVisitor_1>> _modifiedVisitor,
ffi.Pointer<ffi.Void> clientData,
);
+
+typedef _c_clang_Cursor_getNumArguments_wrap = ffi.Int32 Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getNumArguments_wrap = int Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXCursor> cursor,
+ ffi.Uint32 i,
+);
+
+typedef _dart_clang_Cursor_getArgument_wrap = ffi.Pointer<CXCursor> Function(
+ ffi.Pointer<CXCursor> cursor,
+ int i,
+);
+
+typedef _c_clang_getNumArgTypes_wrap = ffi.Int32 Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getNumArgTypes_wrap = int Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _c_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+ ffi.Uint32 i,
+);
+
+typedef _dart_clang_getArgType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+ int i,
+);
+
+typedef _c_clang_getEnumConstantDeclValue_wrap = ffi.Int64 Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getEnumConstantDeclValue_wrap = int Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_equalRanges_wrap = ffi.Uint32 Function(
+ ffi.Pointer<CXSourceRange> c1,
+ ffi.Pointer<CXSourceRange> c2,
+);
+
+typedef _dart_clang_equalRanges_wrap = int Function(
+ ffi.Pointer<CXSourceRange> c1,
+ ffi.Pointer<CXSourceRange> c2,
+);
+
+typedef _c_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getCommentRange_wrap = ffi.Pointer<CXSourceRange>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getRawCommentText_wrap = ffi.Pointer<CXString>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_Cursor_getBriefCommentText_wrap = ffi.Pointer<CXString>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _dart_clang_getCursorLocation_wrap = ffi.Pointer<CXSourceLocation>
+ Function(
+ ffi.Pointer<CXCursor> cursor,
+);
+
+typedef _c_clang_getFileLocation_wrap = ffi.Void Function(
+ ffi.Pointer<CXSourceLocation> location,
+ ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+ ffi.Pointer<ffi.Uint32> line,
+ ffi.Pointer<ffi.Uint32> column,
+ ffi.Pointer<ffi.Uint32> offset,
+);
+
+typedef _dart_clang_getFileLocation_wrap = void Function(
+ ffi.Pointer<CXSourceLocation> location,
+ ffi.Pointer<ffi.Pointer<ffi.Void>> file,
+ ffi.Pointer<ffi.Uint32> line,
+ ffi.Pointer<ffi.Uint32> column,
+ ffi.Pointer<ffi.Uint32> offset,
+);
+
+typedef _c_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> SFile,
+);
+
+typedef _dart_clang_getFileName_wrap = ffi.Pointer<CXString> Function(
+ ffi.Pointer<ffi.Void> SFile,
+);
+
+typedef _c_clang_getNumElements_wrap = ffi.Uint64 Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getNumElements_wrap = int Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _c_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+);
+
+typedef _dart_clang_getArrayElementType_wrap = ffi.Pointer<CXType> Function(
+ ffi.Pointer<CXType> cxtype,
+);
diff --git a/lib/src/header_parser/data.dart b/lib/src/header_parser/data.dart
index 900c0ff..c1b57bf 100644
--- a/lib/src/header_parser/data.dart
+++ b/lib/src/header_parser/data.dart
@@ -3,7 +3,12 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:ffigen/src/config_provider.dart';
+import 'clang_bindings/clang_bindings.dart' show Clang;
+
/// Holds all Global shared variables.
/// Holds configurations.
Config config;
+
+/// Holds clang functions.
+Clang clang;
diff --git a/lib/src/header_parser/parser.dart b/lib/src/header_parser/parser.dart
index f50e2e5..c35dd3c 100644
--- a/lib/src/header_parser/parser.dart
+++ b/lib/src/header_parser/parser.dart
@@ -10,8 +10,8 @@
import 'package:ffigen/src/header_parser/translation_unit_parser.dart';
import 'package:logging/logging.dart';
-import 'clang_bindings/clang_bindings.dart' as clang;
-import 'data.dart' as data;
+import 'clang_bindings/clang_bindings.dart' as clang_types;
+import 'data.dart';
import 'utils.dart';
/// Main entrypoint for header_parser.
@@ -22,8 +22,9 @@
final library = Library(
bindings: bindings,
- initFunctionIdentifier: data.config.initFunctionName,
- header: data.config.preamble,
+ name: config.wrapperName,
+ description: config.wrapperDocComment,
+ header: config.preamble,
);
if (sort) {
@@ -40,9 +41,9 @@
/// initialises parser, clears any previous values.
void initParser(Config c) {
- data.config = c;
+ config = c;
- clang.init(DynamicLibrary.open(data.config.libclang_dylib_path));
+ clang = clang_types.Clang(DynamicLibrary.open(config.libclang_dylib_path));
}
/// Parses source files and adds generated bindings to [bindings].
@@ -51,18 +52,18 @@
Pointer<Pointer<Utf8>> clangCmdArgs = nullptr;
var cmdLen = 0;
- if (data.config.compilerOpts != null) {
- clangCmdArgs = createDynamicStringArray(data.config.compilerOpts);
- cmdLen = data.config.compilerOpts.length;
+ if (config.compilerOpts != null) {
+ clangCmdArgs = createDynamicStringArray(config.compilerOpts);
+ cmdLen = config.compilerOpts.length;
}
// Contains all bindings.
final bindings = <Binding>[];
// Log all headers for user.
- _logger.info('Input Headers: ${data.config.headers}');
+ _logger.info('Input Headers: ${config.headers}');
- for (final headerLocation in data.config.headers) {
+ for (final headerLocation in config.headers) {
_logger.fine('Creating TranslationUnit for header: $headerLocation');
final tu = clang.clang_parseTranslationUnit(
@@ -72,7 +73,7 @@
cmdLen,
nullptr,
0,
- clang.CXTranslationUnit_Flags.CXTranslationUnit_SkipFunctionBodies,
+ clang_types.CXTranslationUnit_Flags.CXTranslationUnit_SkipFunctionBodies,
);
if (tu == nullptr) {
@@ -92,8 +93,8 @@
clang.clang_disposeTranslationUnit(tu);
}
- if (data.config.compilerOpts != null) {
- clangCmdArgs.dispose(data.config.compilerOpts.length);
+ if (config.compilerOpts != null) {
+ clangCmdArgs.dispose(config.compilerOpts.length);
}
clang.clang_disposeIndex(index);
return bindings;
diff --git a/lib/src/header_parser/sub_parsers/enumdecl_parser.dart b/lib/src/header_parser/sub_parsers/enumdecl_parser.dart
index 25266e1..a98738b 100644
--- a/lib/src/header_parser/sub_parsers/enumdecl_parser.dart
+++ b/lib/src/header_parser/sub_parsers/enumdecl_parser.dart
@@ -8,7 +8,8 @@
import 'package:ffigen/src/header_parser/data.dart';
import 'package:logging/logging.dart';
-import '../clang_bindings/clang_bindings.dart' as clang;
+import '../clang_bindings/clang_bindings.dart' as clang_types;
+import '../data.dart' show clang;
import '../includer.dart';
import '../utils.dart';
@@ -19,7 +20,7 @@
/// Parses a function declaration.
EnumClass parseEnumDeclaration(
- Pointer<clang.CXCursor> cursor, {
+ Pointer<clang_types.CXCursor> cursor, {
/// Optionally provide name to use (useful in case struct is inside a typedef).
String name,
@@ -42,11 +43,11 @@
return _enumClass;
}
-void _addEnumConstant(Pointer<clang.CXCursor> cursor) {
+void _addEnumConstant(Pointer<clang_types.CXCursor> cursor) {
final resultCode = clang.clang_visitChildren_wrap(
cursor,
Pointer.fromFunction(
- _enumCursorVisitor, clang.CXChildVisitResult.CXChildVisit_Break),
+ _enumCursorVisitor, clang_types.CXChildVisitResult.CXChildVisit_Break),
nullptr,
);
@@ -57,12 +58,12 @@
///
/// Invoked on every enum directly under rootCursor.
/// Used for for extracting enum values.
-int _enumCursorVisitor(Pointer<clang.CXCursor> cursor,
- Pointer<clang.CXCursor> parent, Pointer<Void> clientData) {
+int _enumCursorVisitor(Pointer<clang_types.CXCursor> cursor,
+ Pointer<clang_types.CXCursor> parent, Pointer<Void> clientData) {
try {
_logger.finest(' enumCursorVisitor: ${cursor.completeStringRepr()}');
switch (clang.clang_getCursorKind_wrap(cursor)) {
- case clang.CXCursorKind.CXCursor_EnumConstantDecl:
+ case clang_types.CXCursorKind.CXCursor_EnumConstantDecl:
_addEnumConstantToEnumClass(cursor);
break;
default:
@@ -75,11 +76,11 @@
_logger.severe(s);
rethrow;
}
- return clang.CXChildVisitResult.CXChildVisit_Continue;
+ return clang_types.CXChildVisitResult.CXChildVisit_Continue;
}
/// Adds the parameter to func in [functiondecl_parser.dart].
-void _addEnumConstantToEnumClass(Pointer<clang.CXCursor> cursor) {
+void _addEnumConstantToEnumClass(Pointer<clang_types.CXCursor> cursor) {
_enumClass.enumConstants.add(
EnumConstant(
dartDoc: getCursorDocComment(
diff --git a/lib/src/header_parser/sub_parsers/functiondecl_parser.dart b/lib/src/header_parser/sub_parsers/functiondecl_parser.dart
index 98b93d0..18c341b 100644
--- a/lib/src/header_parser/sub_parsers/functiondecl_parser.dart
+++ b/lib/src/header_parser/sub_parsers/functiondecl_parser.dart
@@ -8,7 +8,8 @@
import 'package:ffigen/src/header_parser/data.dart';
import 'package:logging/logging.dart';
-import '../clang_bindings/clang_bindings.dart' as clang;
+import '../clang_bindings/clang_bindings.dart' as clang_types;
+import '../data.dart' show clang;
import '../includer.dart';
import '../utils.dart';
@@ -18,7 +19,7 @@
Func _func;
/// Parses a function declaration.
-Func parseFunctionDeclaration(Pointer<clang.CXCursor> cursor) {
+Func parseFunctionDeclaration(Pointer<clang_types.CXCursor> cursor) {
_func = null;
structByValueParameter = false;
unimplementedParameterType = false;
@@ -49,7 +50,10 @@
}
_func = Func(
- dartDoc: getCursorDocComment(cursor),
+ dartDoc: getCursorDocComment(
+ cursor,
+ nesting.length + commentPrefix.length,
+ ),
name: config.functionDecl.getPrefixedName(funcName),
lookupSymbolName: funcName,
returnType: rt,
@@ -63,11 +67,11 @@
bool structByValueParameter = false;
bool unimplementedParameterType = false;
-Type _getFunctionReturnType(Pointer<clang.CXCursor> cursor) {
+Type _getFunctionReturnType(Pointer<clang_types.CXCursor> cursor) {
return cursor.returnType().toCodeGenTypeAndDispose();
}
-List<Parameter> _getParameters(Pointer<clang.CXCursor> cursor) {
+List<Parameter> _getParameters(Pointer<clang_types.CXCursor> cursor) {
final parameters = <Parameter>[];
final totalArgs = clang.clang_Cursor_getNumArguments_wrap(cursor);
@@ -99,6 +103,6 @@
return parameters;
}
-Type _getParameterType(Pointer<clang.CXCursor> cursor) {
+Type _getParameterType(Pointer<clang_types.CXCursor> cursor) {
return cursor.type().toCodeGenTypeAndDispose();
}
diff --git a/lib/src/header_parser/sub_parsers/structdecl_parser.dart b/lib/src/header_parser/sub_parsers/structdecl_parser.dart
index a71f69e..309ab39 100644
--- a/lib/src/header_parser/sub_parsers/structdecl_parser.dart
+++ b/lib/src/header_parser/sub_parsers/structdecl_parser.dart
@@ -7,7 +7,7 @@
import 'package:ffigen/src/code_generator.dart';
import 'package:logging/logging.dart';
-import '../clang_bindings/clang_bindings.dart' as clang;
+import '../clang_bindings/clang_bindings.dart' as clang_types;
import '../data.dart';
import '../includer.dart';
import '../utils.dart';
@@ -19,7 +19,7 @@
/// Parses a struct declaration.
Struc parseStructDeclaration(
- Pointer<clang.CXCursor> cursor, {
+ Pointer<clang_types.CXCursor> cursor, {
/// Optionally provide name (useful in case struct is inside a typedef).
String name,
@@ -53,7 +53,7 @@
}
List<Member> _members;
-List<Member> _getMembers(Pointer<clang.CXCursor> cursor, String structName) {
+List<Member> _getMembers(Pointer<clang_types.CXCursor> cursor, String structName) {
_members = [];
arrayMember = false;
nestedStructMember = false;
@@ -62,7 +62,7 @@
final resultCode = clang.clang_visitChildren_wrap(
cursor,
Pointer.fromFunction(
- _structMembersVisitor, clang.CXChildVisitResult.CXChildVisit_Break),
+ _structMembersVisitor, clang_types.CXChildVisitResult.CXChildVisit_Break),
nullptr);
visitChildrenResultChecker(resultCode);
@@ -98,10 +98,10 @@
/// Visitor for the struct cursor [CXCursorKind.CXCursor_StructDecl].
///
/// Child visitor invoked on struct cursor.
-int _structMembersVisitor(Pointer<clang.CXCursor> cursor,
- Pointer<clang.CXCursor> parent, Pointer<Void> clientData) {
+int _structMembersVisitor(Pointer<clang_types.CXCursor> cursor,
+ Pointer<clang_types.CXCursor> parent, Pointer<Void> clientData) {
try {
- if (cursor.kind() == clang.CXCursorKind.CXCursor_FieldDecl) {
+ if (cursor.kind() == clang_types.CXCursorKind.CXCursor_FieldDecl) {
_logger.finer('===== member: ${cursor.completeStringRepr()}');
final mt = cursor.type().toCodeGenTypeAndDispose();
@@ -142,5 +142,5 @@
_logger.severe(s);
rethrow;
}
- return clang.CXChildVisitResult.CXChildVisit_Continue;
+ return clang_types.CXChildVisitResult.CXChildVisit_Continue;
}
diff --git a/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart b/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart
index 30ec2ab..8d2a831 100644
--- a/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart
+++ b/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart
@@ -7,7 +7,8 @@
import 'package:ffigen/src/code_generator.dart';
import 'package:logging/logging.dart';
-import '../clang_bindings/clang_bindings.dart' as clang;
+import '../clang_bindings/clang_bindings.dart' as clang_types;
+import '../data.dart' show clang;
import '../sub_parsers/enumdecl_parser.dart';
import '../sub_parsers/structdecl_parser.dart';
import '../utils.dart';
@@ -21,7 +22,7 @@
String _typedefName;
/// Parses a typedef declaration.
-Binding parseTypedefDeclaration(Pointer<clang.CXCursor> cursor) {
+Binding parseTypedefDeclaration(Pointer<clang_types.CXCursor> cursor) {
_binding = null;
// Name of typedef.
_typedefName = cursor.spelling();
@@ -29,7 +30,7 @@
final resultCode = clang.clang_visitChildren_wrap(
cursor,
Pointer.fromFunction(_typedefdeclarationCursorVisitor,
- clang.CXChildVisitResult.CXChildVisit_Break),
+ clang_types.CXChildVisitResult.CXChildVisit_Break),
nullptr,
);
@@ -43,17 +44,17 @@
///
/// Visitor invoked on cursor of type declaration returned by
/// [clang.clang_getTypeDeclaration_wrap].
-int _typedefdeclarationCursorVisitor(Pointer<clang.CXCursor> cursor,
- Pointer<clang.CXCursor> parent, Pointer<Void> clientData) {
+int _typedefdeclarationCursorVisitor(Pointer<clang_types.CXCursor> cursor,
+ Pointer<clang_types.CXCursor> parent, Pointer<Void> clientData) {
try {
_logger.finest(
'typedefdeclarationCursorVisitor: ${cursor.completeStringRepr()}');
switch (clang.clang_getCursorKind_wrap(cursor)) {
- case clang.CXCursorKind.CXCursor_StructDecl:
+ case clang_types.CXCursorKind.CXCursor_StructDecl:
_binding = parseStructDeclaration(cursor, name: _typedefName);
break;
- case clang.CXCursorKind.CXCursor_EnumDecl:
+ case clang_types.CXCursorKind.CXCursor_EnumDecl:
_binding = parseEnumDeclaration(cursor, name: _typedefName);
break;
default:
@@ -67,5 +68,5 @@
_logger.severe(s);
rethrow;
}
- return clang.CXChildVisitResult.CXChildVisit_Continue;
+ return clang_types.CXChildVisitResult.CXChildVisit_Continue;
}
diff --git a/lib/src/header_parser/translation_unit_parser.dart b/lib/src/header_parser/translation_unit_parser.dart
index a1b794b..73c8880 100644
--- a/lib/src/header_parser/translation_unit_parser.dart
+++ b/lib/src/header_parser/translation_unit_parser.dart
@@ -7,7 +7,8 @@
import 'package:ffigen/src/code_generator.dart';
import 'package:logging/logging.dart';
-import 'clang_bindings/clang_bindings.dart' as clang;
+import 'clang_bindings/clang_bindings.dart' as clang_types;
+import 'data.dart' show clang;
import 'includer.dart';
import 'sub_parsers/enumdecl_parser.dart';
import 'sub_parsers/functiondecl_parser.dart';
@@ -20,13 +21,14 @@
List<Binding> _bindings;
/// Parses the translation unit and returns the generated bindings.
-List<Binding> parseTranslationUnit(Pointer<clang.CXCursor> translationUnitCursor) {
+List<Binding> parseTranslationUnit(
+ Pointer<clang_types.CXCursor> translationUnitCursor) {
_bindings = [];
final resultCode = clang.clang_visitChildren_wrap(
translationUnitCursor,
Pointer.fromFunction(
- _rootCursorVisitor, clang.CXChildVisitResult.CXChildVisit_Break),
+ _rootCursorVisitor, clang_types.CXChildVisitResult.CXChildVisit_Break),
nullptr,
);
@@ -36,22 +38,22 @@
}
/// Child visitor invoked on translationUnitCursor [CXCursorKind.CXCursor_TranslationUnit].
-int _rootCursorVisitor(Pointer<clang.CXCursor> cursor,
- Pointer<clang.CXCursor> parent, Pointer<Void> clientData) {
+int _rootCursorVisitor(Pointer<clang_types.CXCursor> cursor,
+ Pointer<clang_types.CXCursor> parent, Pointer<Void> clientData) {
try {
if (shouldIncludeRootCursor(cursor.sourceFileName())) {
_logger.finest('rootCursorVisitor: ${cursor.completeStringRepr()}');
switch (clang.clang_getCursorKind_wrap(cursor)) {
- case clang.CXCursorKind.CXCursor_FunctionDecl:
+ case clang_types.CXCursorKind.CXCursor_FunctionDecl:
addToBindings(parseFunctionDeclaration(cursor));
break;
- case clang.CXCursorKind.CXCursor_TypedefDecl:
+ case clang_types.CXCursorKind.CXCursor_TypedefDecl:
addToBindings(parseTypedefDeclaration(cursor));
break;
- case clang.CXCursorKind.CXCursor_StructDecl:
+ case clang_types.CXCursorKind.CXCursor_StructDecl:
addToBindings(parseStructDeclaration(cursor));
break;
- case clang.CXCursorKind.CXCursor_EnumDecl:
+ case clang_types.CXCursorKind.CXCursor_EnumDecl:
addToBindings(parseEnumDeclaration(cursor));
break;
default:
@@ -69,7 +71,7 @@
_logger.severe(s);
rethrow;
}
- return clang.CXChildVisitResult.CXChildVisit_Continue;
+ return clang_types.CXChildVisitResult.CXChildVisit_Continue;
}
/// Adds to binding if not null.
diff --git a/lib/src/header_parser/type_extractor/extractor.dart b/lib/src/header_parser/type_extractor/extractor.dart
index 65fd6f0..6c59dd6 100644
--- a/lib/src/header_parser/type_extractor/extractor.dart
+++ b/lib/src/header_parser/type_extractor/extractor.dart
@@ -8,7 +8,7 @@
import 'package:ffigen/src/code_generator.dart';
import 'package:logging/logging.dart';
-import '../clang_bindings/clang_bindings.dart' as clang;
+import '../clang_bindings/clang_bindings.dart' as clang_types;
import '../data.dart';
import '../includer.dart';
import '../sub_parsers/structdecl_parser.dart';
@@ -20,17 +20,17 @@
const _padding = ' ';
/// Converts cxtype to a typestring code_generator can accept.
-Type getCodeGenType(Pointer<clang.CXType> cxtype, {String parentName}) {
+Type getCodeGenType(Pointer<clang_types.CXType> cxtype, {String parentName}) {
_logger.fine('${_padding}getCodeGenType ${cxtype.completeStringRepr()}');
final kind = cxtype.kind();
switch (kind) {
- case clang.CXTypeKind.CXType_Pointer:
+ case clang_types.CXTypeKind.CXType_Pointer:
final pt = clang.clang_getPointeeType_wrap(cxtype);
final s = getCodeGenType(pt, parentName: parentName);
pt.dispose();
return Type.pointer(s);
- case clang.CXTypeKind.CXType_Typedef:
+ case clang_types.CXTypeKind.CXType_Typedef:
// Get name from typedef name if config allows.
if (config.useSupportedTypedefs) {
final spelling = cxtype.spelling();
@@ -46,30 +46,34 @@
final s = getCodeGenType(ct, parentName: parentName ?? cxtype.spelling());
ct.dispose();
return s;
- case clang.CXTypeKind.CXType_Elaborated:
+ case clang_types.CXTypeKind.CXType_Elaborated:
final et = clang.clang_Type_getNamedType_wrap(cxtype);
final s = getCodeGenType(et, parentName: parentName);
et.dispose();
return s;
- case clang.CXTypeKind.CXType_Record:
+ case clang_types.CXTypeKind.CXType_Record:
return _extractfromRecord(cxtype);
- case clang.CXTypeKind.CXType_Enum:
+ case clang_types.CXTypeKind.CXType_Enum:
return Type.nativeType(
enumNativeType,
);
- case clang.CXTypeKind
+ case clang_types.CXTypeKind
.CXType_FunctionProto: // Primarily used for function pointers.
return _extractFromFunctionProto(cxtype, parentName);
- case clang.CXTypeKind
+ case clang_types.CXTypeKind
.CXType_ConstantArray: // Primarily used for constant array in struct members.
return Type.constantArray(
clang.clang_getNumElements_wrap(cxtype),
- clang.clang_getArrayElementType_wrap(cxtype).toCodeGenTypeAndDispose(),
+ clang
+ .clang_getArrayElementType_wrap(cxtype)
+ .toCodeGenTypeAndDispose(),
);
- case clang.CXTypeKind
+ case clang_types.CXTypeKind
.CXType_IncompleteArray: // Primarily used for incomplete array in function parameters.
return Type.incompleteArray(
- clang.clang_getArrayElementType_wrap(cxtype).toCodeGenTypeAndDispose(),
+ clang
+ .clang_getArrayElementType_wrap(cxtype)
+ .toCodeGenTypeAndDispose(),
);
default:
if (cxTypeKindToSupportedNativeTypes.containsKey(kind)) {
@@ -85,14 +89,14 @@
}
}
-Type _extractfromRecord(Pointer<clang.CXType> cxtype) {
+Type _extractfromRecord(Pointer<clang_types.CXType> cxtype) {
Type type;
final cursor = clang.clang_getTypeDeclaration_wrap(cxtype);
_logger.fine('${_padding}_extractfromRecord: ${cursor.completeStringRepr()}');
switch (clang.clang_getCursorKind_wrap(cursor)) {
- case clang.CXCursorKind.CXCursor_StructDecl:
+ case clang_types.CXCursorKind.CXCursor_StructDecl:
final cxtype = cursor.type();
var structName = cursor.spelling();
if (structName == '') {
@@ -100,7 +104,8 @@
structName = cxtype.spelling();
}
- final fixedStructName = config.structDecl.getPrefixedName(structName);
+ final fixedStructName =
+ config.structDecl.getPrefixedName(structName);
// Also add a struct binding, if its unseen.
// TODO(23): Check if we should auto add struct.
@@ -130,7 +135,7 @@
// Used for function pointer arguments.
Type _extractFromFunctionProto(
- Pointer<clang.CXType> cxtype, String parentName) {
+ Pointer<clang_types.CXType> cxtype, String parentName) {
var name = parentName;
// Set a name for typedefc incase it was null or empty.
@@ -155,17 +160,19 @@
Parameter(name: '', type: pt),
);
}
- final typedefC = TypedefC(
+ final typedefC = Typedef(
name: name,
+ typedefType: TypedefType.C,
parameters: _parameters,
- returnType:
- clang.clang_getResultType_wrap(cxtype).toCodeGenTypeAndDispose(),
+ returnType: clang
+ .clang_getResultType_wrap(cxtype)
+ .toCodeGenTypeAndDispose(),
);
return Type.nativeFunc(typedefC);
}
-/// Generate a unique string for naming in [TypedefC].
+/// Generate a unique string for naming in [Typedef].
String _getNextUniqueString(String prefix) {
int i = _uniqueStringCounters[prefix] ?? 0;
i++;
diff --git a/lib/src/header_parser/utils.dart b/lib/src/header_parser/utils.dart
index c5b7f5f..dc7efcf 100644
--- a/lib/src/header_parser/utils.dart
+++ b/lib/src/header_parser/utils.dart
@@ -9,7 +9,7 @@
import 'package:logging/logging.dart';
import '../strings.dart' as strings;
-import 'clang_bindings/clang_bindings.dart' as clang;
+import 'clang_bindings/clang_bindings.dart' as clang_types;
import 'data.dart';
import 'type_extractor/extractor.dart';
@@ -25,7 +25,7 @@
/// Logs the warnings/errors returned by clang for a translation unit.
void logTuDiagnostics(
- Pointer<clang.CXTranslationUnitImpl> tu,
+ Pointer<clang_types.CXTranslationUnitImpl> tu,
Logger logger,
String header,
) {
@@ -39,23 +39,25 @@
final diag = clang.clang_getDiagnostic(tu, i);
final cxstring = clang.clang_formatDiagnostic_wrap(
diag,
- clang.CXDiagnosticDisplayOptions.CXDiagnostic_DisplaySourceLocation |
- clang.CXDiagnosticDisplayOptions.CXDiagnostic_DisplayColumn |
- clang.CXDiagnosticDisplayOptions.CXDiagnostic_DisplayCategoryName,
+ clang_types
+ .CXDiagnosticDisplayOptions.CXDiagnostic_DisplaySourceLocation |
+ clang_types.CXDiagnosticDisplayOptions.CXDiagnostic_DisplayColumn |
+ clang_types
+ .CXDiagnosticDisplayOptions.CXDiagnostic_DisplayCategoryName,
);
logger.warning(' ' + cxstring.toStringAndDispose());
clang.clang_disposeDiagnostic(diag);
}
}
-extension CXSourceRangeExt on Pointer<clang.CXSourceRange> {
+extension CXSourceRangeExt on Pointer<clang_types.CXSourceRange> {
void dispose() {
free(this);
}
}
-extension CXCursorExt on Pointer<clang.CXCursor> {
- /// Returns the kind int from [clang.CXCursorKind].
+extension CXCursorExt on Pointer<clang_types.CXCursor> {
+ /// Returns the kind int from [clang_types.CXCursorKind].
int kind() {
return clang.clang_getCursorKind_wrap(this);
}
@@ -65,7 +67,7 @@
return clang.clang_getCursorSpelling_wrap(this).toStringAndDispose();
}
- /// Spelling for a [clang.CXCursorKind], useful for debug purposes.
+ /// Spelling for a [clang_types.CXCursorKind], useful for debug purposes.
String kindSpelling() {
return clang
.clang_getCursorKindSpelling_wrap(clang.clang_getCursorKind_wrap(this))
@@ -82,14 +84,14 @@
}
/// Dispose type using [type.dispose].
- Pointer<clang.CXType> type() {
+ Pointer<clang_types.CXType> type() {
return clang.clang_getCursorType_wrap(this);
}
/// Only valid for [clang.CXCursorKind.CXCursor_FunctionDecl].
///
/// Dispose type using [type.dispose].
- Pointer<clang.CXType> returnType() {
+ Pointer<clang_types.CXType> returnType() {
final t = type();
final r = clang.clang_getResultType_wrap(t);
t.dispose();
@@ -123,15 +125,15 @@
const commentPrefix = '/// ';
const nesting = ' ';
-/// Stores the [clang.CXSourceRange] of the last comment.
-Pointer<clang.CXSourceRange> lastCommentRange = nullptr;
+/// Stores the [clang_types.CXSourceRange] of the last comment.
+Pointer<clang_types.CXSourceRange> lastCommentRange = nullptr;
/// Returns a cursor's associated comment.
///
/// The given string is wrapped at line width = 80 - [indent]. The [indent] is
/// [commentPrefix.dimensions] by default because a comment starts with
/// [commentPrefix].
-String getCursorDocComment(Pointer<clang.CXCursor> cursor,
+String getCursorDocComment(Pointer<clang_types.CXCursor> cursor,
[int indent = commentPrefix.length]) {
String formattedDocComment;
final currentCommentRange = clang.clang_Cursor_getCommentRange_wrap(cursor);
@@ -214,25 +216,25 @@
return sb.toString().trim();
}
-extension CXTypeExt on Pointer<clang.CXType> {
- /// Get code_gen [Type] representation of [clang.CXType].
+extension CXTypeExt on Pointer<clang_types.CXType> {
+ /// Get code_gen [Type] representation of [clang_types.CXType].
Type toCodeGenType() {
return getCodeGenType(this);
}
- /// Get code_gen [Type] representation of [clang.CXType] and dispose the type.
+ /// Get code_gen [Type] representation of [clang_types.CXType] and dispose the type.
Type toCodeGenTypeAndDispose() {
final t = getCodeGenType(this);
dispose();
return t;
}
- /// Spelling for a [clang.CXTypeKind], useful for debug purposes.
+ /// Spelling for a [clang_types.CXTypeKind], useful for debug purposes.
String spelling() {
return clang.clang_getTypeSpelling_wrap(this).toStringAndDispose();
}
- /// Returns the typeKind int from [clang.CXTypeKind].
+ /// Returns the typeKind int from [clang_types.CXTypeKind].
int kind() {
return ref.kind;
}
@@ -253,7 +255,7 @@
}
}
-extension CXStringExt on Pointer<clang.CXString> {
+extension CXStringExt on Pointer<clang_types.CXString> {
/// Convert CXString to a Dart string
///
/// Make sure to dispose CXstring using dispose method, or use the
diff --git a/lib/src/strings.dart b/lib/src/strings.dart
index 27e1d50..5951ef5 100644
--- a/lib/src/strings.dart
+++ b/lib/src/strings.dart
@@ -71,7 +71,8 @@
const commentTypeSet = {brief, full, none};
// Library input.
-const initFunctionName = 'init-function-name';
+const name = 'name';
+const description = 'description';
const preamble = 'preamble';
// Dynamic library names.
diff --git a/test/code_generator_test.dart b/test/code_generator_test.dart
index cddaab4..a7a66c9 100644
--- a/test/code_generator_test.dart
+++ b/test/code_generator_test.dart
@@ -11,6 +11,7 @@
group('code_generator: ', () {
test('Function Binding (primitives, pointers)', () {
final library = Library(
+ name: 'Bindings',
bindings: [
Func(
name: 'noParam',
@@ -81,26 +82,52 @@
);
try {
expect(gen, '''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
+///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
+class Bindings{
/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary){
- _dylib = dynamicLibrary;
-}
+/// The symbols are looked up in [dynamicLibrary].
+Bindings(ffi.DynamicLibrary dynamicLibrary): _dylib = dynamicLibrary;
+
/// Just a test function
/// heres another line
int noParam(
) {
+_noParam ??= _dylib.lookupFunction<_c_noParam,_dart_noParam>('noParam');
return _noParam(
);
}
+_dart_noParam _noParam;
-final _dart_noParam _noParam = _dylib.lookupFunction<_c_noParam,_dart_noParam>('noParam');
+int withPrimitiveParam(
+ int a,
+ int b,
+) {
+_withPrimitiveParam ??= _dylib.lookupFunction<_c_withPrimitiveParam,_dart_withPrimitiveParam>('withPrimitiveParam');
+ return _withPrimitiveParam(
+ a,
+ b,
+ );
+}
+_dart_withPrimitiveParam _withPrimitiveParam;
+
+ffi.Pointer<ffi.Double> withPointerParam(
+ ffi.Pointer<ffi.Int32> a,
+ ffi.Pointer<ffi.Pointer<ffi.Uint8>> b,
+) {
+_withPointerParam ??= _dylib.lookupFunction<_c_withPointerParam,_dart_withPointerParam>('withPointerParam');
+ return _withPointerParam(
+ a,
+ b,
+ );
+}
+_dart_withPointerParam _withPointerParam;
+
+}
typedef _c_noParam = ffi.Int32 Function(
);
@@ -108,18 +135,6 @@
typedef _dart_noParam = int Function(
);
-int withPrimitiveParam(
- int a,
- int b,
-) {
- return _withPrimitiveParam(
- a,
- b,
- );
-}
-
-final _dart_withPrimitiveParam _withPrimitiveParam = _dylib.lookupFunction<_c_withPrimitiveParam,_dart_withPrimitiveParam>('withPrimitiveParam');
-
typedef _c_withPrimitiveParam = ffi.Uint8 Function(
ffi.Int32 a,
ffi.Uint8 b,
@@ -130,18 +145,6 @@
int b,
);
-ffi.Pointer<ffi.Double> withPointerParam(
- ffi.Pointer<ffi.Int32> a,
- ffi.Pointer<ffi.Pointer<ffi.Uint8>> b,
-) {
- return _withPointerParam(
- a,
- b,
- );
-}
-
-final _dart_withPointerParam _withPointerParam = _dylib.lookupFunction<_c_withPointerParam,_dart_withPointerParam>('withPointerParam');
-
typedef _c_withPointerParam = ffi.Pointer<ffi.Double> Function(
ffi.Pointer<ffi.Int32> a,
ffi.Pointer<ffi.Pointer<ffi.Uint8>> b,
@@ -165,6 +168,7 @@
test('Struct Binding (primitives, pointers)', () {
final library = Library(
+ name: 'Bindings',
bindings: [
Struc(
name: 'NoMember',
@@ -232,17 +236,10 @@
try {
expect(gen, '''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
+///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
-/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
-
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary){
- _dylib = dynamicLibrary;
-}
/// Just a test struct
/// heres another line
class NoMember extends ffi.Struct{
@@ -306,6 +303,7 @@
],
);
final library = Library(
+ name: 'Bindings',
bindings: [
struct_some,
Func(
@@ -340,17 +338,29 @@
try {
//expect
expect(gen, '''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
+///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
+class Bindings{
/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary){
- _dylib = dynamicLibrary;
+/// The symbols are looked up in [dynamicLibrary].
+Bindings(ffi.DynamicLibrary dynamicLibrary): _dylib = dynamicLibrary;
+
+ffi.Pointer<SomeStruc> someFunc(
+ ffi.Pointer<ffi.Pointer<SomeStruc>> some,
+) {
+_someFunc ??= _dylib.lookupFunction<_c_someFunc,_dart_someFunc>('someFunc');
+ return _someFunc(
+ some,
+ );
}
+_dart_someFunc _someFunc;
+
+}
+
class SomeStruc extends ffi.Struct{
@ffi.Int32()
int a;
@@ -363,16 +373,6 @@
}
-ffi.Pointer<SomeStruc> someFunc(
- ffi.Pointer<ffi.Pointer<SomeStruc>> some,
-) {
- return _someFunc(
- some,
- );
-}
-
-final _dart_someFunc _someFunc = _dylib.lookupFunction<_c_someFunc,_dart_someFunc>('someFunc');
-
typedef _c_someFunc = ffi.Pointer<SomeStruc> Function(
ffi.Pointer<ffi.Pointer<SomeStruc>> some,
);
@@ -397,6 +397,7 @@
name: 'Some',
);
final library = Library(
+ name: 'Bindings',
bindings: [
Global(
name: 'test1',
@@ -435,26 +436,31 @@
);
try {
expect(gen, '''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
+///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
+class Bindings{
/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary){
- _dylib = dynamicLibrary;
+/// The symbols are looked up in [dynamicLibrary].
+Bindings(ffi.DynamicLibrary dynamicLibrary): _dylib = dynamicLibrary;
+
+ffi.Pointer<ffi.Int32> _test1;
+int get test1 => (_test1 ??= _dylib.lookup<ffi.Int32>('test1')).value;
+
+ffi.Pointer<ffi.Pointer<ffi.Float>> _test2;
+ffi.Pointer<ffi.Float> get test2 => (_test2 ??= _dylib.lookup<ffi.Pointer<ffi.Float>>('test2')).value;
+
+ffi.Pointer<ffi.Pointer<Some>> _test5;
+ffi.Pointer<Some> get test5 => (_test5 ??= _dylib.lookup<ffi.Pointer<Some>>('test5')).value;
+
}
-final int test1 = _dylib.lookup<ffi.Int32>('test1').value;
-
-final ffi.Pointer<ffi.Float> test2 = _dylib.lookup<ffi.Pointer<ffi.Float>>('test2').value;
class Some extends ffi.Struct{
}
-final ffi.Pointer<Some> test5 = _dylib.lookup<ffi.Pointer<Some>>('test5').value;
-
''');
if (file.existsSync()) {
file.delete();
@@ -468,6 +474,7 @@
test('constant', () {
final library = Library(
+ name: 'Bindings',
bindings: [
Constant(
name: 'test1',
@@ -494,17 +501,10 @@
);
try {
expect(gen, '''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
+///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
-/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
-
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary){
- _dylib = dynamicLibrary;
-}
const int test1 = 20;
const double test2 = 20.0;
@@ -522,6 +522,7 @@
test('enum_class', () {
final library = Library(
+ name: 'Bindings',
bindings: [
EnumClass(
name: 'Constants',
@@ -545,17 +546,10 @@
);
try {
expect(gen, '''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
+///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
-/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
-
-/// Initialises the Dynamic library.
-void init(ffi.DynamicLibrary dynamicLibrary){
- _dylib = dynamicLibrary;
-}
/// test line 1
/// test line 2
class Constants {
@@ -576,7 +570,7 @@
});
test('Internal conflict resolution', () {
final library = Library(
- initFunctionIdentifier: 'init_dylib',
+ name: 'init_dylib',
bindings: [
Func(
name: 'test',
@@ -631,78 +625,64 @@
);
try {
expect(gen, r'''/// AUTO GENERATED FILE, DO NOT EDIT.
-///
+///
/// Generated by `package:ffigen`.
import 'dart:ffi' as ffi;
+class init_dylib_1{
/// Holds the Dynamic library.
-ffi.DynamicLibrary _dylib;
+final ffi.DynamicLibrary _dylib;
-/// Initialises the Dynamic library.
-void init_dylib_1(ffi.DynamicLibrary dynamicLibrary){
- _dylib = dynamicLibrary;
-}
+/// The symbols are looked up in [dynamicLibrary].
+init_dylib_1(ffi.DynamicLibrary dynamicLibrary): _dylib = dynamicLibrary;
+
void test(
) {
+_test_1 ??= _dylib.lookupFunction<_c_test1,_dart_test1>('test');
return _test_1(
);
}
-
-final _dart_test_1 _test_1 = _dylib.lookupFunction<_c_test_1,_dart_test_1>('test');
-
-typedef _c_test_1 = ffi.Void Function(
-);
-
-typedef _dart_test_1 = void Function(
-);
+_dart_test1 _test_1;
void _test(
) {
+__test ??= _dylib.lookupFunction<_c__test,_dart__test>('_test');
return __test(
);
}
-
-final _dart__test __test = _dylib.lookupFunction<_c__test,_dart__test>('_test');
-
-typedef _c__test = ffi.Void Function(
-);
-
-typedef _dart__test = void Function(
-);
+_dart__test __test;
void _c_test(
) {
+__c_test ??= _dylib.lookupFunction<_c__c_test,_dart__c_test>('_c_test');
return __c_test(
);
}
-
-final _dart__c_test __c_test = _dylib.lookupFunction<_c__c_test,_dart__c_test>('_c_test');
-
-typedef _c__c_test = ffi.Void Function(
-);
-
-typedef _dart__c_test = void Function(
-);
+_dart__c_test __c_test;
void _dart_test(
) {
+__dart_test ??= _dylib.lookupFunction<_c__dart_test,_dart__dart_test>('_dart_test');
return __dart_test(
);
}
+_dart__dart_test __dart_test;
-final _dart__dart_test __dart_test = _dylib.lookupFunction<_c__dart_test,_dart__dart_test>('_dart_test');
+void Test(
+) {
+_Test ??= _dylib.lookupFunction<_c_Test1,_dart_Test>('Test');
+ return _Test(
+ );
+}
+_dart_Test _Test;
-typedef _c__dart_test = ffi.Void Function(
-);
-
-typedef _dart__dart_test = void Function(
-);
+}
class _Test extends ffi.Struct{
@ffi.Int8()
- int _exp_workaround_array_item_0;
+ int _unique_array_item_0;
@ffi.Int8()
- int _exp_workaround_array_item_1;
+ int _unique_array_item_1;
/// Helper for array `array`.
ArrayHelper1__Test_array_level0 get array => ArrayHelper1__Test_array_level0(this, [2], 0, 0);
}
@@ -724,9 +704,9 @@
_checkBounds(index);
switch(_absoluteIndex+index){
case 0:
- return _struct._exp_workaround_array_item_0;
+ return _struct._unique_array_item_0;
case 1:
- return _struct._exp_workaround_array_item_1;
+ return _struct._unique_array_item_1;
default:
throw Exception('Invalid Array Helper generated.');}
}
@@ -734,10 +714,10 @@
_checkBounds(index);
switch(_absoluteIndex+index){
case 0:
- _struct._exp_workaround_array_item_0 = value;
+ _struct._unique_array_item_0 = value;
break;
case 1:
- _struct._exp_workaround_array_item_1 = value;
+ _struct._unique_array_item_1 = value;
break;
default:
throw Exception('Invalid Array Helper generated.');
@@ -747,26 +727,42 @@
class ArrayHelperPrefixCollisionTest extends ffi.Struct{
}
-void Test(
-) {
- return _Test_1(
- );
-}
-
-final _dart_Test _Test_1 = _dylib.lookupFunction<_c_Test_1,_dart_Test>('Test');
-
-typedef _c_Test_1 = ffi.Void Function(
-);
-
-typedef _dart_Test = void Function(
-);
-
class _c_Test {
}
class init_dylib {
}
+typedef _c_test1 = ffi.Void Function(
+);
+
+typedef _dart_test1 = void Function(
+);
+
+typedef _c__test = ffi.Void Function(
+);
+
+typedef _dart__test = void Function(
+);
+
+typedef _c__c_test = ffi.Void Function(
+);
+
+typedef _dart__c_test = void Function(
+);
+
+typedef _c__dart_test = ffi.Void Function(
+);
+
+typedef _dart__dart_test = void Function(
+);
+
+typedef _c_Test1 = ffi.Void Function(
+);
+
+typedef _dart_Test = void Function(
+);
+
''');
if (file.existsSync()) {
file.delete();
diff --git a/test/collision_tests/decl_decl_collision_test.dart b/test/collision_tests/decl_decl_collision_test.dart
index a96d763..7e1bfd0 100644
--- a/test/collision_tests/decl_decl_collision_test.dart
+++ b/test/collision_tests/decl_decl_collision_test.dart
@@ -7,20 +7,32 @@
void main() {
group('Declaration-Declaration Collision', () {
- test('struct-func', () {
- final l1 = Library(bindings: [
+ test('declaration conflict', () {
+ final l1 = Library(name: 'Bindings', bindings: [
+ Struc(name: 'TestStruc'),
+ Struc(name: 'TestStruc'),
+ EnumClass(name: 'TestEnum'),
+ EnumClass(name: 'TestEnum'),
Func(
- name: 'test',
- returnType: Type.nativeType(SupportedNativeType.Void),
- ),
- Struc(name: 'test'),
+ name: 'testFunc',
+ returnType: Type.nativeType(SupportedNativeType.Void)),
+ Func(
+ name: 'testFunc',
+ returnType: Type.nativeType(SupportedNativeType.Void)),
]);
- final l2 = Library(bindings: [
+ final l2 = Library(name: 'Bindings', bindings: [
+ Struc(name: 'TestStruc'),
+ Struc(name: 'TestStruc_1'),
+ EnumClass(name: 'TestEnum'),
+ EnumClass(name: 'TestEnum_1'),
Func(
- name: 'test',
- returnType: Type.nativeType(SupportedNativeType.Void),
- ),
- Struc(name: 'test_1'),
+ name: 'testFunc',
+ lookupSymbolName: 'testFunc',
+ returnType: Type.nativeType(SupportedNativeType.Void)),
+ Func(
+ name: 'testFunc_1',
+ lookupSymbolName: 'testFunc',
+ returnType: Type.nativeType(SupportedNativeType.Void)),
]);
expect(l1.generate(), l2.generate());
diff --git a/test/header_parser_tests/functions_test.dart b/test/header_parser_tests/functions_test.dart
index fa09f9c..b566fb4 100644
--- a/test/header_parser_tests/functions_test.dart
+++ b/test/header_parser_tests/functions_test.dart
@@ -25,6 +25,8 @@
});
actual = parser.parse(
Config.fromYaml(yaml.loadYaml('''
+${strings.name}: 'NativeLibrary'
+${strings.description}: 'Prefix Test'
${strings.output}: 'unused'
${strings.libclang_dylib_folder}: 'tool/wrapped_libclang'
${strings.headers}:
@@ -65,6 +67,7 @@
Library expectedLibrary() {
return Library(
+ name: 'Bindings',
bindings: [
Func(
name: 'func1',
diff --git a/test/prefix_tests/prefix_test.dart b/test/prefix_tests/prefix_test.dart
index d0397e4..0f91327 100644
--- a/test/prefix_tests/prefix_test.dart
+++ b/test/prefix_tests/prefix_test.dart
@@ -29,6 +29,8 @@
});
expected = expectedLibrary();
actual = parser.parse(Config.fromYaml(yaml.loadYaml('''
+${strings.name}: 'NativeLibrary'
+${strings.description}: 'Prefix Test'
${strings.output}: 'unused'
${strings.libclang_dylib_folder}: 'tool/wrapped_libclang'
${strings.headers}:
@@ -100,6 +102,7 @@
final struc2 =
Struc(name: '${structPrefix}${structPrefixReplacedWith}Struct2');
return Library(
+ name: 'Bindings',
bindings: [
Func(
name: '${functionPrefix}func1',
diff --git a/tool/libclang_config.yaml b/tool/libclang_config.yaml
index 9401a00..c9f5876 100644
--- a/tool/libclang_config.yaml
+++ b/tool/libclang_config.yaml
@@ -9,6 +9,8 @@
# 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