#pragma once
#include <Attributes.h>
#include <Result.h>
#include <stdarg.h>

typedef Result<void> (*callback_t)(char, void*);

Result<usize> cstyle_format(const char* format, callback_t callback, void* arg, va_list ap);
Result<usize> vstring_format(char* buf, size_t max, const char* format, va_list ap);
Result<usize> string_format(char* buf, size_t max, const char* format, ...);