redo string to be a lil better
This commit is contained in:
149
utils/gryphn_string.c
Normal file
149
utils/gryphn_string.c
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
#include "gryphn_string.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
static char* add_string_to_string(char* str1, char* str2) {
|
||||||
|
char* buffer = (char*)malloc(sizeof(char) * (strlen(str1) + strlen(str2) + 1));
|
||||||
|
strcpy(buffer, str1);
|
||||||
|
strcat(buffer, str2);
|
||||||
|
buffer[strlen(str1) + strlen(str2)] = '\0';
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
// add char to char buffer
|
||||||
|
// better name
|
||||||
|
static char* add_char_to_string(char* str1, char str2) {
|
||||||
|
char* buffer = (char*)malloc(sizeof(char) * (strlen(str1) + 2));
|
||||||
|
strcpy(buffer, str1);
|
||||||
|
buffer[strlen(str1)] = str2;
|
||||||
|
buffer[strlen(str1) + 1] = '\0';
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct gnString_t {
|
||||||
|
gnChar* value;
|
||||||
|
} gnString_t;
|
||||||
|
|
||||||
|
gnString gnCreateStringFromConstCharPtr(const gnChar* input) {
|
||||||
|
gnString string = malloc(sizeof(gnString_t));;
|
||||||
|
string->value = (char*)malloc(sizeof(char) * (strlen(input) + 1));
|
||||||
|
strcpy(string->value, input);
|
||||||
|
string->value[strlen(input)] = '\0';
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
gnString gnCreateStringFromCharPtr(gnChar* input) {
|
||||||
|
gnString sting = malloc(sizeof(gnString_t));;
|
||||||
|
sting->value = (char*)malloc(sizeof(char) * (strlen(input) + 1));
|
||||||
|
strcpy(sting->value, input);
|
||||||
|
sting->value[strlen(input)] = '\0';
|
||||||
|
return sting;
|
||||||
|
}
|
||||||
|
gnString gnCreateStringFromChar(gnChar input) {
|
||||||
|
gnString string = malloc(sizeof(gnString_t));;
|
||||||
|
string->value = (char*)malloc(sizeof(char) * 2);
|
||||||
|
string->value[0] = input;
|
||||||
|
string->value[1] = '\0';
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
gnString gnCreateEmptyString(void) {
|
||||||
|
gnString string = malloc(sizeof(gnString_t));
|
||||||
|
string->value = (char*)malloc(sizeof(char));
|
||||||
|
string->value[0] = '\0';
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void gnSetStringToChar(gnString string, gnChar input) {
|
||||||
|
string->value = (gnChar*)malloc(sizeof(gnChar) * 2);
|
||||||
|
string->value[0] = input;
|
||||||
|
string->value[1] = '\0';
|
||||||
|
}
|
||||||
|
void gnSetStringToCharPtr(gnString string, gnChar* input) {
|
||||||
|
string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input) + 1));
|
||||||
|
strcpy(string->value, input);
|
||||||
|
string->value[strlen(input)] = '\0';
|
||||||
|
}
|
||||||
|
void gnSetStringToConstCharPtr(gnString string, const gnChar* input) {
|
||||||
|
string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input) + 1));
|
||||||
|
strcpy(string->value, input);
|
||||||
|
string->value[strlen(input)] = '\0';
|
||||||
|
}
|
||||||
|
void gnSetStringToString(gnString string, const gnString input) {
|
||||||
|
string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input->value) + 1));
|
||||||
|
strcpy(string->value, input->value);
|
||||||
|
string->value[strlen(input->value)] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
int gnStringFindChar(gnString string, const gnChar letter) {
|
||||||
|
for (unsigned long i = 0; i < strlen(string->value); i++)
|
||||||
|
if (string->value[i] == letter)
|
||||||
|
return i;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int gnStringFindString(gnString string, const gnString value) {
|
||||||
|
char first_char = value->value[0];
|
||||||
|
for (unsigned long i = 0; i < strlen(string->value); i++)
|
||||||
|
if (string->value[i] == first_char) {
|
||||||
|
gnBool same = GN_TRUE;
|
||||||
|
for (unsigned long c = 1; c < strlen(value->value); c++)
|
||||||
|
if (string->value[i + c] != value->value[c]) {
|
||||||
|
same = GN_FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (same)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void gnAddCharToString(gnString string, gnChar val) {
|
||||||
|
string->value = add_char_to_string(string->value, val);
|
||||||
|
}
|
||||||
|
void gnAddCharPtrToString(gnString string, gnChar* val) {
|
||||||
|
string->value = add_string_to_string(string->value, val);
|
||||||
|
}
|
||||||
|
void gnAddConstCharPtrToString(gnString string, const gnChar* val) {
|
||||||
|
string->value = add_string_to_string(string->value, (gnChar*)val);
|
||||||
|
}
|
||||||
|
void gnAddContGnStringToString(gnString string, gnString val) {
|
||||||
|
string->value = add_string_to_string(string->value, val->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
gnString gnCombineStringsChar(const gnString string, gnChar val) {
|
||||||
|
return gnCreateString(add_char_to_string(string->value, val));
|
||||||
|
}
|
||||||
|
gnString gnCombineStringsCharPtr(const gnString string, gnChar* val) {
|
||||||
|
return gnCreateString(add_string_to_string(string->value, val));
|
||||||
|
}
|
||||||
|
gnString gnCombineStringsConstCharPtr(const gnString string, const gnChar* val) {
|
||||||
|
return gnCreateString(add_string_to_string(string->value, (gnChar*)val));
|
||||||
|
}
|
||||||
|
gnString gnCombineStringsString(const gnString string, const gnString val) {
|
||||||
|
return gnCreateString(add_string_to_string(string->value, val->value));
|
||||||
|
}
|
||||||
|
|
||||||
|
gnChar gnGetCharAt(gnString string, int index) { return string->value[index]; }
|
||||||
|
void gnSetCharAt(gnString string, int index, gnChar letter) { string->value[index] = letter; }
|
||||||
|
|
||||||
|
|
||||||
|
gnBool gnStringEqualsCharPtr(const gnString string, gnChar* val) { return (strcmp(string->value, val) == 0); }
|
||||||
|
gnBool gnStringEqualsConstCharPtr(const gnString string,const gnChar* val) { return (strcmp(string->value, (gnChar*)val) == 0); }
|
||||||
|
gnBool gnStringEqualsString(const gnString string, const gnString val) { return (strcmp(string->value, val->value) == 0); }
|
||||||
|
|
||||||
|
const char* gnToCString(const gnString string) { return string->value; }
|
||||||
|
int gnStringLength(const gnString string) { return strlen(string->value); }
|
||||||
|
gnString gnSubstring(const gnString string, int index1, int index2) {
|
||||||
|
if (index2 == -1) index2 = gnStringLength(string);
|
||||||
|
char* out_value = (char*)malloc(sizeof(char) * ((index2 - index1) + 1));
|
||||||
|
for (int i = 0; i < (index2 - index1); i++)
|
||||||
|
out_value[i] = string->value[i + index1];
|
||||||
|
out_value[(index2 - index1)] = '\0';
|
||||||
|
return gnCreateString(out_value); // zero error checking on this function should really add that in later but like I dont have a logging library that I want to use
|
||||||
|
// my code never breaks either so I dont need error checks, il just not make errors cuz im not tim
|
||||||
|
}
|
||||||
|
int gnLetterCount(const gnString string, const gnChar letter) {
|
||||||
|
int count = 0;
|
||||||
|
for (int i = 0; i < gnStringLength(string); i++) if (string->value[i] == letter) count++;
|
||||||
|
return count;
|
||||||
|
}
|
@@ -1,172 +1,35 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "gryphn_bool.h"
|
#include "gryphn_bool.h"
|
||||||
|
|
||||||
static char* add_string_to_string(char* str1, char* str2) {
|
|
||||||
char* buffer = (char*)malloc(sizeof(char) * (strlen(str1) + strlen(str2) + 1));
|
|
||||||
strcpy(buffer, str1);
|
|
||||||
strcat(buffer, str2);
|
|
||||||
buffer[strlen(str1) + strlen(str2)] = '\0';
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
// add char to char buffer
|
|
||||||
// better name
|
|
||||||
static char* add_char_to_string(char* str1, char str2) {
|
|
||||||
char* buffer = (char*)malloc(sizeof(char) * (strlen(str1) + 2));
|
|
||||||
strcpy(buffer, str1);
|
|
||||||
buffer[strlen(str1)] = str2;
|
|
||||||
buffer[strlen(str1) + 1] = '\0';
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
typedef char gnChar;
|
typedef char gnChar;
|
||||||
|
typedef struct gnString_t* gnString;
|
||||||
|
|
||||||
typedef struct gnString {
|
gnString gnCreateStringFromConstCharPtr(const gnChar* input);
|
||||||
gnChar* value;
|
gnString gnCreateStringFromCharPtr(gnChar* input);
|
||||||
#ifdef GN_UTILS_CPP
|
gnString gnCreateStringFromChar(gnChar input);
|
||||||
gnString(const gnChar* input) {
|
gnString gnCreateEmptyString(void);
|
||||||
this->value = new gnChar[strlen(input) + 1]; // so like my dumbass forgot to put this earlier and some shit was broken but now it fixed
|
|
||||||
// I was wondering why one specific string crashed my program, it was my fault
|
|
||||||
strcpy(this->value, input);
|
|
||||||
this->value[strlen(input)] = '\0';
|
|
||||||
}
|
|
||||||
gnString(gnChar* input) {
|
|
||||||
this->value = new gnChar[strlen(input) + 1];
|
|
||||||
strcpy(this->value, input);
|
|
||||||
this->value[strlen(input)] = '\0';
|
|
||||||
}
|
|
||||||
gnString(gnChar input) {
|
|
||||||
this->value = new char[2];
|
|
||||||
this->value[0] = input;
|
|
||||||
this->value[1] = '\0';
|
|
||||||
}
|
|
||||||
gnString() {
|
|
||||||
this->value = new char[1];
|
|
||||||
this->value[0] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
operator const char*() const { return value; }
|
|
||||||
|
|
||||||
char operator[](int index) { return value [index]; }
|
|
||||||
const char operator[](int index) const { return value [index]; }
|
|
||||||
void operator +=(gnChar val) { value = add_char_to_string(value, val); }
|
|
||||||
void operator +=(gnChar* val) { value = add_string_to_string(value, val); }
|
|
||||||
void operator +=(const gnChar* val) { value = add_string_to_string(value, const_cast<char*>(val)); }
|
|
||||||
void operator +=(const gnString& string) { value = add_string_to_string(value, string.value); }
|
|
||||||
|
|
||||||
gnString operator +(gnChar val) { return gnString(add_char_to_string(value, val)); }
|
|
||||||
gnString operator +(gnChar* val){ return gnString(add_string_to_string(value, val)); }
|
|
||||||
gnString operator +(const gnChar* val) { return gnString(add_string_to_string(value, const_cast<char*>(val))); }
|
|
||||||
gnString operator +(const gnString& val) { return gnString(add_string_to_string(value, val.value)); }
|
|
||||||
|
|
||||||
gnBool operator ==(char* val) { return (strcmp(value, val) == 0); }
|
|
||||||
gnBool operator ==(const char* val) { return (strcmp(value, const_cast<char*>(val)) == 0); }
|
|
||||||
gnBool operator ==(const gnString& val) { return (strcmp(value, val.value) == 0); }
|
|
||||||
|
|
||||||
void operator =(char val) {
|
|
||||||
this->value = new char[2];
|
|
||||||
this->value[0] = val;
|
|
||||||
this->value[1] = '\0';
|
|
||||||
}
|
|
||||||
void operator =(char* val) { this->value = val; }
|
|
||||||
void operator =(const char* val) { this->value = const_cast<char*>(val); }
|
|
||||||
void operator =(const gnString& val) { this->value = val.value; }
|
|
||||||
#endif
|
|
||||||
} gnString;
|
|
||||||
|
|
||||||
static gnString gnCreateStringFromConstCharPtr(const gnChar* input) {
|
|
||||||
gnString string;
|
|
||||||
string.value = (char*)malloc(sizeof(char) * (strlen(input) + 1));
|
|
||||||
strcpy(string.value, input);
|
|
||||||
string.value[strlen(input)] = '\0';
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
static gnString gnCreateStringFromCharPtr(gnChar* input) {
|
|
||||||
gnString sting;
|
|
||||||
sting.value = (char*)malloc(sizeof(char) * (strlen(input) + 1));
|
|
||||||
strcpy(sting.value, input);
|
|
||||||
sting.value[strlen(input)] = '\0';
|
|
||||||
return sting;
|
|
||||||
}
|
|
||||||
static gnString gnCreateStringFromChar(gnChar input) {
|
|
||||||
gnString string;
|
|
||||||
string.value = (char*)malloc(sizeof(char) * 2);
|
|
||||||
string.value[0] = input;
|
|
||||||
string.value[1] = '\0';
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
static gnString gnCreateEmptyString() {
|
|
||||||
gnString string;
|
|
||||||
string.value = (char*)malloc(sizeof(char));
|
|
||||||
string.value[0] = '\0';
|
|
||||||
return string;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define gnCreateString(input) _Generic((input), \
|
#define gnCreateString(input) _Generic((input), \
|
||||||
const gnChar*: gnCreateStringFromConstCharPtr, \
|
const gnChar*: gnCreateStringFromConstCharPtr, \
|
||||||
gnChar*: gnCreateStringFromCharPtr, \
|
gnChar*: gnCreateStringFromCharPtr, \
|
||||||
gnChar: gnCreateStringFromChar \
|
gnChar: gnCreateStringFromChar \
|
||||||
)(input)
|
)(input)
|
||||||
|
|
||||||
static const char* gnToCString(const gnString string) { return string.value; }
|
const char* gnToCString(const gnString string);
|
||||||
static int gnStringLength(const gnString string) { return strlen(string.value); }
|
int gnStringLength(const gnString string);
|
||||||
static int gnStringFindChar(const gnString string, const gnChar letter) {
|
gnString gnSubstring(const gnString string, int index1, int index2);
|
||||||
for (int i = 0; i < strlen(string.value); i++)
|
int gnLetterCount(const gnString string, const gnChar letter);
|
||||||
if (string.value[i] == letter)
|
|
||||||
return i;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
static int gnStringFindString(const gnString string, const gnString value) {
|
|
||||||
char first_char = value.value[0];
|
|
||||||
for (int i = 0; i < strlen(string.value); i++)
|
|
||||||
if (string.value[i] == first_char) {
|
|
||||||
gnBool same = GN_TRUE;
|
|
||||||
for (int c = 1; c < strlen(value.value); c++)
|
|
||||||
if (string.value[i + c] != value.value[c]) {
|
|
||||||
same = GN_FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (same)
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
static gnString gnSubstring(const gnString string, int index1, int index2) {
|
|
||||||
if (index2 == -1) index2 = gnStringLength(string);
|
|
||||||
char* out_value = (char*)malloc(sizeof(char) * ((index2 - index1) + 1));
|
|
||||||
for (int i = 0; i < (index2 - index1); i++)
|
|
||||||
out_value[i] = string.value[i + index1];
|
|
||||||
out_value[(index2 - index1)] = '\0';
|
|
||||||
return gnCreateString(out_value); // zero error checking on this function should really add that in later but like I dont have a logging library that I want to use
|
|
||||||
// my code never breaks either so I dont need error checks, il just not make errors cuz im not tim
|
|
||||||
}
|
|
||||||
static int gnLetterCount(const gnString string, const gnChar letter) {
|
|
||||||
int count = 0;
|
|
||||||
for (int i = 0; i < gnStringLength(string); i++) if (string.value[i] == letter) count++;
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
int gnStringFindChar(gnString string, const gnChar letter);
|
||||||
|
int gnStringFindString(gnString string, const gnString value);
|
||||||
#define gnStringFind(string, value) _Generic((value), \
|
#define gnStringFind(string, value) _Generic((value), \
|
||||||
const gnChar: gnStringFindChar, \
|
const gnChar: gnStringFindChar, \
|
||||||
const gnString: gnStringFindValue \
|
const gnString: gnStringFindValue \
|
||||||
)(string, value)
|
)(string, value)
|
||||||
|
|
||||||
static void gnAddCharToString(gnString* string, gnChar val) {
|
void gnAddCharToString(gnString string, gnChar val);
|
||||||
string->value = add_char_to_string(string->value, val);
|
void gnAddCharPtrToString(gnString string, gnChar* val);
|
||||||
}
|
void gnAddConstCharPtrToString(gnString string, const gnChar* val);
|
||||||
static void gnAddCharPtrToString(gnString* string, gnChar* val) {
|
void gnAddContGnStringToString(gnString string, gnString val);
|
||||||
string->value = add_string_to_string(string->value, val);
|
|
||||||
}
|
|
||||||
static void gnAddConstCharPtrToString(gnString* string, const gnChar* val) {
|
|
||||||
string->value = add_string_to_string(string->value, (gnChar*)val);
|
|
||||||
}
|
|
||||||
static void gnAddContGnStringToString(gnString* string, gnString val) {
|
|
||||||
string->value = add_string_to_string(string->value, val.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
#define gnAddToString(string, value) _Generic((value), \
|
#define gnAddToString(string, value) _Generic((value), \
|
||||||
gnChar: gnAddCharToString, \
|
gnChar: gnAddCharToString, \
|
||||||
int: gnAddCharToString, \
|
int: gnAddCharToString, \
|
||||||
@@ -175,19 +38,10 @@ static void gnAddContGnStringToString(gnString* string, gnString val) {
|
|||||||
gnString: gnAddContGnStringToString \
|
gnString: gnAddContGnStringToString \
|
||||||
)(string, value)
|
)(string, value)
|
||||||
|
|
||||||
static gnString gnCombineStringsChar(const gnString string, gnChar val) {
|
gnString gnCombineStringsChar(const gnString string, gnChar val);
|
||||||
return gnCreateString(add_char_to_string(string.value, val));
|
gnString gnCombineStringsCharPtr(const gnString string, gnChar* val);
|
||||||
}
|
gnString gnCombineStringsConstCharPtr(const gnString string, const gnChar* val);
|
||||||
static gnString gnCombineStringsCharPtr(const gnString string, gnChar* val) {
|
gnString gnCombineStringsString(const gnString string, const gnString val);
|
||||||
return gnCreateString(add_string_to_string(string.value, val));
|
|
||||||
}
|
|
||||||
static gnString gnCombineStringsConstCharPtr(const gnString string, const gnChar* val) {
|
|
||||||
return gnCreateString(add_string_to_string(string.value, (gnChar*)val));
|
|
||||||
}
|
|
||||||
static gnString gnCombineStringsString(const gnString string, const gnString val) {
|
|
||||||
return gnCreateString(add_string_to_string(string.value, val.value));
|
|
||||||
}
|
|
||||||
|
|
||||||
#define gnCombineStrings(string, value) _Generic((value), \
|
#define gnCombineStrings(string, value) _Generic((value), \
|
||||||
gnChar: gnCombineStringsChar, \
|
gnChar: gnCombineStringsChar, \
|
||||||
int: gnCombineStringsChar, \
|
int: gnCombineStringsChar, \
|
||||||
@@ -196,40 +50,22 @@ static gnString gnCombineStringsString(const gnString string, const gnString val
|
|||||||
gnString: gnCombineStringsString \
|
gnString: gnCombineStringsString \
|
||||||
)(string, value)
|
)(string, value)
|
||||||
|
|
||||||
static gnBool gnStringEqualsCharPtr(const gnString string, gnChar* val) { return (strcmp(string.value, val) == 0); }
|
gnBool gnStringEqualsCharPtr(const gnString string, gnChar* val);
|
||||||
static gnBool gnStringEqualsConstCharPtr(const gnString string,const gnChar* val) { return (strcmp(string.value, (gnChar*)val) == 0); }
|
gnBool gnStringEqualsConstCharPtr(const gnString string,const gnChar* val);
|
||||||
static gnBool gnStringEqualsString(const gnString string, const gnString val) { return (strcmp(string.value, val.value) == 0); }
|
gnBool gnStringEqualsString(const gnString string, const gnString val);
|
||||||
|
|
||||||
#define gnStringEquals(string, value) _Generic((value), \
|
#define gnStringEquals(string, value) _Generic((value), \
|
||||||
gnChar*: gnStringEqualsCharPtr, \
|
gnChar*: gnStringEqualsCharPtr, \
|
||||||
const gnChar*: gnStringEqualsConstCharPtr, \
|
const gnChar*: gnStringEqualsConstCharPtr, \
|
||||||
gnString: gnStringEqualsString \
|
gnString: gnStringEqualsString \
|
||||||
)(string, value)
|
)(string, value)
|
||||||
|
|
||||||
static gnChar gnGetCharAt(const gnString string, int index) { return string.value[0]; }
|
gnChar gnGetCharAt(const gnString string, int index);
|
||||||
static void gnSetCharAt(gnString* string, int index, gnChar letter) { string->value[0] = letter; }
|
void gnSetCharAt(gnString string, int index, gnChar letter);
|
||||||
|
|
||||||
static void gnSetStringToChar(gnString* string, gnChar input) {
|
|
||||||
string->value = (gnChar*)malloc(sizeof(gnChar) * 2);
|
|
||||||
string->value[0] = input;
|
|
||||||
string->value[1] = '\0';
|
|
||||||
}
|
|
||||||
static void gnSetStringToCharPtr(gnString* string, gnChar* input) {
|
|
||||||
string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input) + 1));
|
|
||||||
strcpy(string->value, input);
|
|
||||||
string->value[strlen(input)] = '\0';
|
|
||||||
}
|
|
||||||
static void gnSetStringToConstCharPtr(gnString* string, const gnChar* input) {
|
|
||||||
string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input) + 1));
|
|
||||||
strcpy(string->value, input);
|
|
||||||
string->value[strlen(input)] = '\0';
|
|
||||||
}
|
|
||||||
static void gnSetStringToString(gnString* string, const gnString input) {
|
|
||||||
string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input.value) + 1));
|
|
||||||
strcpy(string->value, input.value);
|
|
||||||
string->value[strlen(input.value)] = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
void gnSetStringToChar(gnString string, gnChar input);
|
||||||
|
void gnSetStringToCharPtr(gnString string, gnChar* input);
|
||||||
|
void gnSetStringToConstCharPtr(gnString string, const gnChar* input);
|
||||||
|
void gnSetStringToString(gnString string, const gnString input);
|
||||||
#define gnSetString(string, value) _Generic((value), \
|
#define gnSetString(string, value) _Generic((value), \
|
||||||
gnChar: gnSetStringToChar, \
|
gnChar: gnSetStringToChar, \
|
||||||
int: gnSetStringToChar, \
|
int: gnSetStringToChar, \
|
||||||
|
Reference in New Issue
Block a user