diff --git a/include/loki/ConstPolicy.h b/include/loki/ConstPolicy.h new file mode 100755 index 0000000..1ed574b --- /dev/null +++ b/include/loki/ConstPolicy.h @@ -0,0 +1,67 @@ +//////////////////////////////////////////////////////////////////////////////// +// 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_ + +// $Header$ + + +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 DontPropagateConst +#endif + +} // end namespace Loki + +#endif // end file guardian + +// $Log$ +// Revision 1.1 2006/02/19 22:04:28 rich_sposato +// Moved Const-policy structs from SmartPtr.h to ConstPolicy.h. +// diff --git a/include/loki/LockingPtr.h b/include/loki/LockingPtr.h index 03671f2..8ea34c6 100755 --- a/include/loki/LockingPtr.h +++ b/include/loki/LockingPtr.h @@ -16,7 +16,7 @@ #ifndef LOKI_LOCKING_PTR_INC_ #define LOKI_LOCKING_PTR_INC_ -#include +#include namespace Loki { @@ -99,6 +99,9 @@ namespace Loki // $Log$ +// Revision 1.9 2006/02/19 22:04:28 rich_sposato +// Moved Const-policy structs from SmartPtr.h to ConstPolicy.h. +// // Revision 1.8 2006/01/30 20:33:01 syntheticpp // use policies from SmartPtr.h, clean up // diff --git a/include/loki/SmartPtr.h b/include/loki/SmartPtr.h index 3fb2aa9..321f9de 100644 --- a/include/loki/SmartPtr.h +++ b/include/loki/SmartPtr.h @@ -28,13 +28,12 @@ /// \ingroup SmartPointerGroup /// \defgroup SmartPointerCheckingGroup Checking policies /// \ingroup SmartPointerGroup -/// \defgroup SmartPointerConstGroup Propagating constness policies -/// \ingroup SmartPointerGroup #include "SmallObj.h" #include "TypeManip.h" #include "static_check.h" #include "RefToValue.h" +#include "ConstPolicy.h" #include #include @@ -823,38 +822,6 @@ namespace Loki }; -//////////////////////////////////////////////////////////////////////////////// -/// \class DontPropagateConst -/// -/// \ingroup SmartPointerConstGroup -/// Don't propagate constness of pointed object (like a plain pointer) -//////////////////////////////////////////////////////////////////////////////// - - template - struct DontPropagateConst - { - typedef T Type; - }; - -//////////////////////////////////////////////////////////////////////////////// -/// \class PropagateConst -/// -/// \ingroup SmartPointerConstGroup -/// Propagate constness of pointed object (unlike a plain pointer) -//////////////////////////////////////////////////////////////////////////////// - - template - struct PropagateConst - { - typedef const T Type; - }; - -// default will not break exisiting code -#ifndef LOKI_DEFAULT_CONSTNESS -#define LOKI_DEFAULT_CONSTNESS DontPropagateConst -#endif - - //////////////////////////////////////////////////////////////////////////////// // class template SmartPtr (declaration) // The reason for all the fuss above @@ -1431,6 +1398,9 @@ namespace std #endif // SMARTPTR_INC_ // $Log$ +// Revision 1.17 2006/02/19 22:04:28 rich_sposato +// Moved Const-policy structs from SmartPtr.h to ConstPolicy.h. +// // Revision 1.16 2006/02/14 11:54:46 syntheticpp // rename SmartPtr-ByRef and ScopeGuard-ByRefHolder into RefToValue and move it to loki/RefToValue.h //