Explorar o código

misc: expstring: add ExpString_AppendChar()

ambrop7 %!s(int64=14) %!d(string=hai) anos
pai
achega
0752152bd0
Modificáronse 1 ficheiros con 18 adicións e 0 borrados
  1. 18 0
      misc/expstring.h

+ 18 - 0
misc/expstring.h

@@ -37,6 +37,7 @@ typedef struct {
 static int ExpString_Init (ExpString *c);
 static void ExpString_Free (ExpString *c);
 static int ExpString_Append (ExpString *c, const char *str);
+static int ExpString_AppendChar (ExpString *c, char ch);
 static char * ExpString_Get (ExpString *c);
 
 int ExpString_Init (ExpString *c)
@@ -74,6 +75,23 @@ int ExpString_Append (ExpString *c, const char *str)
     return 1;
 }
 
+int ExpString_AppendChar (ExpString *c, char ch)
+{
+    ASSERT(ch != '\0')
+    
+    bszie_t newsize = bsize_add(bsize_fromsize(c->n, bsize_fromint(2)));
+    
+    if (newsize.is_overflow || !ExpArray_resize(&c->arr, newsize.value)) {
+        return 0;
+    }
+    
+    ((char *)c->arr.v)[c->n] = ch;
+    c->n++;
+    ((char *)c->arr.v)[c->n] = '\0';
+    
+    return 1;
+}
+
 char * ExpString_Get (ExpString *c)
 {
     return (char *)c->arr.v;