#pragma once
enum StringStyle {
StringAuto = 0,
StringNone,
StringBA,
StringAscii
};
enum BracketsStyle {
BracketsAuto = 0,
BracketsNone,
BracketsSquare,
BracketsParen,
BracketsCurly
};
enum PrecisionStyle {
PrecisionAuto = -2,
PrecisionField
};
enum FloatStyle {
FloatNone = 0,
FloatAuto,
FloatFixed,
FloatScientific
};
enum SignStyle {
SignAuto = 0,
SignSigned,
SignUnsigned
};
#define SEPARATOR_LEN 4
#define PREFIX_LEN 4
struct Value_Format {
enum StringStyle string = StringAuto;
enum BracketsStyle brackets = BracketsAuto;
char separator[4] = {0};
char prefix[4] = {0};
int base = 10;
union {
enum PrecisionStyle precision = PrecisionAuto;
int digits;
};
enum FloatStyle floatfmt = FloatNone;
bool uppercase = false;
enum SignStyle sign = SignAuto;
bool big_endian = false;
};
char *format_field_name(Arena& arena, String_Vector& in_vec, Field& field);
char *format_type_name(Arena& arena, String_Vector& in_vec, Field& field);
void format_field_value(Field& field, Value_Format& format, Span& span, char*& cell, int cell_len);