vec.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /** @file vec.h
  2. * @brief Public interface for a variable length vector.
  3. */
  4. #ifndef _faux_vec_h
  5. #define _faux_vec_h
  6. #include <stddef.h>
  7. #include <faux/faux.h>
  8. typedef struct faux_vec_s faux_vec_t;
  9. typedef int (*faux_vec_kcmp_fn)(const void *key, const void *item);
  10. C_DECL_BEGIN
  11. faux_vec_t *faux_vec_new(size_t item_size, faux_vec_kcmp_fn matchFn);
  12. void faux_vec_free(faux_vec_t *faux_vec);
  13. size_t faux_vec_len(const faux_vec_t *faux_vec);
  14. size_t faux_vec_item_size(const faux_vec_t *faux_vec);
  15. void *faux_vec_item(const faux_vec_t *faux_vec, unsigned int index);
  16. void *faux_vec_data(const faux_vec_t *faux_vec);
  17. void *faux_vec_add(faux_vec_t *faux_vec);
  18. ssize_t faux_vec_del(faux_vec_t *faux_vec, unsigned int index);
  19. int faux_vec_find_fn(const faux_vec_t *faux_vec, faux_vec_kcmp_fn matchFn,
  20. const void *userkey, unsigned int start_index);
  21. int faux_vec_find(const faux_vec_t *faux_vec, const void *userkey,
  22. unsigned int start_index);
  23. void faux_vec_del_all(faux_vec_t *faux_vec);
  24. C_DECL_END
  25. #endif /* _faux_vec_h */