SourcePro® C++ API Reference Guide

Product Documentation:
   SourcePro C++
Documentation Home
List of all members | Public Member Functions | Protected Types | Protected Member Functions
RWTCountingBody< Mutex > Class Template Reference

Base class for classes that must maintain a reference count. More...

#include <rw/pointer/RWTCountingBody.h>

Inheritance diagram for RWTCountingBody< Mutex >:
RWTMonitor< Mutex > RWTCounter< Mutex >

Public Member Functions

 ~RWTCountingBody (void)
 
unsigned addReference (void)
 
unsigned references (void) const
 
unsigned removeReference (void)
 

Protected Types

typedef RWTLockGuard< RWTMonitor< Mutex > > LockGuard
 
typedef RWTTryLockGuard< RWTMonitor< Mutex > > TryLockGuard
 
typedef RWTUnlockGuard< RWTMonitor< Mutex > > UnlockGuard
 
- Protected Types inherited from RWTMonitor< Mutex >
typedef RWTLockGuard< RWTMonitor< Mutex > > LockGuard
 
typedef RWTTryLockGuard< RWTMonitor< Mutex > > TryLockGuard
 
typedef RWTUnlockGuard< RWTMonitor< Mutex > > UnlockGuard
 

Protected Member Functions

 RWTCountingBody (unsigned initCount=0)
 
 RWTCountingBody (RWStaticCtor)
 
 RWTCountingBody (const RWTCountingBody< Mutex > &second)
 
RWTCountingBody< Mutex > & operator= (const RWTCountingBody< Mutex > &second)
 
- Protected Member Functions inherited from RWTMonitor< Mutex >
 RWTMonitor ()
 
 RWTMonitor (RWStaticCtor)
 
 RWTMonitor (const RWTMonitor< Mutex > &second)
 
 ~RWTMonitor ()
 
void acquire ()
 
bool isAcquired () const
 
RWTMonitor< Mutex > & monitor () const
 
Mutex & mutex ()
 
RWTMonitor< Mutex > & operator= (const RWTMonitor< Mutex > &)
 
void release ()
 
bool tryAcquire ()
 

Detailed Description

template<class Mutex>
class RWTCountingBody< Mutex >

RWTCountingBody is a base class for classes that must maintain a reference count. It can be safely used in a multithreaded environment.

Example
#include <rw/pointer/RWTCountedPointer.h>
#include <rw/pointer/RWTCountingBody.h>
#include <rw/sync/RWMutexLock.h>
#include <iostream>
class Foo : public RWTCountingBody<RWMutexLock>
{
public:
void bar(void) {
std::cout << "I'm a foo example" << std::endl;
}
};
typedef RWTCountedPointer<Foo> FooPointer;
int main(void)
{
try {
FooPointer p1(new Foo);
p1->bar();
}
catch (const RWxmsg& msg) {
std::cout << msg.why() << std::endl;
}
return 0;
}

Member Typedef Documentation

template<class Mutex>
typedef RWTLockGuard< RWTMonitor<Mutex> > RWTCountingBody< Mutex >::LockGuard
protected

Predefined type for compatible guard.

template<class Mutex>
typedef RWTTryLockGuard< RWTMonitor<Mutex> > RWTCountingBody< Mutex >::TryLockGuard
protected

Predefined type for compatible guard.

template<class Mutex>
typedef RWTUnlockGuard< RWTMonitor<Mutex> > RWTCountingBody< Mutex >::UnlockGuard
protected

Predefined type for compatible guard.

Constructor & Destructor Documentation

template<class Mutex >
RWTCountingBody< Mutex >::~RWTCountingBody ( void  )
inline

Destructor.

template<class Mutex >
RWTCountingBody< Mutex >::RWTCountingBody ( unsigned  initCount = 0)
inlineprotected

Constructs a default instance (initializes the reference count). Throws no exceptions.

template<class Mutex >
RWTCountingBody< Mutex >::RWTCountingBody ( RWStaticCtor  )
inlineprotected

Constructs a static instance (does not initialize the reference count). Throws no exceptions.

template<class Mutex>
RWTCountingBody< Mutex >::RWTCountingBody ( const RWTCountingBody< Mutex > &  second)
inlineprotected

Defines a copy constructor that creates a new instance and initializes the reference count. This constructor does not actually create a copy, but allows derived classes to provide a meaningful copy constructor. Throws no exceptions.

Member Function Documentation

template<class Mutex>
unsigned RWTCountingBody< Mutex >::addReference ( void  )

Increments the reference count and then returns the previous value minus one.

template<class Mutex>
RWTCountingBody< Mutex > & RWTCountingBody< Mutex >::operator= ( const RWTCountingBody< Mutex > &  second)
inlineprotected

Defines an assignment operator, allowing derived classes to do assignments. Don't assign the reference count. Throws no exceptions.

template<class Mutex>
unsigned RWTCountingBody< Mutex >::references ( void  ) const

Queries the current reference count. Throws no exceptions.

template<class Mutex>
unsigned RWTCountingBody< Mutex >::removeReference ( void  )

Decrements the reference count and then returns the previous value minus one.

Copyright © 2016 Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Provide feedback to Rogue Wave about its documentation.