/* * Copyright (C) the libgit2 contributors. All rights reserved. * * This file is part of libgit2, distributed under the GNU GPL v2 with * a Linking Exception. For full terms see the included COPYING file. */ #ifndef INCLUDE_object_h__ #define INCLUDE_object_h__ #include "common.h" #include "array.h" /** Base git object for inheritance */ struct git_object { git_cached_obj cached; git_repository *repo; }; /* fully free the object; internal method, DO NOT EXPORT */ void git_object__free(void *object); int git_object__from_odb_object( git_object **out, git_repository *repo, git_odb_object *odb_obj, git_otype type, bool lax); int git_object__resolve_to_type(git_object **obj, git_otype type); void git_oid__writebuf(git_buf *buf, const char *header, const git_oid *oid); enum { GIT_PARSE_BODY_OPTIONAL = -2, GIT_PARSE_BODY = -1, GIT_PARSE_MODE_OPTIONAL = 0, GIT_PARSE_OID = 1, GIT_PARSE_OID_ARRAY = 2, GIT_PARSE_OTYPE = 3, GIT_PARSE_SIGNATURE = 4, GIT_PARSE_TO_EOL = 5, }; typedef git_array_t(git_oid) git_oid_array; typedef struct { const char *tag; size_t taglen; int type; union { git_oid *id; git_otype *otype; char **text; git_signature **sig; git_oid_array *ids; const char **body; } value; } git_object_parse_t; /* parse tagged lines followed by blank line and message body */ int git_object__parse_lines( git_otype type, git_object_parse_t *parse, const char *buf, const char *buf_end); #endif