summaryrefslogtreecommitdiff
path: root/shared/loki/ConstPolicy.h
diff options
context:
space:
mode:
Diffstat (limited to 'shared/loki/ConstPolicy.h')
-rw-r--r--shared/loki/ConstPolicy.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/shared/loki/ConstPolicy.h b/shared/loki/ConstPolicy.h
new file mode 100644
index 00000000..74c9e5aa
--- /dev/null
+++ b/shared/loki/ConstPolicy.h
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 Richard Sposato
+// Copyright (c) 2006 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any
+// purpose is hereby granted without fee, provided that the above copyright
+// notice appear in all copies and that both that copyright notice and this
+// permission notice appear in supporting documentation.
+// The authors make no representations about the
+// suitability of this software for any purpose. It is provided "as is"
+// without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_CONST_POLICY_INC_
+#define LOKI_CONST_POLICY_INC_
+
+// $Id: ConstPolicy.h 769 2006-10-26 10:58:19Z syntheticpp $
+
+
+namespace Loki
+{
+
+////////////////////////////////////////////////////////////////////////////////
+/// @note These policy classes are used in LockingPtr and SmartPtr to define
+/// how const is propagated from the pointee.
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// \class DontPropagateConst
+///
+/// \ingroup ConstGroup
+/// Don't propagate constness of pointed or referred object.
+////////////////////////////////////////////////////////////////////////////////
+
+ template< class T >
+ struct DontPropagateConst
+ {
+ typedef T Type;
+ };
+
+////////////////////////////////////////////////////////////////////////////////
+/// \class PropagateConst
+///
+/// \ingroup ConstGroup
+/// Propagate constness of pointed or referred object.
+////////////////////////////////////////////////////////////////////////////////
+
+ template< class T >
+ struct PropagateConst
+ {
+ typedef const T Type;
+ };
+
+// default will not break existing code
+#ifndef LOKI_DEFAULT_CONSTNESS
+#define LOKI_DEFAULT_CONSTNESS ::Loki::DontPropagateConst
+#endif
+
+} // end namespace Loki
+
+#endif // end file guardian
bgstack15