diff --git a/include/cppcore/CPPCoreCommon.h b/include/cppcore/CPPCoreCommon.h index ea8bf0c..50d2fbb 100644 --- a/include/cppcore/CPPCoreCommon.h +++ b/include/cppcore/CPPCoreCommon.h @@ -52,7 +52,7 @@ namespace CPPCore { // All disabled warnings for windows # pragma warning( disable : 4251 ) // needs to have dll-interface to be used by clients of class #else -# define DLL_CPPCORE_EXPORT +# define DLL_CPPCORE_EXPORT __attribute__((visibility("default"))) #endif //------------------------------------------------------------------------------------------------- diff --git a/include/cppcore/Memory/MemUtils.h b/include/cppcore/Memory/MemUtils.h index 5237764..2f4b5a2 100644 --- a/include/cppcore/Memory/MemUtils.h +++ b/include/cppcore/Memory/MemUtils.h @@ -29,6 +29,16 @@ namespace CPPCore { #define ALIGN_MASK(value, mask) (((value) + (mask)) & ((~0) & (~(mask)))) +template +inline size_t align(size_t n) { + return (n + sizeof(T) - 1) & ~(sizeof(T) - 1); +} + +union { + const void *mPtr; + uintptr_t mAddr; +} unaligned; + //------------------------------------------------------------------------------------------------- /// @class THashMap /// @ingroup CPPCore @@ -43,28 +53,19 @@ class MemUtils { static bool isAligned(const void *ptr, size_t align); - static void *alignPtr(void *ptr, size_t extra, size_t align); + static const void *alignPtr(void *ptr, size_t extra, size_t align); MemUtils() = delete; ~MemUtils() = delete; }; inline bool MemUtils::isAligned(const void *ptr, size_t align) { - union { - const void *mPtr; - uintptr_t mAddr; - } unaligned; unaligned.mPtr = ptr; return 0 == (unaligned.mAddr & (align - 1)); } -inline void *MemUtils::alignPtr(void *ptr, size_t extra, size_t align) { - union { - void *mPtr; - uintptr_t mAddr; - } unaligned; - +inline const void *MemUtils::alignPtr(void *ptr, size_t extra, size_t align) { unaligned.mPtr = ptr; uintptr_t un = unaligned.mAddr + extra; // space for header const uintptr_t mask = align - 1; diff --git a/test/container/TStaticArrayTest.cpp b/test/container/TStaticArrayTest.cpp index 460996a..94dec03 100644 --- a/test/container/TStaticArrayTest.cpp +++ b/test/container/TStaticArrayTest.cpp @@ -59,8 +59,10 @@ TEST_F(TStaticArrayTest, access_items_Test) { TEST_F(TStaticArrayTest, clear_Test) { TStaticArray arr; + int ii=0; for (size_t i = 0; i < 4; ++i) { - arr[i] = (int) i; + arr[i] = ii; + ii++; } arr.memset( 0 ); for (size_t i = 0; i < 4; ++i) { @@ -70,12 +72,16 @@ TEST_F(TStaticArrayTest, clear_Test) { TEST_F(TStaticArrayTest, access_string_Test) { TStaticArray arr; - arr[0] = std::string("bla"); - arr[1] = std::string("bla"); - arr[2] = std::string("bla"); - arr[3] = std::string("huhu"); + arr[0] = std::string("str_0"); + arr[1] = std::string("str_1"); + arr[2] = std::string("str_2"); + arr[3] = std::string("str_3"); EXPECT_EQ( 4u, arr.size()); + EXPECT_EQ("str_0", arr[0]); + EXPECT_EQ("str_1", arr[1]); + EXPECT_EQ("str_2", arr[2]); + EXPECT_EQ("str_3", arr[3]); } TEST_F(TStaticArrayTest, string_Test) {