AbstractFactory.hpp
#if !defined(__ABSTRACTFACTORY_HPP)
#define __ABSTRACTFACTORY_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
#if !defined(__ALLOCATOR_HPP)
#include <Allocator.hpp>
#endif
#if !defined(__ALLOCATORNOTFOUNDEXCEPTION_HPP)
#include <AllocatorNotFoundException.hpp>
#endif
#if !defined(__ALLOCATORALREADYEXISTSEXCEPTION_HPP)
#include <AllocatorAlreadyExistsException.hpp>
#endif
#if !defined(__ASSOCIATIVEITERATOR_HPP)
#include <AssociativeIterator.hpp>
#endif
#if !defined(__ITERATOR_HPP)
#include <Iterator.hpp>
#endif
namespace corelinux
{
template< class UniqueId >
class AbstractFactory : public CoreLinuxObject
{
public:
//
// Constructors and Destructor
//
AbstractFactory( void )
:
CoreLinuxObject()
{
; // do nothing
}
AbstractFactory( const AbstractFactory & )
:
CoreLinuxObject()
{
}
virtual ~AbstractFactory( void )
{
; // do nothing
}
//
// Operator overloads
//
AbstractFactory & operator=( const AbstractFactory & )
{
return ( *this );
}
bool operator==( const AbstractFactory & aRef ) const
{
return( this == &aRef );
}
//
// Pure virtual accessors
//
virtual Count getCreateCount( void ) const = 0;
virtual Count getDestroyCount( void ) const = 0;
virtual AllocatorPtr getAllocator( UniqueId ) const
throw(AllocatorNotFoundException) = 0;
//
// Pure virtual mutators
//
virtual void addAllocator( UniqueId, AllocatorPtr )
throw(AllocatorAlreadyExistsException) = 0;
virtual AllocatorPtr removeAllocator( UniqueId )
throw(AllocatorNotFoundException) = 0;
//
// Iterator factory methods
//
virtual Iterator<Allocator *> * createIterator( void ) const = 0;
virtual void destroyIterator( Iterator<Allocator *> * ) const = 0;
virtual AssociativeIterator<UniqueId,Allocator *> *
createAssociativeIterator( void ) const = 0;
virtual void destroyAssociativeIterator
(
AssociativeIterator<UniqueId,Allocator *> *
) const = 0;
};
}
#endif // if !defined(__ABSTRACTFACTORY_HPP)
/*
Common rcs information do not modify
$Author: prudhomm $
$Revision: 1.1 $
$Date: 2000/04/23 20:43:13 $
$Locker: $
*/
corelinux::AbstractFactory::operator==
bool operator==(const AbstractFactory &aRef) const
Equality operator.
Definition: AbstractFactory.hpp:118
corelinux::AbstractFactory::operator=
AbstractFactory & operator=(const AbstractFactory &)
Assignment operator.
Definition: AbstractFactory.hpp:107
corelinux::AbstractFactory::AbstractFactory
AbstractFactory(const AbstractFactory &)
Copy Constructor.
Definition: AbstractFactory.hpp:83
corelinux::AbstractFactory::createAssociativeIterator
virtual AssociativeIterator< UniqueId, Allocator * > * createAssociativeIterator(void) const =0
Interface for creating an AssociativeIterator to iterate through the Identifiers and Allocators of an...
corelinux::AbstractFactory::getDestroyCount
virtual Count getDestroyCount(void) const =0
Returns the number of total destroys for this factory.
corelinux::AbstractFactory::destroyIterator
virtual void destroyIterator(Iterator< Allocator * > *) const =0
Interface for returning a created Iterator.
corelinux::AbstractFactory::destroyAssociativeIterator
virtual void destroyAssociativeIterator(AssociativeIterator< UniqueId, Allocator * > *) const =0
Interface for returning a created AssociativeIterator.
corelinux::AllocatorNotFoundException
AllocatorNotFoundException is an exception that is usually thrown when a AbstractFactory attempts to ...
Definition: AllocatorNotFoundException.hpp:44
corelinux::AbstractFactory::getAllocator
virtual AllocatorPtr getAllocator(UniqueId) const =0
Retrieve the allocator identified by argument from the implementation.
corelinux::AbstractFactory::removeAllocator
virtual AllocatorPtr removeAllocator(UniqueId)=0
Retrieve and remove the allocator identified by argument from the implementation. ...
corelinux::AbstractFactory::~AbstractFactory
virtual ~AbstractFactory(void)
Virtual Destructor.
Definition: AbstractFactory.hpp:92
corelinux
Forward reference the various common classes.
Definition: AbstractAllocator.hpp:32
corelinux::AbstractFactory::addAllocator
virtual void addAllocator(UniqueId, AllocatorPtr)=0
Add a allocator to the factory implementation.
corelinux::AssociativeIterator
The AssociativeIterator that extends Iterator to include the interface for describing an associative ...
Definition: AssociativeIterator.hpp:44
corelinux::Allocator
Allocator is a Strategy class used by AbstractAllocator and AbstractFactory.Each Allocator instance t...
Definition: Allocator.hpp:43
corelinux::AbstractFactory::createIterator
virtual Iterator< Allocator * > * createIterator(void) const =0
Interface for creating an Iterator to iterate through the Allocators of an implementation.
corelinux::AllocatorAlreadyExistsException
AllocatorAlreadyExistsException is an exception that is usually thrown when a add of an Allocator col...
Definition: AllocatorAlreadyExistsException.hpp:44
corelinux::AbstractFactory::getCreateCount
virtual Count getCreateCount(void) const =0
Returns the number of total creates for this factory.
corelinux::AbstractFactory::AbstractFactory
AbstractFactory(void)
Default constructor.
Definition: AbstractFactory.hpp:71
corelinux::Iterator
The Iterator provides a way to access the elements of an collection type sequentially without exposin...
Definition: Iterator.hpp:44
corelinux::CoreLinuxObject
An CoreLinuxObject is a base class for the library.
Definition: CoreLinuxObject.hpp:39
corelinux::AbstractFactory
AbstractFactory provides an interface for creating families of related or dependent objects without s...
Definition: AbstractFactory.hpp:60

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