added more cstring find and equals functions

This commit is contained in:
herbglitch 2024-06-12 02:54:54 -06:00
parent d173f943ee
commit 4d7ba1cf4e
2 changed files with 53 additions and 3 deletions

View file

@ -87,6 +87,18 @@ uint8_t ARC_String_Equals(ARC_String *first, ARC_String *second);
*/
uint8_t ARC_String_EqualsCString(ARC_String *string, const char *cstring, uint64_t length);
/**
* @brief check if ARC_String and cstring match
*
* @note will use strlen to get the length of the cstring
*
* @param string ARC_string to check
* @param cstring cstring to check
*
* @return 1 if match, 0 if they don't match
*/
uint8_t ARC_String_EqualsCStringWithStrlen(ARC_String *string, const char *cstring);
/**
* @brief check if ARC_String and cstring match
*
@ -156,6 +168,18 @@ uint64_t ARC_String_Find(ARC_String *string, ARC_String *substring);
*/
uint64_t ARC_String_FindCString(ARC_String *string, const char *cstring, uint64_t length);
/**
* @brief takes given cstring and gives position of first matching
*
* @note will use strlen to get the length of the cstring
*
* @param string the string that will be searched
* @param cstring the cstring to find within string
*
* @return ~(uint64_t)0 on error, anything else on success
*/
uint64_t ARC_String_FindCStringWithStrlen(ARC_String *string, const char *cstring);
/**
* @brief takes a given string, and assigns index and length for position of last matching substring
*
@ -167,7 +191,7 @@ uint64_t ARC_String_FindCString(ARC_String *string, const char *cstring, uint64_
uint64_t ARC_String_FindBack(ARC_String *string, ARC_String *substring);
/**
* @brief takes a given string, and assigns index and length for position of last matching substring
* @brief takes a given cstring and give position of last matching
*
* @param string the string that will be searched
* @param cstring the cstring to find within string
@ -177,6 +201,18 @@ uint64_t ARC_String_FindBack(ARC_String *string, ARC_String *substring);
*/
uint64_t ARC_String_FindBackCString(ARC_String *string, const char *cstring, uint64_t length);
/**
* @brief takes a given cstring and give position of last matching
*
* @note will use strlen to get the length of the cstring
*
* @param string the string that will be searched
* @param cstring the cstring to find within string
*
* @return ~(uint64_t)0 on error, anything else on success
*/
uint64_t ARC_String_FindBackCStringWithStrlen(ARC_String *string, const char *cstring);
/**
* @brief strips the ends based on a given char
*

View file

@ -24,7 +24,9 @@ void ARC_String_CreateWithStrlen(ARC_String **string, char *data){
}
void ARC_String_Destroy(ARC_String *string){
if(string->data){
free(string->data);
}
free(string);
}
@ -100,6 +102,10 @@ uint8_t ARC_String_EqualsCString(ARC_String *string, const char *cstring, uint64
return 1;
}
uint8_t ARC_String_EqualsCStringWithStrlen(ARC_String *string, const char *cstring){
return ARC_String_EqualsCString(string, cstring, strlen(cstring));
}
uint8_t ARC_String_SubstringEqualsCString(ARC_String *string, uint64_t offset, const char *cstring, uint64_t length){
if(string->length - offset < length){
return 0;
@ -183,6 +189,10 @@ uint64_t ARC_String_FindCString(ARC_String *string, const char *cstring, uint64_
return ~(uint64_t)0;
}
uint64_t ARC_String_FindCStringWithStrlen(ARC_String *string, const char *cstring){
return ARC_String_FindCString(string, cstring, strlen(cstring));
}
uint64_t ARC_String_FindBack(ARC_String *string, ARC_String *substring){
if(!string || !substring){
arc_errno = ARC_ERRNO_NULL;
@ -225,6 +235,10 @@ uint64_t ARC_String_FindBackCString(ARC_String *string, const char *cstring, uin
return ~(uint64_t)0;
}
uint64_t ARC_String_FindBackCStringWithStrlen(ARC_String *string, const char *cstring){
return ARC_String_FindBackCString(string, cstring, strlen(cstring));
}
void ARC_String_StripEnds(ARC_String **stripped, ARC_String *original, char charToStrip){
if(!original){
arc_errno = ARC_ERRNO_NULL;