Implement ref iterators

This commit is contained in:
Carlos Martín Nieto
2013-08-09 23:25:55 +02:00
parent 6e24413388
commit bb35fce5cc
9 changed files with 161 additions and 4 deletions

View File

@@ -5,11 +5,17 @@
#include <git2.h>
extern ErlNifResourceType *geef_ref_type;
extern ErlNifResourceType *geef_ref_iter_type;
typedef struct {
git_reference *ref;
} geef_ref;
typedef struct {
git_reference_iterator *iter;
geef_repository *repo;
} geef_ref_iter;
ERL_NIF_TERM geef_reference_list(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_reference_to_id(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_reference_glob(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
@@ -20,7 +26,10 @@ ERL_NIF_TERM geef_reference_type(ErlNifEnv *env, int argc, const ERL_NIF_TERM ar
ERL_NIF_TERM geef_reference_name(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_reference_create(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_reference_dwim(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_reference_iterator(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
ERL_NIF_TERM geef_reference_next(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]);
void geef_ref_free(ErlNifEnv *env, void *cd);
void geef_ref_iter_free(ErlNifEnv *env, void *cd);
#endif