13 void init (unordered_map<std::string, std::string> params) {
15 data_size =
sizeof(uint32_t);
16 data_description =
"i";
18 void Convert(uint32_t src,
void *dest) {
19 uint32_t *val = (uint32_t *)dest;
30 void init (unordered_map<
std::
string,
std::
string> params) {
31 data_size =
sizeof(double);
32 data_description =
"d";
33 std::string scale_str = params[
"scale"];
34 std::string offset_str = params[
"offset"];
35 sscanf(scale_str.c_str(),
"%le", &
scale);
36 sscanf(offset_str.c_str(),
"%le", &
offset);
39 double *val = (
double *)dest;
47 unordered_map<uint32_t, std::string> names;
49 void init (unordered_map<std::string, std::string> params) {
51 BOOST_FOREACH(
STRIP((std::pair<std::string, std::string>)) i, params ) {
53 std::string key = i.first;
54 std::string value = i.second;
55 if (1 != sscanf(key.c_str(),
"%li", &number)) {
59 names[(uint32_t)number] = value;
60 size_t newlength = value.size();
61 length = (newlength > length ? newlength : length);
64 const size_t descrlen = 16;
66 snprintf(descr, descrlen,
"c:%zu;", length);
67 data_description = std::string(descr);
69 void Convert(uint32_t src,
void *dest) {
70 char *val = (
char *)dest;
71 if (names.count(src)) {
72 std::string name = names[src];
74 strncpy(val, name.c_str(), data_size);
78 int i = snprintf(val, data_size,
"???? 0x%08X", src);
80 while (i < (
int)data_size) {val[i] =
'\0'; i++;}
void Convert(uint32_t src, void *dest)
void init(unordered_map< std::string, std::string > params)
#define DEFINE_CONVERSION_CLASS(name, body)