package git2_bindings import "core:c" Error :: struct { message: cstring, klass: Klass, } Klass :: enum c.int { None = 0, Nomemory = 1, Os = 2, Invalid = 3, Reference = 4, Zlib = 5, Repository = 6, Config = 7, Regex = 8, Odb = 9, Index = 10, Object = 11, Net = 12, Tag = 13, Tree = 14, Indexer = 15, Ssl = 16, Submodule = 17, Thread = 18, Stash = 19, Checkout = 20, Fetchhead = 21, Merge = 22, Ssh = 23, Filter = 24, Revert = 25, Callback = 26, Cherrypick = 27, Describe = 28, Rebase = 29, Filesystem = 30, Patch = 31, Worktree = 32, Sha = 33, Http = 34, Internal = 35, Grafts = 36, } Result :: enum c.int { Ok = 0, Error = -1, Enotfound = -3, Eexists = -4, Eambiguous = -5, Ebufs = -6, Euser = -7, Ebarerepo = -8, Eunbornbranch = -9, Eunmerged = -10, Enonfastforward = -11, Einvalidspec = -12, Econflict = -13, Elocked = -14, Emodified = -15, Eauth = -16, Ecertificate = -17, Eapplied = -18, Epeel = -19, Eeof = -20, Einvalid = -21, Euncommitted = -22, Edirectory = -23, Emergeconflict = -24, Passthrough = -30, Iterover = -31, Retry = -32, Emismatch = -33, Eindexdirty = -34, Eapplyfail = -35, Eowner = -36, Timeout = -37, Eunchanged = -38, Enotsupported = -39, Ereadonly = -40, } Repository :: distinct rawptr Reference :: distinct rawptr Reference_Iterator :: distinct rawptr Blob :: distinct rawptr Tree_Entry :: distinct rawptr Tree_Builder :: distinct rawptr Config :: distinct rawptr Config_Iterator :: distinct rawptr Index :: distinct rawptr Index_Iterator :: distinct rawptr Index_Conflict_Iterator :: distinct rawptr Revwalk :: distinct rawptr Remote :: distinct rawptr Reflog :: distinct rawptr Reflog_Entry :: distinct rawptr Branch_Iterator :: distinct rawptr Annotated_Commit :: distinct rawptr Status_List :: distinct rawptr Diff :: distinct rawptr Diff_Stats :: distinct rawptr Patch :: distinct rawptr Blame :: distinct rawptr Odb :: distinct rawptr Odb_Object :: distinct rawptr Note :: distinct rawptr Note_Iterator :: distinct rawptr Packbuilder :: distinct rawptr Transaction :: distinct rawptr Worktree :: distinct rawptr Mailmap :: distinct rawptr Submodule :: distinct rawptr Rebase :: distinct rawptr Oid_Shorten :: distinct rawptr Object :: distinct rawptr Commit :: Object Tree :: Object Tag :: Object Oid :: struct { id: [20]u8, } Signature_Time :: struct { time: Time, offset: c.int, sign: u8, } Time :: c.int64_t Signature :: struct { name: cstring, email: cstring, sig_when: Signature_Time, } Object_Type :: enum c.int { Any = -2, Invalid = -1, Commit = 1, Tree = 2, Blob = 3, Tag = 4, Ofs_Delta = 6, Ref_Delta = 7, } Reference_Type :: enum c.int { Invalid = 0, Direct = 1, Symbolic = 2, All = 3, } Branch_Type :: enum c.int { Local = 1, Remote = 2, All = 3, } Filemode :: enum c.int { Unreadable = 0o000000, Tree = 0o040000, Blob = 0o100644, Blob_Executable = 0o100755, Link = 0o120000, Commit = 0o160000, } Buf :: struct { ptr: [^]u8, reserved: c.size_t, size: c.size_t, } Strarray :: struct { strings: [^]cstring, count: c.size_t, } Oidarray :: struct { ids: [^]Oid, count: c.size_t, } Index_Time :: struct { seconds: c.int32_t, nanoseconds: c.uint32_t, } Index_Entry :: struct { ctime: Index_Time, mtime: Index_Time, dev: c.uint32_t, ino: c.uint32_t, mode: c.uint32_t, uid: c.uint32_t, gid: c.uint32_t, file_size: c.uint32_t, id: Oid, flags: c.uint16_t, flags_extended: c.uint16_t, path: cstring, } // --- Diff types --- Delta_Type :: enum c.int { Unmodified = 0, Added = 1, Deleted = 2, Modified = 3, Renamed = 4, Copied = 5, Ignored = 6, Untracked = 7, Typechange = 8, Unreadable = 9, Conflicted = 10, } Diff_Flag :: enum c.uint32_t { Binary = 0, Not_Binary = 1, Valid_Id = 2, Exists = 3, Valid_Size = 4, } Diff_Flags :: distinct bit_set[Diff_Flag;c.uint32_t] Diff_File :: struct { id: Oid, path: cstring, size: c.uint64_t, flags: c.uint32_t, mode: c.uint16_t, id_abbrev: c.uint16_t, } Diff_Delta :: struct { status: Delta_Type, flags: c.uint32_t, similarity: c.uint16_t, nfiles: c.uint16_t, old_file: Diff_File, new_file: Diff_File, } Diff_Hunk :: struct { old_start: c.int, old_lines: c.int, new_start: c.int, new_lines: c.int, header_len: c.size_t, header: [128]u8, } Diff_Line :: struct { origin: u8, old_lineno: c.int, new_lineno: c.int, num_lines: c.int, content_len: c.size_t, content_offset: c.int64_t, content: [^]u8, } Diff_Format :: enum c.int { Patch = 1, Patch_Header = 2, Raw = 3, Name_Only = 4, Name_Status = 5, Patch_Id = 6, } Diff_Stats_Format :: enum c.uint { None = 0, Full = 1, Short = 2, Number = 4, Include_Summary = 8, } Status_Flags :: distinct c.uint STATUS_CURRENT: Status_Flags : 0 STATUS_INDEX_NEW: Status_Flags : (1 << 0) STATUS_INDEX_MODIFIED: Status_Flags : (1 << 1) STATUS_INDEX_DELETED: Status_Flags : (1 << 2) STATUS_INDEX_RENAMED: Status_Flags : (1 << 3) STATUS_INDEX_TYPECHANGE: Status_Flags : (1 << 4) STATUS_WT_NEW: Status_Flags : (1 << 7) STATUS_WT_MODIFIED: Status_Flags : (1 << 8) STATUS_WT_DELETED: Status_Flags : (1 << 9) STATUS_WT_TYPECHANGE: Status_Flags : (1 << 10) STATUS_WT_RENAMED: Status_Flags : (1 << 11) STATUS_WT_UNREADABLE: Status_Flags : (1 << 12) STATUS_IGNORED: Status_Flags : (1 << 14) STATUS_CONFLICTED: Status_Flags : (1 << 15) Status_Show :: enum c.int { Index_And_Workdir = 0, Index_Only = 1, Workdir_Only = 2, } Status_Options :: struct { version: c.uint, show: Status_Show, flags: c.uint, pathspec: Strarray, baseline: Tree, rename_threshold: c.uint16_t, } Status_Entry :: struct { status: Status_Flags, head_to_index: ^Diff_Delta, index_to_workdir: ^Diff_Delta, } Sort_Flags :: distinct c.uint SORT_NONE: Sort_Flags : 0 SORT_TOPOLOGICAL: Sort_Flags : (1 << 0) SORT_TIME: Sort_Flags : (1 << 1) SORT_REVERSE: Sort_Flags : (1 << 2) Checkout_Strategy :: distinct c.uint CHECKOUT_NONE: Checkout_Strategy : 0 CHECKOUT_SAFE: Checkout_Strategy : (1 << 0) CHECKOUT_FORCE: Checkout_Strategy : (1 << 1) CHECKOUT_RECREATE_MISSING: Checkout_Strategy : (1 << 2) CHECKOUT_ALLOW_CONFLICTS: Checkout_Strategy : (1 << 3) CHECKOUT_REMOVE_UNTRACKED: Checkout_Strategy : (1 << 4) CHECKOUT_REMOVE_IGNORED: Checkout_Strategy : (1 << 5) CHECKOUT_UPDATE_ONLY: Checkout_Strategy : (1 << 6) CHECKOUT_DONT_UPDATE_INDEX: Checkout_Strategy : (1 << 7) CHECKOUT_NO_REFRESH: Checkout_Strategy : (1 << 8) CHECKOUT_SKIP_UNMERGED: Checkout_Strategy : (1 << 9) CHECKOUT_USE_OURS: Checkout_Strategy : (1 << 10) CHECKOUT_USE_THEIRS: Checkout_Strategy : (1 << 11) CHECKOUT_DISABLE_PATHSPEC_MATCH: Checkout_Strategy : (1 << 12) CHECKOUT_SKIP_LOCKED_DIRECTORIES: Checkout_Strategy : (1 << 18) CHECKOUT_DONT_OVERWRITE_IGNORED: Checkout_Strategy : (1 << 19) CHECKOUT_CONFLICT_STYLE_MERGE: Checkout_Strategy : (1 << 20) CHECKOUT_CONFLICT_STYLE_DIFF3: Checkout_Strategy : (1 << 21) CHECKOUT_DONT_REMOVE_EXISTING: Checkout_Strategy : (1 << 22) CHECKOUT_DONT_WRITE_INDEX: Checkout_Strategy : (1 << 23) CHECKOUT_DRY_RUN: Checkout_Strategy : (1 << 24) CHECKOUT_CONFLICT_STYLE_ZDIFF3: Checkout_Strategy : (1 << 25) Checkout_Options :: struct { version: c.uint, checkout_strategy: Checkout_Strategy, disable_filters: c.int, dir_mode: c.uint, file_mode: c.uint, file_open_flags: c.int, notify_flags: c.uint, notify_cb: rawptr, notify_payload: rawptr, progress_cb: rawptr, progress_payload: rawptr, paths: Strarray, baseline: Tree, baseline_index: Index, target_directory: cstring, ancestor_label: cstring, our_label: cstring, their_label: cstring, perfdata_cb: rawptr, perfdata_payload: rawptr, } Merge_Analysis :: enum c.int { None = 0, Normal = 1, Up_To_Date = 2, Fastforward = 4, Unborn = 8, } Merge_Preference :: enum c.int { None = 0, No_Fastforward = 1, Fastforward_Only = 2, } Clone_Local :: enum c.int { Auto = 0, Local = 1, No_Local = 2, No_Links = 3, } Submodule_Update :: enum c.int { Checkout = 1, Rebase = 2, Merge = 3, None = 4, Default = 0, } Submodule_Ignore :: enum c.int { Unspecified = -1, None = 1, Untracked = 2, Dirty = 3, All = 4, } Submodule_Recurse :: enum c.int { No = 0, Yes = 1, Ondemand = 2, } Reset_Type :: enum c.int { Soft = 1, Mixed = 2, Hard = 3, } Stash_Flags :: distinct c.uint STASH_DEFAULT: Stash_Flags : 0 STASH_KEEP_INDEX: Stash_Flags : (1 << 0) STASH_INCLUDE_UNTRACKED: Stash_Flags : (1 << 1) STASH_INCLUDE_IGNORED: Stash_Flags : (1 << 2) STASH_KEEP_ALL: Stash_Flags : (1 << 3) Blame_Hunk :: struct { lines_in_hunk: c.size_t, final_commit_id: Oid, final_start_line_number: c.size_t, final_signature: ^Signature, final_committer: ^Signature, orig_commit_id: Oid, orig_path: cstring, orig_start_line_number: c.size_t, orig_signature: ^Signature, orig_committer: ^Signature, boundary: u8, } Describe_Strategy :: enum c.uint { Default = 0, Tags = 1, All = 2, } Repository_State :: enum c.int { None = 0, Merge = 1, Revert = 2, Revert_Sequence = 3, Cherrypick = 4, Cherrypick_Sequence = 5, Bisect = 6, Rebase = 7, Rebase_Interactive = 8, Rebase_Merge = 9, Apply_Mailbox = 10, Apply_Mailbox_Or_Rebase = 11, } Reference_Foreach_Name_Cb :: #type proc "c" (name: cstring, payload: rawptr) -> c.int Status_Cb :: #type proc "c" (path: cstring, status_flags: Status_Flags, payload: rawptr) -> c.int Diff_File_Cb :: #type proc "c" (delta: ^Diff_Delta, progress: c.float, payload: rawptr) -> c.int Diff_Binary_Cb :: #type proc "c" (delta: ^Diff_Delta, binary: rawptr, payload: rawptr) -> c.int Diff_Hunk_Cb :: #type proc "c" (delta: ^Diff_Delta, hunk: ^Diff_Hunk, payload: rawptr) -> c.int Diff_Line_Cb :: #type proc "c" (delta: ^Diff_Delta, hunk: ^Diff_Hunk, line: ^Diff_Line, payload: rawptr) -> c.int Stash_Cb :: #type proc "c" (index: c.size_t, message: cstring, stash_id: ^Oid, payload: rawptr) -> c.int Tag_Foreach_Cb :: #type proc "c" (name: cstring, oid: ^Oid, payload: rawptr) -> c.int Fetchhead_Foreach_Cb :: #type proc "c" ( ref_name: cstring, remote_url: cstring, oid: ^Oid, is_merge: c.uint, payload: rawptr, ) -> c.int Mergehead_Foreach_Cb :: #type proc "c" (oid: ^Oid, payload: rawptr) -> c.int Note_Foreach_Cb :: #type proc "c" (blob_id: ^Oid, annotated_object_id: ^Oid, payload: rawptr) -> c.int Revwalk_Hide_Cb :: #type proc "c" (commit_id: ^Oid, payload: rawptr) -> c.int