#include <iostream>
#include <string>
#include <array>
#include <algorithm>
#include <cstring>
const uint STRING_LENGTH = 25;
class fixedString
{
std::array<char, STRING_LENGTH+1> cdata;
public:
fixedString(const std::string &s)
: fixedString(s.c_str(), s.size())
{
}
fixedString(const char *s)
: fixedString(s, std::strlen(s))
{
}
fixedString(const char *s, const size_t len)
{
std::copy_n(s, std::min<size_t>(len, STRING_LENGTH), cdata.begin());
if (len < STRING_LENGTH)
std::fill_n(cdata.begin()+len, STRING_LENGTH-len, ' ');
cdata[STRING_LENGTH] = '\0';
}
friend std::ostream& operator<<(std::ostream& os, const fixedString &s)
{
os << s.cdata.data();
return os;
}
};
struct parameter {
double value;
fixedString name;
parameter(double _value, const fixedString &_name)
: value(_value), name(_name)
{
}
};
int main() {
parameter A(0.5, "my_variable");
parameter B(-0.1, "my other variable with the name that is too long and has to be truncated!");
std::cout << "parameter name: " << A.name << "\tis:\t" << A.value << '\n';
std::cout << "parameter name: " << B.name << "\tis:\t" << B.value << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxjc3RyaW5nPgoKY29uc3QgdWludCBTVFJJTkdfTEVOR1RIID0gMjU7CgpjbGFzcyBmaXhlZFN0cmluZwp7CglzdGQ6OmFycmF5PGNoYXIsIFNUUklOR19MRU5HVEgrMT4gY2RhdGE7CgkKcHVibGljOgoJZml4ZWRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJnMpCgkJOiBmaXhlZFN0cmluZyhzLmNfc3RyKCksIHMuc2l6ZSgpKQoJewoJfQoKCWZpeGVkU3RyaW5nKGNvbnN0IGNoYXIgKnMpCgkJOiBmaXhlZFN0cmluZyhzLCBzdGQ6OnN0cmxlbihzKSkKCXsKCX0KCglmaXhlZFN0cmluZyhjb25zdCBjaGFyICpzLCBjb25zdCBzaXplX3QgbGVuKQoJewoJCXN0ZDo6Y29weV9uKHMsIHN0ZDo6bWluPHNpemVfdD4obGVuLCBTVFJJTkdfTEVOR1RIKSwgY2RhdGEuYmVnaW4oKSk7CgkJaWYgKGxlbiA8IFNUUklOR19MRU5HVEgpCgkJCXN0ZDo6ZmlsbF9uKGNkYXRhLmJlZ2luKCkrbGVuLCBTVFJJTkdfTEVOR1RILWxlbiwgJyAnKTsKCQljZGF0YVtTVFJJTkdfTEVOR1RIXSA9ICdcMCc7Cgl9CgoJZnJpZW5kIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBmaXhlZFN0cmluZyAmcykKCXsKCQlvcyA8PCBzLmNkYXRhLmRhdGEoKTsKCQlyZXR1cm4gb3M7CQoJfQp9OwoKc3RydWN0IHBhcmFtZXRlciB7CiAgICBkb3VibGUgdmFsdWU7CiAgICBmaXhlZFN0cmluZyBuYW1lOwoKICAgIHBhcmFtZXRlcihkb3VibGUgX3ZhbHVlLCBjb25zdCBmaXhlZFN0cmluZyAmX25hbWUpCiAgICAgICAgOiB2YWx1ZShfdmFsdWUpLCBuYW1lKF9uYW1lKQogICAgewogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBwYXJhbWV0ZXIgQSgwLjUsICJteV92YXJpYWJsZSIpOwogICAgcGFyYW1ldGVyIEIoLTAuMSwgIm15IG90aGVyIHZhcmlhYmxlIHdpdGggdGhlIG5hbWUgdGhhdCBpcyB0b28gbG9uZyBhbmQgaGFzIHRvIGJlIHRydW5jYXRlZCEiKTsKCiAgICBzdGQ6OmNvdXQgPDwgInBhcmFtZXRlciBuYW1lOiAiIDw8IEEubmFtZSA8PCAiXHRpczpcdCIgPDwgQS52YWx1ZSA8PCAnXG4nOwogICAgc3RkOjpjb3V0IDw8ICJwYXJhbWV0ZXIgbmFtZTogIiA8PCBCLm5hbWUgPDwgIlx0aXM6XHQiIDw8IEIudmFsdWUgPDwgJ1xuJzsKfQ==