LRDE Tiger Compiler  1.34a $Id: 7fef12e1f5fa43449d667a0eec1d837c40fc1202 $
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
misc::unique< T, C > Class Template Reference

Define unique class. More...

#include <unique.hh>

Inheritance diagram for misc::unique< T, C >:

Public Types

typedef unique< T, C > value_type
typedef T data_type

Public Member Functions

Ctor & Dtor.
 unique (const data_type &s)
 Construct a unique.
virtual ~unique ()
Operators.
virtual value_typeoperator= (const value_type &rhs)
 Assign a unique to this unique.
virtual bool operator== (const value_type &rhs) const
 Compare two unique for equality.
virtual bool operator!= (const value_type &rhs) const
 Compare two unique for inequality.
virtual bool operator< (const value_type &rhs) const
 Compare two sunique for order.

Protected Types

typedef std::set< T, C > object_set_type
 The unique's object type.
typedef object_set_type::size_type object_size_type
 The type for the size of the unique set.

Static Protected Member Functions

static object_set_typeobject_set_instance ()
 Return the set of uniques.

Protected Attributes

const data_typeobj_
 Pointer to the unique referenced object.

Accessors.

virtual const data_typeobject_get () const
 Return the object referenced by this.
virtual operator const data_type & () const
static object_size_type object_map_size ()
 Return the number of referenced objects.

Detailed Description

template<typename T, class C = std::less<T>>
class misc::unique< T, C >

Define unique class.

Implementation of the flyweight pattern. Map identical objects to a unique reference.

Member Typedef Documentation

template<typename T, class C = std::less<T>>
typedef T misc::unique< T, C >::data_type
template<typename T, class C = std::less<T>>
typedef std::set<T, C> misc::unique< T, C >::object_set_type
protected

The unique's object type.

template<typename T, class C = std::less<T>>
typedef object_set_type::size_type misc::unique< T, C >::object_size_type
protected

The type for the size of the unique set.

template<typename T, class C = std::less<T>>
typedef unique<T, C> misc::unique< T, C >::value_type

Constructor & Destructor Documentation

template<typename T, class C = std::less<T>>
misc::unique< T, C >::unique ( const data_type s)

Construct a unique.

Parameters
sreferenced object
template<typename T, class C = std::less<T>>
virtual misc::unique< T, C >::~unique ( )
virtual

Member Function Documentation

template<typename T, class C = std::less<T>>
virtual const data_type& misc::unique< T, C >::object_get ( ) const
virtual

Return the object referenced by this.

Referenced by misc::symbol::fresh().

template<typename T, class C = std::less<T>>
static object_size_type misc::unique< T, C >::object_map_size ( )
static

Return the number of referenced objects.

template<typename T, class C = std::less<T>>
static object_set_type& misc::unique< T, C >::object_set_instance ( )
staticprotected

Return the set of uniques.

template<typename T, class C = std::less<T>>
virtual misc::unique< T, C >::operator const data_type & ( ) const
virtual
template<typename T , class C >
bool misc::unique< T, C >::operator!= ( const value_type rhs) const
inlinevirtual

Compare two unique for inequality.

Parameters
rhsunique to compare with.

References type::operator==().

template<typename T , class C >
bool misc::unique< T, C >::operator< ( const value_type rhs) const
inlinevirtual

Compare two sunique for order.

Parameters
rhsunique to compare with.

References assertion, and misc::unique< T, C >::obj_.

template<typename T , class C >
unique< T, C >::value_type & misc::unique< T, C >::operator= ( const value_type rhs)
inlinevirtual

Assign a unique to this unique.

Parameters
rhsunique to copy.

References misc::unique< T, C >::obj_.

template<typename T , class C >
bool misc::unique< T, C >::operator== ( const value_type rhs) const
inlinevirtual

Compare two unique for equality.

Parameters
rhsunique to compare with.

References misc::unique< T, C >::obj_.

Member Data Documentation

template<typename T, class C = std::less<T>>
const data_type* misc::unique< T, C >::obj_
protected

The documentation for this class was generated from the following files: