mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
* Make SourceData c11 * make it compile * add a marco * follow up rename of c11_vetor__push * remove isascii marco * fix empty function name handling * change enum back * Remove trival accessor * make pkpy_Str__take_buf hidden * make it compile * remove rcptr and use shared_ptr instead * change enum name in C++ code back * fix type problem * remove strdup polyfill * remove xmake * ...
49 lines
1.3 KiB
C
49 lines
1.3 KiB
C
#include "pocketpy/common/sstream.h"
|
|
#include <stdio.h>
|
|
|
|
void pkpy_SStream__ctor(pkpy_SStream* self) {
|
|
c11_vector__ctor(&self->data, sizeof(char));
|
|
}
|
|
|
|
void pkpy_SStream__dtor(pkpy_SStream* self) {
|
|
c11_vector__dtor(&self->data);
|
|
}
|
|
|
|
void pkpy_SStream__append_cstr(pkpy_SStream* self, const char* str) {
|
|
for (int i = 0; str[i] != '\0'; i++) {
|
|
c11_vector__push(char, &self->data, str[i]);
|
|
}
|
|
}
|
|
|
|
void pkpy_SStream__append_cstrn(pkpy_SStream* self, const char* str, int n) {
|
|
for (int i = 0; i < n; i++) {
|
|
c11_vector__push(char, &self->data, str[i]);
|
|
}
|
|
}
|
|
|
|
void pkpy_SStream__append_Str(pkpy_SStream* self, const pkpy_Str* str) {
|
|
pkpy_SStream__append_cstr(self, pkpy_Str__data(str));
|
|
}
|
|
|
|
void pkpy_SStream__append_char(pkpy_SStream* self, char c) {
|
|
c11_vector__push(char, &self->data, c);
|
|
}
|
|
|
|
void pkpy_SStream__append_int(pkpy_SStream* self, int i) {
|
|
char str[12]; // sign + 10 digits + null terminator
|
|
sprintf(str, "%d", i);
|
|
pkpy_SStream__append_cstr(self, str);
|
|
}
|
|
|
|
void pkpy_SStream__append_int64(pkpy_SStream* self, int64_t i) {
|
|
char str[23]; // sign + 21 digits + null terminator
|
|
sprintf(str, "%lld", i);
|
|
pkpy_SStream__append_cstr(self, str);
|
|
}
|
|
|
|
pkpy_Str pkpy_SStream__to_Str(const pkpy_SStream* self) {
|
|
pkpy_Str res;
|
|
pkpy_Str__ctor2(&res, self->data.data, self->data.count);
|
|
return res;
|
|
}
|