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

Reply via email to