Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ int main(int argc, char *argv[]) {
| [`v.pop_back()`](https://en.cppreference.com/w/cpp/container/vector/pop_back) | `cvector_pop_back(v)` |
| [`v.reserve(new_cap)`](https://en.cppreference.com/w/cpp/container/vector/reserve) | `cvector_reserve(v, new_cap)` |
| [`v.resize(count)`](https://en.cppreference.com/w/cpp/container/vector/resize) | `cvector_resize(v, count)` |
| [`v.data()`](https://en.cppreference.com/w/cpp/container/vector/data) | `cvector_data(v)` |
| [`v.swap(other)`](https://en.cppreference.com/w/cpp/container/vector/swap) | `cvector_swap(v, other)` |
| [`std::vector<int> other = v;`](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) | `cvector(int) other; cvector_copy(v, other);` |

Expand Down
7 changes: 7 additions & 0 deletions cvector.h
Original file line number Diff line number Diff line change
Expand Up @@ -456,6 +456,13 @@ typedef struct cvector_metadata_t {
#define cvector_back(vec) \
((vec) ? ((cvector_size(vec) > 0) ? cvector_at(vec, cvector_size(vec) - 1) : NULL) : NULL)

/**
* @brief cvector_data - returns a pointer to the memory used by the vector to store its elements.
* @param vec - the vector
* @return a pointer to the first element (or NULL)
*/
#define cvector_data(vec) cvector_begin(vec)

/**
* @brief cvector_resize - resizes the container to contain count elements.
* @param vec - the vector
Expand Down
1 change: 1 addition & 0 deletions test.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,5 +163,6 @@ int main() {
}

cvector_free(str_vect);

return 0;
}
17 changes: 17 additions & 0 deletions unit-tests.c
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,23 @@ UTEST(test, vector_resize) {
cvector_free(a);
}

UTEST(test, vector_data) {
cvector_vector_type(int) int_vec = NULL;
int *ptr;

cvector_push_back(int_vec, 1);
cvector_push_back(int_vec, 2);
cvector_push_back(int_vec, 3);

ptr = cvector_data(int_vec);
ASSERT_NE(ptr, NULL);
ASSERT_EQ(ptr, int_vec);
ASSERT_EQ(ptr[0], 1);
ASSERT_EQ(ptr[1], 2);
ASSERT_EQ(ptr[2], 3);
cvector_free(int_vec);
}

struct data_t {
int num;
int a, b, c, d;
Expand Down
Loading