Proxy.hpp
#if !defined(__PROXY_HPP)
#define __PROXY_HPP
/*
CoreLinux++
Copyright (C) 1999,2000 CoreLinux Consortium
The CoreLinux++ Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The CoreLinux++ Library Library is distributed in the hope that it will
be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#if !defined(__COMMON_HPP)
#include <Common.hpp>
#endif
namespace corelinux
{
template< class SubjectImpl >
class Proxy
{
public:
//
// Constructors and destructor
//
Proxy( void )
:
theSubject( NULLPTR )
{
; // do nothing
}
Proxy( SubjectImpl *aSubject )
throw(Assertion)
:
theSubject( aSubject )
{
REQUIRE( aSubject != NULLPTR );
}
Proxy( const Proxy &aProxy )
:
theSubject( aProxy.theSubject )
{
; // do nothing
}
virtual ~Proxy( void )
{
theSubject = NULLPTR;
}
//
// Operator overloads
//
Proxy & operator=( const Proxy &aProxy )
{
if( (*this == aProxy) == false )
{
theSubject = aProxy.getSubject();
}
else
{
; // do nothing
}
return ( *this );
}
bool operator==( const Proxy &aProxy ) const
{
return ( this == &aProxy &&
theSubject == aProxy.getSubject() );
}
virtual SubjectImpl * operator->( void )
{
return theSubject;
}
virtual SubjectImpl & operator*( void )
throw( Assertion )
{
REQUIRE( theSubject != NULLPTR );
return ( *theSubject );
}
//
// Accessors
//
virtual const SubjectImpl &getSubject( void ) const
throw( Assertion )
{
REQUIRE( theSubject != NULLPTR );
return ( *theSubject );
}
protected:
//
// Mutators
//
virtual void setSubject( SubjectImpl *aSubject )
{
theSubject = aSubject;
}
protected:
SubjectImpl *theSubject;
};
}
#endif // if !defined(__PROXY_HPP)
/*
Common rcs information do not modify
$Author: prudhomm $
$Revision: 1.1 $
$Date: 2000/04/23 20:43:13 $
$Locker: $
*/
corelinux::Proxy::operator=
Proxy & operator=(const Proxy &aProxy)
Assignment operator.
Definition: Proxy.hpp:96
corelinux::Proxy::theSubject
SubjectImpl * theSubject
The subject pointer.
Definition: Proxy.hpp:177
corelinux::Proxy::operator*
virtual SubjectImpl & operator*(void)
Operator dereference overload.
Definition: Proxy.hpp:138
corelinux::Proxy::operator->
virtual SubjectImpl * operator->(void)
Operator selector overload.
Definition: Proxy.hpp:127
corelinux::Proxy::~Proxy
virtual ~Proxy(void)
Virtual destructor.
Definition: Proxy.hpp:81
corelinux::Proxy::Proxy
Proxy(const Proxy &aProxy)
Copy constructor.
Definition: Proxy.hpp:72
corelinux::Proxy::Proxy
Proxy(void)
Default constructor.
Definition: Proxy.hpp:47
corelinux::Proxy::throw
throw(Assertion)
Constructor with SubjectImpl instance.
Definition: Proxy.hpp:60
corelinux::Proxy
Provide a surrogate or placeholder for another object to control access to it.
Definition: Proxy.hpp:37
corelinux::Proxy::operator==
bool operator==(const Proxy &aProxy) const
Equality operator.
Definition: Proxy.hpp:116
corelinux::Assertion
Assertion is-a Exception created when an assertion fails.
Definition: Assertion.hpp:423
corelinux::Proxy::getSubject
virtual const SubjectImpl & getSubject(void) const
Returns a reference to theSubjec.
Definition: Proxy.hpp:154

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium