Libecoli  0.11.3
Extensible COmmand LIne library
vec.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3  */
4 
15 #pragma once
16 
17 #include <stdint.h>
18 #include <sys/types.h>
19 
25 typedef void (*ec_vec_elt_free_t)(void *ptr);
26 
32 typedef void (*ec_vec_elt_copy_t)(void *dst, void *src);
33 
35 struct ec_vec *ec_vec(size_t elt_size, size_t size, ec_vec_elt_copy_t copy, ec_vec_elt_free_t free);
36 
38 int ec_vec_add_by_ref(struct ec_vec *vec, void *ptr);
39 
41 int ec_vec_add_ptr(struct ec_vec *vec, void *elt);
42 
44 int ec_vec_add_u8(struct ec_vec *vec, uint8_t elt);
46 int ec_vec_add_u16(struct ec_vec *vec, uint16_t elt);
48 int ec_vec_add_u32(struct ec_vec *vec, uint32_t elt);
50 int ec_vec_add_u64(struct ec_vec *vec, uint64_t elt);
51 
53 int ec_vec_get(void *ptr, const struct ec_vec *vec, size_t idx);
54 
56 struct ec_vec *ec_vec_dup(const struct ec_vec *vec);
58 struct ec_vec *ec_vec_ndup(const struct ec_vec *vec, size_t off, size_t len);
60 void ec_vec_free(struct ec_vec *vec);
61 
63 __attribute__((pure)) size_t ec_vec_len(const struct ec_vec *vec);
64 
int ec_vec_add_by_ref(struct ec_vec *vec, void *ptr)
void ec_vec_free(struct ec_vec *vec)
int ec_vec_add_u16(struct ec_vec *vec, uint16_t elt)
void(* ec_vec_elt_copy_t)(void *dst, void *src)
Definition: vec.h:32
int ec_vec_add_u32(struct ec_vec *vec, uint32_t elt)
struct ec_vec * ec_vec_dup(const struct ec_vec *vec)
struct ec_vec * ec_vec(size_t elt_size, size_t size, ec_vec_elt_copy_t copy, ec_vec_elt_free_t free)
struct ec_vec * ec_vec_ndup(const struct ec_vec *vec, size_t off, size_t len)
int ec_vec_add_u8(struct ec_vec *vec, uint8_t elt)
int ec_vec_add_u64(struct ec_vec *vec, uint64_t elt)
int ec_vec_get(void *ptr, const struct ec_vec *vec, size_t idx)
void(* ec_vec_elt_free_t)(void *ptr)
Definition: vec.h:25
int ec_vec_add_ptr(struct ec_vec *vec, void *elt)