feat: error handling, better prelude, double linked lists usage etc
This commit is contained in:
@@ -67,7 +67,6 @@ public:
|
||||
const T* end() const { return data + size; }
|
||||
};
|
||||
|
||||
|
||||
class StringView final : public View<char>
|
||||
{
|
||||
public:
|
||||
@@ -102,6 +101,32 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
static StringView FromFormat(const char* fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
va_list args2;
|
||||
va_copy(args2, args);
|
||||
|
||||
int len = std::vsnprintf(nullptr, 0, fmt, args2);
|
||||
va_end(args2);
|
||||
|
||||
if (len < 0) {
|
||||
va_end(args);
|
||||
return StringView();
|
||||
}
|
||||
|
||||
char* str = new char[len + 1];
|
||||
std::vsnprintf(str, len + 1, fmt, args);
|
||||
|
||||
va_end(args);
|
||||
|
||||
return StringView(str);
|
||||
}
|
||||
|
||||
size_t len() const { return strlen(data); }
|
||||
|
||||
const char* c_str() const { return data; }
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user