add additional template parameter for the changed threading classes
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@513 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
7dc0df52d0
commit
e3dc79f363
3 changed files with 80 additions and 63 deletions
|
@ -38,7 +38,7 @@ namespace Loki
|
|||
|
||||
namespace Private
|
||||
{
|
||||
template <typename R, template <class> class ThreadingModel>
|
||||
template <typename R, template <class, class> class ThreadingModel>
|
||||
struct FunctorImplBase : public SmallObject<ThreadingModel>
|
||||
{
|
||||
typedef R ResultType;
|
||||
|
@ -92,7 +92,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, class TList,
|
||||
template <class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||
template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||
class FunctorImpl;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -100,7 +100,7 @@ namespace Loki
|
|||
// Specialization for 0 (zero) parameters
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, template <class> class ThreadingModel>
|
||||
template <typename R, template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, NullType, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -114,7 +114,7 @@ namespace Loki
|
|||
// Specialization for 1 parameter
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, template <class> class ThreadingModel>
|
||||
template <typename R, typename P1, template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1>, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -130,7 +130,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, typename P2,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2>, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -147,7 +147,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, typename P2, typename P3,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3>, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -165,7 +165,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3, P4>, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -185,7 +185,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3, P4, P5>, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -206,7 +206,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6>, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -228,7 +228,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7>, ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -252,7 +252,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7, P8>,
|
||||
ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
|
@ -278,7 +278,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9>,
|
||||
ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
|
@ -306,7 +306,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>,
|
||||
ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
|
@ -335,7 +335,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>,
|
||||
ThreadingModel>
|
||||
|
@ -366,7 +366,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>,
|
||||
ThreadingModel>
|
||||
|
@ -398,7 +398,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12, typename P13,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>,
|
||||
ThreadingModel>
|
||||
|
@ -431,7 +431,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12, typename P13, typename P14,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
|
||||
P14>,
|
||||
|
@ -466,7 +466,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12, typename P13, typename P14,
|
||||
typename P15, template <class> class ThreadingModel>
|
||||
typename P15, template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
|
||||
P14, P15>,
|
||||
|
@ -502,7 +502,7 @@ namespace Loki
|
|||
// Specialization for 1 parameter
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, template <class> class ThreadingModel>
|
||||
template <typename R, typename P1, template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_1(P1), ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -518,7 +518,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, typename P2,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_2(P1, P2), ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -535,7 +535,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, typename P2, typename P3,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_3(P1, P2, P3), ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -553,7 +553,7 @@ namespace Loki
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_4(P1, P2, P3, P4), ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -573,7 +573,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_5(P1, P2, P3, P4, P5), ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -594,7 +594,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_6(P1, P2, P3, P4, P5, P6), ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -616,7 +616,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_7(P1, P2, P3, P4, P5, P6, P7), ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
{
|
||||
|
@ -640,7 +640,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_8(P1, P2, P3, P4, P5, P6, P7, P8),
|
||||
ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
|
@ -666,7 +666,7 @@ namespace Loki
|
|||
|
||||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_9(P1, P2, P3, P4, P5, P6, P7, P8, P9),
|
||||
ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
|
@ -694,7 +694,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R, LOKI_TYPELIST_10(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10),
|
||||
ThreadingModel>
|
||||
: public Private::FunctorImplBase<R, ThreadingModel>
|
||||
|
@ -723,7 +723,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
LOKI_TYPELIST_11(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11),
|
||||
ThreadingModel>
|
||||
|
@ -754,7 +754,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
LOKI_TYPELIST_12(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12),
|
||||
ThreadingModel>
|
||||
|
@ -786,7 +786,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12, typename P13,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
LOKI_TYPELIST_13(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13),
|
||||
ThreadingModel>
|
||||
|
@ -819,7 +819,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12, typename P13, typename P14,
|
||||
template <class> class ThreadingModel>
|
||||
template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
LOKI_TYPELIST_14(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
|
||||
P14),
|
||||
|
@ -854,7 +854,7 @@ namespace Loki
|
|||
template <typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7, typename P8, typename P9,
|
||||
typename P10, typename P11, typename P12, typename P13, typename P14,
|
||||
typename P15, template <class> class ThreadingModel>
|
||||
typename P15, template <class, class> class ThreadingModel>
|
||||
class FunctorImpl<R,
|
||||
LOKI_TYPELIST_15(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
|
||||
P14, P15),
|
||||
|
@ -1137,7 +1137,7 @@ namespace Loki
|
|||
/// A generalized functor implementation with value semantics
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
template <typename R = void, class TList = NullType,
|
||||
template<class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||
template<class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
|
||||
class Functor
|
||||
{
|
||||
public:
|
||||
|
@ -1334,7 +1334,7 @@ namespace Loki
|
|||
{
|
||||
template <class Fctor> struct BinderFirstTraits;
|
||||
|
||||
template <typename R, class TList, template <class> class ThreadingModel>
|
||||
template <typename R, class TList, template <class, class> class ThreadingModel>
|
||||
struct BinderFirstTraits< Functor<R, TList, ThreadingModel> >
|
||||
{
|
||||
typedef Functor<R, TList, ThreadingModel> OriginalFunctor;
|
||||
|
@ -1361,7 +1361,7 @@ namespace Loki
|
|||
typedef typename TypeTraits<T>::ParameterType RefOrValue;
|
||||
};
|
||||
|
||||
template <typename R, class TList, template <class> class ThreadingModel>
|
||||
template <typename R, class TList, template <class, class> class ThreadingModel>
|
||||
struct BinderFirstBoundTypeStorage< Functor<R, TList, ThreadingModel> >
|
||||
{
|
||||
typedef Functor<R, TList, ThreadingModel> OriginalFunctor;
|
||||
|
@ -1662,6 +1662,9 @@ namespace Loki
|
|||
#endif // FUNCTOR_INC_
|
||||
|
||||
// $Log$
|
||||
// Revision 1.15 2006/01/22 13:31:45 syntheticpp
|
||||
// add additional template parameter for the changed threading classes
|
||||
//
|
||||
// Revision 1.14 2006/01/16 19:05:09 rich_sposato
|
||||
// Added cvs keywords.
|
||||
//
|
||||
|
|
|
@ -212,11 +212,12 @@ namespace Loki
|
|||
*/
|
||||
template
|
||||
<
|
||||
template <class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||
template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||
std::size_t chunkSize = LOKI_DEFAULT_CHUNK_SIZE,
|
||||
std::size_t maxSmallObjectSize = LOKI_MAX_SMALL_OBJECT_SIZE,
|
||||
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
||||
template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME
|
||||
template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME,
|
||||
class MutexPolicy = Mutex
|
||||
>
|
||||
class AllocatorSingleton : public SmallObjAllocator
|
||||
{
|
||||
|
@ -227,7 +228,7 @@ namespace Loki
|
|||
maxSmallObjectSize, objectAlignSize, LifetimePolicy > MyAllocator;
|
||||
|
||||
/// Defines type for thread-safety locking mechanism.
|
||||
typedef ThreadingModel< MyAllocator > MyThreadingModel;
|
||||
typedef ThreadingModel< MyAllocator, MutexPolicy > MyThreadingModel;
|
||||
|
||||
/// Defines singleton made from allocator.
|
||||
typedef Loki::SingletonHolder< MyAllocator, Loki::CreateStatic,
|
||||
|
@ -276,13 +277,14 @@ namespace Loki
|
|||
|
||||
template
|
||||
<
|
||||
template <class> class TM,
|
||||
template <class, class> class TM,
|
||||
std::size_t CS,
|
||||
std::size_t MSOS,
|
||||
std::size_t OAS,
|
||||
template <class> class LP
|
||||
template <class> class LP,
|
||||
class MX
|
||||
>
|
||||
void AllocatorSingleton< TM, CS, MSOS, OAS, LP >::ClearExtraMemory( void )
|
||||
void AllocatorSingleton< TM, CS, MSOS, OAS, LP, MX >::ClearExtraMemory( void )
|
||||
{
|
||||
typename MyThreadingModel::Lock lock;
|
||||
(void)lock; // get rid of warning
|
||||
|
@ -291,13 +293,14 @@ namespace Loki
|
|||
|
||||
template
|
||||
<
|
||||
template <class> class TM,
|
||||
template <class, class> class TM,
|
||||
std::size_t CS,
|
||||
std::size_t MSOS,
|
||||
std::size_t OAS,
|
||||
template <class> class LP
|
||||
template <class> class LP,
|
||||
class MX
|
||||
>
|
||||
bool AllocatorSingleton< TM, CS, MSOS, OAS, LP >::IsCorrupted( void )
|
||||
bool AllocatorSingleton< TM, CS, MSOS, OAS, LP, MX >::IsCorrupted( void )
|
||||
{
|
||||
typename MyThreadingModel::Lock lock;
|
||||
(void)lock; // get rid of warning
|
||||
|
@ -318,14 +321,15 @@ namespace Loki
|
|||
*/
|
||||
template
|
||||
<
|
||||
template <class> class TM,
|
||||
template <class, class> class TM,
|
||||
std::size_t CS,
|
||||
std::size_t MSOS,
|
||||
std::size_t OAS,
|
||||
template <class> class LP
|
||||
template <class> class LP,
|
||||
class MX
|
||||
>
|
||||
inline unsigned int GetLongevity(
|
||||
AllocatorSingleton< TM, CS, MSOS, OAS, LP > * )
|
||||
AllocatorSingleton< TM, CS, MSOS, OAS, LP, MX > * )
|
||||
{
|
||||
// Returns highest possible value.
|
||||
return 0xFFFFFFFF;
|
||||
|
@ -411,11 +415,12 @@ namespace Loki
|
|||
*/
|
||||
template
|
||||
<
|
||||
template <class> class ThreadingModel,
|
||||
template <class, class> class ThreadingModel,
|
||||
std::size_t chunkSize,
|
||||
std::size_t maxSmallObjectSize,
|
||||
std::size_t objectAlignSize,
|
||||
template <class> class LifetimePolicy
|
||||
template <class> class LifetimePolicy,
|
||||
class MutexPolicy
|
||||
>
|
||||
class SmallObjectBase
|
||||
{
|
||||
|
@ -431,7 +436,7 @@ namespace Loki
|
|||
private:
|
||||
|
||||
/// Defines type for thread-safety locking mechanism.
|
||||
typedef ThreadingModel< ObjAllocatorSingleton > MyThreadingModel;
|
||||
typedef ThreadingModel< ObjAllocatorSingleton, MutexPolicy > MyThreadingModel;
|
||||
|
||||
/// Use singleton defined in AllocatorSingleton.
|
||||
typedef typename ObjAllocatorSingleton::MyAllocatorSingleton MyAllocatorSingleton;
|
||||
|
@ -567,14 +572,15 @@ namespace Loki
|
|||
*/
|
||||
template
|
||||
<
|
||||
template <class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||
template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||
std::size_t chunkSize = LOKI_DEFAULT_CHUNK_SIZE,
|
||||
std::size_t maxSmallObjectSize = LOKI_MAX_SMALL_OBJECT_SIZE,
|
||||
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
||||
template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME
|
||||
template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME,
|
||||
class MutexPolicy = Mutex
|
||||
>
|
||||
class SmallObject : public SmallObjectBase< ThreadingModel, chunkSize,
|
||||
maxSmallObjectSize, objectAlignSize, LifetimePolicy >
|
||||
maxSmallObjectSize, objectAlignSize, LifetimePolicy, MutexPolicy >
|
||||
{
|
||||
|
||||
public:
|
||||
|
@ -602,14 +608,15 @@ namespace Loki
|
|||
*/
|
||||
template
|
||||
<
|
||||
template <class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||
template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
|
||||
std::size_t chunkSize = LOKI_DEFAULT_CHUNK_SIZE,
|
||||
std::size_t maxSmallObjectSize = LOKI_MAX_SMALL_OBJECT_SIZE,
|
||||
std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
|
||||
template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME
|
||||
template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME,
|
||||
class MutexPolicy = Mutex
|
||||
>
|
||||
class SmallValueObject : public SmallObjectBase< ThreadingModel, chunkSize,
|
||||
maxSmallObjectSize, objectAlignSize, LifetimePolicy >
|
||||
maxSmallObjectSize, objectAlignSize, LifetimePolicy, MutexPolicy >
|
||||
{
|
||||
protected:
|
||||
inline SmallValueObject( void ) {}
|
||||
|
@ -626,6 +633,9 @@ namespace Loki
|
|||
// Nov. 26, 2004: re-implemented by Rich Sposato.
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.25 2006/01/22 13:31:45 syntheticpp
|
||||
// add additional template parameter for the changed threading classes
|
||||
//
|
||||
// Revision 1.24 2005/12/08 22:09:08 rich_sposato
|
||||
// Added functions to check for memory corruption. Also made some minor
|
||||
// coding changes.
|
||||
|
|
|
@ -166,13 +166,14 @@ namespace Loki
|
|||
/// Policy Usage: RefCountedMTAdj<ThreadingModel>::RefCountedMT
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
template <template <class> class ThreadingModel>
|
||||
template <template <class, class> class ThreadingModel,
|
||||
class MX = LOKI_DEFAULT_MUTEX >
|
||||
struct RefCountedMTAdj
|
||||
{
|
||||
template <class P>
|
||||
class RefCountedMT : public ThreadingModel< RefCountedMT<P> >
|
||||
class RefCountedMT : public ThreadingModel< RefCountedMT<P>, MX >
|
||||
{
|
||||
typedef ThreadingModel< RefCountedMT<P> > base_type;
|
||||
typedef ThreadingModel< RefCountedMT<P>, MX > base_type;
|
||||
typedef typename base_type::IntType CountType;
|
||||
typedef volatile CountType *CountPtrType;
|
||||
|
||||
|
@ -184,7 +185,7 @@ namespace Loki
|
|||
sizeof(*pCount_)));
|
||||
assert(pCount_);
|
||||
//*pCount_ = 1;
|
||||
ThreadingModel<RefCountedMT>::AtomicAssign(*pCount_, 1);
|
||||
ThreadingModel<RefCountedMT, MX>::AtomicAssign(*pCount_, 1);
|
||||
}
|
||||
|
||||
RefCountedMT(const RefCountedMT& rhs)
|
||||
|
@ -199,13 +200,13 @@ namespace Loki
|
|||
|
||||
P Clone(const P& val)
|
||||
{
|
||||
ThreadingModel<RefCountedMT>::AtomicIncrement(*pCount_);
|
||||
ThreadingModel<RefCountedMT, MX>::AtomicIncrement(*pCount_);
|
||||
return val;
|
||||
}
|
||||
|
||||
bool Release(const P&)
|
||||
{
|
||||
if (!ThreadingModel<RefCountedMT>::AtomicDecrement(*pCount_))
|
||||
if (!ThreadingModel<RefCountedMT, MX>::AtomicDecrement(*pCount_))
|
||||
{
|
||||
SmallObject<LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>::operator delete(
|
||||
const_cast<CountType *>(pCount_),
|
||||
|
@ -1336,6 +1337,9 @@ namespace std
|
|||
#endif // SMARTPTR_INC_
|
||||
|
||||
// $Log$
|
||||
// Revision 1.11 2006/01/22 13:31:12 syntheticpp
|
||||
// add additional template parameter for the changed threading classes
|
||||
//
|
||||
// Revision 1.10 2006/01/18 17:21:31 lfittl
|
||||
// - Compile library with -Weffc++ and -pedantic (gcc)
|
||||
// - Fix most issues raised by using -Weffc++ (initialization lists)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue