{
  "types": {
    "git_cred_default": {
      "decl": "git_cred"
    },
    "git_diff_hunk": {
      "decl": [
        "int old_start",
        "int old_lines",
        "int new_start",
        "int new_lines",
        "size_t header_len",
        "char header[128]"
      ],
      "fields": [
        {
          "name": "old_start",
          "type": "int"
        },
        {
          "name": "old_lines",
          "type": "int"
        },
        {
          "name": "new_start",
          "type": "int"
        },
        {
          "name": "new_lines",
          "type": "int"
        },
        {
          "name": "header_len",
          "type": "size_t"
        },
        {
          "name": "header",
          "type": "char *"
        }
      ]
    },
    "git_diff_line": {
      "decl": [
        "int origin",
        "int old_lineno",
        "int new_lineno",
        "int num_lines",
        "size_t, content_len",
        "git_off_t content_offset",
        "const char * content"
      ],
      "fields": [
        {
          "name": "origin",
          "type": "int"
        },
        {
          "name": "old_lineno",
          "type": "int"
        },
        {
          "name": "new_lineno",
          "type": "int"
        },
        {
          "name": "num_lines",
          "type": "int"
        },
        {
          "name": "content_len",
          "type": "size_t"
        },
        {
          "name": "content_offset",
          "type": "git_off_t"
        },
        {
          "name": "content",
          "type": "const char *"
        }
      ]
    },
    "git_note_iterator": {
      "decl": "git_iterator"
    }
  },
  "new" : {
    "functions": {
      "git_clone": {
        "isManual": true,
        "cFile": "generate/templates/manual/clone/clone.cc",
        "isAsync": true,
        "isPrototypeMethod": false,
        "group": "clone"
      },
      "git_commit_extract_signature": {
        "args": [
          {
            "name": "signature",
            "type": "git_buf"
          },
          {
            "name": "signed_data",
            "type": "git_buf"
          },
          {
            "name": "repo",
            "type": "git_repository *"
          },
          {
            "name": "commit_id",
            "type": "git_oid *"
          },
          {
            "name": "field",
            "type": "char *"
          }
        ],
        "type": "function",
        "isManual": true,
        "cFile": "generate/templates/manual/commit/extract_signature.cc",
        "isAsync": true,
        "isPrototypeMethod": false,
        "group": "commit",
        "return": {
          "type": "int",
          "isErrorCode": true
        }
      },
      "git_filter_list_load": {
        "isManual": true,
        "cFile": "generate/templates/manual/filter_list/load.cc",
        "isAsync": true,
        "isPrototypeMethod": false,
        "group": "filter_list"
      },
      "git_patch_convenient_from_diff": {
        "args": [
          {
            "name": "diff",
            "type": "git_diff *"
          },
          {
            "name": "out",
            "type": "std::vector<PatchData*> *"
          }
        ],
        "type": "function",
        "isManual": true,
        "cFile": "generate/templates/manual/patches/convenient_patches.cc",
        "isAsync": true,
        "isPrototypeMethod": false,
        "group": "patch",
        "return": {
          "type": "int",
          "isErrorCode": true
        }
      },
      "git_rebase_next": {
        "type": "function",
        "file": "rebase.h",
        "args": [
          {
            "name": "out",
            "type": "git_rebase_operation **"
          },
          {
            "name": "rebase",
            "type": "git_rebase *"
          }
        ],
        "return": {
          "type": "int"
        },
        "group": "rebase"
      },
      "git_remote_reference_list": {
        "args": [
          {
            "name": "out",
            "type": "std::vector<git_remote_head*> *"
          },
          {
            "name": "remote",
            "type": "git_remote *"
          }
        ],
        "type": "function",
        "isManual": true,
        "cFile": "generate/templates/manual/remote/ls.cc",
        "isAsync": true,
        "isPrototypeMethod": true,
        "group": "remote",
        "return": {
          "type": "int",
          "isErrorCode": true
        }
      },
      "git_reset": {
        "type": "function",
        "file": "reset.h",
        "args": [
          {
            "name": "repo",
            "type": "git_repository *"
          },
          {
            "name": "target",
            "type": "git_object *"
          },
          {
            "name": "reset_type",
            "type": "git_reset_t"
          },
          {
            "name": "checkout_opts",
            "type": "git_checkout_options *"
          }
        ],
        "return": {
          "type": "int"
        },
        "group": "reset"
      },
      "git_revwalk_fast_walk": {
        "args": [
          {
            "name": "max_count",
            "type": "int"
          },
          {
            "name": "out",
            "type": "std::vector<git_oid*> *"
          },
          {
            "name": "walk",
            "type": "git_revwalk *"
          }
        ],
        "type": "function",
        "isManual": true,
        "cFile": "generate/templates/manual/revwalk/fast_walk.cc",
        "isAsync": true,
        "isPrototypeMethod": true,
        "group": "revwalk",
        "return": {
          "type": "int",
          "isErrorCode": true
        }
      },
      "git_revwalk_file_history_walk": {
        "args": [
          {
            "name": "file_path",
            "type": "const char *"
          },
          {
            "name": "max_count",
            "type": "int"
          },
          {
            "name": "out",
            "type": "std::vector< std::pair<git_commit *, std::pair<char *, git_delta_t> > *> *"
          },
          {
            "name": "walk",
            "type": "git_revwalk *"
          }
        ],
        "type": "function",
        "isManual": true,
        "cFile": "generate/templates/manual/revwalk/file_history_walk.cc",
        "isAsync": true,
        "isPrototypeMethod": true,
        "group": "revwalk",
        "return": {
          "type": "int",
          "isErrorCode": true
        }
      },
      "git_stash_save": {
        "type": "function",
        "file": "stash.h",
        "args": [
          {
            "name": "out",
            "type": "git_oid *"
          },
          {
            "name": "repo",
            "type": "git_repository *"
          },
          {
            "name": "stasher",
            "type": "const git_signature *"
          },
          {
            "name": "message",
            "type": "const char *"
          },
          {
            "name": "flags",
            "type": "unsigned int"
          }
        ],
        "return": {
          "type": "int"
        },
        "group": "stash"
      }
    },
    "groups": [
      [
        "annotated_commit",
        [
          "git_annotated_commit_free",
          "git_annotated_commit_from_fetchhead",
          "git_annotated_commit_from_ref",
          "git_annotated_commit_from_revspec",
          "git_annotated_commit_id",
          "git_annotated_commit_lookup"
        ]
      ],
      [
        "diff_stats",
        [
          "git_diff_stats_files_changed",
          "git_diff_stats_insertions",
          "git_diff_stats_deletions",
          "git_diff_stats_to_buf",
          "git_diff_stats_free"
        ]
      ],
      [
        "filter_list",
        [
          "git_filter_list_apply_to_blob",
          "git_filter_list_apply_to_data",
          "git_filter_list_apply_to_file",
          "git_filter_list_free",
          "git_filter_list_load"
        ]
      ],
      [
        "filter_source",
        [
          "git_filter_source_repo",
          "git_filter_source_path",
          "git_filter_source_filemode",
          "git_filter_source_id",
          "git_filter_source_mode",
          "git_filter_source_flags"
        ]
      ],
      [
        "index_name_entry",
        [
          "git_index_name_add",
          "git_index_name_clear",
          "git_index_name_entrycount",
          "git_index_name_get_byindex"
        ]
      ],
      [
        "index_reuc_entry",
        [
          "git_index_reuc_add",
          "git_index_reuc_clear",
          "git_index_reuc_entrycount",
          "git_index_reuc_find",
          "git_index_reuc_get_byindex",
          "git_index_reuc_get_bypath",
          "git_index_reuc_remove"
        ]
      ],
      [
        "merge_file_result",
        [
          "git_merge_file_result_free"
        ]
      ],
      [
        "odb_object",
        [
          "git_odb_object_data",
          "git_odb_object_dup",
          "git_odb_object_free",
          "git_odb_object_id",
          "git_odb_object_size",
          "git_odb_object_type"
        ]
      ],
      [
        "odb_stream",
        [
          "git_odb_stream_finalize_write",
          "git_odb_stream_free",
          "git_odb_stream_read",
          "git_odb_stream_write"
        ]
      ],
      [
        "oid_shorten",
        [
          "git_oid_shorten_add",
          "git_oid_shorten_free",
          "git_oid_shorten_new"
        ]
      ],
      [
        "patch",
        [
          "git_patch_convenient_from_diff"
        ]
      ],
      [
        "pathspec_match_list",
        [
          "git_pathspec_match_list_diff_entry",
          "git_pathspec_match_list_entry",
          "git_pathspec_match_list_entrycount",
          "git_pathspec_match_list_failed_entry",
          "git_pathspec_match_list_failed_entrycount",
          "git_pathspec_match_list_free"
        ]
      ],
      [
        "reflog_entry",
        [
          "git_reflog_entry_committer",
          "git_reflog_entry_id_new",
          "git_reflog_entry_id_old",
          "git_reflog_entry_message"
        ]
      ],
      [
        "remote",
        [
          "git_remote_reference_list"
        ]
      ],
      [
        "revwalk",
        [
          "git_revwalk_fast_walk",
          "git_revwalk_file_history_walk"
        ]
      ],
      [
        "status_list",
        [
          "git_status_list_entrycount",
          "git_status_list_free",
          "git_status_list_get_perfdata",
          "git_status_list_new"
        ]
      ],
      [
        "tree_entry",
        [
          "git_tree_entry_filemode",
          "git_tree_entry_filemode_raw",
          "git_tree_entry_free",
          "git_tree_entry_id",
          "git_tree_entry_name",
          "git_tree_entry_to_object",
          "git_tree_entry_type"
        ]
      ]
    ],
    "types": [
      [
        "git_stash_apply_progress_t",
        {
          "type": "enum",
          "fields": [
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_NONE",
              "value": 0
            },
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_LOADING_STASH",
              "value": 1
            },
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_ANALYZE_INDEX",
              "value": 2
            },
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_ANALYZE_MODIFIED",
              "value": 3
            },
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_ANALYZE_UNTRACKED",
              "value": 4
            },
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_CHECKOUT_UNTRACKED",
              "value": 5
            },
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_CHECKOUT_MODIFIED",
              "value": 6
            },
            {
              "type": "int",
              "name": "GIT_STASH_APPLY_PROGRESS_DONE",
              "value": 7
            }
          ]
        }
      ],
      [
        "git_config_entry",
        {
          "fields": [
            {
              "type": "const char *",
              "name": "name"
            },
            {
              "type": "const char *",
              "name": "value"
            },
            {
              "type": "git_config_level_t",
              "name": "level"
            },
            {
              "type": "void (*)(struct git_config_entry *)",
              "name": "free",
              "ignore": true
            }
          ]
        }
      ],
      [
        "git_describe_format_options",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "unsigned int",
              "name": "abbreviated_size"
            },
            {
              "type": "int",
              "name": "always_use_long_format"
            },
            {
              "type": "const char *",
              "name": "dirty_suffix"
            }
          ],
          "used": {
            "needs": [
              "git_describe_init_format_options"
            ]
          }
        }
      ],
      [
        "git_describe_options",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "unsigned int",
              "name": "max_candidates_tags"
            },
            {
              "type": "unsigned int",
              "name": "describe_strategy"
            },
            {
              "type": "const char *",
              "name": "pattern"
            },
            {
              "type": "int",
              "name": "only_follow_first_parent"
            },
            {
              "type": "int",
              "name": "show_commit_oid_as_fallback"
            }
          ],
          "used": {
            "needs": [
              "git_describe_init_options"
            ]
          }
        }
      ],
      [
        "git_filter",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "const char *",
              "name": "attributes"
            },
            {
              "type": "git_filter_init_fn",
              "name": "initialize"
            },
            {
              "type": "git_filter_shutdown_fn",
              "name": "shutdown"
            },
            {
              "type": "git_filter_check_fn",
              "name": "check"
            },
            {
              "type": "git_filter_apply_fn",
              "name": "apply"
            },
            {
              "type": "git_filter_cleanup_fn",
              "name": "cleanup"
            }
          ]
        }
      ],
      [
        "git_status_entry",
        {
          "fields": [
            {
              "type": "git_status_t",
              "name": "status"
            },
            {
              "type": "git_diff_delta *",
              "name": "head_to_index"
            },
            {
              "type": "git_diff_delta *",
              "name": "index_to_workdir"
            }
          ]
        }
      ],
      [
        "git_diff_perfdata",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "size_t",
              "name": "stat_calls"
            },
            {
              "type": "size_t",
              "name": "oid_calculations"
            }
          ]
        }
      ],
      [
        "git_fetch_options",
        {
          "type": "struct",
          "fields": [
            {
              "name": "version",
              "type": "int"
            },
            {
              "name": "callbacks",
              "type": "git_remote_callbacks"
            },
            {
              "name": "prune",
              "type": "git_fetch_prune_t"
            },
            {
              "name": "proxy_opts",
              "type": "git_proxy_options"
            },
            {
              "name": "update_fetchhead",
              "type": "int"
            },
            {
              "name": "download_tags",
              "type": "git_remote_autotag_option_t"
            },
            {
              "name": "custom_headers",
              "type": "git_strarray"
            }
          ],
          "used": {
            "needs": [
              "git_fetch_init_options",
              "git_remote_init_callbacks"
            ]
          }
        }
      ],
      [
        "git_fetch_prune_t",
        {
          "type": "enum",
          "fields": [
            {
              "type": "int",
              "name": "git_fetch_prune_unspecified",
              "value": 0
            },
            {
              "type": "int",
              "name": "git_fetch_prune",
              "value": 1
            },
            {
              "type": "int",
              "name": "git_fetch_no_prune",
              "value": 2
            }
          ]
        }
      ],
      [
        "git_off_t",
        {
          "type": "enum"
        }
      ],
      [
        "git_rebase_options",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "int",
              "name": "quiet"
            },
            {
              "type": "const char *",
              "name": "rewrite_notes_ref"
            },
            {
              "type": "git_checkout_options",
              "name": "checkout_options"
            },
            {
              "type": "git_merge_options",
              "name": "merge_options"
            },
            {
              "type": "git_commit_signing_cb",
              "name": "signing_cb"
            },
            {
              "type": "void *",
              "name": "payload"
            }
          ],
          "used": {
            "needs": [
              "git_rebase_init_options",
              "git_checkout_init_options",
              "git_merge_init_options"
            ]
          }
        }
      ],
      [
        "git_remote_autotag_option_t",
        {
          "type": "enum"
        }
      ],
      [
        "git_remote_callbacks",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "git_transport_message_cb",
              "name": "sideband_progress"
            },
            {
              "type": "git_cred_acquire_cb",
              "name": "credentials"
            },
            {
              "type": "git_transport_certificate_check_cb",
              "name": "certificate_check"
            },
            {
              "type": "git_transfer_progress_cb",
              "name": "transfer_progress"
            },
            {
              "type": "git_push_transfer_progress",
              "name": "push_transfer_progress",
              "isCallback": true
            },
            {
              "type": "git_transport_cb",
              "name": "transport",
              "ignore": true
            },
            {
              "type": "git_push_update_reference_cb",
              "name": "push_update_reference"
            },
            {
              "type": "void *",
              "name": "payload"
            }
          ],
          "used": {
            "needs": [
              "git_remote_init_callbacks"
            ]
          }
        }
      ],
      [
        "git_remote_head",
        {
          "types": "struct",
          "fields": [
            {
              "type": "int",
              "name": "local"
            },
            {
              "type": "git_oid",
              "name": "oid"
            },
            {
              "type": "git_oid",
              "name": "loid"
            },
            {
              "type": "char *",
              "name": "name"
            },
            {
              "type": "char *",
              "name": "symref_target"
            }
          ],
          "used": {
            "needs": [
              "git_remote_reference_list"
            ]
          }
        }
      ],
      [
        "git_time_t",
        {
          "type": "enum"
        }
      ],
      [
        "git_trace_level_t",
        {
          "type": "enum"
        }
      ],
      [
        "git_status_options",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "git_status_show_t",
              "name": "show"
            },
            {
              "type": "git_status_opt_t",
              "name": "flags"
            },
            {
              "type": "git_strarray",
              "name": "pathspec"
            }
          ],
          "used": {
            "needs": [
              "git_status_init_options",
              "git_status_foreach_ext",
              "git_status_list_new"
            ]
          }
        }
      ],
      [
        "git_stash_apply_options",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "git_stash_apply_flags",
              "name": "flags"
            },
            {
              "type": "git_checkout_options",
              "name": "checkout_options"
            },
            {
              "type": "git_stash_apply_progress_cb",
              "name": "progress_cb"
            },
            {
              "type": "void *",
              "name": "progress_payload"
            }
          ],
          "used": {
            "needs": [
              "git_stash_apply_init_options",
              "git_checkout_init_options"
            ]
          }
        }
      ],
      [
        "git_worktree_add_options",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "int",
              "name": "lock"
            }
          ]
        }
      ],
      [
        "git_worktree_prune_t",
        {
          "type": "enum",
          "fields": [
            {
              "type": "unsigned int",
              "name": "git_worktree_prune_valid",
              "value": 1
            },
            {
              "type": "unsigned int",
              "name": "git_worktree_prune_locked",
              "value": 2
            },
            {
              "type": "unsigned int",
              "name": "git_worktree_prune_working_tree",
              "value": 4
            }
          ]
        }
      ],
      [
        "git_worktree_prune_options",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "uint32_t",
              "name": "flags"
            }
          ]
        }
      ]
    ]
  },
  "remove": {
    "annotated": {
      "functions": [
        "git_annotated_commit_free",
        "git_annotated_commit_from_fetchhead",
        "git_annotated_commit_from_ref",
        "git_annotated_commit_from_revspec",
        "git_annotated_commit_id",
        "git_annotated_commit_lookup"
      ]
    },
    "diff": {
      "functions": [
        "git_diff_stats_files_changed",
        "git_diff_stats_insertions",
        "git_diff_stats_deletions",
        "git_diff_stats_to_buf",
        "git_diff_stats_free"
      ]
    },
    "index": {
      "functions": [
        "git_index_name_add",
        "git_index_name_clear",
        "git_index_name_entrycount",
        "git_index_name_get_byindex",
        "git_index_reuc_add",
        "git_index_reuc_clear",
        "git_index_reuc_entrycount",
        "git_index_reuc_find",
        "git_index_reuc_get_byindex",
        "git_index_reuc_get_bypath",
        "git_index_reuc_remove"
      ]
    },
    "merge": {
      "functions": [
        "git_merge_driver_lookup",
        "git_merge_driver_register",
        "git_merge_driver_source_ancestor",
        "git_merge_driver_source_file_options",
        "git_merge_driver_source_ours",
        "git_merge_driver_source_repo",
        "git_merge_driver_source_theirs",
        "git_merge_driver_unregister",
        "git_merge_file_result_free",
        "git_merge_head_free",
        "git_merge_head_from_fetchhead",
        "git_merge_head_from_id",
        "git_merge_head_from_ref",
        "git_merge_head_id"
      ]
    },
    "message": {
      "functions": [
        "git_message_trailer_array_free"
      ]
    },
    "odb": {
      "functions": [
        "git_odb_backend_loose",
        "git_odb_backend_malloc",
        "git_odb_backend_one_pack",
        "git_odb_backend_pack",
        "git_odb_object_data",
        "git_odb_object_dup",
        "git_odb_object_free",
        "git_odb_object_id",
        "git_odb_object_size",
        "git_odb_object_type",
        "git_odb_stream_finalize_write",
        "git_odb_stream_free",
        "git_odb_stream_read",
        "git_odb_stream_write"
      ]
    },
    "oid": {
      "functions": [
        "git_oid_shorten_add",
        "git_oid_shorten_free",
        "git_oid_shorten_new"
      ]
    },
    "pathspec": {
      "functions": [
        "git_pathspec_match_list_diff_entry",
        "git_pathspec_match_list_entry",
        "git_pathspec_match_list_entrycount",
        "git_pathspec_match_list_failed_entry",
        "git_pathspec_match_list_failed_entrycount",
        "git_pathspec_match_list_free"
      ]
    },
    "reflog": {
      "functions": [
        "git_reflog_entry__alloc",
        "git_reflog_entry__free",
        "git_reflog_entry_committer",
        "git_reflog_entry_id_new",
        "git_reflog_entry_id_old",
        "git_reflog_entry_message"
      ]
    },
    "status": {
      "functions": [
        "git_status_list_entrycount",
        "git_status_list_free",
        "git_status_list_get_perfdata",
        "git_status_list_new"
      ]
    },
    "tree": {
      "functions": [
        "git_tree_entry_dup",
        "git_tree_entry_filemode",
        "git_tree_entry_filemode_raw",
        "git_tree_entry_free",
        "git_tree_entry_id",
        "git_tree_entry_name",
        "git_tree_entry_to_object",
        "git_tree_entry_type"
      ]
    }
  },
  "groups": {}
}
