{
  "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_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_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"
        ]
      ],
      [
        "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"
        ]
      ],
      [
        "patch",
        [
          "git_patch_convenient_from_diff"
        ]
      ],
      [
        "reflog_entry",
        [
          "git_reflog_entry_committer",
          "git_reflog_entry_id_new",
          "git_reflog_entry_id_old",
          "git_reflog_entry_message"
        ]
      ],
      [
        "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_filter",
        {
          "type": "struct",
          "fields": [
            {
              "type": "unsigned int",
              "name": "version"
            },
            {
              "type": "const char *",
              "name": "attributes"
            },
            {
              "type": "git_filter_init_fn",
              "name": "initialize",
              "ignore": true
            },
            {
              "type": "git_filter_shutdown_fn",
              "name": "shutdown",
              "ignore": true
            },
            {
              "type": "git_filter_check_fn",
              "name": "check",
              "ignore": true
            },
            {
              "type": "git_filter_apply_fn",
              "name": "apply",
              "ignore": true
            },
            {
              "type": "git_filter_stream_fn",
              "name": "stream",
              "ignore": true
            },
            {
              "type": "git_filter_cleanup_fn",
              "name": "cleanup",
              "ignore": true
            }
          ]
        }
      ],
      [
        "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": "update_fetchhead",
              "type": "int"
            },
            {
              "name": "download_tags",
              "type": "git_remote_autotag_option_t"
            }
          ],
          "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"
            }
          ],
          "used": {
            "needs": [
              "git_rebase_init_options",
              "git_checkout_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_transport_cb",
              "name": "transport",
              "ignore": true
            },
            {
              "type": "void *",
              "name": "payload"
            }
          ],
          "used": {
            "needs": [
              "git_remote_init_callbacks"
            ]
          }
        }
      ],
      [
        "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"
            ]
          }
        }
      ]
    ]
  },
  "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"
      ]
    },
    "odb": {
      "functions": [
        "git_odb_object_data",
        "git_odb_object_dup",
        "git_odb_object_free",
        "git_odb_object_id",
        "git_odb_object_size",
        "git_odb_object_type"
      ]
    },
    "merge": {
      "functions": [
        "git_merge_head_free",
        "git_merge_head_from_fetchhead",
        "git_merge_head_from_id",
        "git_merge_head_from_ref",
        "git_merge_head_id"
      ]
    },
    "reflog": {
      "functions": [
        "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_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": {
    "stash": [
      "git_stash_save"
    ]
  }
}
