blackmagic-esp32-s2/components/mlib/m-string.h

146 lines
2.8 KiB
C

/**
* @file m-string.h
* @author Sergey Gavrilov (who.just.the.doctor@gmail.com)
* @version 1.0
* @date 2021-11-21
*
* M*Lib string wrapper, to prevent inline code pollution
*/
#pragma once
#include <stdlib.h>
#include <stdarg.h>
typedef struct mstring_t mstring_t;
#define STRING_FAILURE ((size_t)-1)
/**
* Allocate string
* @return mstring_t*
*/
mstring_t* mstring_alloc();
/**
* Allocate string and set value
* @param text
* @return mstring_t*
*/
mstring_t* mstring_alloc_set(const char* text);
/**
* Free string
* @param mstr
*/
void mstring_free(mstring_t* mstr);
/**
* Set string value
* @param mstr
* @param text
*/
void mstring_set(mstring_t* mstr, const char* text);
/**
* Reset string value
* @param mstr
* @param text
*/
void mstring_reset(mstring_t* mstr);
/**
* Concatenate value
* @param mstr
* @param text
*/
void mstring_cat(mstring_t* mstr, const char* text);
/**
* Printf string value
* @param mstr
* @param format
* @param ...
* @return int
*/
int mstring_printf(mstring_t* mstr, const char format[], ...);
/**
*
* @param mstr
* @param format
* @param args
* @return int
*/
int mstring_vprintf(mstring_t* mstr, const char format[], va_list args);
/**
* Get constant pointer to string value
* @param mstr
* @return const char*
*/
const char* mstring_get_cstr(const mstring_t* mstr);
/**
* Get constant pointer to string value
* @param mstr
* @return size_t
*/
size_t mstring_size(const mstring_t* mstr);
/**
* Get char at index
* @param mstr
* @param index
* @return char
*/
char mstring_get_char(const mstring_t* mstr, size_t index);
/**
* Compare the string to the other string
* @param mstr
* @param mstr2
* @return int
*/
int mstring_cmp(const mstring_t* mstr, const mstring_t* mstr2);
/**
* Compare the string to the C string
* @param mstr
* @param cstr
* @return int
*/
int mstring_cmp_cstr(const mstring_t* mstr, const char* cstr);
/**
* Remove any characters from c_array that are present in the begining of the string and the end of the string
* @param mstr
* @param charac
*/
void mstring_strim(mstring_t* mstr, const char c_array[]);
/**
* Search for the position of the character c
* from the position 'start' (include) in the string
* Return STRING_FAILURE if not found.
* @param mstr
* @param c
* @param start
* @return size_t
*/
size_t mstring_search_char(mstring_t* mstr, char c, size_t start);
/**
* Set the string to the n first characters of other one
* @param mstr
* @param mstr_ref
* @param offset
* @param length
*/
void mstring_set_n(mstring_t* mstr, const mstring_t* mstr_ref, size_t offset, size_t length);
void mstring_set_strn(mstring_t* mstr, const char str[], size_t n);
void mstring_push_back(mstring_t* mstr, char c);
void mstring_right(mstring_t* mstr, size_t index);
size_t mstring_count_char(mstring_t* mstr, char c);