From e1c706b08f6a9722d3e3372e914b2e4143d625ae Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Thu, 13 Jun 2024 14:26:51 +0800 Subject: [PATCH] some fix --- include/pocketpy/common/sstream.h | 41 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/include/pocketpy/common/sstream.h b/include/pocketpy/common/sstream.h index b1e37cd0..f1344da3 100644 --- a/include/pocketpy/common/sstream.h +++ b/include/pocketpy/common/sstream.h @@ -14,6 +14,25 @@ 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 { @@ -29,6 +48,8 @@ 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}; } @@ -39,25 +60,6 @@ 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, \ @@ -79,6 +81,7 @@ pkpy_Str pkpy_SStream__submit(pkpy_SStream* self); #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 }