File Coverage

deps/libgit2/src/object.h
Criterion Covered Total %
statement 3 6 50.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 3 6 50.0


line stmt bran cond sub pod time code
1             /*
2             * Copyright (C) the libgit2 contributors. All rights reserved.
3             *
4             * This file is part of libgit2, distributed under the GNU GPL v2 with
5             * a Linking Exception. For full terms see the included COPYING file.
6             */
7             #ifndef INCLUDE_object_h__
8             #define INCLUDE_object_h__
9              
10             #include "common.h"
11              
12             #include "repository.h"
13              
14             #define GIT_OBJECT_SIZE_MAX UINT64_MAX
15              
16             extern bool git_object__strict_input_validation;
17              
18             /** Base git object for inheritance */
19             struct git_object {
20             git_cached_obj cached;
21             git_repository *repo;
22             };
23              
24             /* fully free the object; internal method, DO NOT EXPORT */
25             void git_object__free(void *object);
26              
27             /*
28             * Parse object from raw data. Note that the resulting object is
29             * tied to the lifetime of the data, as some objects simply point
30             * into it.
31             */
32             int git_object__from_raw(
33             git_object **object_out,
34             const char *data,
35             size_t size,
36             git_object_t type);
37              
38             int git_object__from_odb_object(
39             git_object **object_out,
40             git_repository *repo,
41             git_odb_object *odb_obj,
42             git_object_t type);
43              
44             int git_object__resolve_to_type(git_object **obj, git_object_t type);
45              
46             git_object_t git_object_stringn2type(const char *str, size_t len);
47              
48             int git_oid__parse(git_oid *oid, const char **buffer_out, const char *buffer_end, const char *header);
49              
50             void git_oid__writebuf(git_buf *buf, const char *header, const git_oid *oid);
51              
52             bool git_object__is_valid(
53             git_repository *repo, const git_oid *id, git_object_t expected_type);
54              
55 43           GIT_INLINE(git_object_t) git_object__type_from_filemode(git_filemode_t mode)
56             {
57 43           switch (mode) {
58             case GIT_FILEMODE_TREE:
59 0           return GIT_OBJECT_TREE;
60             case GIT_FILEMODE_COMMIT:
61 0           return GIT_OBJECT_COMMIT;
62             case GIT_FILEMODE_BLOB:
63             case GIT_FILEMODE_BLOB_EXECUTABLE:
64             case GIT_FILEMODE_LINK:
65 43           return GIT_OBJECT_BLOB;
66             default:
67 0           return GIT_OBJECT_INVALID;
68             }
69             }
70              
71             #endif