Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2011-02-28 13:46:13 +0300
committerVicent Marti <tanoku@gmail.com>2011-03-03 21:23:52 +0300
commit86d7e1ca6f54161a9e4d1ebe7a2f8e4802dc9639 (patch)
tree88d9d0fc4a7dbeec37f863b47200c0c55e8ffcf4 /src/vector.h
parent5de079b86dcf8744f71fa3d0bb496a2cf9b20c0d (diff)
Fix searching in git_vector
We now store only one sorting callback that does entry comparison. This is used when sorting the entries using a quicksort, and when looking for a specific entry with the new search methods. The following search methods now exist: git_vector_search(vector, entry) git_vector_search2(vector, custom_search_callback, key) git_vector_bsearch(vector, entry) git_vector_bsearch2(vector, custom_search_callback, key) The sorting state of the vector is now stored internally. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'src/vector.h')
-rw-r--r--src/vector.h15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/vector.h b/src/vector.h
index dfd604765..256452ee5 100644
--- a/src/vector.h
+++ b/src/vector.h
@@ -3,25 +3,26 @@
#include "git2/common.h"
-
typedef int (*git_vector_cmp)(const void *, const void *);
-typedef int (*git_vector_srch)(const void *, const void *);
typedef struct git_vector {
unsigned int _alloc_size;
git_vector_cmp _cmp;
- git_vector_srch _srch;
-
void **contents;
unsigned int length;
+ int sorted;
} git_vector;
-
-int git_vector_init(git_vector *v, unsigned int initial_size, git_vector_cmp cmp, git_vector_srch srch);
+int git_vector_init(git_vector *v, unsigned int initial_size, git_vector_cmp cmp);
void git_vector_free(git_vector *v);
void git_vector_clear(git_vector *v);
-int git_vector_search(git_vector *v, const void *key);
+int git_vector_search(git_vector *v, const void *entry);
+int git_vector_search2(git_vector *v, git_vector_cmp cmp, const void *key);
+
+int git_vector_bsearch(git_vector *v, const void *entry);
+int git_vector_bsearch2(git_vector *v, git_vector_cmp cmp, const void *key);
+
void git_vector_sort(git_vector *v);
GIT_INLINE(void *) git_vector_get(git_vector *v, unsigned int position)