CVector  4.1.0
A C++ style vector library in strict ANSI C (C89)
cvector_d.h
Go to the documentation of this file.
1 #ifndef CVECTORD_H
2 #define CVECTORD_H
3 
4 #include <stdlib.h>
5 
6 #ifndef CVEC_SIZE_T
7 #define CVEC_SIZE_T size_t
8 #endif
9 
10 #ifndef CVEC_SZ
11 #define CVEC_SZ
13 #endif
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
20 typedef struct cvector_d
21 {
22  double* a;
23  cvec_sz size;
25 } cvector_d;
26 
28 
29 int cvec_d(cvector_d* vec, cvec_sz size, cvec_sz capacity);
30 int cvec_init_d(cvector_d* vec, double* vals, cvec_sz num);
31 
32 cvector_d* cvec_d_heap(cvec_sz size, cvec_sz capacity);
33 cvector_d* cvec_init_d_heap(double* vals, cvec_sz num);
34 int cvec_copyc_d(void* dest, void* src);
35 int cvec_copy_d(cvector_d* dest, cvector_d* src);
36 
37 int cvec_push_d(cvector_d* vec, double a);
38 double cvec_pop_d(cvector_d* vec);
39 
40 int cvec_extend_d(cvector_d* vec, cvec_sz num);
41 int cvec_insert_d(cvector_d* vec, cvec_sz i, double a);
42 int cvec_insert_array_d(cvector_d* vec, cvec_sz i, double* a, cvec_sz num);
43 double cvec_replace_d(cvector_d* vec, cvec_sz i, double a);
44 void cvec_erase_d(cvector_d* vec, cvec_sz start, cvec_sz end);
45 int cvec_reserve_d(cvector_d* vec, cvec_sz size);
46 int cvec_set_cap_d(cvector_d* vec, cvec_sz size);
47 void cvec_set_val_sz_d(cvector_d* vec, double val);
48 void cvec_set_val_cap_d(cvector_d* vec, double val);
49 
50 double* cvec_back_d(cvector_d* vec);
51 
52 void cvec_clear_d(cvector_d* vec);
53 void cvec_free_d_heap(void* vec);
54 void cvec_free_d(void* vec);
55 
56 #ifdef __cplusplus
57 }
58 #endif
59 
60 #endif
CVEC_SIZE_T cvec_sz
Definition: cvector.h:88
cvector_d * cvec_d_heap(cvec_sz size, cvec_sz capacity)
Creates a new cvector_d on the heap.
Definition: cvector_d.c:39
int cvec_insert_array_d(cvector_d *vec, cvec_sz i, double *a, cvec_sz num)
Insert the first num elements of array a at index i.
Definition: cvector_d.c:250
int cvec_insert_d(cvector_d *vec, cvec_sz i, double a)
Insert a at index i (0 based).
Definition: cvector_d.c:224
void cvec_free_d(void *vec)
Frees the internal array and sets size and capacity to 0.
Definition: cvector_d.c:356
void cvec_erase_d(cvector_d *vec, cvec_sz start, cvec_sz end)
Erases elements from start to end inclusive.
Definition: cvector_d.c:283
cvector_d * cvec_init_d_heap(double *vals, cvec_sz num)
Create (on the heap) and initialize cvector_d with num elements of vals.
Definition: cvector_d.c:63
void cvec_set_val_cap_d(cvector_d *vec, double val)
Fills entire allocated array (capacity) with val.
Definition: cvector_d.c:334
int cvec_copy_d(cvector_d *dest, cvector_d *src)
Makes dest a copy of src.
Definition: cvector_d.c:152
int cvec_reserve_d(cvector_d *vec, cvec_sz size)
Make sure capacity is at least size(parameter not member).
Definition: cvector_d.c:291
int cvec_extend_d(cvector_d *vec, cvec_sz num)
Increase the size of the array num items.
Definition: cvector_d.c:202
int cvec_copyc_d(void *dest, void *src)
Makes dest a copy of src.
Definition: cvector_d.c:131
double cvec_replace_d(cvector_d *vec, cvec_sz i, double a)
Replace value at index i with a, return original value.
Definition: cvector_d.c:271
void cvec_set_val_sz_d(cvector_d *vec, double val)
Set all size elements to val.
Definition: cvector_d.c:325
CVEC_SIZE_T cvec_sz
Definition: cvector_d.h:12
int cvec_d(cvector_d *vec, cvec_sz size, cvec_sz capacity)
Same as cvec_d_heap() except the vector passed in was declared on the stack so it isn't allocated in ...
Definition: cvector_d.c:89
int cvec_set_cap_d(cvector_d *vec, cvec_sz size)
Set capacity to size.
Definition: cvector_d.c:309
double * cvec_back_d(cvector_d *vec)
Return pointer to last element.
Definition: cvector_d.c:195
int cvec_push_d(cvector_d *vec, double a)
Append a to end of vector (size increased 1).
Definition: cvector_d.c:171
#define CVEC_SIZE_T
Definition: cvector_d.h:7
void cvec_clear_d(cvector_d *vec)
Sets size to 0 (does not clear contents).
Definition: cvector_d.c:343
void cvec_free_d_heap(void *vec)
Frees everything so don't use vec after calling this.
Definition: cvector_d.c:347
int cvec_init_d(cvector_d *vec, double *vals, cvec_sz num)
Same as cvec_init_d_heap() except the vector passed in was declared on the stack so it isn't allocate...
Definition: cvector_d.c:106
double cvec_pop_d(cvector_d *vec)
Remove and return the last element (size decreased 1).
Definition: cvector_d.c:189
cvec_sz CVEC_D_START_SZ
Definition: cvector_d.c:29
Data structure for double vector.
Definition: cvector.h:143
cvec_sz size
Current size (amount you use when manipulating array directly).
Definition: cvector.h:145
cvec_sz capacity
Allocated size of array; always >= size.
Definition: cvector.h:146
double * a
Array.
Definition: cvector.h:144