SourcePro® API Reference Guide

 
Loading...
Searching...
No Matches
RWHandleBase Class Reference

Base class for all handle classes. Increments a reference count for each class instance that is bound to an instance of the RWBodyBase class. More...

#include <rw/pointer/RWHandleBase.h>

Inheritance diagram for RWHandleBase:
RWTEscrowHandle< Return > RWAsymmetricKey RWByteInputStream RWByteOutputStream RWCancellation RWCharInputStream RWCharOutputStream RWDataInputStream RWDataOutputStream RWHttpClient RWMimeContentDisposition RWMimeContentType RWMimeHeader RWMimePart RWRunnableHandle RWRunnableTrap RWSecureSocketContext RWSecureSocketSession RWSymbol RWTEscrowHandle< Redeemable > RWTIOUTrap< Redeemable > RWThreadAttribute RWThreadManager RWThreadPool RWUCharInputStream RWUCharOutputStream RWWCharInputStream RWWCharOutputStream RWX509Certificate

Public Member Functions

bool isValid (void) const
 
bool operator!= (const RWHandleBase &second) const
 
bool operator== (const RWHandleBase &second) const
 

Protected Member Functions

 RWHandleBase (const RWHandleBase &second)
 
 RWHandleBase (RWBodyBase *body)
 
 RWHandleBase (RWStaticCtor)
 
 RWHandleBase (void)
 
 ~RWHandleBase (void)
 
RWBodyBasebody (void) const
 
RWHandleBaseoperator= (const RWHandleBase &second)
 

Detailed Description

Base class for handle classes. Each time an instance of this class is bound to an instance of the RWBodyBase class, it increments the reference count maintained by that body. Each time an instance of this class detaches from a body instance, it decrements the body's reference count, until the last handle detaches, reaching zero, whereupon it deletes the body instance. The reference counting relieves clients of the burden of keeping track of when it is safe to delete a body instance.

When a handle is copy-constructed, the new handle attaches to the same body as the original. When one handle is assigned to another handle, the handle on the left side detaches from its current body and attaches to the body pointed to by the handle on the right side.

Example
See HandleBodyEx1.cpp and HandleBodyEx2.cpp, located in the examples directory.

Constructor & Destructor Documentation

◆ RWHandleBase() [1/4]

RWHandleBase::RWHandleBase ( void )
inlineprotected

Default constructor. Constructs an empty, invalid, handle instance. Throws no exceptions.

◆ RWHandleBase() [2/4]

RWHandleBase::RWHandleBase ( RWStaticCtor )
inlineprotected

Constructs a global static handle instance (may be used prior to construction). Throws no exceptions.

◆ RWHandleBase() [3/4]

RWHandleBase::RWHandleBase ( RWBodyBase * body)
inlineprotected

Binds a new handle instance to a body instance.

◆ RWHandleBase() [4/4]

RWHandleBase::RWHandleBase ( const RWHandleBase & second)
inlineprotected

Binds a new handle instance to the same body instance, if any, that is pointed to by a second handle instance second.

◆ ~RWHandleBase()

RWHandleBase::~RWHandleBase ( void )
inlineprotected

Destructor.

Member Function Documentation

◆ body()

RWBodyBase & RWHandleBase::body ( void ) const
inlineprotected

Gets a reference for the body instance, if any.

Exceptions
RWTHRInvalidPointerThrown if this handle is not attached to a body.

◆ isValid()

bool RWHandleBase::isValid ( void ) const
inline

Returns true if this handle points to a valid body instance, and false otherwise. Throws no exceptions.

◆ operator!=()

bool RWHandleBase::operator!= ( const RWHandleBase & second) const
inline

Returns true if the handle points to different body instance, if any, than pointed to by a second handle second, and otherwise returns false. Throws no exceptions.

◆ operator=()

RWHandleBase & RWHandleBase::operator= ( const RWHandleBase & second)
inlineprotected

Binds this handle instance to the same body instance, if any, that is pointed to by a second handle instance second.

◆ operator==()

bool RWHandleBase::operator== ( const RWHandleBase & second) const
inline

Returns true if the handle points to the same body instance, if any, as pointed to by a second handle second, and otherwise returns false. Two empty handles are equal. Throws no exceptions.

Copyright © 2024 Rogue Wave Software, Inc., a Perforce company. All Rights Reserved.