Moved Const-policy structs from SmartPtr.h to ConstPolicy.h.
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@535 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
1c4109e72d
commit
059eba4ae1
3 changed files with 75 additions and 35 deletions
67
include/loki/ConstPolicy.h
Executable file
67
include/loki/ConstPolicy.h
Executable file
|
@ -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.
|
||||
//
|
|
@ -16,7 +16,7 @@
|
|||
#ifndef LOKI_LOCKING_PTR_INC_
|
||||
#define LOKI_LOCKING_PTR_INC_
|
||||
|
||||
#include <loki/SmartPtr.h>
|
||||
#include <loki/ConstPolicy.h>
|
||||
|
||||
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
|
||||
//
|
||||
|
|
|
@ -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 <functional>
|
||||
#include <stdexcept>
|
||||
|
@ -823,38 +822,6 @@ namespace Loki
|
|||
};
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// \class DontPropagateConst
|
||||
///
|
||||
/// \ingroup SmartPointerConstGroup
|
||||
/// Don't propagate constness of pointed object (like a plain pointer)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template<class T>
|
||||
struct DontPropagateConst
|
||||
{
|
||||
typedef T Type;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// \class PropagateConst
|
||||
///
|
||||
/// \ingroup SmartPointerConstGroup
|
||||
/// Propagate constness of pointed object (unlike a plain pointer)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template<class T>
|
||||
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
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue