#include <limits.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include "useful_functions.h"
#include "mbs_define.h"
#include "mbs_message.h"
#include "mbs_errors_names.h"
Macros | |
#define | MSG_ERR ">> USEFUL>> " |
#define | MSG_PRE " >> " |
Functions | |
void * | mbs_free (void *__ptr) |
Free the pointor ptr and set it to NULL. More... | |
void | mbs_log (char *msg,...) |
Function for logging messages in a file called "log" where the program is executed. More... | |
double | pow_int (double basis, int expo) |
compute efficiently pow with an integer exponent More... | |
int | expo_ten_inf (double nb) |
get log with base 10 More... | |
double | sign (double a) |
sign function More... | |
char * | get_time_machine () |
returns the current time as a String More... | |
char * | get_char_vec (int size) |
create (with memory allocation) a vector (length l_v) of char More... | |
char ** | get_char_tab (int nb_r, int nb_c) |
create (with memory allocation) a [nb_r times nb_c] matrix of chars WARNING: only the first dimension (nb_r) is allocated, pointing to NULL ! More... | |
void | free_char_vec (char *vec) |
release memory for a vector of char More... | |
char * | get_char_cpy_varg (const char *fmt, va_list argptr) |
char * | get_char_cpy (const char *fmt,...) |
Copy the provided formatted string into a newly allocated memory. More... | |
int | set_char_cpy (char **dest, const char *fmt,...) |
Set a copy the provided formatted string into a newly allocated memory. More... | |
int | set_um_string (char **um_str, const char *new_txt) |
Redirect the memory of the string user model to a newly allocated char array. More... | |
void | free_char_tab (char **mat) |
release memory for a matrix of chars More... | |
char * | str_replace_char (char *orig, const char old_char, const char *new_str, int free_orig) |
Create a copy of a string with a specific char replaced by a string. More... | |
int | mbs_is_char_in (const char *text, const char **list, int nb_elem) |
Return the index of the provided text in a list of text. More... | |
int | mbs_is_char_in_concat (const char *text, const char *list) |
Check if the provided text is in a concatenated list of text separated by ";". More... | |
int | mbs_is_char_i_in_concat (const char *text, const char *list) |
Check if the provided text (not case sensitive) is in a concatenated list of text separated by ";". More... | |
int | mbs_is_char_in_concat_full (const char *text, const char *list, char sep, int case_sens) |
Check if the provided text is in a concatenated list of text. More... | |
double *** | get_d3Darray_1 (int x, int y, int z) |
create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 1 More... | |
double *** | get_d3Darray_0 (int x, int y, int z) |
create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 0 More... | |
void | free_d3Darray_1 (double ***array3D) |
void | free_d3Darray_0 (double ***array3D) |
release memory for a 3D array of doubles, starting at index 0 More... | |
int | mbs_strncmp (const char *__s1, const char *__s2, size_t n) |
Compares only the first (at most) n bytes of of two chars. More... | |
int | mbs_strnicmp (const char *__s1, const char *__s2, size_t n) |
Compares only the first (at most) n bytes of of two chars ignoring the case. More... | |
int | mbs_strcmp (const char *__s1, const char *__s2) |
Compare two char with strcmp. More... | |
int | mbs_stricmp (const char *__s1, const char *__s2) |
Compare two char with _stricmp (convert strings to lower case, ignoring case sensitive). More... | |
char * | mbs_strndup (const char *input_char, size_t char_size) |
(taken from strdup definition in string.h since C23) Returns a pointer to a null-terminated byte string, which contains copies of at most size bytes from the string pointed to by src. The space for the new string is obtained as if malloc was called. If the null terminator is not encountered in the first size bytes, it is appended to the duplicated string. More... | |
#define MSG_ERR ">> USEFUL>> " |
#define MSG_PRE " >> " |
int expo_ten_inf | ( | double | nb | ) |
get log with base 10
[in] | nb | number to compute the log |
void free_char_tab | ( | char ** | mat | ) |
release memory for a matrix of chars
[in] | mat | matrix of chars |
void free_char_vec | ( | char * | vec | ) |
release memory for a vector of char
[in] | vec | vector of chars |
void free_d3Darray_0 | ( | double *** | array3D | ) |
release memory for a 3D array of doubles, starting at index 0
release memory for a 3D array of doubles, starting at index 1
[in,out] | array3D | 3D array of doubles |
void free_d3Darray_1 | ( | double *** | array3D | ) |
char* get_char_cpy | ( | const char * | fmt, |
... | |||
) |
Copy the provided formatted string into a newly allocated memory.
The caller is responsible to release the memory.
fmt | The string to be formated and stored. Providing NULL returns NULL. |
char* get_char_cpy_varg | ( | const char * | fmt, |
va_list | argptr | ||
) |
char** get_char_tab | ( | int | nb_r, |
int | nb_c | ||
) |
create (with memory allocation) a [nb_r times nb_c] matrix of chars WARNING: only the first dimension (nb_r) is allocated, pointing to NULL !
[in] | nb_r | = nb of rows |
[in] | nb_c | = nb of columns |
char* get_char_vec | ( | int | l_v | ) |
create (with memory allocation) a vector (length l_v) of char
[in] | l_v | = size of the vector |
double*** get_d3Darray_0 | ( | int | nb_r, |
int | nb_c, | ||
int | z | ||
) |
create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 0
[in] | nb_r | nb of first dimension |
[in] | nb_c | nb of second dimension |
[in] | z | nb of third dimension |
double*** get_d3Darray_1 | ( | int | x, |
int | y, | ||
int | z | ||
) |
create (with memory allocation) a [x times y times z] 3D array of doubles, starting at index 1
[in] | x | nb of first dimension |
[in] | y | nb of second dimension |
[in] | z | nb of third dimension |
char* get_time_machine | ( | ) |
returns the current time as a String
source: http://en.wikipedia.org/wiki/C_date_and_time_functions
void* mbs_free | ( | void * | __ptr | ) |
Free the pointor ptr and set it to NULL.
int mbs_is_char_i_in_concat | ( | const char * | text, |
const char * | list | ||
) |
Check if the provided text (not case sensitive) is in a concatenated list of text separated by ";".
[in] | text | Pointer to the text to be found. |
[in] | list | Pointer to contatenated texts to be looked into. The separator must be ";". |
int mbs_is_char_in | ( | const char * | text, |
const char ** | list, | ||
int | nb_elem | ||
) |
Return the index of the provided text in a list of text.
[in] | text | Pointer to the text to be found. |
[in] | list | Array of pointer to text to be looked into. |
[in] | nb_elem | The number of element in list . |
int mbs_is_char_in_concat | ( | const char * | text, |
const char * | list | ||
) |
Check if the provided text is in a concatenated list of text separated by ";".
[in] | text | Pointer to the text to be found. |
[in] | list | Pointer to contatenated texts to be looked into. The separator must be ";". |
int mbs_is_char_in_concat_full | ( | const char * | text, |
const char * | list, | ||
char | sep, | ||
int | case_sens | ||
) |
Check if the provided text is in a concatenated list of text.
[in] | text | Pointer to the text to be found. |
[in] | list | Pointer to contatenated texts to be looked into. Concatenated text are separated by the provided separator. |
[in] | spe | The separator used in the list to separate the different texts. |
[in] | case_sens | If true (non-zero) the comparison is case-sensitive. If false (zero), the comparison ignore the case. |
void mbs_log | ( | char * | msg, |
... | |||
) |
Function for logging messages in a file called "log" where the program is executed.
It is useful for debugging when the printf messages do not appear in the console (for instance in Simulink).
int mbs_strcmp | ( | const char * | __s1, |
const char * | __s2 | ||
) |
Compare two char with strcmp.
[in] | __s1 | The first char to compare. |
[in] | __s2 | The second char to compare. |
int mbs_stricmp | ( | const char * | __s1, |
const char * | __s2 | ||
) |
Compare two char with _stricmp (convert strings to lower case, ignoring case sensitive).
[in] | __s1 | The first char to compare. |
[in] | __s2 | The second char to compare. |
int mbs_strncmp | ( | const char * | __s1, |
const char * | __s2, | ||
size_t | n | ||
) |
Compares only the first (at most) n bytes of of two chars.
This is a wrapping of the standard function strncmp() but catching undefined behaviors when at least one pointer is NULL:
n
is not zero): 1n
is zero): 0The later has been implemented as the standard declare an undefined behavior if one of the pointer is NULL but ensure a 0 returns if the count (n
) is equal to 0. Catching the mix of them (zero and NULL) avoids surprises.
[in] | __s1 | The first char to compare. |
[in] | __s2 | The second char to compare. |
[in] | n | The number of bytes to compare. |
n
bytes of s1 and s2 are equal, or if n
is zero;n
is not zero);char* mbs_strndup | ( | const char * | input_char, |
size_t | char_size | ||
) |
(taken from strdup definition in string.h since C23) Returns a pointer to a null-terminated byte string, which contains copies of at most size bytes from the string pointed to by src. The space for the new string is obtained as if malloc was called. If the null terminator is not encountered in the first size bytes, it is appended to the duplicated string.
The returned pointer must be passed to free to avoid a memory leak. ! User is responsible to free the memory ! If an error occurs, a null pointer is returned and errno might be set.
[in] | input_char | (const char*) The char to . |
[in] | char_size | (size_t) max number of bytes to copy from src. |
int mbs_strnicmp | ( | const char * | __s1, |
const char * | __s2, | ||
size_t | n | ||
) |
Compares only the first (at most) n bytes of of two chars ignoring the case.
This is a wrapping of the standard function strnicmp() but catching undefined behaviors when at least one pointer is NULL:
n
is not zero): 1n
is zero): 0The later has been implemented as the standard declare an undefined behavior if one of the pointer is NULL but ensure a 0 returns if the count (n
) is equal to 0. Catching the mix of them (zero and NULL) avoids surprises.
[in] | __s1 | The first char to compare. |
[in] | __s2 | The second char to compare. |
[in] | n | The number of bytes to compare. |
n
bytes of s1 and s2 are equal, or if n
is zero;n
is not zero);double pow_int | ( | double | basis, |
int | expo | ||
) |
compute efficiently pow with an integer exponent
[in] | a | = basis (double) |
[in] | b | = exponent (integer) |
int set_char_cpy | ( | char ** | dest, |
const char * | fmt, | ||
... | |||
) |
Set a copy the provided formatted string into a newly allocated memory.
If the destination adress is not NULL, it is FREED to avoid memory leaks. Ensure to only provide dynamic allocated memory adress or NULL.
The caller is responsible to release the memory.
[in,out] | dest | Destination where the copy must be set. |
[in] | fmt | The string to be formated and stored. Providing NULL sets NULL. |
int set_um_string | ( | char ** | um_str, |
const char * | new_txt | ||
) |
Redirect the memory of the string user model to a newly allocated char array.
The memory of the existing user model is freed.
A copy of the new string to set in the user model is created.
This function can be used to any pointer to char*, even if it has been created for string user model.
um_str | Pointer to the pointer of the string to be replaced, cannot be NULL. |
new_txt | The new text to be set in the newly allocated memory pointed by um_str. |
double sign | ( | double | a | ) |
sign function
[in] | a | input |
char* str_replace_char | ( | char * | orig, |
const char | old_char, | ||
const char * | new_str, | ||
int | free_orig | ||
) |
Create a copy of a string with a specific char replaced by a string.
If the char is not present in the input string, a copy is returned.
Only 1-byte characters from UTF-8 can be replaced from the string (globally excludes accentuated letters).
[in,out] | orig | Pointer to the original string. |
[in] | old_char | Character (unique) to be replaced from the original string. |
[in] | new_str | Pointer to the characters to be inserted instead of the old_char. A NULL pointer removes the old_char . |
[in] | free_str | Flag to free the original_str on replacement success. This allow to call the function as ‘txt = str_replace(txt, ’\t', " ", 1);` without memory leak. |