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 |