The build system refers to unexisting files, this patch adds these. This patch is not ready for upstreaming yet. It seems to build fine on RPM-based systems, so why it doesn't on Alpine has to be investigated first. diff --git a/src/server/adaptor.h b/src/server/adaptor.h index 76faa2c..65fa2cc 100644 --- a/src/server/adaptor.h +++ b/src/server/adaptor.h @@ -35,6 +35,7 @@ #include #include #include +#include #include "../lib/event-io.h" #include "../lib/wall-info.h" diff --git a/src/server/config.type.cpp b/src/server/config.type.cpp new file mode 100644 index 0000000..790a2c3 --- /dev/null +++ b/src/server/config.type.cpp @@ -0,0 +1,33 @@ +#include +#include "config.type.h" +iodata::validator * etc_timed_rc_validator(){ +static bool init_done = false ; +static iodata::validator A ; +static iodata::/*validator::*/record_type record_type1 = { "config_t", vector(10) } ; +static iodata::/*validator::*/node_integer node1("queue_threshold_long", 0, 0, 5000) ; +static iodata::/*validator::*/node_integer node2("queue_threshold_short", 0, 0, 1000) ; +static iodata::/*validator::*/node_bytes node3("data_directory", 0, 0, ".timed") ; +static iodata::/*validator::*/node_bytes node4("settings_file", 0, 0, "settings.data") ; +static iodata::/*validator::*/node_bytes node5("events_file", 0, 0, "events.data") ; +static iodata::/*validator::*/node_bytes node6("default_timezone", 0, 0, "Europe/Helsinki") ; +static iodata::/*validator::*/node_integer node7("default_gmt_offset", 0, 0, 7200) ; +static iodata::/*validator::*/node_integer node8("voland_ping_retries", 0, 0, 5) ; +static iodata::/*validator::*/node_integer node9("voland_ping_sleep", 0, 0, 3000) ; +static iodata::/*validator::*/node_integer node10("dialog_discard_threshold", 0, 0, 1440) ; +if (not init_done) { init_done = true ; +A.set_static() ; +record_type1.nodes[0] = &node1 ; +record_type1.nodes[1] = &node2 ; +record_type1.nodes[2] = &node3 ; +record_type1.nodes[3] = &node4 ; +record_type1.nodes[4] = &node5 ; +record_type1.nodes[5] = &node6 ; +record_type1.nodes[6] = &node7 ; +record_type1.nodes[7] = &node8 ; +record_type1.nodes[8] = &node9 ; +record_type1.nodes[9] = &node10 ; +A.types["config_t"] = &record_type1 ; +} +return &A ; +} + diff --git a/src/server/config.type.h b/src/server/config.type.h new file mode 100644 index 0000000..19e45fa --- /dev/null +++ b/src/server/config.type.h @@ -0,0 +1,5 @@ +#ifndef iodata_type_to_cxx_36533611597108116361108110310010049508410010747524756545672528056120841041181141165169122701225010353577311276108891018747 +#define iodata_type_to_cxx_36533611597108116361108110310010049508410010747524756545672528056120841041181141165169122701225010353577311276108891018747 +#include +iodata::validator * etc_timed_rc_validator() ; +#endif diff --git a/src/server/customization.type.cpp b/src/server/customization.type.cpp new file mode 100644 index 0000000..cac87d3 --- /dev/null +++ b/src/server/customization.type.cpp @@ -0,0 +1,23 @@ +#include +#include "customization.type.h" +iodata::validator * customization_data_validator(){ +static bool init_done = false ; +static iodata::validator A ; +static iodata::/*validator::*/record_type record_type1 = { "customization_t", vector(5) } ; +static iodata::/*validator::*/node_bytes node1("format24", 0, 0, "True") ; +static iodata::/*validator::*/node_bytes node2("useNitz", 0, 0, "True") ; +static iodata::/*validator::*/node_bytes node3("autoTime", 0, 0, "True") ; +static iodata::/*validator::*/node_bytes node4("guessTz", 0, 0, "True") ; +static iodata::/*validator::*/node_bytes node5("tz", 0, 0, "Europe/Helsinki") ; +if (not init_done) { init_done = true ; +A.set_static() ; +record_type1.nodes[0] = &node1 ; +record_type1.nodes[1] = &node2 ; +record_type1.nodes[2] = &node3 ; +record_type1.nodes[3] = &node4 ; +record_type1.nodes[4] = &node5 ; +A.types["customization_t"] = &record_type1 ; +} +return &A ; +} + diff --git a/src/server/customization.type.h b/src/server/customization.type.h new file mode 100644 index 0000000..85a6217 --- /dev/null +++ b/src/server/customization.type.h @@ -0,0 +1,5 @@ +#ifndef iodata_type_to_cxx_3653361159710811636788649106102111118575712255688710012010311353120977411580115471047269494690121985674481075775871147349 +#define iodata_type_to_cxx_3653361159710811636788649106102111118575712255688710012010311353120977411580115471047269494690121985674481075775871147349 +#include +iodata::validator * customization_data_validator() ; +#endif diff --git a/src/server/queue.type.cpp b/src/server/queue.type.cpp new file mode 100644 index 0000000..c307310 --- /dev/null +++ b/src/server/queue.type.cpp @@ -0,0 +1,115 @@ +#include +#include "queue.type.h" +iodata::validator * events_data_validator(){ +static bool init_done = false ; +static iodata::validator A ; +static iodata::/*validator::*/record_type record_type1 = { "action_t", vector(3) } ; +static iodata::/*validator::*/record_type record_type2 = { "b_attr_t", vector(1) } ; +static iodata::/*validator::*/record_type record_type3 = { "broken_down_t", vector(5) } ; +static iodata::/*validator::*/record_type record_type4 = { "cred_modifier_t", vector(2) } ; +static iodata::/*validator::*/record_type record_type5 = { "credentials_t", vector(3) } ; +static iodata::/*validator::*/record_type record_type6 = { "event_queue_t", vector(2) } ; +static iodata::/*validator::*/record_type record_type7 = { "event_t", vector(15) } ; +static iodata::/*validator::*/record_type record_type8 = { "key_value_t", vector(2) } ; +static iodata::/*validator::*/record_type record_type9 = { "recurrence_pattern_t", vector(6) } ; +static const char *bitmask_list1[] = { NULL } ; +static iodata::/*validator::*/node_bitmask node1("flags", 0, 0, iodata::bitmask(0, bitmask_list1)) ; +static iodata::/*validator::*/node_record node2("attr", 1, 0, "key_value_t", &record_type8) ; +static iodata::/*validator::*/node_record node3("cred_modifier", 1, 0, "cred_modifier_t", &record_type4) ; +static iodata::/*validator::*/node_record node4("attr", 1, 0, "key_value_t", &record_type8) ; +static iodata::/*validator::*/node_integer node5("year", 0, 0, 0) ; +static iodata::/*validator::*/node_integer node6("month", 0, 0, 0) ; +static iodata::/*validator::*/node_integer node7("day", 0, 0, 0) ; +static iodata::/*validator::*/node_integer node8("hour", 0, 0, 0) ; +static iodata::/*validator::*/node_integer node9("minute", 0, 0, 0) ; +static iodata::/*validator::*/node_bytes node10("token", 0, 1, "") ; +static iodata::/*validator::*/node_integer node11("accrue", 0, 0, 0) ; +static iodata::/*validator::*/node_bytes node12("uid", 0, 0, "nobody") ; +static iodata::/*validator::*/node_bytes node13("gid", 0, 0, "nogroup") ; +static iodata::/*validator::*/node_bytes node14("tokens", 1, 0, "") ; +static iodata::/*validator::*/node_integer node15("next_cookie", 0, 0, 1) ; +static iodata::/*validator::*/node_record node16("events", 1, 0, "event_t", &record_type7) ; +static iodata::/*validator::*/node_integer node17("cookie", 0, 1, 0) ; +static iodata::/*validator::*/node_integer node18("ticker", 0, 0, 0) ; +static iodata::/*validator::*/node_record node19("t", 0, 0, "broken_down_t", &record_type3) ; +static iodata::/*validator::*/node_bytes node20("tz", 0, 0, "") ; +static iodata::/*validator::*/node_record node21("attr", 1, 0, "key_value_t", &record_type8) ; +static const char *bitmask_list2[] = { NULL } ; +static iodata::/*validator::*/node_bitmask node22("flags", 0, 0, iodata::bitmask(0, bitmask_list2)) ; +static iodata::/*validator::*/node_record node23("recrs", 1, 0, "recurrence_pattern_t", &record_type9) ; +static iodata::/*validator::*/node_record node24("actions", 1, 0, "action_t", &record_type1) ; +static iodata::/*validator::*/node_integer node25("snooze", 1, 0, 0) ; +static iodata::/*validator::*/node_record node26("b_attr", 1, 0, "b_attr_t", &record_type2) ; +static iodata::/*validator::*/node_integer node27("dialog_time", 0, 0, 0) ; +static iodata::/*validator::*/node_integer node28("tsz_max", 0, 0, 0) ; +static iodata::/*validator::*/node_integer node29("tsz_counter", 0, 0, 0) ; +static iodata::/*validator::*/node_record node30("client_creds", 0, 0, "credentials_t", &record_type5) ; +static iodata::/*validator::*/node_record node31("cred_modifier", 1, 0, "cred_modifier_t", &record_type4) ; +static iodata::/*validator::*/node_bytes node32("key", 0, 0, "") ; +static iodata::/*validator::*/node_bytes node33("val", 0, 0, "") ; +static const char *bitmask_list3[] = { NULL } ; +static iodata::/*validator::*/node_bitmask node34("flags", 0, 0, iodata::bitmask(0, bitmask_list3)) ; +static const char *bitmask_list4[] = { "any_mins", NULL } ; +static iodata::/*validator::*/node_bitmask node35("mins", 0, 0, iodata::bitmask(0, bitmask_list4)) ; +static const char *bitmask_list5[] = { "any_hour", NULL } ; +static iodata::/*validator::*/node_bitmask node36("hour", 0, 0, iodata::bitmask(0, bitmask_list5)) ; +static const char *bitmask_list6[] = { "any_mday", NULL } ; +static iodata::/*validator::*/node_bitmask node37("mday", 0, 0, iodata::bitmask(0, bitmask_list6)) ; +static const char *bitmask_list7[] = { "any_wday", NULL } ; +static iodata::/*validator::*/node_bitmask node38("wday", 0, 0, iodata::bitmask(0, bitmask_list7)) ; +static const char *bitmask_list8[] = { "any_mons", NULL } ; +static iodata::/*validator::*/node_bitmask node39("mons", 0, 0, iodata::bitmask(0, bitmask_list8)) ; +if (not init_done) { init_done = true ; +A.set_static() ; +record_type1.nodes[0] = &node1 ; +record_type1.nodes[1] = &node2 ; +record_type1.nodes[2] = &node3 ; +A.types["action_t"] = &record_type1 ; +record_type2.nodes[0] = &node4 ; +A.types["b_attr_t"] = &record_type2 ; +record_type3.nodes[0] = &node5 ; +record_type3.nodes[1] = &node6 ; +record_type3.nodes[2] = &node7 ; +record_type3.nodes[3] = &node8 ; +record_type3.nodes[4] = &node9 ; +A.types["broken_down_t"] = &record_type3 ; +record_type4.nodes[0] = &node10 ; +record_type4.nodes[1] = &node11 ; +A.types["cred_modifier_t"] = &record_type4 ; +record_type5.nodes[0] = &node12 ; +record_type5.nodes[1] = &node13 ; +record_type5.nodes[2] = &node14 ; +A.types["credentials_t"] = &record_type5 ; +record_type6.nodes[0] = &node15 ; +record_type6.nodes[1] = &node16 ; +A.types["event_queue_t"] = &record_type6 ; +record_type7.nodes[0] = &node17 ; +record_type7.nodes[1] = &node18 ; +record_type7.nodes[2] = &node19 ; +record_type7.nodes[3] = &node20 ; +record_type7.nodes[4] = &node21 ; +record_type7.nodes[5] = &node22 ; +record_type7.nodes[6] = &node23 ; +record_type7.nodes[7] = &node24 ; +record_type7.nodes[8] = &node25 ; +record_type7.nodes[9] = &node26 ; +record_type7.nodes[10] = &node27 ; +record_type7.nodes[11] = &node28 ; +record_type7.nodes[12] = &node29 ; +record_type7.nodes[13] = &node30 ; +record_type7.nodes[14] = &node31 ; +A.types["event_t"] = &record_type7 ; +record_type8.nodes[0] = &node32 ; +record_type8.nodes[1] = &node33 ; +A.types["key_value_t"] = &record_type8 ; +record_type9.nodes[0] = &node34 ; +record_type9.nodes[1] = &node35 ; +record_type9.nodes[2] = &node36 ; +record_type9.nodes[3] = &node37 ; +record_type9.nodes[4] = &node38 ; +record_type9.nodes[5] = &node39 ; +A.types["recurrence_pattern_t"] = &record_type9 ; +} +return &A ; +} + diff --git a/src/server/queue.type.h b/src/server/queue.type.h new file mode 100644 index 0000000..aeb4a6a --- /dev/null +++ b/src/server/queue.type.h @@ -0,0 +1,5 @@ +#ifndef iodata_type_to_cxx_365336115971081163699676812048721149972120559810779841095611711010510311310371579971775271102888690508111211551651205047 +#define iodata_type_to_cxx_365336115971081163699676812048721149972120559810779841095611711010510311310371579971775271102888690508111211551651205047 +#include +iodata::validator * events_data_validator() ; +#endif diff --git a/src/server/server.pro b/src/server/server.pro index 3bec0c7..3b00d76 100644 --- a/src/server/server.pro +++ b/src/server/server.pro @@ -10,7 +10,7 @@ VERSION = $$(TIMED_VERSION) INCLUDEPATH += ../h QMAKE_LIBDIR_FLAGS += -L../lib -L../voland -LIBS += -ltimed-qt5 -ltimed-voland-qt5 +LIBS += -ltimed-qt5 -ltimed-voland-qt5 -liodata-qt5 IODATA_TYPES = queue.type config.type settings.type customization.type tzdata.type @@ -70,7 +70,13 @@ SOURCES += \ ofonomodemmanager.cpp \ modemwatcher.cpp \ ofonoconstants.cpp \ - ntpcontroller.cpp + ntpcontroller.cpp \ + config.type.cpp \ + customization.type.cpp \ + queue.type.cpp \ + settings.type.cpp \ + timed-cust-rc.type.cpp \ + tzdata.type.cpp SOURCES += credentials.cpp HEADERS += credentials.h diff --git a/src/server/settings.type.cpp b/src/server/settings.type.cpp new file mode 100644 index 0000000..2a85916 --- /dev/null +++ b/src/server/settings.type.cpp @@ -0,0 +1,59 @@ +#include +#include "settings.type.h" +iodata::validator * settings_data_validator(){ +static bool init_done = false ; +static iodata::validator A ; +static iodata::/*validator::*/record_type record_type1 = { "empty_t", vector(0) } ; +static iodata::/*validator::*/record_type record_type2 = { "generic_zone_t", vector(1) } ; +static iodata::/*validator::*/record_type record_type3 = { "key_int_t", vector(2) } ; +static iodata::/*validator::*/record_type record_type4 = { "manual_offset_t", vector(1) } ; +static iodata::/*validator::*/record_type record_type5 = { "settings_t", vector(15) } ; +static iodata::/*validator::*/node_bytes node1("value", 0, 0, "[unknown]") ; +static iodata::/*validator::*/node_bytes node2("key", 0, 1, "") ; +static iodata::/*validator::*/node_integer node3("value", 0, 0, 0) ; +static iodata::/*validator::*/node_integer node4("value", 0, 0, -1) ; +static iodata::/*validator::*/node_integer node5("time_nitz", 0, 0, -1) ; +static iodata::/*validator::*/node_integer node6("local_cellular", 0, 0, -1) ; +static iodata::/*validator::*/node_integer node7("format_24", 0, 0, -1) ; +static iodata::/*validator::*/node_integer node8("auto_dst", 0, 0, 1) ; +static iodata::/*validator::*/node_record node9("manual_utc", 0, 0, "empty_t", &record_type1) ; +static iodata::/*validator::*/node_record node10("nitz_utc", 0, 0, "empty_t", &record_type1) ; +static iodata::/*validator::*/node_record node11("gps_utc", 0, 0, "empty_t", &record_type1) ; +static iodata::/*validator::*/node_record node12("ntp_utc", 0, 0, "empty_t", &record_type1) ; +static iodata::/*validator::*/node_record node13("manual_offset", 0, 0, "manual_offset_t", &record_type4) ; +static iodata::/*validator::*/node_record node14("nitz_offset", 0, 0, "empty_t", &record_type1) ; +static iodata::/*validator::*/node_record node15("manual_zone", 0, 0, "generic_zone_t", &record_type2) ; +static iodata::/*validator::*/node_record node16("cellular_zone", 0, 0, "generic_zone_t", &record_type2) ; +static iodata::/*validator::*/node_integer node17("default_snooze", 0, 0, 300) ; +static iodata::/*validator::*/node_record node18("app_snooze", 1, 0, "key_int_t", &record_type3) ; +static iodata::/*validator::*/node_integer node19("alarms", 0, 0, 1) ; +if (not init_done) { init_done = true ; +A.set_static() ; +A.types["empty_t"] = &record_type1 ; +record_type2.nodes[0] = &node1 ; +A.types["generic_zone_t"] = &record_type2 ; +record_type3.nodes[0] = &node2 ; +record_type3.nodes[1] = &node3 ; +A.types["key_int_t"] = &record_type3 ; +record_type4.nodes[0] = &node4 ; +A.types["manual_offset_t"] = &record_type4 ; +record_type5.nodes[0] = &node5 ; +record_type5.nodes[1] = &node6 ; +record_type5.nodes[2] = &node7 ; +record_type5.nodes[3] = &node8 ; +record_type5.nodes[4] = &node9 ; +record_type5.nodes[5] = &node10 ; +record_type5.nodes[6] = &node11 ; +record_type5.nodes[7] = &node12 ; +record_type5.nodes[8] = &node13 ; +record_type5.nodes[9] = &node14 ; +record_type5.nodes[10] = &node15 ; +record_type5.nodes[11] = &node16 ; +record_type5.nodes[12] = &node17 ; +record_type5.nodes[13] = &node18 ; +record_type5.nodes[14] = &node19 ; +A.types["settings_t"] = &record_type5 ; +} +return &A ; +} + diff --git a/src/server/settings.type.h b/src/server/settings.type.h new file mode 100644 index 0000000..b9f714c --- /dev/null +++ b/src/server/settings.type.h @@ -0,0 +1,5 @@ +#ifndef iodata_type_to_cxx_365336115971081163666995311270727910611411411610510212256121100122102102108106881131027886118102116768979491097256122728512211253 +#define iodata_type_to_cxx_365336115971081163666995311270727910611411411610510212256121100122102102108106881131027886118102116768979491097256122728512211253 +#include +iodata::validator * settings_data_validator() ; +#endif diff --git a/src/server/timed-cust-rc.type.cpp b/src/server/timed-cust-rc.type.cpp new file mode 100644 index 0000000..4c00f02 --- /dev/null +++ b/src/server/timed-cust-rc.type.cpp @@ -0,0 +1,25 @@ +#include +#include "timed-cust-rc.type.h" +iodata::validator * foo(){ +static bool init_done = false ; +static iodata::validator A ; +static iodata::/*validator::*/record_type record_type1 = { "const_t", vector(1) } ; +static iodata::/*validator::*/record_type record_type2 = { "timed_cust_rc_t", vector(4) } ; +static iodata::/*validator::*/node_bytes node1("rc_location", 0, 0, "/etc/timed-cust.rc") ; +static iodata::/*validator::*/node_bytes node2("time_nitz", 0, 0, "yes") ; +static iodata::/*validator::*/node_bytes node3("format_24", 0, 0, "r") ; +static iodata::/*validator::*/node_bytes node4("default_tz", 0, 0, "327") ; +static iodata::/*validator::*/node_bytes node5("hash", 0, 0, "") ; +if (not init_done) { init_done = true ; +A.set_static() ; +record_type1.nodes[0] = &node1 ; +A.types["const_t"] = &record_type1 ; +record_type2.nodes[0] = &node2 ; +record_type2.nodes[1] = &node3 ; +record_type2.nodes[2] = &node4 ; +record_type2.nodes[3] = &node5 ; +A.types["timed_cust_rc_t"] = &record_type2 ; +} +return &A ; +} + diff --git a/src/server/timed-cust-rc.type.h b/src/server/timed-cust-rc.type.h new file mode 100644 index 0000000..105e4a9 --- /dev/null +++ b/src/server/timed-cust-rc.type.h @@ -0,0 +1,5 @@ +#ifndef iodata_type_to_cxx_36533611597108116368011599807010649105105698254817310669119488253122761187875110121101100114764965104578410911453886910253 +#define iodata_type_to_cxx_36533611597108116368011599807010649105105698254817310669119488253122761187875110121101100114764965104578410911453886910253 +#include +iodata::validator * foo() ; +#endif diff --git a/src/server/tzdata.type.cpp b/src/server/tzdata.type.cpp new file mode 100644 index 0000000..65f7d72 --- /dev/null +++ b/src/server/tzdata.type.cpp @@ -0,0 +1,53 @@ +#include +#include "tzdata.type.h" +iodata::validator * tzdata_validator(){ +static bool init_done = false ; +static iodata::validator A ; +static iodata::/*validator::*/record_type record_type1 = { "country_record_t", vector(3) } ; +static iodata::/*validator::*/record_type record_type2 = { "mcc_country_pair_t", vector(2) } ; +static iodata::/*validator::*/record_type record_type3 = { "mcc_to_xy_t", vector(1) } ; +static iodata::/*validator::*/record_type record_type4 = { "tz_distinct_info_t", vector(2) } ; +static iodata::/*validator::*/record_type record_type5 = { "tz_distinct_t", vector(1) } ; +static iodata::/*validator::*/record_type record_type6 = { "tz_single_info_t", vector(2) } ; +static iodata::/*validator::*/record_type record_type7 = { "tz_single_t", vector(1) } ; +static iodata::/*validator::*/record_type record_type8 = { "zones_by_country_t", vector(1) } ; +static iodata::/*validator::*/node_bytes node1("xy", 0, 1, "") ; +static iodata::/*validator::*/node_bytes node2("major", 1, 1, "") ; +static iodata::/*validator::*/node_bytes node3("minor", 1, 1, "") ; +static iodata::/*validator::*/node_integer node4("mcc", 0, 1, 0) ; +static iodata::/*validator::*/node_bytes node5("country", 0, 1, "") ; +static iodata::/*validator::*/node_record node6("mcc_to_xy", 1, 1, "mcc_country_pair_t", &record_type2) ; +static iodata::/*validator::*/node_integer node7("mcc", 0, 1, 0) ; +static iodata::/*validator::*/node_bytes node8("tz", 1, 1, "") ; +static iodata::/*validator::*/node_record node9("list", 1, 1, "tz_distinct_info_t", &record_type4) ; +static iodata::/*validator::*/node_integer node10("mcc", 0, 1, 0) ; +static iodata::/*validator::*/node_bytes node11("tz", 0, 1, "") ; +static iodata::/*validator::*/node_record node12("list", 1, 1, "tz_single_info_t", &record_type6) ; +static iodata::/*validator::*/node_record node13("xy_to_tz", 1, 1, "country_record_t", &record_type1) ; +if (not init_done) { init_done = true ; +A.set_static() ; +record_type1.nodes[0] = &node1 ; +record_type1.nodes[1] = &node2 ; +record_type1.nodes[2] = &node3 ; +A.types["country_record_t"] = &record_type1 ; +record_type2.nodes[0] = &node4 ; +record_type2.nodes[1] = &node5 ; +A.types["mcc_country_pair_t"] = &record_type2 ; +record_type3.nodes[0] = &node6 ; +A.types["mcc_to_xy_t"] = &record_type3 ; +record_type4.nodes[0] = &node7 ; +record_type4.nodes[1] = &node8 ; +A.types["tz_distinct_info_t"] = &record_type4 ; +record_type5.nodes[0] = &node9 ; +A.types["tz_distinct_t"] = &record_type5 ; +record_type6.nodes[0] = &node10 ; +record_type6.nodes[1] = &node11 ; +A.types["tz_single_info_t"] = &record_type6 ; +record_type7.nodes[0] = &node12 ; +A.types["tz_single_t"] = &record_type7 ; +record_type8.nodes[0] = &node13 ; +A.types["zones_by_country_t"] = &record_type8 ; +} +return &A ; +} + diff --git a/src/server/tzdata.type.h b/src/server/tzdata.type.h new file mode 100644 index 0000000..4a2e83b --- /dev/null +++ b/src/server/tzdata.type.h @@ -0,0 +1,5 @@ +#ifndef iodata_type_to_cxx_36533611597108116361031117710974501117811888881171217311611611669711187210849114110110759797717767100113100831164710747669855 +#define iodata_type_to_cxx_36533611597108116361031117710974501117811888881171217311611611669711187210849114110110759797717767100113100831164710747669855 +#include +iodata::validator * tzdata_validator() ; +#endif