added a few functions to string and added some logs to string

This commit is contained in:
herbglitch 2024-01-15 02:14:35 -07:00
parent eaef5a584b
commit d64340525a
2 changed files with 27 additions and 0 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); uint8_t ARC_String_EqualsCString(ARC_String *string, const char *cstring, uint64_t length);
/**
* @brief check if ARC_String and cstring match
*
* @param string ARC_string to check
* @param offset postion based on string to start comparing against cstring
* @param cstring cstring to check
* @param length length of cstring
*
* @return 1 if match, 0 if they don't match
*/
uint8_t ARC_String_SubstringEqualsCString(ARC_String *string, uint64_t offset, const char *cstring, uint64_t length);
/** /**
* @brief checks if string is alphabetic * @brief checks if string is alphabetic
* *

View file

@ -100,6 +100,18 @@ uint8_t ARC_String_EqualsCString(ARC_String *string, const char *cstring, uint64
return 1; return 1;
} }
uint8_t ARC_String_SubstringEqualsCString(ARC_String *string, uint64_t offset, const char *cstring, uint64_t length){
if(string->length - offset < length){
return 0;
}
if(strncmp(string->data + offset, cstring, length)){
return 0;
}
return 1;
}
uint8_t ARC_String_Alpha(ARC_String *string){ uint8_t ARC_String_Alpha(ARC_String *string){
for(uint64_t length = string->length; length; length--){ for(uint64_t length = string->length; length; length--){
if(string->data[length - 1] >= 'a' && string->data[length - 1] <= 'z'){ if(string->data[length - 1] >= 'a' && string->data[length - 1] <= 'z'){
@ -131,6 +143,7 @@ double ARC_String_ToDouble(ARC_String *string){
uint64_t ARC_String_Find(ARC_String *string, ARC_String *substring){ uint64_t ARC_String_Find(ARC_String *string, ARC_String *substring){
if(!string || !substring){ if(!string || !substring){
ARC_DEBUG_ERR("ARC_String_Find(string, substring), string or substring was null");
arc_errno = ARC_ERRNO_NULL; arc_errno = ARC_ERRNO_NULL;
return ~(uint64_t)0; return ~(uint64_t)0;
} }
@ -152,6 +165,7 @@ 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){ uint64_t ARC_String_FindCString(ARC_String *string, const char *cstring, uint64_t length){
if(!string || !cstring){ if(!string || !cstring){
arc_errno = ARC_ERRNO_NULL; arc_errno = ARC_ERRNO_NULL;
ARC_DEBUG_ERR("ARC_String_FindCString(string, cstring, length), string or cstring was null");
return ~(uint64_t)0; return ~(uint64_t)0;
} }
@ -172,6 +186,7 @@ uint64_t ARC_String_FindCString(ARC_String *string, const char *cstring, uint64_
uint64_t ARC_String_FindBack(ARC_String *string, ARC_String *substring){ uint64_t ARC_String_FindBack(ARC_String *string, ARC_String *substring){
if(!string || !substring){ if(!string || !substring){
arc_errno = ARC_ERRNO_NULL; arc_errno = ARC_ERRNO_NULL;
ARC_DEBUG_ERR("ARC_String_FindBack(string, substring), string or substring was null");
return ~(uint64_t)0; return ~(uint64_t)0;
} }