Changeset: 788db4bd8201 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=788db4bd8201 Added Files: common/utils/copybinary.h Modified Files: clients/examples/C/CMakeLists.txt clients/examples/C/bincopydata.h clients/examples/C/bincopytemporaldata.c common/utils/CMakeLists.txt Branch: copybinary Log Message:
Move binary copy temporal structs to separate header file diffs (142 lines): diff --git a/clients/examples/C/CMakeLists.txt b/clients/examples/C/CMakeLists.txt --- a/clients/examples/C/CMakeLists.txt +++ b/clients/examples/C/CMakeLists.txt @@ -54,6 +54,7 @@ if(TESTING) target_link_libraries(bincopydata PRIVATE monetdb_config_header + copybinary ) install(TARGETS diff --git a/clients/examples/C/bincopydata.h b/clients/examples/C/bincopydata.h --- a/clients/examples/C/bincopydata.h +++ b/clients/examples/C/bincopydata.h @@ -1,4 +1,5 @@ #include "monetdb_config.h" +#include "copybinary.h" void gen_timestamps(FILE *f, long nrecs); diff --git a/clients/examples/C/bincopytemporaldata.c b/clients/examples/C/bincopytemporaldata.c --- a/clients/examples/C/bincopytemporaldata.c +++ b/clients/examples/C/bincopytemporaldata.c @@ -31,30 +31,11 @@ lfsr_bits(struct lfsr *lfsr, int n) } -typedef struct { - uint8_t day; - uint8_t month; - int16_t year; -} binary_date; // natural size: 32, natural alignment: 16 - -typedef struct { - uint32_t ms; - uint8_t seconds; - uint8_t minutes; - uint8_t hours; - uint8_t padding; // implied in C, explicit elsewhere -} binary_time; // natural size: 64, natural alignment: 32 - -typedef struct { - binary_time time; - binary_date date; -} binary_timestamp; // natural size: 96, natural alignment: 32 - -static binary_timestamp +static copy_binary_timestamp random_timestamp(struct lfsr *lfsr) { // the % trick gives a little skew but we don't care - binary_timestamp ts = { + copy_binary_timestamp ts = { .time = { .ms = lfsr_bits(lfsr, 32) % 1000000, .seconds = lfsr_bits(lfsr, 16) % 60, // 61 ?? @@ -88,7 +69,7 @@ random_timestamp(struct lfsr *lfsr) return ts; } -void fix_endian(binary_timestamp *p); +void fix_endian(copy_binary_timestamp *p); void fix_endian2(int16_t *p); void fix_endian4(uint32_t *p); @@ -126,7 +107,7 @@ void fix_endian4(uint32_t *p) { } #endif -void fix_endian(binary_timestamp *ts) +void fix_endian(copy_binary_timestamp *ts) { fix_endian2(&ts->date.year); fix_endian4(&ts->time.ms); @@ -138,7 +119,7 @@ gen_timestamps(FILE *f, long nrecs) struct lfsr lfsr = my_favorite_lfsr(); for (long i = 0; i < nrecs; i++) { - binary_timestamp ts = random_timestamp(&lfsr); + copy_binary_timestamp ts = random_timestamp(&lfsr); fix_endian(&ts); fwrite(&ts, sizeof(ts), 1, f); } @@ -151,7 +132,7 @@ gen_timestamps(FILE *f, long nrecs) struct lfsr lfsr = my_favorite_lfsr(); \ \ for (long i = 0; i < nrecs; i++) { \ - binary_timestamp ts = random_timestamp(&lfsr); \ + copy_binary_timestamp ts = random_timestamp(&lfsr); \ fix_endian(&ts); \ fwrite(&ts.fld, sizeof(ts.fld), 1, f); \ } \ diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -140,6 +140,13 @@ set_target_properties(mprompt POSITION_INDEPENDENT_CODE ON PUBLIC_HEADER mprompt.h) +add_library(copybinary INTERFACE) + +target_include_directories(copybinary + INTERFACE + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/monetdb>) + # We need to define the matomic target because it is a public # dependency of gdk. install(TARGETS @@ -156,6 +163,7 @@ install(EXPORT matomicTargets install(FILES matomic.h mstring.h + copybinary.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/monetdb COMPONENT diff --git a/common/utils/copybinary.h b/common/utils/copybinary.h new file mode 100644 --- /dev/null +++ b/common/utils/copybinary.h @@ -0,0 +1,20 @@ +#include "monetdb_config.h" + +typedef struct { + uint8_t day; + uint8_t month; + int16_t year; +} copy_binary_date; // natural size: 32, natural alignment: 16 + +typedef struct { + uint32_t ms; + uint8_t seconds; + uint8_t minutes; + uint8_t hours; + uint8_t padding; // implied in C, explicit elsewhere +} copy_binary_time; // natural size: 64, natural alignment: 32 + +typedef struct { + copy_binary_time time; + copy_binary_date date; +} copy_binary_timestamp; // natural size: 96, natural alignment: 32 _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list