1
1
mirror of https://github.com/theoludwig/libcproject.git synced 2024-12-11 21:13:00 +01:00

docs: add @since to know when a structure/function was added

This commit is contained in:
Théo LUDWIG 2023-06-24 21:06:45 +02:00
parent 071b645cb4
commit d1b93d1da0
Signed by: theoludwig
GPG Key ID: ADFE5A563D718F3B
10 changed files with 288 additions and 2 deletions

View File

@ -6,18 +6,38 @@
#define ARRAY_LIST_INITIAL_CAPACITY 10 #define ARRAY_LIST_INITIAL_CAPACITY 10
/**
* @brief A dynamic array implementation.
* @since v1.2.0
*/
struct array_list { struct array_list {
void** data; void** data;
size_t size; size_t size;
size_t capacity; size_t capacity;
}; };
/**
* @brief Initializes a new array list.
* @since v1.2.0
*/
struct array_list* array_list_initialization(); struct array_list* array_list_initialization();
/**
* @brief Adds an element to the end of the array list.
* @since v1.2.0
*/
void array_list_add(struct array_list* list, void* element); void array_list_add(struct array_list* list, void* element);
/**
* @brief Removes an element from the array list.
* @since v1.2.0
*/
void array_list_remove(struct array_list* list, size_t index); void array_list_remove(struct array_list* list, size_t index);
/**
* @brief Gets an element from the array list.
* @since v1.2.0
*/
void* array_list_get(struct array_list* list, size_t index); void* array_list_get(struct array_list* list, size_t index);
#endif #endif

View File

@ -12,6 +12,7 @@
* *
* @param string * @param string
* @param character * @param character
* @since v1.0.0
*/ */
void character_append(char* string, char character); void character_append(char* string, char character);
@ -21,6 +22,7 @@ void character_append(char* string, char character);
* @param string * @param string
* @param character * @param character
* @param index * @param index
* @since v1.0.0
*/ */
void character_append_at(char* string, const char character, const size_t index); void character_append_at(char* string, const char character, const size_t index);
@ -29,6 +31,7 @@ void character_append_at(char* string, const char character, const size_t index)
* *
* @param character * @param character
* @return const char * @return const char
* @since v1.0.0
*/ */
char character_to_upper(const char character); char character_to_upper(const char character);
@ -37,6 +40,7 @@ char character_to_upper(const char character);
* *
* @param character * @param character
* @return const char * @return const char
* @since v1.0.0
*/ */
char character_to_lower(const char character); char character_to_lower(const char character);
@ -46,6 +50,7 @@ char character_to_lower(const char character);
* @param string1 * @param string1
* @param string2 * @param string2
* @return true if the character is a digit, false otherwise * @return true if the character is a digit, false otherwise
* @since v1.0.0
*/ */
bool character_get_is_digit(const char character); bool character_get_is_digit(const char character);
@ -55,6 +60,7 @@ bool character_get_is_digit(const char character);
* *
* @param character * @param character
* @return char * @return char
* @since v1.0.0
*/ */
unsigned char character_get_alphabet_position(const char character); unsigned char character_get_alphabet_position(const char character);

View File

@ -9,20 +9,79 @@
#include "stdbool.h" #include "stdbool.h"
#include "string.h" #include "string.h"
/**
* @brief Convert a character to a string.
*
* @param character
* @since v1.0.0
*/
char* convert_character_to_string(const char character); char* convert_character_to_string(const char character);
/**
* @brief Convert a character to a digit.
*
* @param character
* @return char
* @since v1.0.0
*/
char convert_character_to_digit(const char character); char convert_character_to_digit(const char character);
/**
* @brief Convert a digit to a character.
*
* @param digit
* @return char
* @since v1.0.0
*/
char convert_digit_to_character(const char digit); char convert_digit_to_character(const char digit);
/**
* @brief Convert a string to a number.
*
* @param string
* @return long long
* @since v1.0.0
*/
long long convert_string_to_number(const char* string); long long convert_string_to_number(const char* string);
/**
* @brief Convert a number to a string.
*
* @param integer
* @return char*
* @since v1.0.0
*/
char* convert_number_to_string(const long long integer); char* convert_number_to_string(const long long integer);
/**
* @brief Convert a number (base 10) to a string with a specific base.
*
* @param number
* @param base
* @return char*
* @since v1.0.0
*/
char* convert_number_from_base_10_to_base(unsigned long long number, unsigned int base); char* convert_number_from_base_10_to_base(unsigned long long number, unsigned int base);
/**
* @brief Convert a number with a specific base to a number base 10.
*
* @param number
* @param base
* @return int
* @since v1.0.0
*/
int convert_number_from_base_to_base_10(char* number, unsigned int base); int convert_number_from_base_to_base_10(char* number, unsigned int base);
/**
* @brief Convert a number with a specific base to a number of specific base.
*
* @param number
* @param base_from
* @param base_target
* @return char*
* @since v1.0.0
*/
char* convert_number_from_base_to_another(char* number, int base_from, int base_target); char* convert_number_from_base_to_another(char* number, int base_from, int base_target);
#endif #endif

View File

@ -21,6 +21,7 @@
* @return int * @return int
* @retval -1 if the file does not exist * @retval -1 if the file does not exist
* @retval 0 for success * @retval 0 for success
* @since v1.0.0
*/ */
int filesystem_read(char *path, char **file_content, off_t *file_size); int filesystem_read(char *path, char **file_content, off_t *file_size);
@ -33,6 +34,7 @@ int filesystem_read(char *path, char **file_content, off_t *file_size);
* @return int * @return int
* @retval -1 if errors * @retval -1 if errors
* @retval 0 for success * @retval 0 for success
* @since v1.0.0
*/ */
int filesystem_write(char *path, char *file_content, off_t file_size); int filesystem_write(char *path, char *file_content, off_t file_size);
@ -41,6 +43,7 @@ int filesystem_write(char *path, char *file_content, off_t file_size);
* *
* @param path * @param path
* @return char* * @return char*
* @since v1.0.0
*/ */
char *filesystem_get_mimetype(char *path); char *filesystem_get_mimetype(char *path);

View File

@ -6,27 +6,59 @@
#include "stack.h" #include "stack.h"
/**
* @brief Linked list data structure.
* @since v1.0.0
*/
struct linked_list { struct linked_list {
struct linked_list_node *head; struct linked_list_node *head;
size_t length; size_t length;
}; };
/**
* @brief Linked list node data structure.
* @since v1.0.0
*/
struct linked_list_node { struct linked_list_node {
void *data; void *data;
struct linked_list_node *next; struct linked_list_node *next;
}; };
/**
* @brief Linked list initialization.
* @since v1.0.0
*/
struct linked_list *linked_list_initialization(); struct linked_list *linked_list_initialization();
/**
* @brief Add a new node in the head of the linked list.
* @since v1.0.0
*/
struct linked_list_node *linked_list_add_in_head(struct linked_list *list, void *new_value); struct linked_list_node *linked_list_add_in_head(struct linked_list *list, void *new_value);
/**
* @brief Delete node in the head of the linked list.
* @since v1.0.0
*/
void linked_list_delete_in_head(struct linked_list *list); void linked_list_delete_in_head(struct linked_list *list);
/**
* @brief Add a new node in the tail of the linked list.
* @since v1.0.0
*/
struct linked_list_node *linked_list_add_after_last(struct linked_list *list, void *new_data); struct linked_list_node *linked_list_add_after_last(struct linked_list *list, void *new_data);
/**
* @brief Reverse the linked list by creating a new one.
* @since v1.0.0
*/
struct linked_list *linked_list_reverse(struct linked_list *list); struct linked_list *linked_list_reverse(struct linked_list *list);
/**
* @brief Reverse the linked list by mutating it.
* @since v1.0.0
*/
void linked_list_reverse_mutate(struct linked_list *list); void linked_list_reverse_mutate(struct linked_list *list);
#endif #endif

View File

@ -5,10 +5,32 @@
#include <stdbool.h> #include <stdbool.h>
/**
* @brief Verify that 2 numbers are equal.
*
* @param number1
* @param number2
* @since v1.0.0
*/
bool mathematics_equals(const float number1, const float number2); bool mathematics_equals(const float number1, const float number2);
/**
* @brief Get the absolute value of a number.
*
* @param number
* @return unsigned long long
* @since v1.0.0
*/
unsigned long long mathematics_absolute_value(const long long number); unsigned long long mathematics_absolute_value(const long long number);
/**
* @brief Calculates the power of a number.
*
* @param base
* @param exponent
* @return unsigned long long
* @since v1.0.0
*/
unsigned long long mathematics_pow(unsigned long long base, unsigned long long exponent); unsigned long long mathematics_pow(unsigned long long base, unsigned long long exponent);
/** /**
@ -17,11 +39,26 @@ unsigned long long mathematics_pow(unsigned long long base, unsigned long long e
* @param number * @param number
* @param nth_root * @param nth_root
* @return float * @return float
* @since v1.0.0
*/ */
float mathematics_root(float number, unsigned int nth_root); float mathematics_root(float number, unsigned int nth_root);
/**
* @brief Calculates the square root of a number using Heron's method.
*
* @param number
* @return float
* @since v1.0.0
*/
float mathematics_square_root(float number); float mathematics_square_root(float number);
/**
* @brief Calculates the factorial of a number.
*
* @param number
* @return unsigned long long
* @since v1.0.0
*/
unsigned long long mathematics_factorial(unsigned long long number); unsigned long long mathematics_factorial(unsigned long long number);
#endif #endif

View File

@ -4,21 +4,40 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
// FIFO = First In First Out /**
* @brief Queue structure => FIFO (First In First Out).
* @since v1.0.0
*/
struct queue { struct queue {
struct queue_node *first; struct queue_node *first;
size_t length; size_t length;
}; };
/**
* @brief Queue node structure.
* @since v1.0.0
*/
struct queue_node { struct queue_node {
void *data; void *data;
struct queue_node *next; struct queue_node *next;
}; };
/**
* @brief Queue initialization.
* @since v1.0.0
*/
struct queue *queue_initialization(); struct queue *queue_initialization();
/**
* @brief Push data to queue.
* @since v1.0.0
*/
void queue_push(struct queue *queue, void *data); void queue_push(struct queue *queue, void *data);
/**
* @brief Pop data from queue.
* @since v1.0.0
*/
void *queue_pop(struct queue *queue); void *queue_pop(struct queue *queue);
#endif #endif

View File

@ -4,21 +4,40 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
// LIFO = Last In First Out /**
* @brief Stack structure => LIFO (Last In First Out).
* @since v1.0.0
*/
struct stack { struct stack {
struct stack_node *first; struct stack_node *first;
size_t length; size_t length;
}; };
/**
* @brief Stack node structure.
* @since v1.0.0
*/
struct stack_node { struct stack_node {
void *data; void *data;
struct stack_node *next; struct stack_node *next;
}; };
/**
* @brief Stack initialization.
* @since v1.0.0
*/
struct stack *stack_initialization(); struct stack *stack_initialization();
/**
* @brief Push data to stack.
* @since v1.0.0
*/
void stack_push(struct stack *stack, void *data); void stack_push(struct stack *stack, void *data);
/**
* @brief Pop data from stack.
* @since v1.0.0
*/
void *stack_pop(struct stack *stack); void *stack_pop(struct stack *stack);
#endif #endif

View File

@ -14,6 +14,7 @@
* *
* @param string * @param string
* @return size_t * @return size_t
* @since v1.0.0
*/ */
size_t string_get_length(const char* string); size_t string_get_length(const char* string);
@ -22,6 +23,7 @@ size_t string_get_length(const char* string);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_to_uppercase(char* string); char* string_to_uppercase(char* string);
@ -30,6 +32,7 @@ char* string_to_uppercase(char* string);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_to_lowercase(char* string); char* string_to_lowercase(char* string);
@ -40,6 +43,7 @@ char* string_to_lowercase(char* string);
* @param search_value A character search value. * @param search_value A character search value.
* @param replace_value A character containing the text to replace for match. * @param replace_value A character containing the text to replace for match.
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_replace(char* string, char search, char replace); char* string_replace(char* string, char search, char replace);
@ -48,6 +52,7 @@ char* string_replace(char* string, char search, char replace);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_trim_start(char* string); char* string_trim_start(char* string);
@ -56,6 +61,7 @@ char* string_trim_start(char* string);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_trim_end(char* string); char* string_trim_end(char* string);
@ -64,6 +70,7 @@ char* string_trim_end(char* string);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_trim(char* string); char* string_trim(char* string);
@ -72,6 +79,7 @@ char* string_trim(char* string);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_copy(const char* string); char* string_copy(const char* string);
@ -80,6 +88,7 @@ char* string_copy(const char* string);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_capitalize(char* string); char* string_capitalize(char* string);
@ -89,6 +98,7 @@ char* string_capitalize(char* string);
* @param string * @param string
* @param character * @param character
* @return size_t * @return size_t
* @since v1.0.0
*/ */
size_t string_total_occurrences_of_character(char* string, char character); size_t string_total_occurrences_of_character(char* string, char character);
@ -97,6 +107,7 @@ size_t string_total_occurrences_of_character(char* string, char character);
* *
* @param string * @param string
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_reverse(const char* string); char* string_reverse(const char* string);
@ -106,6 +117,7 @@ char* string_reverse(const char* string);
* @param string1 * @param string1
* @param string2 * @param string2
* @return true if the strings are equals, false otherwise. * @return true if the strings are equals, false otherwise.
* @since v1.0.0
*/ */
bool string_equals(const char* string1, const char* string2); bool string_equals(const char* string1, const char* string2);
@ -114,6 +126,7 @@ bool string_equals(const char* string1, const char* string2);
* *
* @param string * @param string
* @return true if the string is a integer, false otherwise. * @return true if the string is a integer, false otherwise.
* @since v1.0.0
*/ */
bool string_get_is_integer(const char* string); bool string_get_is_integer(const char* string);
@ -123,6 +136,7 @@ bool string_get_is_integer(const char* string);
* @param string * @param string
* @param separator * @param separator
* @return char** * @return char**
* @since v1.0.0
*/ */
char** string_split(const char* string, char separator, size_t* result_size); char** string_split(const char* string, char separator, size_t* result_size);
@ -132,6 +146,7 @@ char** string_split(const char* string, char separator, size_t* result_size);
* @param array * @param array
* @param separator * @param separator
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_join(char** array, const char separator, size_t array_length); char* string_join(char** array, const char separator, size_t array_length);
@ -141,6 +156,7 @@ char* string_join(char** array, const char separator, size_t array_length);
* @param string1 * @param string1
* @param string2 * @param string2
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_concatenate(char* string1, char* string2); char* string_concatenate(char* string1, char* string2);
@ -149,6 +165,7 @@ char* string_concatenate(char* string1, char* string2);
* *
* @param string * @param string
* @return true if string contains only unique characters, false otherwise. * @return true if string contains only unique characters, false otherwise.
* @since v1.0.0
*/ */
bool string_get_has_unique_characters(const char* string); bool string_get_has_unique_characters(const char* string);
@ -159,6 +176,7 @@ bool string_get_has_unique_characters(const char* string);
* @param index_start * @param index_start
* @param index_end * @param index_end
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_substring(const char* string, size_t index_start, size_t index_end); char* string_substring(const char* string, size_t index_start, size_t index_end);
@ -168,6 +186,7 @@ char* string_substring(const char* string, size_t index_start, size_t index_end)
* @param string * @param string
* @param substring * @param substring
* @return true if the string contains the substring, false otherwise. * @return true if the string contains the substring, false otherwise.
* @since v1.0.0
*/ */
bool string_get_is_substring(const char* string, const char* substring); bool string_get_is_substring(const char* string, const char* substring);
@ -176,6 +195,7 @@ bool string_get_is_substring(const char* string, const char* substring);
* *
* @param integer * @param integer
* @return char* example: string_get_formatted_number(1000, " ") => "1 000" * @return char* example: string_get_formatted_number(1000, " ") => "1 000"
* @since v1.0.0
*/ */
char* string_get_formatted_number(const long long number, char* separator); char* string_get_formatted_number(const long long number, char* separator);
@ -185,6 +205,7 @@ char* string_get_formatted_number(const long long number, char* separator);
* @param string * @param string
* @param character * @param character
* @return char* * @return char*
* @since v1.0.0
*/ */
char* string_get_last_occurence_of_character(const char* string, char character); char* string_get_last_occurence_of_character(const char* string, char character);
@ -194,6 +215,7 @@ char* string_get_last_occurence_of_character(const char* string, char character)
* @param string * @param string
* @param prefix * @param prefix
* @return true if the string starts with the substring, false otherwise. * @return true if the string starts with the substring, false otherwise.
* @since v1.0.0
*/ */
bool string_starts_with(const char* string, const char* prefix); bool string_starts_with(const char* string, const char* prefix);
@ -203,6 +225,7 @@ bool string_starts_with(const char* string, const char* prefix);
* @param string * @param string
* @param prefix * @param prefix
* @return true if the string ends with the substring, false otherwise. * @return true if the string ends with the substring, false otherwise.
* @since v1.0.0
*/ */
bool string_ends_with(const char* string, const char* prefix); bool string_ends_with(const char* string, const char* prefix);

View File

@ -16,27 +16,95 @@
* @brief Read a line from stdin. * @brief Read a line from stdin.
* *
* @return char* * @return char*
* @since v1.0.0
*/ */
char* terminal_input(); char* terminal_input();
/**
* @brief Print an array.
*
* @param array
* @param array_size
* @param element_size
* @param print_element
* @since v1.0.0
*/
void terminal_print_array(void* array, size_t array_size, size_t element_size, void (*print_element)(void*)); void terminal_print_array(void* array, size_t array_size, size_t element_size, void (*print_element)(void*));
/**
* @brief Print a int.
*
* @param value
* @since v1.0.0
*/
void terminal_print_int(void* value); void terminal_print_int(void* value);
/**
* @brief Print a long.
*
* @param value
* @since v1.0.0
*/
void terminal_print_long(void* value); void terminal_print_long(void* value);
/**
* @brief Print a unsigned long.
*
* @param value
* @since v1.0.0
*/
void terminal_print_unsigned_long(void* value); void terminal_print_unsigned_long(void* value);
/**
* @brief Print a char.
*
* @param value
* @since v1.0.0
*/
void terminal_print_char(void* value); void terminal_print_char(void* value);
/**
* @brief Print a string.
*
* @param value
* @since v1.0.0
*/
void terminal_print_string(void* value); void terminal_print_string(void* value);
/**
* @brief Print a stack.
*
* @param stack
* @param print_element
* @since v1.0.0
*/
void terminal_print_stack(struct stack* stack, void (*print_element)(void*)); void terminal_print_stack(struct stack* stack, void (*print_element)(void*));
/**
* @brief Print a queue.
*
* @param queue
* @param print_element
* @since v1.0.0
*/
void terminal_print_queue(struct queue* queue, void (*print_element)(void*)); void terminal_print_queue(struct queue* queue, void (*print_element)(void*));
/**
* @brief Print a linked list.
*
* @param linked_list
* @param print_element
* @since v1.0.0
*/
void terminal_print_linked_list(struct linked_list* linked_list, void (*print_element)(void*)); void terminal_print_linked_list(struct linked_list* linked_list, void (*print_element)(void*));
/**
* @brief Print a dictionary.
*
* @param dictionary
* @param print_element
* @since v1.0.0
*/
void terminal_print_dictionary(struct dictionary* dictionary, void (*print_element)(void*)); void terminal_print_dictionary(struct dictionary* dictionary, void (*print_element)(void*));
#endif #endif