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_
|
#ifndef LOKI_LOCKING_PTR_INC_
|
||||||
#define LOKI_LOCKING_PTR_INC_
|
#define LOKI_LOCKING_PTR_INC_
|
||||||
|
|
||||||
#include <loki/SmartPtr.h>
|
#include <loki/ConstPolicy.h>
|
||||||
|
|
||||||
namespace Loki
|
namespace Loki
|
||||||
{
|
{
|
||||||
|
@ -99,6 +99,9 @@ namespace Loki
|
||||||
|
|
||||||
|
|
||||||
// $Log$
|
// $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
|
// Revision 1.8 2006/01/30 20:33:01 syntheticpp
|
||||||
// use policies from SmartPtr.h, clean up
|
// use policies from SmartPtr.h, clean up
|
||||||
//
|
//
|
||||||
|
|
|
@ -28,13 +28,12 @@
|
||||||
/// \ingroup SmartPointerGroup
|
/// \ingroup SmartPointerGroup
|
||||||
/// \defgroup SmartPointerCheckingGroup Checking policies
|
/// \defgroup SmartPointerCheckingGroup Checking policies
|
||||||
/// \ingroup SmartPointerGroup
|
/// \ingroup SmartPointerGroup
|
||||||
/// \defgroup SmartPointerConstGroup Propagating constness policies
|
|
||||||
/// \ingroup SmartPointerGroup
|
|
||||||
|
|
||||||
#include "SmallObj.h"
|
#include "SmallObj.h"
|
||||||
#include "TypeManip.h"
|
#include "TypeManip.h"
|
||||||
#include "static_check.h"
|
#include "static_check.h"
|
||||||
#include "RefToValue.h"
|
#include "RefToValue.h"
|
||||||
|
#include "ConstPolicy.h"
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <stdexcept>
|
#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)
|
// class template SmartPtr (declaration)
|
||||||
// The reason for all the fuss above
|
// The reason for all the fuss above
|
||||||
|
@ -1431,6 +1398,9 @@ namespace std
|
||||||
#endif // SMARTPTR_INC_
|
#endif // SMARTPTR_INC_
|
||||||
|
|
||||||
// $Log$
|
// $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
|
// 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
|
// rename SmartPtr-ByRef and ScopeGuard-ByRefHolder into RefToValue and move it to loki/RefToValue.h
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue