aboutsummaryrefslogtreecommitdiff
path: root/sb.c
diff options
context:
space:
mode:
Diffstat (limited to 'sb.c')
-rw-r--r--sb.c67
1 files changed, 0 insertions, 67 deletions
diff --git a/sb.c b/sb.c
deleted file mode 100644
index 0353545..0000000
--- a/sb.c
+++ /dev/null
@@ -1,67 +0,0 @@
-#include <stdlib.h>
-#include <string.h>
-#include "sb.h"
-
-struct node{ // linked list, but strings don't have to be max size
- size_t cap;
- size_t len;
- char* text;
- node* next;
-};
-
-// malloc might fail, but the entire program should just crash if it does
-node* newsb(size_t cap){
- node* sb;
- sb = malloc(sizeof(node));
- sb->text = malloc(sizeof(char)*cap);
- sb->len = 0; sb->cap = cap;
- sb->next = NULL;
- return sb;
-}
-
-node* extendsb(node* tail){
- tail->next = newsb(tail->cap*2);
- return tail->next;
-}
-
-node* appendsb(node* tail, const char* str){
- for (int i=0; str[i] != '\0'; i++){
- if (tail->len == tail->cap) tail = extendsb(tail); // if full, extend
- *(tail->text + tail->len) = str[i]; // copy str[i] to last open spot
- tail->len++;
- }
- return tail;
-}
-///////// i want to prevent this duplication but cant figure out how :(
-
-node* addchrsb(node* tail, char chr){
- if (tail->len == tail->cap) tail = extendsb(tail); // if full, extend
- *(tail->text + tail->len) = chr; // copy str[i] to last open spot
- tail->len++;
- return tail;
-}
-
-char* tostr(node* head){ // destructive; frees the whole chain
- int len;
- char* str;
- len = lensb(head);
- str = malloc((len+1)*sizeof(char)); // need +1 for null terminator
- str[len] = '\0';
-
- len = 0; //controls progression through str
- do {
- strncpy(str+len, head->text, head->len);
- len += head->len;
- head = head->next;
- free(head);
- } while ( head != NULL);
- return str;
-}
-
-int lensb(node* head){ // how much space do i need to concat all strings
- int len = 0;
- do {
- len += head->len;
- } while ( (head = head->next) != NULL);
- return len;
-}