#pragma once
#include <luna/Buffer.h>
#include <luna/String.h>

class StringBuilder
{
  public:
    Result<void> add(const String& value);
    Result<void> add(StringView value);
    Result<void> add(void* value);
    Result<void> add(long value);
    Result<void> add(unsigned long value);
    Result<void> add(char value);

    Result<void> format(StringView fmt, ...);
    Result<void> vformat(StringView fmt, va_list ap);

    Result<String> string();

  private:
    Buffer m_data;
};