mirror of
https://github.com/D4C1-Labs/Flipper-ARF.git
synced 2026-07-31 20:49:22 +00:00
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user