)]}'
{
  "commit": "39b1468ca8f61f89a123c5b5b9bf1bf3276ec0ce",
  "tree": "b38c431206abe7fb15d926bd0914e45999e72ebb",
  "parents": [
    "ff1ac4a175009f3d0a9994c64520a5617c13c846"
  ],
  "author": {
    "name": "Prerak Mann",
    "email": "31154435+mannprerak2@users.noreply.github.com",
    "time": "Thu Jun 25 18:47:14 2020 +0530"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jun 25 15:17:14 2020 +0200"
  },
  "message": "[ffigen] Initial generator: functions, structs, enums (#2)\n\n* migrated code from dart_ffi_bindings_generator repository\r\n\r\nCommits till now:\r\n\r\nPrerak Mann (6):\r\n      init stagehand dart package template, minor changes\r\n      Updated Project Structure, Readme\r\n      Reading pubspec configuration via yaml package\r\n      setup tool - libclang_binding_generator\r\n      restructure code\r\n      setup basic classes for code_generator\r\n\r\n* update readme: building steps\r\n\r\n* code_generation: added function generation for primitives\r\n\r\n* code_generator: added test for function\r\n\r\n* code_generation: added struct generation for primitives, added tests\r\n\r\n* code_generation: added pointer support for function and structure, added test\r\n\r\n* tool: added script for basic clang_binding generator\r\n\r\n* code_generator: added constant, global, C string support (ptr to utf8), added tests\r\n\r\n* code_generator: added typedefc, added test\r\n\r\n* tool: completed basic clang binding generation\r\n\r\n* update readme\r\n\r\n* simplify setup\r\n\r\n* added basic parser logic, fixed visitChildren_wrap function\r\n\r\n* copied clang_constants from libclang\r\n\r\n* header_parser: revamped api and code_structure\r\n\r\n* wrapper.c: added pointer conversion utility, updated bindings\r\n\r\n* header_parser: basic parser completed\r\n\r\n- updated code_generator\u0027s Func, Struct, Typedef to not use const, as it makes list unmodifiable\r\n- added example from previous prototype\r\n\r\n* header_parser: updated exception handling\r\n\r\n- print stack trace of dart functions called via C\r\n\r\n* cleanup\r\n\r\n* Handled Disposing of pointers\r\n\r\n- Updated dartdocs on clang_binding functions\r\n- Added dispose methods in cx.. ..cursor,..type, ..string\r\n- Updated parser code to handle disposing\r\n\r\n* Added input_checker, passing compilerOpts to clang\r\n\r\n* fix nullpointer error on compilerOpts list\r\n\r\n* config_provider: added filtering for functions\r\n\r\n- added new libclang example\r\n- moved old example to example/simple\r\n\r\n* updated lib-clang example to work with clang not in include path, restructured filters\r\n\r\n* Multiple Changes\r\n\r\n- Added sort method in code_generator library\r\n- Sorted generated clang_bindings\r\n- Added typedef declaration visitor for extracting typestring of typedef parameters\r\n- Added new methods to wrapper.c for getting type declarations\r\n\r\n* created a temporary logging solution\r\n\r\n* added typedef struct parser\r\n\r\n* cleanup\r\n\r\n* restructured parsing\r\n\r\n* restructured code\r\n\r\n* header_parser: added struct parser, minor changes\r\n\r\n- added type_extracter, moved typedeclaration_visitor into it\r\n- cleanup imports\r\n\r\n* parser: fixed type extraction\r\n\r\n* updated libclang-example, minor fix for record_type spelling\r\n\r\n* code_generator: added EnumClass, added test\r\n\r\n* header_parser: added enum parsing\r\n\r\n* header_parser: added typedef enums\r\n\r\n* header_parser: extracted doxygen comment\r\n\r\n- added clang_Cursor_getBriefCommentText_wrap in libclang bindings\r\n- added comment extraction for functions, enums, structs\r\n\r\n* Added args parsing and logging\r\n\r\n- option for alternate yaml config\r\n- added verbosity levels:[ all, fine, info, warning, severe ]\r\n\r\n* config_provider: added output file option\r\n\r\n* tests: added native_function_test\r\n\r\n* code_generator: breaking change\r\n\r\n- updated internal handling of type\r\n- added support for NativeFunction type needed for creating typedefC\r\n- updated tests, tool\r\n- updated header_parser/type_extractor\r\n\r\n* Added support for function pointers in bindings\r\n\r\n- example/libclang-example: added clang_visitChildren_wrap method\r\n- clang_bindings: added new methods getNumArgType, getArgType\r\n\r\n* header_parser: changes, complete libclang_example\r\n\r\n- completed libclang_example, all structs starting with CX\r\nall functions starting with clang_ except those passing/returning structs b value\r\n- added automatic typenaming to unnamed typedefs, unnamed function paramters\r\n\r\n* minor changes\r\n\r\n- code_generator: added factory Type constructor\r\n- updated tests and code to prefer using factory type constructors\r\n- added location methods to bindings\r\n\r\n* header_parser: added support for multiple headers, header-filters\r\n\r\n* header_parser: add structs used by functions\r\n\r\n- updated example/libclang to auto add IndexerCallback struct\r\nas its used in a function\r\n- structs are now added automatically if they are returned or\r\npassed in to a function (if struct type is parsed by extractor\r\nit automatically adds it)\r\n\r\n* config_provider: added sizemap for char, ints\r\n\r\n* tests: added simple tests for functions\r\n\r\n- test with supported types\r\n- added automatic argument naming for functions in code_gen if they are null or only whitspaces\r\n- code_gen_tests: only create debug file on test failure\r\n\r\n* config_provider: added sort option to config\r\n\r\n- updated libclang-example to use this\r\n- renamed generated file names\r\n- renamed package name for example\r\n\r\n* example: added new cJSON example, bug fix\r\n\r\n- new cJSON example, parsing a json and comparing it to json parsed by dart:convert\r\n- bug fix: shouldInclude.* functions not adding to seen Set in includer\r\n\r\n* linter bug fix, updated code for warnings\r\n\r\n* minor changes\r\n\r\n- documentation updates\r\n- code_gen: wrong binding string type in metadata fix\r\n\r\n* logging: improved log comments\r\n\r\n* code_generator: removed global constants file\r\n\r\n- lib prefixes are passed via writer now\r\n\r\n* improved tests, minor changes\r\n\r\n- improved header_parser_test\r\n- updated named constructors of code_generator: Type\r\n\r\n* header_parser: struct fields parsed\r\n\r\n- all structs fields are excluded, if any field is struct by value or array\r\n- added 2 functions using tool to clang bindings for parsing array element name, number\r\n- updated libclang example\r\n- added Broadtype.Array for code_gen (only used as indicator of type rn to exclude from parsing)\r\n\r\n* parser: extract type from supported typdef\r\n\r\n- Added config \u0027use-supported-typedefs\u0027\r\n- support for intptr_t\r\n- updated test: native_function_bindings, added intptr_t\r\n\r\n* header_parser: added workaround for array in struct\r\n\r\n- updated libclang example\r\n\r\n* fix: exclude array of struct in struct\r\n\r\n* config_provider: revamped internal API\r\n\r\nReason: Multiple seperate things were added whenever a config spec was added to the tool\r\nregarding-\r\n1. validate yaml, detect unknown keys\r\n2. tracking default value\r\n3. extracting from map\r\n4. Warning user if config is required and isnt provided\r\n\r\nAll this is now being managed at one place, A map of Spec is provided using\r\nthe getSpecs function, Spec has everything listed above\r\nAdding a configuration is simply adding a Spec to the map returned by getSpecs\r\nin config.dart\r\n\r\n* Removed generated binding\u0027s dependency on package:ffi\r\n\r\n- updated examples, tests\r\n- changed Char_S type to Int8 (previously Utf8)\r\n\r\n* temp: adding cmake\r\n\r\n* WIP: cmakefile\r\n\r\n* fix: loading dylib for other platforms\r\n\r\n- updated validator, extractor\r\n- updated examples\r\n- config: changed libclang-dylib to libclang-dylib-folder\r\n\r\n* Added build script for windows: tool/wrapped_libclang/build_dylib_windows\r\n\r\n* Windows Testing\r\n\r\n- Added build scripts(.bat files) for building dll for examples/tests\r\n- Updated exmaple\u0027s input header globs to work on Windows (Globs on windows dont work if they start with \".\" or\"..\"\r\n- Used path package instead\r\n\r\n* added warn about removing functions, minor changes\r\n\r\n* config_provider: minor changes - sizemap, enum, comments\r\n\r\n- Added enum to sizemap\r\n- warn unknown subkeys in sizemap\r\n- config option to disable dartdoc comment extraction\r\n\r\n* fixed tests, minor changes\r\n\r\n* Added warning for TU diagnostic errors\r\n\r\n* header_parser: handling unimplemented types\r\n\r\n- Added a BroadType.unimplemented, which can be used to determine and remove types\r\n- Removing functions and struct members if unimplemented types are used (and show warning) (earlier exception was thrown)\r\n- Added a flag to remove function with constant array passed as parameter\r\n\r\n* update readme, comments\r\n\r\n* update readme(s), linked todos to github issues\r\n\r\n* added copyright notice to code files, update readme(s)\r\n\r\n* Self hosting the tool: added libclang_config.yaml\r\n\r\n- Removed clang_constants.dart file, all bindings are now in clang_bindings.dart\r\n\r\n- Added build_dylib_macos script\r\n\r\n* Replace platform based build scripts with build.dart\r\n\r\n* Improved comments in accordance with styleguide\r\n\r\n* config_provider: refactoring\r\n\r\n* Added 3 lint rules\r\n\r\n- prefer_final_fields\r\n- prefer_final_locals\r\n- prefer_final_in_for_each\r\n\r\n* config_provider: made libclang_dylib_folder optional\r\n\r\nUser now has an option to provide a seperate folder containing the dynamic library\r\nThe default is to use the dynamic libraries in the tool/wrapped_libclang folder\r\n\r\n* header_parser: removed file extension checks\r\n\r\nUser can provide any file path or glob matcher.\r\nIf clang can\u0027t parse a header, we print a severe log\r\nand skip that header\r\n\r\n* minor changes\r\n\r\n* Updated warnings/error logs\r\n\r\n* Minor changes\r\n\r\n- Added test/native_function_test/build_test_dylib.dart\r\n- Updated comments\r\n- Added top level third_party folder\r\n- Updated examples, test with fixed comments\r\n\r\n* minor comment fix\r\n\r\n* Updated preamble message\r\n\r\nPreamble on generated files is now\r\n/// AUTO GENERATED FILE, DO NOT EDIT.\r\n///\r\n/// Generated by `package:ffigen`.\r\n\r\n* Updated build.dart, build_test_dylib.dart, Minor changes\r\n\r\n- Added map of \u003cString, Options\u003e for storing default values for all platforms\r\n- Using Options instead of global variables\r\n\r\n* Minor changes\r\n\r\n* minor refactoring\r\n\r\nCo-authored-by: Daco Harkes \u003cdacoharkes@google.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d4ae48b50f1784f27e2687f66cafdb24e98b816",
      "old_mode": 33188,
      "old_path": "pkgs/ffigen/.gitignore",
      "new_id": "57990d8c7ca7e4144b5035146b4ebab759b6c9e8",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/.gitignore"
    },
    {
      "type": "modify",
      "old_id": "846e4a15687b0f47aa65ee7ee12f2c0f0c15856a",
      "old_mode": 33188,
      "old_path": "pkgs/ffigen/AUTHORS",
      "new_id": "4f334e852a8d654f5364799f5dd6a5e84befc34f",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/AUTHORS"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8fcd2968540c57ca977b12328cf01e164b0f4cab",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "41a9d580de52813df7d3185fc61858e8a21c5b13",
      "old_mode": 33188,
      "old_path": "pkgs/ffigen/README.md",
      "new_id": "d85769b6b7b07ab487ea28532b6b819fa72c7d92",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/README.md"
    },
    {
      "type": "modify",
      "old_id": "108d1058ac84982b56b4452cead30b5782947ac6",
      "old_mode": 33188,
      "old_path": "pkgs/ffigen/analysis_options.yaml",
      "new_id": "fb0e86789380b1d8d49b3bb01e7f069f56fb0b52",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/analysis_options.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7f29f2a736d771d41671212820c13910e8690111",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/bin/generate.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1b05164275a832d176c4efe7235e64636baf2ce2",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/c_json/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9ba9d43625cc699c25c070e783ff1e49ea71bbca",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/c_json/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1cf00a3d90f06ed735d5557f9eebff23b7fd67dd",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/c_json/cjson_generated_bindings.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "073b05cbab4e5ba655b90de60ae8c92a075fa731",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/c_json/example.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "22db183553bce9777a5c0c0e50001e426d8c8b34",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/c_json/main.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7e913b6e9dd94fce8e2cecc078b5b88141e66797",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/c_json/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1b05164275a832d176c4efe7235e64636baf2ce2",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/libclang-example/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f68f632335685c8f144aabc59217194f00735bc5",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/libclang-example/generated_bindings.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bd000c693482e4242b22dc1c263812ac08233f6a",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/libclang-example/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4918a378bd683438274633e15e49b2e29452886a",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/libclang-example/readme.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1b05164275a832d176c4efe7235e64636baf2ce2",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/simple/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6fc5243e1662e172c0ae1eff93314351a8e21dfb",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/simple/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6e3a97b87e0aa7d34a7c59ac7bdc2559efb7ee05",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/simple/generated_bindings.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0f936ee33c3266746e7940374260402b8990fc9f",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/simple/headers/example.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "454c138f9cdd48eb9a4f133187d4ee5424a732bf",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/example/simple/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2832400eb523de049e838b7004b03f31f70d0e09",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9eb01b641f26ef2bd7dcaae7472f7127d1cac60a",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "127c0d25f1e51ffed8d246d67d6db5c5e8065a7b",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/binding.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c0d4325fe2b8bf2cacd939c8e622c7b25f75b452",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/binding_string.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bef22d8db64051c6962c8312ea35044946140fd1",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/constant.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "90faf5bef360549da1470e9d6e44d9db213cef9a",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/enum_class.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "688c573cb31ca47a455ca3a3d57aef61edb7f133",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/func.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8729785f21801ad1c6e707728e322d3852b7f078",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/global.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8ae4a06ebb695baed0f59b4ed125c2896c5033df",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/library.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "391dc2ed2297b6f3c3bf762e0bbb3640df2739e9",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/struc.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b393d3495518ac055b0e8fb8fa1a8aca3fd9ab89",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/type.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ea9568f373f10eb84b8691f93d14e91ecb8b3e5b",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/typedef.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cc4496ff9c2b89ff0421cba66713dd1d40f11415",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/code_generator/writer.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "990e137dd5e8ef6276773ae2512ad89f7178afb4",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/config_provider.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "89f55c204a0497dd8728939f85d5f99b2bda6eb4",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/config_provider/config.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b35dc0b228b2a32acac029c137d88b809c7bfb99",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/config_provider/filter.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "683d53dd6e3dfdcfb7f347a78fbf9aafc959eb99",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/config_provider/spec_utils.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e4dc2c94465d2bc4741fef78b23d1f9480f4d98c",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f70197106ec258cc64bee625a0aba6ed635d3475",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "900c0ff5f469e874811bc91634203a4d8977aeeb",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/data.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "23698a5f45964036469239a3eb014cbb53ceb125",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/includer.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eac3c93c415c2ca9b0fa346d886fcaf764dbe0c9",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/parser.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "19fd1cede3eff67b85b7801df4ff2397b47b8250",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/sub_parsers/enumdecl_parser.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "62803f649139c220e065b8859668e4d0efbb64bd",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/sub_parsers/functiondecl_parser.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "27d8efddab73fe113e40bd0ce0ebe37890d525c2",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/sub_parsers/structdecl_parser.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c68b5e3320a27b08e6838fbcdda11d1fa406e05f",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/sub_parsers/typedefdecl_parser.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8632b259c02aab0320ef565f2df5a229c7fe7247",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/translation_unit_parser.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6dd175f4fcce62098cd513ec7e21e1ddee496866",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/type_extractor/cxtypekindmap.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db374876f26464ded965bf93645a2128133c1be2",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/type_extractor/extractor.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "254a95051388bff20049e749ee35244e77b08e46",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/header_parser/utils.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d9ff17ad872846da7488d7d45cd3549a9171118",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/lib/src/strings.dart"
    },
    {
      "type": "modify",
      "old_id": "7711721dc4d2cb5d788dc517ee71ffdb055c2253",
      "old_mode": 33188,
      "old_path": "pkgs/ffigen/pubspec.yaml",
      "new_id": "64ecfbde7f566ca7478505efbec7f4a8d1b6a9b8",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/pubspec.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "431283724ecd159dc7456d61d6ac901961d6ef52",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/code_generator_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "306ff0f934d034090e7ac8d8f694660fa17b1ddb",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/header_parser_tests/functions.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f9e261e80d35ec68b54971725fdceda33f0cdea0",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/header_parser_tests/functions_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "25258f0512132f7651a6b254e7e38b6b8d683888",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/native_functions_test/build_test_dylib.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4af2defbf19916facb4f63afdb85caf9075c51fe",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/native_functions_test/config.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "544357e3ac8eabd95782a8ced9f1d1d11e4f8c27",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/native_functions_test/native_functions.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f2d6f914a8532135a4bcc414a1a46d42114ab1ba",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/native_functions_test/native_functions.def"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a9eb1e9b75b7316cf269f1e333a23c3f57071b00",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/native_functions_test/native_functions_bindings.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b63fc35e4d9781b9181dea76c9df948c51c1ac63",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/test/native_functions_test/native_functions_test.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "53d01a30bb44f0926ad299add5918ea33739cd79",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/third_party/cjson_library/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "815ba4fa8acf1b215d2663bb3b7746aecc0549b7",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/third_party/cjson_library/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a198d6687cf5b0f542754fb4f75c31dece4e98d8",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/third_party/cjson_library/cJSON.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d28b2449909d3ea65a069b77af4594dcbc45c6f",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/third_party/cjson_library/cJSON.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "575a4400af0ece7712e8ecaa2ebee4f3ec9def69",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/tool/libclang_config.yaml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2b64ac7f5f7422f2d5264bc82741ac2f5ae59e0b",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/tool/wrapped_libclang/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20971b1dad46a8b24f1ff7c9822874f84b1795d3",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/tool/wrapped_libclang/build.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2e0e375cf29b1c7fe34d1272d411f216187a1ab5",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/tool/wrapped_libclang/wrapper.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "36902ae7ba050676f571c60dd5cf354faeef66dd",
      "new_mode": 33188,
      "new_path": "pkgs/ffigen/tool/wrapped_libclang/wrapper.def"
    }
  ]
}
