44#include <stddef.h>
55#include <stdbool.h>
66
7- /*
8- Helper function
9- Check whether provided DynArray-Pointer is pointing to a valid Dynamic-Array.
10- */
7+ /**
8+ * Helper function -
9+ * Check whether provided DynArray-Pointer is pointing to a valid Dynamic-Array.
10+ *
11+ * @param dynamic_array `DynArray`-Pointer to the given dynamic-array.
12+ *
13+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
14+ */
1115Error_Code check_dyn_array (const DynArray * dynamic_array ) {
1216 if (dynamic_array == NULL || (dynamic_array -> head_ptr == NULL && dynamic_array -> tail_ptr != NULL )
1317 || (dynamic_array -> head_ptr != NULL && dynamic_array -> tail_ptr == NULL )) {
@@ -27,11 +31,19 @@ Error_Code check_dyn_array(const DynArray* dynamic_array) {
2731 return NO_ERROR ;
2832}
2933
30- /*
31- Initialize a new dynamic-array.
32-
33- Set `dynamic_array->length` to 0.
34- */
34+ /**
35+ * Initialize a new dynamic-array.
36+ *
37+ * @param dynamic_array `DynArray`-Pointer to the new dynamic-array.
38+ *
39+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
40+ * @note
41+ * - Sets the `dynamic_array->length` to 1
42+ *
43+ * - Sets the `dynamic_array->head_ptr` to `NULL`
44+ *
45+ * - Sets the `dynamic_array->tail_ptr` to `NULL`
46+ */
3547Error_Code init_dyn_array (DynArray * dynamic_array ) {
3648 if (dynamic_array == NULL ) {
3749 //
@@ -91,14 +103,18 @@ DynArrayNode* create_new_dyn_array_node(const void* data, const size_t data_size
91103 return new_node ;
92104}
93105
94- /*
95- Helper function
96- Add first element to dynamic-array.
97- This function assumes, that the given dynamic-array has already been checked with `check_dyn_array` and that the given
98- `data-ptr` and `data_size` are also valid.
99-
100- Set `dynamic_array->length` to 1.
101- */
106+ /**
107+ * Helper function -
108+ * Add first element to dynamic-array.
109+ *
110+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
111+ * @param data The `void`-Pointer to the data that should be stored at the new element.
112+ * @param data_size Size in Bytes of the given data.
113+ *
114+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
115+ * @note This function assumes, that the given dynamic-array has already been checked with `check_dyn_array` and that the given
116+ `data-ptr` and `data_size` are also valid. This function sets the `dynamic_array->length` to 1.
117+ */
102118Error_Code add_first_element_to_dyn_array (DynArray * dynamic_array , const void * data , const size_t data_size ) {
103119 DynArrayNode * first_node = create_new_dyn_array_node (data , data_size );
104120 if (first_node == NULL ) {
@@ -117,11 +133,16 @@ Error_Code add_first_element_to_dyn_array(DynArray* dynamic_array, const void* d
117133 return NO_ERROR ;
118134}
119135
120- /*
121- Append element to dynamic-array.
122-
123- Increases `dynamic_array->length` by 1.
124- */
136+ /**
137+ * Append element to dynamic-array.
138+ *
139+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
140+ * @param data The `void`-Pointer to the data that should be stored at the new element.
141+ * @param data_size Size in Bytes of the given data.
142+ *
143+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
144+ * @note Increases `dynamic_array->length` by 1.
145+ */
125146Error_Code append_element_to_dyn_array (DynArray * dynamic_array , const void * data , const size_t data_size ) {
126147 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
127148 //
@@ -179,10 +200,13 @@ Error_Code append_element_to_dyn_array(DynArray* dynamic_array, const void* data
179200 return NO_ERROR ;
180201}
181202
182- /*
183- Get and Return last element of dynamic-array.
184- Returns 'NULL`-ptr if empty or an error occured.
185- */
203+ /**
204+ * Get last element of dynamic-array.
205+ *
206+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
207+ *
208+ * @return `void*` - `void`-Pointer to the data on success; otherwise `NULL`.
209+ */
186210void * get_last (const DynArray * dynamic_array ) {
187211 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
188212 //
@@ -199,10 +223,13 @@ void* get_last(const DynArray* dynamic_array) {
199223 return dynamic_array -> tail_ptr -> data ;
200224}
201225
202- /*
203- Get and Return first element of dynamic-array.
204- Returns 'NULL`-ptr if empty or an error occured.
205- */
226+ /**
227+ * Get first element of dynamic-array.
228+ *
229+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
230+ *
231+ * @return `void*` - `void`-Pointer to the data on success; otherwise `NULL`.
232+ */
206233void * get_first (const DynArray * dynamic_array ) {
207234 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
208235 //
@@ -219,35 +246,47 @@ void* get_first(const DynArray* dynamic_array) {
219246 return dynamic_array -> head_ptr -> data ;
220247}
221248
222- /*
223- Get amount of elements in dynamic-array by iterating through whole dynamic-array.
224- Boolean indicates whether an error occured or the given dynamic-array is invalid.
225- */
226- bool get_len (const DynArray * dynamic_array , size_t * len ) {
249+ /**
250+ * Get amount of elements in dynamic-array by iterating through whole dynamic-array.
251+ *
252+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
253+ * @param len `size_t`-Pointer to the value - where to store the counted value.
254+ *
255+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
256+ * @note May become deprecated in the near future. Please use `dynamic_array->length` instead.
257+ */
258+ Error_Code get_len (const DynArray * dynamic_array , size_t * len ) {
227259 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
228260 //
229261 // Given dynamic-array is invalid
230- return false ;
262+ return INVALID_ARRAY_ERROR ;
231263 }
232264 //
233265 if (len == NULL ) {
234266 //
235267 // Given len-ptr is the NULL-ptr
236- return false ;
268+ return NULL_PTR_ERROR ;
237269 }
238270 DynArrayNode * current_ptr = dynamic_array -> head_ptr ;
239271 * len = 0 ;
240272 while (current_ptr != NULL ) {
241273 (* len )++ ;
242274 current_ptr = current_ptr -> next_ptr ;
243275 }
244- return true ;
276+ return NO_ERROR ;
245277}
246278
247- /*
248- Copy the array’s elements individually into the dynamic-array.
249- Uses `append_element_to_dyn_array` under the hood.
250- */
279+ /**
280+ * Copy the elements of a static-array individually to the dynamic-array.
281+ *
282+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
283+ * @param static_array `void`-Pointer to the given static-array.
284+ * @param static_array_elem_size Size of each individual element of the static-array.
285+ * @param static_array_len Length of the static-array.
286+ *
287+ * @return `DynArrayNode*` - `DynArrayNode`-Pointer to the element on success; otherwise `NULL`.
288+ * @note Uses `append_element_to_dyn_array` under the hood.
289+ */
251290Error_Code append_static_array_elements_to_dyn_array (DynArray * dynamic_array , const void * static_array , const size_t static_array_elem_size , const size_t static_array_len ) {
252291 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
253292 //
@@ -280,11 +319,14 @@ Error_Code append_static_array_elements_to_dyn_array(DynArray* dynamic_array, co
280319 return append_elem_error_code ;
281320}
282321
283- /*
284- Get element-ptr of dynamic-array-Node by index.
285-
286- Return `NULL` if an error occurs.
287- */
322+ /**
323+ * Get element-Pointer of dynamic-array-Node by index.
324+ *
325+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
326+ * @param index Index of the element at the dynamic-array.
327+ *
328+ * @return `DynArrayNode*` - `DynArrayNode`-Pointer to the element on success; otherwise `NULL`.
329+ */
288330DynArrayNode * get_element_ptr_by_index (const DynArray * dynamic_array , const size_t index ) {
289331 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
290332 //
@@ -341,11 +383,14 @@ DynArrayNode* get_element_ptr_by_index(const DynArray* dynamic_array, const size
341383 return current_ptr ;
342384}
343385
344- /*
345- Get element of dynamic-array by index.
346-
347- Return `NULL`-ptr if an error occurs.
348- */
386+ /**
387+ * Get element of dynamic-array by index.
388+ *
389+ * @param dynamic_array `DynArray`-Pointer to a given dynamic-array.
390+ * @param index Index of the element at the dynamic-array.
391+ *
392+ * @return `void*` - `void`-Pointer to the data on success; otherwise `NULL`.
393+ */
349394void * get_element_by_index (const DynArray * dynamic_array , const size_t index ) {
350395 DynArrayNode * current_ptr = get_element_ptr_by_index (dynamic_array , index );
351396 if (current_ptr == NULL ) {
@@ -354,26 +399,29 @@ void* get_element_by_index(const DynArray* dynamic_array, const size_t index) {
354399 return current_ptr -> data ;
355400}
356401
357- /*
358- Append elements of dynamic-array `b` to dynamic-array `a`.
359- Uses `append_element_to_dyn_array` under the hood.
360- */
361- bool append_dyn_arrays_inplace (DynArray * a , const DynArray * b ) {
402+ /**
403+ * Append elements of dynamic-array `b` to dynamic-array `a`.
404+ *
405+ * @param a `DynArray`-Pointer to the given DESTINATION dynamic-array `A`.
406+ * @param b `DynArray`-Pointer to the given SOURCE dynamic-array `B`.
407+ *
408+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
409+ * @note Uses `append_element_to_dyn_array` under the hood.
410+ */
411+ Error_Code append_dyn_arrays_inplace (DynArray * a , const DynArray * b ) {
362412 DynArray * dyn_array_a = a ;
363413 const DynArray * dyn_array_b = b ;
364414 //
365415 // Check both dynamic-arrays
366416 if (check_dyn_array (dyn_array_a ) != NO_ERROR || check_dyn_array (dyn_array_b ) != NO_ERROR ) {
367417 //
368418 // One or both of the given dynamic-arrays are invalid
369- // INVALID_ARRAY_ERROR
370- return false;
419+ return INVALID_ARRAY_ERROR ;
371420 }
372421 if (dyn_array_b -> length == 0 ) {
373422 //
374423 // Dynamic-array `b` is empty, nothing to append
375- // NO_ERROR
376- return true;
424+ return NO_ERROR ;
377425 }
378426 //
379427 // Iterate through dynamic-array `b`
@@ -384,18 +432,23 @@ bool append_dyn_arrays_inplace(DynArray* a, const DynArray* b) {
384432 if (append_elem_error_code != NO_ERROR ) {
385433 //
386434 // Appending element went wrong
387- return false ;
435+ return append_elem_error_code ;
388436 }
389437 current_b_ptr = current_b_ptr -> next_ptr ;
390438 }
391439 //
392- // NO_ERROR
393- return true;
440+ return NO_ERROR ;
394441}
395442
396- /*
397- Swap position of elements by its indices.
398- */
443+ /**
444+ * Swap position of elements by its indices.
445+ *
446+ * @param dynamic_array `DynArray`-Pointer to the given existing dynamic-array.
447+ * @param index_a The index of element-A
448+ * @param index_b The index of element-B
449+ *
450+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
451+ */
399452Error_Code swap_elements_by_indices (DynArray * dynamic_array , const size_t index_a , const size_t index_b ) {
400453 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
401454 //
@@ -529,10 +582,17 @@ Error_Code swap_elements_by_indices(DynArray* dynamic_array, const size_t index_
529582 return NO_ERROR ;
530583}
531584
532- /*
533- Replace an element-data by its index inplace.
534- Stored element-data gets deleted and new element-data gets stored at the given index.
535- */
585+ /**
586+ * Replace an element-data by its index inplace.
587+ *
588+ * @param dynamic_array `DynArray`-Pointer to the given existing dynamic-array.
589+ * @param index The index where the element should be replaced at.
590+ * @param data The `void`-Pointer to the new data that should be stored at the element.
591+ * @param data_size Size in Bytes of the new given data.
592+ *
593+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
594+ * @note Stored element-data gets deleted and new element-data gets stored at the given index.
595+ */
536596Error_Code replace_element_by_index (DynArray * dynamic_array , const size_t index , const void * data , const size_t data_size ) {
537597 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
538598 //
@@ -588,12 +648,13 @@ Error_Code replace_element_by_index(DynArray* dynamic_array, const size_t index,
588648/**
589649 * Insert an element at the given index.
590650 *
591- * @param dynamic_array `DynArray`-Pointer to the given exsiting dynamic-array.
592- * @param index The given where the new element should be inserted at.
651+ * @param dynamic_array `DynArray`-Pointer to the given existing dynamic-array.
652+ * @param index The element-index where the new element should be inserted at.
593653 * @param data The `void`-Pointer to the data that should be stored at the new element.
594654 * @param data_size Size in Bytes of the given data.
595655 *
596656 * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
657+ * @note Increases `dynamic_array->length` by 1.
597658 */
598659Error_Code insert_element_at_index (DynArray * dynamic_array , const size_t index , const void * data , const size_t data_size ) {
599660 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
@@ -667,9 +728,13 @@ Error_Code insert_element_at_index(DynArray* dynamic_array, const size_t index,
667728 return NO_ERROR ;
668729}
669730
670- /*
671- Deallocate space of all elments in a dynamic-array.
672- */
731+ /**
732+ * Deallocate space of all elments in a dynamic-array.
733+ *
734+ * @param dynamic_array `DynArray`-Pointer to the given existing dynamic-array.
735+ *
736+ * @return `Error_Code` - `NO_ERROR` on success; otherwise another `Error_Code`.
737+ */
673738Error_Code clear_dyn_array (DynArray * dynamic_array ) {
674739 if (check_dyn_array (dynamic_array ) != NO_ERROR ) {
675740 //
0 commit comments