Files
starruler-linux/source/game/util/format.h
T
2018-07-17 14:15:37 +02:00

53 lines
1.3 KiB
C++

#pragma once
#include <string>
//std::string format("format $1-5", args[0-4])
//
//Formats the fromat string into a std::string output
//Arguments are placed into the string anywhere $1 through $5 are found
//
//For example:
//format("test $1", 2.5f) returns "test 2.50000"
//
//Float, Double, unsigned, int, c string, and std::string arguments are supported
//
//There are no formatting options
struct FormatArg {
enum ArgType {
Arg_float,
Arg_double,
Arg_unsigned,
Arg_int,
Arg_cstr,
Arg_string
};
unsigned print(char* buffer, unsigned space);
FormatArg();
FormatArg(float F);
FormatArg(double D);
FormatArg(unsigned U);
FormatArg(int I);
FormatArg(const char* C);
FormatArg(const std::string& S);
unsigned type;
union {
float f;
double d;
unsigned u;
int i;
const char* c;
const std::string* s;
};
};
void format(std::string& arg, const char* fmt, unsigned argn, FormatArg* argv);
std::string format(const char* format, FormatArg a1);
std::string format(const char* format, FormatArg a1, FormatArg a2);
std::string format(const char* format, FormatArg a1, FormatArg a2, FormatArg a3);
std::string format(const char* format, FormatArg a1, FormatArg a2, FormatArg a3, FormatArg a4);
std::string format(const char* format, FormatArg a1, FormatArg a2, FormatArg a3, FormatArg a4, FormatArg a5);