Files
Flipper-ARF/applications/system/zero/scripts/wave/data_structures/string_writer.c
T
d4rks1d33 ad4c171054
Build Dev Firmware / build (push) Failing after 14m40s
A lot of changes
2026-06-02 23:32:16 -03:00

58 lines
1.5 KiB
C

#include "string_writer.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct StringWriter {
char* buffer;
int length;
int capacity;
};
StringWriter* string_writer_alloc(int maxCapacity) {
StringWriter* writer = (StringWriter*)malloc(sizeof(StringWriter));
writer->capacity = maxCapacity;
writer->length = 0;
writer->buffer = (char*)malloc(maxCapacity * sizeof(char));
memset(writer->buffer, 0, maxCapacity);
return writer;
}
void string_writer_free(StringWriter* writer) {
free(writer->buffer);
free(writer);
}
void string_writer_add_str(StringWriter* writer, char* str) {
int str_len = strlen(str);
if(writer->length + str_len < writer->capacity) {
memcpy(writer->buffer + writer->length, str, str_len);
writer->length += str_len;
}
}
void string_writer_add_str_format(StringWriter* writer, char* format, char* str) {
char temp[200];
snprintf(temp, sizeof(temp), format, str);
string_writer_add_str(writer, temp);
}
void string_writer_add_int(StringWriter* writer, int toAdd) {
char temp[12];
snprintf(temp, sizeof(temp), "%d", toAdd);
string_writer_add_str(writer, temp);
}
void string_writer_add_chars(StringWriter* writer, char* chars) {
string_writer_add_str(writer, chars);
}
void string_writer_clear(StringWriter* writer) {
memset(writer->buffer, 0, writer->length);
writer->length = 0;
}
char* string_writer_get(StringWriter* writer) {
return writer->buffer;
}