// file : common/blob/test.hxx // copyright : Copyright (c) 2009-2018 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file #ifndef TEST_HXX #define TEST_HXX #include // HAVE_CXX11 #include #include // std::memcmp #ifdef HAVE_CXX11 # include #endif #include #ifdef ODB_COMPILER # if defined(ODB_DATABASE_PGSQL) # define BLOB_TYPE "BYTEA" # elif defined(ODB_DATABASE_MSSQL) //# define BLOB_TYPE "VARBINARY(1024)" # define BLOB_TYPE "VARBINARY(max)" # else //# define BLOB_TYPE "RAW(1024)" # define BLOB_TYPE "BLOB" # endif #endif #pragma db object struct object { object () {} object (unsigned long id): id_ (id) {} #pragma db id unsigned long id_; #pragma db type(BLOB_TYPE) std::vector vc; #pragma db type(BLOB_TYPE) std::vector vuc; #pragma db type(BLOB_TYPE) char c[1024]; #pragma db type(BLOB_TYPE) unsigned char uc[1024]; #ifdef HAVE_CXX11 #pragma db type(BLOB_TYPE) std::array a; #pragma db type(BLOB_TYPE) std::array ua; #endif // Make sure we can still use std::vector and std::array // as containers. // std::vector cont; }; inline bool operator== (const object& x, const object& y) { return x.id_ == y.id_ && x.vc == y.vc && x.vuc == y.vuc && std::memcmp (x.c, y.c, sizeof (x.c)) == 0 && std::memcmp (x.uc, y.uc, sizeof (x.uc)) == 0 #ifdef HAVE_CXX11 && x.a == y.a && x.ua == y.ua #endif && x.cont == y.cont; } #endif // TEST_HXX