Musa-Cpp-Lib-V2/lib/Base/New_String.cpp

52 lines
1.2 KiB
C++

/*
#define SB_HELPER() \
if (sb->allocated < max_array_size(*sb)) { \
array_reserve(*sb, max_array_size(*sb)); \
} \
s64 buffer_size = sb->allocated - sb->count;\
u8* current_point = &sb->data[sb->count]
// This is not super flexible because we cannot do leading zeros or align...
template <typename T> // Base-10
string int_to_string(String_Builder* sb, T value, s32 width, bool is_signed) {
SB_HELPER();
string result;
bool negative = false;
u8 temporary_buffer[32];
s32 position = 0;
u64 v = 0;
if (is_signed && value < 0) {
negative = true;
// convert to unsigned magnitude safely
v = (u64)(-(s64)value);
} else {
v = (u64)value;
}
// Special case 0:
if (v == 0) {
}
}
force_inline void print_to_builder (String_Builder* sb, u8 v) {
SB_HELPER();
return int_to_string(v, 8, is_signed=false);
}
force_inline void print_to_builder (String_Builder* sb, string v) {
sb->count += v.count;
}
// fallback:
template <typename T>
force_inline string print_to_builder (String_Builder* sb, T&) {
return string("[unsupported type for to_builder conversion!]");
}
*/