base: Hide the BitUnion::__StorageType type.
authorGabe Black <gabeblack@google.com>
Mon, 8 Jan 2018 03:56:25 +0000 (19:56 -0800)
committerGabe Black <gabeblack@google.com>
Sat, 20 Jan 2018 07:31:50 +0000 (07:31 +0000)
Since this type is now accessible through a clean interface, hide it
from anybody that tries to peak around the curtain.

Change-Id: I1257b6675a45b8648be459ad8e8d0f27a6feee6b
Reviewed-on: https://gem5-review.googlesource.com/7205
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/base/bitunion.hh

index 10fa00508452c11c645d9b42b43659b471489ecf..6e7d223d20cb3eb0cd1be7ca76ec3bd13060201c 100644 (file)
@@ -291,8 +291,14 @@ namespace BitfieldBackend
     class BitfieldUnderlyingClasses##name : \
         public BitfieldBackend::BitfieldTypes<type> \
     { \
-      public: \
+      protected: \
         typedef type __StorageType; \
+        friend BitfieldBackend::BitUnionBaseType< \
+            BitfieldBackend::BitUnionOperators< \
+                BitfieldUnderlyingClasses##name> >; \
+        friend BitfieldBackend::BitUnionBaseType< \
+                BitfieldUnderlyingClasses##name>; \
+      public: \
         union { \
             type __storage;
 
@@ -388,6 +394,8 @@ namespace BitfieldBackend
 template <typename T>
 using BitUnionBaseType = typename BitfieldBackend::BitUnionBaseType<T>::Type;
 
+
+//An STL style hash structure for hashing BitUnions based on their base type.
 namespace std
 {
     template <typename T>