diff --git a/include/pocketpy/common/sstream.h b/include/pocketpy/common/sstream.h index f1344da3..b1e37cd0 100644 --- a/include/pocketpy/common/sstream.h +++ b/include/pocketpy/common/sstream.h @@ -14,25 +14,6 @@ typedef struct pkpy_SStream { c11_vector data; } pkpy_SStream; -void pkpy_SStream__ctor(pkpy_SStream* self); -void pkpy_SStream__dtor(pkpy_SStream* self); - -void pkpy_SStream__write_int(pkpy_SStream* self, int); -void pkpy_SStream__write_int64(pkpy_SStream* self, int64_t); -void pkpy_SStream__write_float(pkpy_SStream* self, float, int precision); -void pkpy_SStream__write_double(pkpy_SStream* self, double, int precision); -void pkpy_SStream__write_char(pkpy_SStream* self, char); -void pkpy_SStream__write_Str(pkpy_SStream* self, const pkpy_Str*); -void pkpy_SStream__write_sv(pkpy_SStream* self, c11_string); -void pkpy_SStream__write_cstr(pkpy_SStream* self, const char*); -void pkpy_SStream__write_cstrn(pkpy_SStream* self, const char*, int); -void pkpy_SStream__write_hex(pkpy_SStream* self, unsigned char, bool non_zero); -void pkpy_SStream__write_ptr(pkpy_SStream* self, void*); - -// Submit the stream and return the final string. The stream becomes invalid after this call -pkpy_Str pkpy_SStream__submit(pkpy_SStream* self); - -#ifndef __cplusplus typedef struct pkpy_AnyStr { int type; union { @@ -48,8 +29,6 @@ typedef struct pkpy_AnyStr { }; } pkpy_AnyStr; -void pkpy_SStream__write_any(pkpy_SStream* self, const char* fmt, const pkpy_AnyStr* args, int n); - inline pkpy_AnyStr pkpy_AnyStr__int(int x) { return (pkpy_AnyStr){.type = 1, ._int = x}; } inline pkpy_AnyStr pkpy_AnyStr__int64(int64_t x) { return (pkpy_AnyStr){.type = 2, ._int64 = x}; } inline pkpy_AnyStr pkpy_AnyStr__float(float x) { return (pkpy_AnyStr){.type = 3, ._float = x}; } @@ -60,6 +39,25 @@ inline pkpy_AnyStr pkpy_AnyStr__sv(c11_string x) { return (pkpy_AnyStr){.type = inline pkpy_AnyStr pkpy_AnyStr__cstr(const char* x) { return (pkpy_AnyStr){.type = 8, ._cstr = x}; } inline pkpy_AnyStr pkpy_AnyStr__ptr(void* x) { return (pkpy_AnyStr){.type = 9, ._ptr = x}; } +void pkpy_SStream__ctor(pkpy_SStream* self); +void pkpy_SStream__dtor(pkpy_SStream* self); + +void pkpy_SStream__write_int(pkpy_SStream* self, int); +void pkpy_SStream__write_int64(pkpy_SStream* self, int64_t); +void pkpy_SStream__write_float(pkpy_SStream* self, float, int precision); +void pkpy_SStream__write_double(pkpy_SStream* self, double, int precision); +void pkpy_SStream__write_char(pkpy_SStream* self, char); +void pkpy_SStream__write_Str(pkpy_SStream* self, const pkpy_Str*); +void pkpy_SStream__write_sv(pkpy_SStream* self, c11_string); +void pkpy_SStream__write_cstr(pkpy_SStream* self, const char*); +void pkpy_SStream__write_cstrn(pkpy_SStream* self, const char*, int); +void pkpy_SStream__write_hex(pkpy_SStream* self, unsigned char, bool non_zero); +void pkpy_SStream__write_ptr(pkpy_SStream* self, void*); +void pkpy_SStream__write_any(pkpy_SStream* self, const char* fmt, const pkpy_AnyStr* args, int n); + +// Submit the stream and return the final string. The stream becomes invalid after this call +pkpy_Str pkpy_SStream__submit(pkpy_SStream* self); + #define pkpy__anystr(x) _Generic((x), \ int: pkpy_AnyStr__int, \ int64_t: pkpy_AnyStr__int64, \ @@ -81,7 +79,6 @@ inline pkpy_AnyStr pkpy_AnyStr__ptr(void* x) { return (pkpy_AnyStr){.type = 9, . #define pkpy__anystr_list(...) pkpy__anystr_list_dispatcher(__VA_ARGS__)(__VA_ARGS__) #define pkpy_SStream__write(self, fmt, ...) pkpy_SStream__write_any(self, fmt, pkpy__anystr_list(__VA_ARGS__)) -#endif #ifdef __cplusplus }