#pragma once

#define COMMA ,

#define STRUCT_FIELD_GEN(name, type, ...) type name;

#define STRUCT_FIELD_INIT(name, type, defa) name(defa)
#define STRUCT_FIELD_INIT_DEFAULT(name, type, ...) name()

#define STRUCT_FIELD_PRINT(name, ...) ss << #name << "=" << name << "\n";