You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ig...@apache.org on 2018/11/08 17:43:44 UTC

[geode-native] branch release/1.8 updated (3116fc4 -> 58292a7)

This is an automated email from the ASF dual-hosted git repository.

igodwin pushed a change to branch release/1.8
in repository https://gitbox.apache.org/repos/asf/geode-native.git.


    from 3116fc4  GEODE-4728 User Guide: System Props - Improve format
     new 8d06108  GEODE-5025: Fixes template visiblity when linked with executables. (#387)
     new 58292a7  GEODE-5942: Remove named constants from PersistenceManager (#393)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 cppcache/include/geode/CacheableBuiltins.hpp       | 185 ++++++++++++---------
 cppcache/include/geode/CacheableKey.hpp            |   2 +-
 cppcache/include/geode/PersistenceManager.hpp      |   4 -
 cppcache/include/geode/RegionAttributes.hpp        |  11 +-
 .../geode/internal/CacheableBuiltinTemplates.hpp   |  25 ++-
 .../geode/internal/DataSerializablePrimitive.hpp   |   2 +-
 cppcache/integration-test-2/CMakeLists.txt         |   5 +-
 cppcache/integration-test/CMakeLists.txt           |   6 +-
 .../integration-test/testOverflowPutGetSqLite.cpp  |  11 +-
 cppcache/shared/CMakeLists.txt                     |  20 ++-
 cppcache/src/CacheableBuiltins.cpp                 |  46 ++++-
 cppcache/src/PdxInstanceImpl.cpp                   |   3 +-
 cppcache/src/PersistenceManager.cpp                |   8 +-
 cppcache/src/RegionAttributes.cpp                  |   1 +
 cppcache/src/TcrMessage.cpp                        |   2 +-
 sqliteimpl/SqLiteImpl.cpp                          |   4 +
 16 files changed, 200 insertions(+), 135 deletions(-)


[geode-native] 01/02: GEODE-5025: Fixes template visiblity when linked with executables. (#387)

Posted by ig...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

igodwin pushed a commit to branch release/1.8
in repository https://gitbox.apache.org/repos/asf/geode-native.git

commit 8d061085039a61b11495f9dfa4d51d20e620825b
Author: Jacob Barrett <jb...@pivotal.io>
AuthorDate: Fri Nov 2 12:25:26 2018 -0700

    GEODE-5025: Fixes template visiblity when linked with executables. (#387)
---
 cppcache/include/geode/CacheableBuiltins.hpp       | 185 ++++++++++++---------
 cppcache/include/geode/CacheableKey.hpp            |   2 +-
 cppcache/include/geode/RegionAttributes.hpp        |  11 +-
 .../geode/internal/CacheableBuiltinTemplates.hpp   |  25 ++-
 .../geode/internal/DataSerializablePrimitive.hpp   |   2 +-
 cppcache/integration-test-2/CMakeLists.txt         |   5 +-
 cppcache/integration-test/CMakeLists.txt           |   6 +-
 .../integration-test/testOverflowPutGetSqLite.cpp  |   1 +
 cppcache/shared/CMakeLists.txt                     |  20 ++-
 cppcache/src/CacheableBuiltins.cpp                 |  46 ++++-
 cppcache/src/PdxInstanceImpl.cpp                   |   3 +-
 cppcache/src/RegionAttributes.cpp                  |   1 +
 cppcache/src/TcrMessage.cpp                        |   2 +-
 13 files changed, 188 insertions(+), 121 deletions(-)

diff --git a/cppcache/include/geode/CacheableBuiltins.hpp b/cppcache/include/geode/CacheableBuiltins.hpp
index 494b610..ec81932 100644
--- a/cppcache/include/geode/CacheableBuiltins.hpp
+++ b/cppcache/include/geode/CacheableBuiltins.hpp
@@ -38,34 +38,14 @@ namespace apache {
 namespace geode {
 namespace client {
 
-using internal::CacheableArrayPrimitive;
-using internal::CacheableContainerPrimitive;
-using internal::CacheableKeyPrimitive;
-
-/** Function to copy an array from source to destination. */
-template <typename TObj>
-inline void copyArray(TObj* dest, const TObj* src, size_t length) {
-  std::memcpy(dest, src, length * sizeof(TObj));
-}
-
-/**
- * Function to copy an array of <code>std::shared_ptr</code>s from
- * source to destination.
- */
-template <typename TObj>
-inline void copyArray(std::shared_ptr<TObj>* dest,
-                      const std::shared_ptr<TObj>* src, size_t length) {
-  for (size_t index = 0; index < length; index++) {
-    dest[index] = src[index];
-  }
-}
-
 /**
  * An immutable wrapper for bool that can serve as
  * a distributable key object for caching.
  */
 using CacheableBoolean =
-    CacheableKeyPrimitive<bool, internal::DSCode::CacheableBoolean>;
+    internal::CacheableKeyPrimitive<bool, internal::DSCode::CacheableBoolean>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<bool, internal::DSCode::CacheableBoolean>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(bool value) {
   return CacheableBoolean::create(value);
@@ -80,7 +60,9 @@ inline std::shared_ptr<Cacheable> Serializable::create(bool value) {
  * a distributable key object for caching.
  */
 using CacheableByte =
-    CacheableKeyPrimitive<int8_t, internal::DSCode::CacheableByte>;
+    internal::CacheableKeyPrimitive<int8_t, internal::DSCode::CacheableByte>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<int8_t, internal::DSCode::CacheableByte>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(int8_t value) {
   return CacheableByte::create(value);
@@ -95,7 +77,9 @@ inline std::shared_ptr<Cacheable> Serializable::create(int8_t value) {
  * a distributable key object for caching.
  */
 using CacheableDouble =
-    CacheableKeyPrimitive<double, internal::DSCode::CacheableDouble>;
+    internal::CacheableKeyPrimitive<double, internal::DSCode::CacheableDouble>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<double, internal::DSCode::CacheableDouble>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(double value) {
   return CacheableDouble::create(value);
@@ -111,7 +95,9 @@ inline std::shared_ptr<Cacheable> Serializable::create(double value) {
  * a distributable key object for caching.
  */
 using CacheableFloat =
-    CacheableKeyPrimitive<float, internal::DSCode::CacheableFloat>;
+    internal::CacheableKeyPrimitive<float, internal::DSCode::CacheableFloat>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<float, internal::DSCode::CacheableFloat>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(float value) {
   return CacheableFloat::create(value);
@@ -126,7 +112,9 @@ inline std::shared_ptr<Cacheable> Serializable::create(float value) {
  * a distributable key object for caching.
  */
 using CacheableInt16 =
-    CacheableKeyPrimitive<int16_t, internal::DSCode::CacheableInt16>;
+    internal::CacheableKeyPrimitive<int16_t, internal::DSCode::CacheableInt16>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<int16_t, internal::DSCode::CacheableInt16>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(int16_t value) {
   return CacheableInt16::create(value);
@@ -141,7 +129,9 @@ inline std::shared_ptr<Cacheable> Serializable::create(int16_t value) {
  * a distributable key object for caching.
  */
 using CacheableInt32 =
-    CacheableKeyPrimitive<int32_t, internal::DSCode::CacheableInt32>;
+    internal::CacheableKeyPrimitive<int32_t, internal::DSCode::CacheableInt32>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<int32_t, internal::DSCode::CacheableInt32>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(int32_t value) {
   return CacheableInt32::create(value);
@@ -156,7 +146,9 @@ inline std::shared_ptr<Cacheable> Serializable::create(int32_t value) {
  * a distributable key object for caching.
  */
 using CacheableInt64 =
-    CacheableKeyPrimitive<int64_t, internal::DSCode::CacheableInt64>;
+    internal::CacheableKeyPrimitive<int64_t, internal::DSCode::CacheableInt64>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<int64_t, internal::DSCode::CacheableInt64>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(int64_t value) {
   return CacheableInt64::create(value);
@@ -171,7 +163,11 @@ inline std::shared_ptr<Cacheable> Serializable::create(int64_t value) {
  * a distributable key object for caching.
  */
 using CacheableCharacter =
-    CacheableKeyPrimitive<char16_t, internal::DSCode::CacheableCharacter>;
+    internal::CacheableKeyPrimitive<char16_t,
+                                    internal::DSCode::CacheableCharacter>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableKeyPrimitive<char16_t,
+                                    internal::DSCode::CacheableCharacter>;
 template <>
 inline std::shared_ptr<CacheableKey> CacheableKey::create(char16_t value) {
   return CacheableCharacter::create(value);
@@ -185,62 +181,94 @@ inline std::shared_ptr<Cacheable> Serializable::create(char16_t value) {
  * An immutable wrapper for byte arrays that can serve as
  * a distributable object for caching.
  */
-using CacheableBytes = CacheableArrayPrimitive<int8_t, DSCode::CacheableBytes>;
+using CacheableBytes =
+    internal::CacheableArrayPrimitive<int8_t, internal::DSCode::CacheableBytes>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<int8_t, internal::DSCode::CacheableBytes>;
 
 /**
  * An immutable wrapper for array of booleans that can serve as
  * a distributable object for caching.
  */
-using BooleanArray = CacheableArrayPrimitive<bool, DSCode::BooleanArray>;
+using BooleanArray =
+    internal::CacheableArrayPrimitive<bool, internal::DSCode::BooleanArray>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<bool, internal::DSCode::BooleanArray>;
 
 /**
  * An immutable wrapper for array of wide-characters that can serve as
  * a distributable object for caching.
  */
-using CharArray = CacheableArrayPrimitive<char16_t, DSCode::CharArray>;
+using CharArray =
+    internal::CacheableArrayPrimitive<char16_t, internal::DSCode::CharArray>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<char16_t, internal::DSCode::CharArray>;
 
 /**
  * An immutable wrapper for array of doubles that can serve as
  * a distributable object for caching.
  */
 using CacheableDoubleArray =
-    CacheableArrayPrimitive<double, DSCode::CacheableDoubleArray>;
+    internal::CacheableArrayPrimitive<double,
+                                      internal::DSCode::CacheableDoubleArray>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<double,
+                                      internal::DSCode::CacheableDoubleArray>;
 
 /**
  * An immutable wrapper for array of floats that can serve as
  * a distributable object for caching.
  */
 using CacheableFloatArray =
-    CacheableArrayPrimitive<float, DSCode::CacheableFloatArray>;
+    internal::CacheableArrayPrimitive<float,
+                                      internal::DSCode::CacheableFloatArray>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<float,
+                                      internal::DSCode::CacheableFloatArray>;
 
 /**
  * An immutable wrapper for array of 16-bit integers that can serve as
  * a distributable object for caching.
  */
 using CacheableInt16Array =
-    CacheableArrayPrimitive<int16_t, DSCode::CacheableInt16Array>;
+    internal::CacheableArrayPrimitive<int16_t,
+                                      internal::DSCode::CacheableInt16Array>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<int16_t,
+                                      internal::DSCode::CacheableInt16Array>;
 
 /**
  * An immutable wrapper for array of 32-bit integers that can serve as
  * a distributable object for caching.
  */
 using CacheableInt32Array =
-    CacheableArrayPrimitive<int32_t, DSCode::CacheableInt32Array>;
+    internal::CacheableArrayPrimitive<int32_t,
+                                      internal::DSCode::CacheableInt32Array>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<int32_t,
+                                      internal::DSCode::CacheableInt32Array>;
 
 /**
  * An immutable wrapper for array of 64-bit integers that can serve as
  * a distributable object for caching.
  */
 using CacheableInt64Array =
-    CacheableArrayPrimitive<int64_t, DSCode::CacheableInt64Array>;
+    internal::CacheableArrayPrimitive<int64_t,
+                                      internal::DSCode::CacheableInt64Array>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<int64_t,
+                                      internal::DSCode::CacheableInt64Array>;
 
 /**
  * An immutable wrapper for array of strings that can serve as
  * a distributable object for caching.
  */
 using CacheableStringArray =
-    CacheableArrayPrimitive<std::shared_ptr<CacheableString>,
-                            DSCode::CacheableStringArray>;
+    internal::CacheableArrayPrimitive<std::shared_ptr<CacheableString>,
+                                      internal::DSCode::CacheableStringArray>;
+extern template class APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+    internal::CacheableArrayPrimitive<std::shared_ptr<CacheableString>,
+                                      internal::DSCode::CacheableStringArray>;
 
 // The following are defined as classes to avoid the issues with MSVC++
 // warning/erroring on C4503
@@ -250,15 +278,15 @@ using CacheableStringArray =
  * a distributable object for caching.
  */
 class APACHE_GEODE_EXPORT CacheableVector
-    : public CacheableContainerPrimitive<
-          std::vector<std::shared_ptr<Cacheable>>, DSCode::CacheableVector,
-          CacheableVector> {
+    : public internal::CacheableContainerPrimitive<
+          std::vector<std::shared_ptr<Cacheable>>,
+          internal::DSCode::CacheableVector, CacheableVector> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    std::vector<std::shared_ptr<Cacheable>>, DSCode::CacheableVector,
+    std::vector<std::shared_ptr<Cacheable>>, internal::DSCode::CacheableVector,
     CacheableVector>;
 
 /**
@@ -266,91 +294,94 @@ template class internal::CacheableContainerPrimitive<
  * hash map that can serve as a distributable object for caching.
  */
 class APACHE_GEODE_EXPORT CacheableHashMap
-    : public CacheableContainerPrimitive<
-          HashMapOfCacheable, DSCode::CacheableHashMap, CacheableHashMap> {
+    : public internal::CacheableContainerPrimitive<
+          HashMapOfCacheable, internal::DSCode::CacheableHashMap,
+          CacheableHashMap> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    HashMapOfCacheable, DSCode::CacheableHashMap, CacheableHashMap>;
+    HashMapOfCacheable, internal::DSCode::CacheableHashMap, CacheableHashMap>;
 
 /**
  * A mutable <code>CacheableKey</code> hash set wrapper that can serve as
  * a distributable object for caching.
  */
-// using CacheableHashSet = CacheableContainerPrimitive<HashSetOfCacheableKey,
-//                                                     DSCode::CacheableHashSet>;
 class APACHE_GEODE_EXPORT CacheableHashSet
-    : public CacheableContainerPrimitive<
-          HashSetOfCacheableKey, DSCode::CacheableHashSet, CacheableHashSet> {
+    : public internal::CacheableContainerPrimitive<
+          HashSetOfCacheableKey, internal::DSCode::CacheableHashSet,
+          CacheableHashSet> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    HashSetOfCacheableKey, DSCode::CacheableHashSet, CacheableHashSet>;
+    HashSetOfCacheableKey, internal::DSCode::CacheableHashSet,
+    CacheableHashSet>;
 
 /**
  * A mutable <code>Cacheable</code> array list wrapper that can serve as
  * a distributable object for caching.
  */
 class APACHE_GEODE_EXPORT CacheableArrayList
-    : public CacheableContainerPrimitive<
-          std::vector<std::shared_ptr<Cacheable>>, DSCode::CacheableArrayList,
-          CacheableArrayList> {
+    : public internal::CacheableContainerPrimitive<
+          std::vector<std::shared_ptr<Cacheable>>,
+          internal::DSCode::CacheableArrayList, CacheableArrayList> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    std::vector<std::shared_ptr<Cacheable>>, DSCode::CacheableArrayList,
-    CacheableArrayList>;
+    std::vector<std::shared_ptr<Cacheable>>,
+    internal::DSCode::CacheableArrayList, CacheableArrayList>;
 
 /**
  * A mutable <code>Cacheable</code> array list wrapper that can serve as
  * a distributable object for caching.
  */
 class APACHE_GEODE_EXPORT CacheableLinkedList
-    : public CacheableContainerPrimitive<
-          std::vector<std::shared_ptr<Cacheable>>, DSCode::CacheableLinkedList,
-          CacheableLinkedList> {
+    : public internal::CacheableContainerPrimitive<
+          std::vector<std::shared_ptr<Cacheable>>,
+          internal::DSCode::CacheableLinkedList, CacheableLinkedList> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    std::vector<std::shared_ptr<Cacheable>>, DSCode::CacheableLinkedList,
-    CacheableLinkedList>;
+    std::vector<std::shared_ptr<Cacheable>>,
+    internal::DSCode::CacheableLinkedList, CacheableLinkedList>;
 
 /**
  * A mutable <code>Cacheable</code> stack wrapper that can serve as
  * a distributable object for caching.
  */
 class APACHE_GEODE_EXPORT CacheableStack
-    : public CacheableContainerPrimitive<
-          std::vector<std::shared_ptr<Cacheable>>, DSCode::CacheableStack,
-          CacheableStack> {
+    : public internal::CacheableContainerPrimitive<
+          std::vector<std::shared_ptr<Cacheable>>,
+          internal::DSCode::CacheableStack, CacheableStack> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    HashMapOfCacheable, DSCode::CacheableStack, CacheableStack>;
+    HashMapOfCacheable, internal::DSCode::CacheableStack, CacheableStack>;
 
 /**
  * A mutable <code>CacheableKey</code> to <code>Serializable</code>
  * hash map that can serve as a distributable object for caching.
  */
 class APACHE_GEODE_EXPORT CacheableHashTable
-    : public CacheableContainerPrimitive<
-          HashMapOfCacheable, DSCode::CacheableHashTable, CacheableHashTable> {
+    : public internal::CacheableContainerPrimitive<
+          HashMapOfCacheable, internal::DSCode::CacheableHashTable,
+          CacheableHashTable> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    HashMapOfCacheable, DSCode::CacheableHashTable, CacheableHashTable>;
+    HashMapOfCacheable, internal::DSCode::CacheableHashTable,
+    CacheableHashTable>;
 
 /**
  * A mutable <code>CacheableKey</code> to <code>Serializable</code>
@@ -360,15 +391,15 @@ template class internal::CacheableContainerPrimitive<
  * java <code>IdentityHashMap</code>.
  */
 class APACHE_GEODE_EXPORT CacheableIdentityHashMap
-    : public CacheableContainerPrimitive<HashMapOfCacheable,
-                                         DSCode::CacheableIdentityHashMap,
-                                         CacheableIdentityHashMap> {
+    : public internal::CacheableContainerPrimitive<
+          HashMapOfCacheable, internal::DSCode::CacheableIdentityHashMap,
+          CacheableIdentityHashMap> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    HashMapOfCacheable, DSCode::CacheableIdentityHashMap,
+    HashMapOfCacheable, internal::DSCode::CacheableIdentityHashMap,
     CacheableIdentityHashMap>;
 
 /**
@@ -379,15 +410,15 @@ template class internal::CacheableContainerPrimitive<
  * iteration semantics of java <code>LinkedHashSet</code>.
  */
 class APACHE_GEODE_EXPORT CacheableLinkedHashSet
-    : public CacheableContainerPrimitive<HashSetOfCacheableKey,
-                                         DSCode::CacheableLinkedHashSet,
-                                         CacheableLinkedHashSet> {
+    : public internal::CacheableContainerPrimitive<
+          HashSetOfCacheableKey, internal::DSCode::CacheableLinkedHashSet,
+          CacheableLinkedHashSet> {
  public:
   using CacheableContainerPrimitive::CacheableContainerPrimitive;
 };
 
 template class internal::CacheableContainerPrimitive<
-    HashSetOfCacheableKey, DSCode::CacheableLinkedHashSet,
+    HashSetOfCacheableKey, internal::DSCode::CacheableLinkedHashSet,
     CacheableLinkedHashSet>;
 
 }  // namespace client
diff --git a/cppcache/include/geode/CacheableKey.hpp b/cppcache/include/geode/CacheableKey.hpp
index 4efcddc..5b084fc 100644
--- a/cppcache/include/geode/CacheableKey.hpp
+++ b/cppcache/include/geode/CacheableKey.hpp
@@ -40,7 +40,7 @@ namespace client {
 class APACHE_GEODE_EXPORT CacheableKey : public virtual Cacheable {
  protected:
   CacheableKey() = default;
-  ~CacheableKey() override = default;
+  ~CacheableKey() noexcept override = default;
 
  public:
   /** return true if this key matches other. */
diff --git a/cppcache/include/geode/RegionAttributes.hpp b/cppcache/include/geode/RegionAttributes.hpp
index 3652955..702218b 100644
--- a/cppcache/include/geode/RegionAttributes.hpp
+++ b/cppcache/include/geode/RegionAttributes.hpp
@@ -32,7 +32,6 @@
 #include "DiskPolicyType.hpp"
 #include "ExpirationAttributes.hpp"
 #include "PartitionResolver.hpp"
-#include "PersistenceManager.hpp"
 #include "Properties.hpp"
 #include "Serializable.hpp"
 #include "internal/DataSerializableInternal.hpp"
@@ -44,6 +43,11 @@ namespace geode {
 namespace client {
 
 class CacheImpl;
+class RegionAttributesFactory;
+class AttributesMutator;
+class Cache;
+class Region;
+class PersistenceManager;
 
 /**
  * @class RegionAttributes RegionAttributes.hpp
@@ -69,11 +73,6 @@ class CacheImpl;
  * @see AttributesMutator
  * @see Region::getAttributes
  */
-class RegionAttributesFactory;
-class AttributesMutator;
-class Cache;
-class Region;
-
 class APACHE_GEODE_EXPORT RegionAttributes
     : public internal::DataSerializableInternal {
   /**
diff --git a/cppcache/include/geode/internal/CacheableBuiltinTemplates.hpp b/cppcache/include/geode/internal/CacheableBuiltinTemplates.hpp
index 795c600..7ecf505 100644
--- a/cppcache/include/geode/internal/CacheableBuiltinTemplates.hpp
+++ b/cppcache/include/geode/internal/CacheableBuiltinTemplates.hpp
@@ -37,9 +37,8 @@ namespace internal {
  * Template class for primitive key types.
  */
 template <typename TObj, DSCode TYPEID>
-class APACHE_GEODE_EXPORT CacheableKeyPrimitive
-    : public DataSerializablePrimitive,
-      public CacheableKey {
+class CacheableKeyPrimitive : public virtual DataSerializablePrimitive,
+                              public virtual CacheableKey {
  private:
   TObj value_;
 
@@ -86,25 +85,24 @@ class APACHE_GEODE_EXPORT CacheableKeyPrimitive
   }
 
   /** Factory function registered with serialization registry. */
-  static std::shared_ptr<Serializable> createDeserializable() {
-    return std::make_shared<CacheableKeyPrimitive>();
+  inline static std::shared_ptr<Serializable> createDeserializable() {
+    return std::make_shared<CacheableKeyPrimitive<TObj, TYPEID>>();
   }
 
   /** Factory function to create a new default instance. */
-  inline static std::shared_ptr<CacheableKeyPrimitive> create() {
-    return std::make_shared<CacheableKeyPrimitive>();
+  inline static std::shared_ptr<CacheableKeyPrimitive<TObj, TYPEID>> create() {
+    return std::make_shared<CacheableKeyPrimitive<TObj, TYPEID>>();
   }
 
   /** Factory function to create an instance with the given value. */
-  inline static std::shared_ptr<CacheableKeyPrimitive> create(
+  inline static std::shared_ptr<CacheableKeyPrimitive<TObj, TYPEID>> create(
       const TObj value) {
-    return std::make_shared<CacheableKeyPrimitive>(value);
+    return std::make_shared<CacheableKeyPrimitive<TObj, TYPEID>>(value);
   }
 };
 
 template <typename T, DSCode GeodeTypeId>
-class APACHE_GEODE_EXPORT CacheableArrayPrimitive
-    : public DataSerializablePrimitive {
+class CacheableArrayPrimitive : public DataSerializablePrimitive {
  protected:
   DSCode getDsCode() const override { return GeodeTypeId; }
 
@@ -173,9 +171,8 @@ class APACHE_GEODE_EXPORT CacheableArrayPrimitive
 
 /** Template class for container Cacheable types. */
 template <typename TBase, DSCode TYPEID, class _Derived>
-class APACHE_GEODE_EXPORT CacheableContainerPrimitive
-    : public DataSerializablePrimitive,
-      public TBase {
+class CacheableContainerPrimitive : public DataSerializablePrimitive,
+                                    public TBase {
  public:
   inline CacheableContainerPrimitive() : TBase() {}
 
diff --git a/cppcache/include/geode/internal/DataSerializablePrimitive.hpp b/cppcache/include/geode/internal/DataSerializablePrimitive.hpp
index 0d1a0b7..8d6e82d 100644
--- a/cppcache/include/geode/internal/DataSerializablePrimitive.hpp
+++ b/cppcache/include/geode/internal/DataSerializablePrimitive.hpp
@@ -35,7 +35,7 @@ namespace internal {
 class APACHE_GEODE_EXPORT DataSerializablePrimitive
     : public virtual Serializable {
  public:
-  ~DataSerializablePrimitive() override = default;
+  ~DataSerializablePrimitive() noexcept override = default;
   virtual void toData(DataOutput& dataOutput) const = 0;
   virtual void fromData(DataInput& dataInput) = 0;
   virtual DSCode getDsCode() const = 0;
diff --git a/cppcache/integration-test-2/CMakeLists.txt b/cppcache/integration-test-2/CMakeLists.txt
index 422d393..322550c 100644
--- a/cppcache/integration-test-2/CMakeLists.txt
+++ b/cppcache/integration-test-2/CMakeLists.txt
@@ -76,7 +76,10 @@ if(WIN32)
 endif()
 
 set_target_properties(integration-test-2 PROPERTIES
-	FOLDER cpp/test/integration)
+  CXX_VISIBILITY_PRESET hidden
+  VISIBILITY_INLINES_HIDDEN ON
+  FOLDER cpp/test/integration
+)
 
 add_clangformat(integration-test-2)
 
diff --git a/cppcache/integration-test/CMakeLists.txt b/cppcache/integration-test/CMakeLists.txt
index 841a722..fc52ad6 100644
--- a/cppcache/integration-test/CMakeLists.txt
+++ b/cppcache/integration-test/CMakeLists.txt
@@ -92,7 +92,11 @@ foreach(FILE ${SOURCES})
   set(TESTS ${TESTS} ${TEST})
   add_dependencies(integration-tests ${TEST})
   add_executable(${TEST} ${FILE})
-  set_target_properties(${TEST} PROPERTIES FOLDER cpp/test/integration/legacy)
+  set_target_properties(${TEST} PROPERTIES
+    CXX_VISIBILITY_PRESET hidden
+    VISIBILITY_INLINES_HIDDEN ON
+    FOLDER cpp/test/integration/legacy
+  )
 
   target_link_libraries(${TEST}
     PRIVATE
diff --git a/cppcache/integration-test/testOverflowPutGetSqLite.cpp b/cppcache/integration-test/testOverflowPutGetSqLite.cpp
index 4afa8c3..8ef89c7 100644
--- a/cppcache/integration-test/testOverflowPutGetSqLite.cpp
+++ b/cppcache/integration-test/testOverflowPutGetSqLite.cpp
@@ -22,6 +22,7 @@
 
 #include <geode/RegionShortcut.hpp>
 #include <geode/RegionFactory.hpp>
+#include <geode/PersistenceManager.hpp>
 
 #include <CacheableToken.hpp>
 #include <CacheRegionHelper.hpp>
diff --git a/cppcache/shared/CMakeLists.txt b/cppcache/shared/CMakeLists.txt
index 015b24d..09c11ec 100644
--- a/cppcache/shared/CMakeLists.txt
+++ b/cppcache/shared/CMakeLists.txt
@@ -18,11 +18,20 @@ project(apache-geode LANGUAGES CXX)
 
 add_library(apache-geode SHARED ${SOURCES_ALL} ${RESOURCES})
 
-if (WIN32)
-  set(EXPORT_HEADER_CUSTOM_CONTENT "#define APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT APACHE_GEODE_EXPORT")
+if (MSVC)
+  set(EXPORT_HEADER_CUSTOM_CONTENT "
+#define APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT APACHE_GEODE_EXPORT
+
+#define APACHE_GEODE_EXTERN_TEMPLATE_EXPORT
+")
 else()
-  set(EXPORT_HEADER_CUSTOM_CONTENT "#define APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT")
+  set(EXPORT_HEADER_CUSTOM_CONTENT "
+#define APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+
+#define APACHE_GEODE_EXTERN_TEMPLATE_EXPORT APACHE_GEODE_EXPORT
+")
 endif()
+
 include(GenerateExportHeader)
 generate_export_header(apache-geode
   EXPORT_FILE_NAME ${EXPORT_FILE_NAME}
@@ -50,11 +59,6 @@ set_target_properties(apache-geode PROPERTIES
   FOLDER cpp
   )
 
-if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
-  set_target_properties(apache-geode PROPERTIES
-    CXX_VISIBILITY_PRESET default)
-endif()
-
 add_dependencies(client-libraries apache-geode)
 
 install(TARGETS apache-geode
diff --git a/cppcache/src/CacheableBuiltins.cpp b/cppcache/src/CacheableBuiltins.cpp
index a994a6c..1b2dd21 100644
--- a/cppcache/src/CacheableBuiltins.cpp
+++ b/cppcache/src/CacheableBuiltins.cpp
@@ -20,17 +20,45 @@
 namespace apache {
 namespace geode {
 namespace client {
+namespace internal {
 
-#define _GF_CACHEABLE_KEY_DEF_(k) const char tName_##k[] = #k;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<bool, DSCode::CacheableBoolean>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<int8_t, DSCode::CacheableByte>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<double, DSCode::CacheableDouble>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<float, DSCode::CacheableFloat>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<int16_t, DSCode::CacheableInt16>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<int32_t, DSCode::CacheableInt32>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<int64_t, DSCode::CacheableInt64>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableKeyPrimitive<char16_t, DSCode::CacheableCharacter>;
 
-_GF_CACHEABLE_KEY_DEF_(CacheableBoolean)
-_GF_CACHEABLE_KEY_DEF_(CacheableByte)
-_GF_CACHEABLE_KEY_DEF_(CacheableDouble)
-_GF_CACHEABLE_KEY_DEF_(CacheableFloat)
-_GF_CACHEABLE_KEY_DEF_(CacheableInt16)
-_GF_CACHEABLE_KEY_DEF_(CacheableInt32)
-_GF_CACHEABLE_KEY_DEF_(CacheableInt64)
-_GF_CACHEABLE_KEY_DEF_(CacheableCharacter)
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<int8_t, DSCode::CacheableBytes>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<bool, DSCode::BooleanArray>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<char16_t, DSCode::CharArray>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<double, DSCode::CacheableDoubleArray>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<float, DSCode::CacheableFloatArray>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<int16_t, DSCode::CacheableInt16Array>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<int32_t, DSCode::CacheableInt32Array>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT
+    CacheableArrayPrimitive<int64_t, DSCode::CacheableInt64Array>;
+template class APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT CacheableArrayPrimitive<
+    std::shared_ptr<CacheableString>, DSCode::CacheableStringArray>;
+
+}  // namespace internal
 }  // namespace client
 }  // namespace geode
 }  // namespace apache
diff --git a/cppcache/src/PdxInstanceImpl.cpp b/cppcache/src/PdxInstanceImpl.cpp
index 6894a8d..cbaf8b6 100644
--- a/cppcache/src/PdxInstanceImpl.cpp
+++ b/cppcache/src/PdxInstanceImpl.cpp
@@ -157,8 +157,7 @@ void PdxInstanceImpl::writeField(PdxWriter& writer,
       break;
     }
     case PdxFieldTypes::BYTE_ARRAY: {
-      if (auto&& val = std::dynamic_pointer_cast<
-              CacheableArrayPrimitive<int8_t, DSCode::CacheableBytes>>(value)) {
+      if (auto&& val = std::dynamic_pointer_cast<CacheableBytes>(value)) {
         writer.writeByteArray(fieldName, val->value());
       }
       break;
diff --git a/cppcache/src/RegionAttributes.cpp b/cppcache/src/RegionAttributes.cpp
index 3d542fa..f696f12 100644
--- a/cppcache/src/RegionAttributes.cpp
+++ b/cppcache/src/RegionAttributes.cpp
@@ -24,6 +24,7 @@
 #include <geode/Cache.hpp>
 #include <geode/DataInput.hpp>
 #include <geode/DataOutput.hpp>
+#include <geode/PersistenceManager.hpp>
 #include <geode/Properties.hpp>
 
 #include "CacheXmlParser.hpp"
diff --git a/cppcache/src/TcrMessage.cpp b/cppcache/src/TcrMessage.cpp
index 188b600..6b7ee76 100644
--- a/cppcache/src/TcrMessage.cpp
+++ b/cppcache/src/TcrMessage.cpp
@@ -2450,7 +2450,7 @@ TcrMessageExecuteRegionFunctionSingleHop::
       LOGDEBUG("All Buckets so putting IntPart for buckets = %d ",
                routingObj->size());
       for (const auto& itr : *routingObj) {
-        writeIntPart(std::static_pointer_cast<CacheableInt32>(itr)->value());
+        writeIntPart(std::dynamic_pointer_cast<CacheableInt32>(itr)->value());
       }
     } else {
       LOGDEBUG("putting keys as withFilter called, routing Keys size = %d ",


[geode-native] 02/02: GEODE-5942: Remove named constants from PersistenceManager (#393)

Posted by ig...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

igodwin pushed a commit to branch release/1.8
in repository https://gitbox.apache.org/repos/asf/geode-native.git

commit 58292a7a8c7d71750850a0f0864c0cf5ed0e039d
Author: Blake Bender <ek...@hotmail.com>
AuthorDate: Tue Nov 6 07:47:15 2018 -0800

    GEODE-5942: Remove named constants from PersistenceManager (#393)
    
    - These should just be agreed-upon values between client code and plugin
    
    Co-authored-by: Sai Boorlagaddda <sa...@gmail.com>
---
 cppcache/include/geode/PersistenceManager.hpp          |  4 ----
 cppcache/integration-test/testOverflowPutGetSqLite.cpp | 10 +++++++---
 cppcache/src/PersistenceManager.cpp                    |  8 +-------
 sqliteimpl/SqLiteImpl.cpp                              |  4 ++++
 4 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/cppcache/include/geode/PersistenceManager.hpp b/cppcache/include/geode/PersistenceManager.hpp
index 9cd591a..e2c0ca1 100644
--- a/cppcache/include/geode/PersistenceManager.hpp
+++ b/cppcache/include/geode/PersistenceManager.hpp
@@ -51,10 +51,6 @@ typedef std::shared_ptr<PersistenceManager> (*getPersistenceManagerInstance)(
  */
 class APACHE_GEODE_EXPORT PersistenceManager {
  public:
-  static constexpr char const* MAX_PAGE_COUNT = "MaxPageCount";
-  static constexpr char const* PAGE_SIZE = "PageSize";
-  static constexpr char const* PERSISTENCE_DIR = "PersistenceDirectory";
-
   /**
    * Returns the current persistence manager.
    * @return persistence manager
diff --git a/cppcache/integration-test/testOverflowPutGetSqLite.cpp b/cppcache/integration-test/testOverflowPutGetSqLite.cpp
index 8ef89c7..0d753d2 100644
--- a/cppcache/integration-test/testOverflowPutGetSqLite.cpp
+++ b/cppcache/integration-test/testOverflowPutGetSqLite.cpp
@@ -50,6 +50,10 @@ using apache::geode::client::RegionShortcut;
 uint32_t numOfEnt;
 std::string sqlite_dir = "SqLiteRegionData";
 
+static constexpr char const *MAX_PAGE_COUNT = "MaxPageCount";
+static constexpr char const *PAGE_SIZE = "PageSize";
+static constexpr char const *PERSISTENCE_DIR = "PersistenceDirectory";
+
 // Return the number of keys and values in entries map.
 void getNumOfEntries(std::shared_ptr<Region> &regionPtr, uint32_t num) {
   auto v = regionPtr->keys();
@@ -338,9 +342,9 @@ void setSqLiteProperties(std::shared_ptr<Properties> &sqliteProperties,
                          int maxPageCount = 1073741823, int pageSize = 65536,
                          std::string pDir = sqlite_dir) {
   sqliteProperties = Properties::create();
-  sqliteProperties->insert(PersistenceManager::MAX_PAGE_COUNT, maxPageCount);
-  sqliteProperties->insert(PersistenceManager::PAGE_SIZE, pageSize);
-  sqliteProperties->insert(PersistenceManager::PERSISTENCE_DIR, pDir.c_str());
+  sqliteProperties->insert(MAX_PAGE_COUNT, maxPageCount);
+  sqliteProperties->insert(PAGE_SIZE, pageSize);
+  sqliteProperties->insert(PERSISTENCE_DIR, pDir.c_str());
   ASSERT(sqliteProperties != nullptr,
          "Expected sqlite properties to be NON-nullptr");
 }
diff --git a/cppcache/src/PersistenceManager.cpp b/cppcache/src/PersistenceManager.cpp
index c664226..29c529b 100644
--- a/cppcache/src/PersistenceManager.cpp
+++ b/cppcache/src/PersistenceManager.cpp
@@ -19,12 +19,6 @@
 
 namespace apache {
 namespace geode {
-namespace client {
-
-constexpr char const* PersistenceManager::MAX_PAGE_COUNT;
-constexpr char const* PersistenceManager::PAGE_SIZE;
-constexpr char const* PersistenceManager::PERSISTENCE_DIR;
-
-}  // namespace client
+namespace client {}  // namespace client
 }  // namespace geode
 }  // namespace apache
diff --git a/sqliteimpl/SqLiteImpl.cpp b/sqliteimpl/SqLiteImpl.cpp
index 043398a..b57fa87 100644
--- a/sqliteimpl/SqLiteImpl.cpp
+++ b/sqliteimpl/SqLiteImpl.cpp
@@ -33,6 +33,10 @@ namespace apache {
 namespace geode {
 namespace client {
 
+static constexpr char const* MAX_PAGE_COUNT = "MaxPageCount";
+static constexpr char const* PAGE_SIZE = "PageSize";
+static constexpr char const* PERSISTENCE_DIR = "PersistenceDirectory";
+
 void SqLiteImpl::init(const std::shared_ptr<Region> &region,
                       const std::shared_ptr<Properties> &diskProperties) {
   // Set the default values