/src/libgit2/src/util/vector.h
Line | Count | Source |
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_vector_h__ |
8 | | #define INCLUDE_vector_h__ |
9 | | |
10 | | #include "git2_util.h" |
11 | | |
12 | | typedef int (*git_vector_cmp)(const void *, const void *); |
13 | | |
14 | | enum { |
15 | | GIT_VECTOR_SORTED = (1u << 0), |
16 | | GIT_VECTOR_FLAG_MAX = (1u << 1) |
17 | | }; |
18 | | |
19 | | typedef struct git_vector { |
20 | | size_t _alloc_size; |
21 | | git_vector_cmp _cmp; |
22 | | void **contents; |
23 | | size_t length; |
24 | | uint32_t flags; |
25 | | } git_vector; |
26 | | |
27 | 0 | #define GIT_VECTOR_INIT {0} |
28 | | |
29 | | GIT_WARN_UNUSED_RESULT int git_vector_init( |
30 | | git_vector *v, size_t initial_size, git_vector_cmp cmp); |
31 | | void git_vector_dispose(git_vector *v); |
32 | | void git_vector_dispose_deep(git_vector *v); /* free each entry and self */ |
33 | | void git_vector_clear(git_vector *v); |
34 | | GIT_WARN_UNUSED_RESULT int git_vector_dup( |
35 | | git_vector *v, const git_vector *src, git_vector_cmp cmp); |
36 | | void git_vector_swap(git_vector *a, git_vector *b); |
37 | | int git_vector_size_hint(git_vector *v, size_t size_hint); |
38 | | |
39 | | void **git_vector_detach(size_t *size, size_t *asize, git_vector *v); |
40 | | |
41 | | void git_vector_sort(git_vector *v); |
42 | | |
43 | | /** Linear search for matching entry using internal comparison function */ |
44 | | int git_vector_search(size_t *at_pos, const git_vector *v, const void *entry); |
45 | | |
46 | | /** Linear search for matching entry using explicit comparison function */ |
47 | | int git_vector_search2(size_t *at_pos, const git_vector *v, git_vector_cmp cmp, const void *key); |
48 | | |
49 | | /** |
50 | | * Binary search for matching entry using explicit comparison function that |
51 | | * returns position where item would go if not found. |
52 | | */ |
53 | | int git_vector_bsearch2( |
54 | | size_t *at_pos, git_vector *v, git_vector_cmp cmp, const void *key); |
55 | | |
56 | | /** Binary search for matching entry using internal comparison function */ |
57 | | GIT_INLINE(int) git_vector_bsearch(size_t *at_pos, git_vector *v, const void *key) |
58 | 0 | { |
59 | 0 | return git_vector_bsearch2(at_pos, v, v->_cmp, key); |
60 | 0 | } Unexecuted instantiation: objects_fuzzer.c:git_vector_bsearch Unexecuted instantiation: fuzzer_utils.c:git_vector_bsearch Unexecuted instantiation: libgit2.c:git_vector_bsearch Unexecuted instantiation: merge_driver.c:git_vector_bsearch Unexecuted instantiation: merge_file.c:git_vector_bsearch Unexecuted instantiation: mwindow.c:git_vector_bsearch Unexecuted instantiation: object.c:git_vector_bsearch Unexecuted instantiation: object_api.c:git_vector_bsearch Unexecuted instantiation: odb.c:git_vector_bsearch Unexecuted instantiation: odb_loose.c:git_vector_bsearch Unexecuted instantiation: odb_pack.c:git_vector_bsearch Unexecuted instantiation: oid.c:git_vector_bsearch Unexecuted instantiation: pack.c:git_vector_bsearch Unexecuted instantiation: repository.c:git_vector_bsearch Unexecuted instantiation: revparse.c:git_vector_bsearch Unexecuted instantiation: revwalk.c:git_vector_bsearch Unexecuted instantiation: settings.c:git_vector_bsearch Unexecuted instantiation: submodule.c:git_vector_bsearch Unexecuted instantiation: sysdir.c:git_vector_bsearch Unexecuted instantiation: tag.c:git_vector_bsearch Unexecuted instantiation: http.c:git_vector_bsearch Unexecuted instantiation: httpclient.c:git_vector_bsearch Unexecuted instantiation: smart_protocol.c:git_vector_bsearch Unexecuted instantiation: tree.c:git_vector_bsearch Unexecuted instantiation: worktree.c:git_vector_bsearch Unexecuted instantiation: filebuf.c:git_vector_bsearch Unexecuted instantiation: fs_path.c:git_vector_bsearch Unexecuted instantiation: futils.c:git_vector_bsearch Unexecuted instantiation: pool.c:git_vector_bsearch Unexecuted instantiation: posix.c:git_vector_bsearch Unexecuted instantiation: pqueue.c:git_vector_bsearch Unexecuted instantiation: vector.c:git_vector_bsearch Unexecuted instantiation: attr.c:git_vector_bsearch Unexecuted instantiation: attr_file.c:git_vector_bsearch Unexecuted instantiation: attrcache.c:git_vector_bsearch Unexecuted instantiation: blob.c:git_vector_bsearch Unexecuted instantiation: branch.c:git_vector_bsearch Unexecuted instantiation: cache.c:git_vector_bsearch Unexecuted instantiation: checkout.c:git_vector_bsearch Unexecuted instantiation: clone.c:git_vector_bsearch Unexecuted instantiation: commit.c:git_vector_bsearch Unexecuted instantiation: commit_graph.c:git_vector_bsearch Unexecuted instantiation: commit_list.c:git_vector_bsearch Unexecuted instantiation: config.c:git_vector_bsearch Unexecuted instantiation: config_cache.c:git_vector_bsearch Unexecuted instantiation: config_file.c:git_vector_bsearch Unexecuted instantiation: config_list.c:git_vector_bsearch Unexecuted instantiation: config_parse.c:git_vector_bsearch Unexecuted instantiation: config_snapshot.c:git_vector_bsearch Unexecuted instantiation: delta.c:git_vector_bsearch Unexecuted instantiation: diff.c:git_vector_bsearch Unexecuted instantiation: diff_driver.c:git_vector_bsearch Unexecuted instantiation: diff_generate.c:git_vector_bsearch Unexecuted instantiation: diff_print.c:git_vector_bsearch Unexecuted instantiation: diff_tform.c:git_vector_bsearch Unexecuted instantiation: email.c:git_vector_bsearch Unexecuted instantiation: filter.c:git_vector_bsearch Unexecuted instantiation: grafts.c:git_vector_bsearch Unexecuted instantiation: hashsig.c:git_vector_bsearch Unexecuted instantiation: ident.c:git_vector_bsearch Unexecuted instantiation: index.c:git_vector_bsearch Unexecuted instantiation: indexer.c:git_vector_bsearch Unexecuted instantiation: iterator.c:git_vector_bsearch Unexecuted instantiation: mailmap.c:git_vector_bsearch Unexecuted instantiation: merge.c:git_vector_bsearch Unexecuted instantiation: midx.c:git_vector_bsearch Unexecuted instantiation: pack-objects.c:git_vector_bsearch Unexecuted instantiation: patch.c:git_vector_bsearch Unexecuted instantiation: patch_generate.c:git_vector_bsearch Unexecuted instantiation: path.c:git_vector_bsearch Unexecuted instantiation: pathspec.c:git_vector_bsearch Unexecuted instantiation: push.c:git_vector_bsearch Unexecuted instantiation: refdb.c:git_vector_bsearch Unexecuted instantiation: refdb_fs.c:git_vector_bsearch Unexecuted instantiation: reflog.c:git_vector_bsearch Unexecuted instantiation: refs.c:git_vector_bsearch Unexecuted instantiation: refspec.c:git_vector_bsearch Unexecuted instantiation: remote.c:git_vector_bsearch Unexecuted instantiation: signature.c:git_vector_bsearch Unexecuted instantiation: transaction.c:git_vector_bsearch Unexecuted instantiation: transport.c:git_vector_bsearch Unexecuted instantiation: local.c:git_vector_bsearch Unexecuted instantiation: smart.c:git_vector_bsearch Unexecuted instantiation: smart_pkt.c:git_vector_bsearch Unexecuted instantiation: tree-cache.c:git_vector_bsearch Unexecuted instantiation: sortedcache.c:git_vector_bsearch Unexecuted instantiation: crlf.c:git_vector_bsearch Unexecuted instantiation: diff_file.c:git_vector_bsearch Unexecuted instantiation: diff_stats.c:git_vector_bsearch Unexecuted instantiation: diff_xdiff.c:git_vector_bsearch Unexecuted instantiation: fetch.c:git_vector_bsearch Unexecuted instantiation: fetchhead.c:git_vector_bsearch Unexecuted instantiation: graph.c:git_vector_bsearch Unexecuted instantiation: ignore.c:git_vector_bsearch |
61 | | |
62 | | GIT_INLINE(void *) git_vector_get(const git_vector *v, size_t position) |
63 | 0 | { |
64 | 0 | return (position < v->length) ? v->contents[position] : NULL; |
65 | 0 | } Unexecuted instantiation: objects_fuzzer.c:git_vector_get Unexecuted instantiation: fuzzer_utils.c:git_vector_get Unexecuted instantiation: libgit2.c:git_vector_get Unexecuted instantiation: merge_driver.c:git_vector_get Unexecuted instantiation: merge_file.c:git_vector_get Unexecuted instantiation: mwindow.c:git_vector_get Unexecuted instantiation: object.c:git_vector_get Unexecuted instantiation: object_api.c:git_vector_get Unexecuted instantiation: odb.c:git_vector_get Unexecuted instantiation: odb_loose.c:git_vector_get Unexecuted instantiation: odb_pack.c:git_vector_get Unexecuted instantiation: oid.c:git_vector_get Unexecuted instantiation: pack.c:git_vector_get Unexecuted instantiation: repository.c:git_vector_get Unexecuted instantiation: revparse.c:git_vector_get Unexecuted instantiation: revwalk.c:git_vector_get Unexecuted instantiation: settings.c:git_vector_get Unexecuted instantiation: submodule.c:git_vector_get Unexecuted instantiation: sysdir.c:git_vector_get Unexecuted instantiation: tag.c:git_vector_get Unexecuted instantiation: http.c:git_vector_get Unexecuted instantiation: httpclient.c:git_vector_get Unexecuted instantiation: smart_protocol.c:git_vector_get Unexecuted instantiation: tree.c:git_vector_get Unexecuted instantiation: worktree.c:git_vector_get Unexecuted instantiation: filebuf.c:git_vector_get Unexecuted instantiation: fs_path.c:git_vector_get Unexecuted instantiation: futils.c:git_vector_get Unexecuted instantiation: pool.c:git_vector_get Unexecuted instantiation: posix.c:git_vector_get Unexecuted instantiation: pqueue.c:git_vector_get Unexecuted instantiation: vector.c:git_vector_get Unexecuted instantiation: attr.c:git_vector_get Unexecuted instantiation: attr_file.c:git_vector_get Unexecuted instantiation: attrcache.c:git_vector_get Unexecuted instantiation: blob.c:git_vector_get Unexecuted instantiation: branch.c:git_vector_get Unexecuted instantiation: cache.c:git_vector_get Unexecuted instantiation: checkout.c:git_vector_get Unexecuted instantiation: clone.c:git_vector_get Unexecuted instantiation: commit.c:git_vector_get Unexecuted instantiation: commit_graph.c:git_vector_get Unexecuted instantiation: commit_list.c:git_vector_get Unexecuted instantiation: config.c:git_vector_get Unexecuted instantiation: config_cache.c:git_vector_get Unexecuted instantiation: config_file.c:git_vector_get Unexecuted instantiation: config_list.c:git_vector_get Unexecuted instantiation: config_parse.c:git_vector_get Unexecuted instantiation: config_snapshot.c:git_vector_get Unexecuted instantiation: delta.c:git_vector_get Unexecuted instantiation: diff.c:git_vector_get Unexecuted instantiation: diff_driver.c:git_vector_get Unexecuted instantiation: diff_generate.c:git_vector_get Unexecuted instantiation: diff_print.c:git_vector_get Unexecuted instantiation: diff_tform.c:git_vector_get Unexecuted instantiation: email.c:git_vector_get Unexecuted instantiation: filter.c:git_vector_get Unexecuted instantiation: grafts.c:git_vector_get Unexecuted instantiation: hashsig.c:git_vector_get Unexecuted instantiation: ident.c:git_vector_get Unexecuted instantiation: index.c:git_vector_get Unexecuted instantiation: indexer.c:git_vector_get Unexecuted instantiation: iterator.c:git_vector_get Unexecuted instantiation: mailmap.c:git_vector_get Unexecuted instantiation: merge.c:git_vector_get Unexecuted instantiation: midx.c:git_vector_get Unexecuted instantiation: pack-objects.c:git_vector_get Unexecuted instantiation: patch.c:git_vector_get Unexecuted instantiation: patch_generate.c:git_vector_get Unexecuted instantiation: path.c:git_vector_get Unexecuted instantiation: pathspec.c:git_vector_get Unexecuted instantiation: push.c:git_vector_get Unexecuted instantiation: refdb.c:git_vector_get Unexecuted instantiation: refdb_fs.c:git_vector_get Unexecuted instantiation: reflog.c:git_vector_get Unexecuted instantiation: refs.c:git_vector_get Unexecuted instantiation: refspec.c:git_vector_get Unexecuted instantiation: remote.c:git_vector_get Unexecuted instantiation: signature.c:git_vector_get Unexecuted instantiation: transaction.c:git_vector_get Unexecuted instantiation: transport.c:git_vector_get Unexecuted instantiation: local.c:git_vector_get Unexecuted instantiation: smart.c:git_vector_get Unexecuted instantiation: smart_pkt.c:git_vector_get Unexecuted instantiation: tree-cache.c:git_vector_get Unexecuted instantiation: sortedcache.c:git_vector_get Unexecuted instantiation: crlf.c:git_vector_get Unexecuted instantiation: diff_file.c:git_vector_get Unexecuted instantiation: diff_stats.c:git_vector_get Unexecuted instantiation: diff_xdiff.c:git_vector_get Unexecuted instantiation: fetch.c:git_vector_get Unexecuted instantiation: fetchhead.c:git_vector_get Unexecuted instantiation: graph.c:git_vector_get Unexecuted instantiation: ignore.c:git_vector_get |
66 | | |
67 | 0 | #define GIT_VECTOR_GET(V,I) ((I) < (V)->length ? (V)->contents[(I)] : NULL) |
68 | | |
69 | | GIT_INLINE(size_t) git_vector_length(const git_vector *v) |
70 | 0 | { |
71 | 0 | return v->length; |
72 | 0 | } Unexecuted instantiation: objects_fuzzer.c:git_vector_length Unexecuted instantiation: fuzzer_utils.c:git_vector_length Unexecuted instantiation: libgit2.c:git_vector_length Unexecuted instantiation: merge_driver.c:git_vector_length Unexecuted instantiation: merge_file.c:git_vector_length Unexecuted instantiation: mwindow.c:git_vector_length Unexecuted instantiation: object.c:git_vector_length Unexecuted instantiation: object_api.c:git_vector_length Unexecuted instantiation: odb.c:git_vector_length Unexecuted instantiation: odb_loose.c:git_vector_length Unexecuted instantiation: odb_pack.c:git_vector_length Unexecuted instantiation: oid.c:git_vector_length Unexecuted instantiation: pack.c:git_vector_length Unexecuted instantiation: repository.c:git_vector_length Unexecuted instantiation: revparse.c:git_vector_length Unexecuted instantiation: revwalk.c:git_vector_length Unexecuted instantiation: settings.c:git_vector_length Unexecuted instantiation: submodule.c:git_vector_length Unexecuted instantiation: sysdir.c:git_vector_length Unexecuted instantiation: tag.c:git_vector_length Unexecuted instantiation: http.c:git_vector_length Unexecuted instantiation: httpclient.c:git_vector_length Unexecuted instantiation: smart_protocol.c:git_vector_length Unexecuted instantiation: tree.c:git_vector_length Unexecuted instantiation: worktree.c:git_vector_length Unexecuted instantiation: filebuf.c:git_vector_length Unexecuted instantiation: fs_path.c:git_vector_length Unexecuted instantiation: futils.c:git_vector_length Unexecuted instantiation: pool.c:git_vector_length Unexecuted instantiation: posix.c:git_vector_length Unexecuted instantiation: pqueue.c:git_vector_length Unexecuted instantiation: vector.c:git_vector_length Unexecuted instantiation: attr.c:git_vector_length Unexecuted instantiation: attr_file.c:git_vector_length Unexecuted instantiation: attrcache.c:git_vector_length Unexecuted instantiation: blob.c:git_vector_length Unexecuted instantiation: branch.c:git_vector_length Unexecuted instantiation: cache.c:git_vector_length Unexecuted instantiation: checkout.c:git_vector_length Unexecuted instantiation: clone.c:git_vector_length Unexecuted instantiation: commit.c:git_vector_length Unexecuted instantiation: commit_graph.c:git_vector_length Unexecuted instantiation: commit_list.c:git_vector_length Unexecuted instantiation: config.c:git_vector_length Unexecuted instantiation: config_cache.c:git_vector_length Unexecuted instantiation: config_file.c:git_vector_length Unexecuted instantiation: config_list.c:git_vector_length Unexecuted instantiation: config_parse.c:git_vector_length Unexecuted instantiation: config_snapshot.c:git_vector_length Unexecuted instantiation: delta.c:git_vector_length Unexecuted instantiation: diff.c:git_vector_length Unexecuted instantiation: diff_driver.c:git_vector_length Unexecuted instantiation: diff_generate.c:git_vector_length Unexecuted instantiation: diff_print.c:git_vector_length Unexecuted instantiation: diff_tform.c:git_vector_length Unexecuted instantiation: email.c:git_vector_length Unexecuted instantiation: filter.c:git_vector_length Unexecuted instantiation: grafts.c:git_vector_length Unexecuted instantiation: hashsig.c:git_vector_length Unexecuted instantiation: ident.c:git_vector_length Unexecuted instantiation: index.c:git_vector_length Unexecuted instantiation: indexer.c:git_vector_length Unexecuted instantiation: iterator.c:git_vector_length Unexecuted instantiation: mailmap.c:git_vector_length Unexecuted instantiation: merge.c:git_vector_length Unexecuted instantiation: midx.c:git_vector_length Unexecuted instantiation: pack-objects.c:git_vector_length Unexecuted instantiation: patch.c:git_vector_length Unexecuted instantiation: patch_generate.c:git_vector_length Unexecuted instantiation: path.c:git_vector_length Unexecuted instantiation: pathspec.c:git_vector_length Unexecuted instantiation: push.c:git_vector_length Unexecuted instantiation: refdb.c:git_vector_length Unexecuted instantiation: refdb_fs.c:git_vector_length Unexecuted instantiation: reflog.c:git_vector_length Unexecuted instantiation: refs.c:git_vector_length Unexecuted instantiation: refspec.c:git_vector_length Unexecuted instantiation: remote.c:git_vector_length Unexecuted instantiation: signature.c:git_vector_length Unexecuted instantiation: transaction.c:git_vector_length Unexecuted instantiation: transport.c:git_vector_length Unexecuted instantiation: local.c:git_vector_length Unexecuted instantiation: smart.c:git_vector_length Unexecuted instantiation: smart_pkt.c:git_vector_length Unexecuted instantiation: tree-cache.c:git_vector_length Unexecuted instantiation: sortedcache.c:git_vector_length Unexecuted instantiation: crlf.c:git_vector_length Unexecuted instantiation: diff_file.c:git_vector_length Unexecuted instantiation: diff_stats.c:git_vector_length Unexecuted instantiation: diff_xdiff.c:git_vector_length Unexecuted instantiation: fetch.c:git_vector_length Unexecuted instantiation: fetchhead.c:git_vector_length Unexecuted instantiation: graph.c:git_vector_length Unexecuted instantiation: ignore.c:git_vector_length |
73 | | |
74 | | GIT_INLINE(void *) git_vector_last(const git_vector *v) |
75 | 0 | { |
76 | 0 | return (v->length > 0) ? git_vector_get(v, v->length - 1) : NULL; |
77 | 0 | } Unexecuted instantiation: objects_fuzzer.c:git_vector_last Unexecuted instantiation: fuzzer_utils.c:git_vector_last Unexecuted instantiation: libgit2.c:git_vector_last Unexecuted instantiation: merge_driver.c:git_vector_last Unexecuted instantiation: merge_file.c:git_vector_last Unexecuted instantiation: mwindow.c:git_vector_last Unexecuted instantiation: object.c:git_vector_last Unexecuted instantiation: object_api.c:git_vector_last Unexecuted instantiation: odb.c:git_vector_last Unexecuted instantiation: odb_loose.c:git_vector_last Unexecuted instantiation: odb_pack.c:git_vector_last Unexecuted instantiation: oid.c:git_vector_last Unexecuted instantiation: pack.c:git_vector_last Unexecuted instantiation: repository.c:git_vector_last Unexecuted instantiation: revparse.c:git_vector_last Unexecuted instantiation: revwalk.c:git_vector_last Unexecuted instantiation: settings.c:git_vector_last Unexecuted instantiation: submodule.c:git_vector_last Unexecuted instantiation: sysdir.c:git_vector_last Unexecuted instantiation: tag.c:git_vector_last Unexecuted instantiation: http.c:git_vector_last Unexecuted instantiation: httpclient.c:git_vector_last Unexecuted instantiation: smart_protocol.c:git_vector_last Unexecuted instantiation: tree.c:git_vector_last Unexecuted instantiation: worktree.c:git_vector_last Unexecuted instantiation: filebuf.c:git_vector_last Unexecuted instantiation: fs_path.c:git_vector_last Unexecuted instantiation: futils.c:git_vector_last Unexecuted instantiation: pool.c:git_vector_last Unexecuted instantiation: posix.c:git_vector_last Unexecuted instantiation: pqueue.c:git_vector_last Unexecuted instantiation: vector.c:git_vector_last Unexecuted instantiation: attr.c:git_vector_last Unexecuted instantiation: attr_file.c:git_vector_last Unexecuted instantiation: attrcache.c:git_vector_last Unexecuted instantiation: blob.c:git_vector_last Unexecuted instantiation: branch.c:git_vector_last Unexecuted instantiation: cache.c:git_vector_last Unexecuted instantiation: checkout.c:git_vector_last Unexecuted instantiation: clone.c:git_vector_last Unexecuted instantiation: commit.c:git_vector_last Unexecuted instantiation: commit_graph.c:git_vector_last Unexecuted instantiation: commit_list.c:git_vector_last Unexecuted instantiation: config.c:git_vector_last Unexecuted instantiation: config_cache.c:git_vector_last Unexecuted instantiation: config_file.c:git_vector_last Unexecuted instantiation: config_list.c:git_vector_last Unexecuted instantiation: config_parse.c:git_vector_last Unexecuted instantiation: config_snapshot.c:git_vector_last Unexecuted instantiation: delta.c:git_vector_last Unexecuted instantiation: diff.c:git_vector_last Unexecuted instantiation: diff_driver.c:git_vector_last Unexecuted instantiation: diff_generate.c:git_vector_last Unexecuted instantiation: diff_print.c:git_vector_last Unexecuted instantiation: diff_tform.c:git_vector_last Unexecuted instantiation: email.c:git_vector_last Unexecuted instantiation: filter.c:git_vector_last Unexecuted instantiation: grafts.c:git_vector_last Unexecuted instantiation: hashsig.c:git_vector_last Unexecuted instantiation: ident.c:git_vector_last Unexecuted instantiation: index.c:git_vector_last Unexecuted instantiation: indexer.c:git_vector_last Unexecuted instantiation: iterator.c:git_vector_last Unexecuted instantiation: mailmap.c:git_vector_last Unexecuted instantiation: merge.c:git_vector_last Unexecuted instantiation: midx.c:git_vector_last Unexecuted instantiation: pack-objects.c:git_vector_last Unexecuted instantiation: patch.c:git_vector_last Unexecuted instantiation: patch_generate.c:git_vector_last Unexecuted instantiation: path.c:git_vector_last Unexecuted instantiation: pathspec.c:git_vector_last Unexecuted instantiation: push.c:git_vector_last Unexecuted instantiation: refdb.c:git_vector_last Unexecuted instantiation: refdb_fs.c:git_vector_last Unexecuted instantiation: reflog.c:git_vector_last Unexecuted instantiation: refs.c:git_vector_last Unexecuted instantiation: refspec.c:git_vector_last Unexecuted instantiation: remote.c:git_vector_last Unexecuted instantiation: signature.c:git_vector_last Unexecuted instantiation: transaction.c:git_vector_last Unexecuted instantiation: transport.c:git_vector_last Unexecuted instantiation: local.c:git_vector_last Unexecuted instantiation: smart.c:git_vector_last Unexecuted instantiation: smart_pkt.c:git_vector_last Unexecuted instantiation: tree-cache.c:git_vector_last Unexecuted instantiation: sortedcache.c:git_vector_last Unexecuted instantiation: crlf.c:git_vector_last Unexecuted instantiation: diff_file.c:git_vector_last Unexecuted instantiation: diff_stats.c:git_vector_last Unexecuted instantiation: diff_xdiff.c:git_vector_last Unexecuted instantiation: fetch.c:git_vector_last Unexecuted instantiation: fetchhead.c:git_vector_last Unexecuted instantiation: graph.c:git_vector_last Unexecuted instantiation: ignore.c:git_vector_last |
78 | | |
79 | | #define git_vector_foreach(v, iter, elem) \ |
80 | 0 | for ((iter) = 0; (iter) < (v)->length && ((elem) = (v)->contents[(iter)], 1); (iter)++ ) |
81 | | |
82 | | #define git_vector_rforeach(v, iter, elem) \ |
83 | 0 | for ((iter) = (v)->length - 1; (iter) < SIZE_MAX && ((elem) = (v)->contents[(iter)], 1); (iter)-- ) |
84 | | |
85 | | int git_vector_insert(git_vector *v, void *element); |
86 | | int git_vector_insert_sorted(git_vector *v, void *element, |
87 | | int (*on_dup)(void **old, void *new)); |
88 | | int git_vector_remove(git_vector *v, size_t idx); |
89 | | void git_vector_pop(git_vector *v); |
90 | | void git_vector_uniq(git_vector *v, void (*git_free_cb)(void *)); |
91 | | |
92 | | void git_vector_remove_matching( |
93 | | git_vector *v, |
94 | | int (*match)(const git_vector *v, size_t idx, void *payload), |
95 | | void *payload); |
96 | | |
97 | | int git_vector_resize_to(git_vector *v, size_t new_length); |
98 | | int git_vector_insert_null(git_vector *v, size_t idx, size_t insert_len); |
99 | | int git_vector_remove_range(git_vector *v, size_t idx, size_t remove_len); |
100 | | |
101 | | int git_vector_set(void **old, git_vector *v, size_t position, void *value); |
102 | | |
103 | | /** Check if vector is sorted */ |
104 | 14 | #define git_vector_is_sorted(V) (((V)->flags & GIT_VECTOR_SORTED) != 0) |
105 | | |
106 | | /** Directly set sorted state of vector */ |
107 | 6 | #define git_vector_set_sorted(V,S) do { \ |
108 | 6 | (V)->flags = (S) ? ((V)->flags | GIT_VECTOR_SORTED) : \ |
109 | 6 | ((V)->flags & ~GIT_VECTOR_SORTED); } while (0) |
110 | | |
111 | | /** Set the comparison function used for sorting the vector */ |
112 | | GIT_INLINE(void) git_vector_set_cmp(git_vector *v, git_vector_cmp cmp) |
113 | 0 | { |
114 | 0 | if (cmp != v->_cmp) { |
115 | 0 | v->_cmp = cmp; |
116 | 0 | git_vector_set_sorted(v, 0); |
117 | 0 | } |
118 | 0 | } Unexecuted instantiation: objects_fuzzer.c:git_vector_set_cmp Unexecuted instantiation: fuzzer_utils.c:git_vector_set_cmp Unexecuted instantiation: libgit2.c:git_vector_set_cmp Unexecuted instantiation: merge_driver.c:git_vector_set_cmp Unexecuted instantiation: merge_file.c:git_vector_set_cmp Unexecuted instantiation: mwindow.c:git_vector_set_cmp Unexecuted instantiation: object.c:git_vector_set_cmp Unexecuted instantiation: object_api.c:git_vector_set_cmp Unexecuted instantiation: odb.c:git_vector_set_cmp Unexecuted instantiation: odb_loose.c:git_vector_set_cmp Unexecuted instantiation: odb_pack.c:git_vector_set_cmp Unexecuted instantiation: oid.c:git_vector_set_cmp Unexecuted instantiation: pack.c:git_vector_set_cmp Unexecuted instantiation: repository.c:git_vector_set_cmp Unexecuted instantiation: revparse.c:git_vector_set_cmp Unexecuted instantiation: revwalk.c:git_vector_set_cmp Unexecuted instantiation: settings.c:git_vector_set_cmp Unexecuted instantiation: submodule.c:git_vector_set_cmp Unexecuted instantiation: sysdir.c:git_vector_set_cmp Unexecuted instantiation: tag.c:git_vector_set_cmp Unexecuted instantiation: http.c:git_vector_set_cmp Unexecuted instantiation: httpclient.c:git_vector_set_cmp Unexecuted instantiation: smart_protocol.c:git_vector_set_cmp Unexecuted instantiation: tree.c:git_vector_set_cmp Unexecuted instantiation: worktree.c:git_vector_set_cmp Unexecuted instantiation: filebuf.c:git_vector_set_cmp Unexecuted instantiation: fs_path.c:git_vector_set_cmp Unexecuted instantiation: futils.c:git_vector_set_cmp Unexecuted instantiation: pool.c:git_vector_set_cmp Unexecuted instantiation: posix.c:git_vector_set_cmp Unexecuted instantiation: pqueue.c:git_vector_set_cmp Unexecuted instantiation: vector.c:git_vector_set_cmp Unexecuted instantiation: attr.c:git_vector_set_cmp Unexecuted instantiation: attr_file.c:git_vector_set_cmp Unexecuted instantiation: attrcache.c:git_vector_set_cmp Unexecuted instantiation: blob.c:git_vector_set_cmp Unexecuted instantiation: branch.c:git_vector_set_cmp Unexecuted instantiation: cache.c:git_vector_set_cmp Unexecuted instantiation: checkout.c:git_vector_set_cmp Unexecuted instantiation: clone.c:git_vector_set_cmp Unexecuted instantiation: commit.c:git_vector_set_cmp Unexecuted instantiation: commit_graph.c:git_vector_set_cmp Unexecuted instantiation: commit_list.c:git_vector_set_cmp Unexecuted instantiation: config.c:git_vector_set_cmp Unexecuted instantiation: config_cache.c:git_vector_set_cmp Unexecuted instantiation: config_file.c:git_vector_set_cmp Unexecuted instantiation: config_list.c:git_vector_set_cmp Unexecuted instantiation: config_parse.c:git_vector_set_cmp Unexecuted instantiation: config_snapshot.c:git_vector_set_cmp Unexecuted instantiation: delta.c:git_vector_set_cmp Unexecuted instantiation: diff.c:git_vector_set_cmp Unexecuted instantiation: diff_driver.c:git_vector_set_cmp Unexecuted instantiation: diff_generate.c:git_vector_set_cmp Unexecuted instantiation: diff_print.c:git_vector_set_cmp Unexecuted instantiation: diff_tform.c:git_vector_set_cmp Unexecuted instantiation: email.c:git_vector_set_cmp Unexecuted instantiation: filter.c:git_vector_set_cmp Unexecuted instantiation: grafts.c:git_vector_set_cmp Unexecuted instantiation: hashsig.c:git_vector_set_cmp Unexecuted instantiation: ident.c:git_vector_set_cmp Unexecuted instantiation: index.c:git_vector_set_cmp Unexecuted instantiation: indexer.c:git_vector_set_cmp Unexecuted instantiation: iterator.c:git_vector_set_cmp Unexecuted instantiation: mailmap.c:git_vector_set_cmp Unexecuted instantiation: merge.c:git_vector_set_cmp Unexecuted instantiation: midx.c:git_vector_set_cmp Unexecuted instantiation: pack-objects.c:git_vector_set_cmp Unexecuted instantiation: patch.c:git_vector_set_cmp Unexecuted instantiation: patch_generate.c:git_vector_set_cmp Unexecuted instantiation: path.c:git_vector_set_cmp Unexecuted instantiation: pathspec.c:git_vector_set_cmp Unexecuted instantiation: push.c:git_vector_set_cmp Unexecuted instantiation: refdb.c:git_vector_set_cmp Unexecuted instantiation: refdb_fs.c:git_vector_set_cmp Unexecuted instantiation: reflog.c:git_vector_set_cmp Unexecuted instantiation: refs.c:git_vector_set_cmp Unexecuted instantiation: refspec.c:git_vector_set_cmp Unexecuted instantiation: remote.c:git_vector_set_cmp Unexecuted instantiation: signature.c:git_vector_set_cmp Unexecuted instantiation: transaction.c:git_vector_set_cmp Unexecuted instantiation: transport.c:git_vector_set_cmp Unexecuted instantiation: local.c:git_vector_set_cmp Unexecuted instantiation: smart.c:git_vector_set_cmp Unexecuted instantiation: smart_pkt.c:git_vector_set_cmp Unexecuted instantiation: tree-cache.c:git_vector_set_cmp Unexecuted instantiation: sortedcache.c:git_vector_set_cmp Unexecuted instantiation: crlf.c:git_vector_set_cmp Unexecuted instantiation: diff_file.c:git_vector_set_cmp Unexecuted instantiation: diff_stats.c:git_vector_set_cmp Unexecuted instantiation: diff_xdiff.c:git_vector_set_cmp Unexecuted instantiation: fetch.c:git_vector_set_cmp Unexecuted instantiation: fetchhead.c:git_vector_set_cmp Unexecuted instantiation: graph.c:git_vector_set_cmp Unexecuted instantiation: ignore.c:git_vector_set_cmp |
119 | | |
120 | | /* Just use this in tests, not for realz. returns -1 if not sorted */ |
121 | | int git_vector_verify_sorted(const git_vector *v); |
122 | | |
123 | | /** |
124 | | * Reverse the vector in-place. |
125 | | */ |
126 | | void git_vector_reverse(git_vector *v); |
127 | | |
128 | | #endif |