PPL  1.2
Parma_Polyhedra_Library::Temp_Item< T > Class Template Reference

A pool of temporary items of type T. More...

#include <Temp_defs.hh>

Collaboration diagram for Parma_Polyhedra_Library::Temp_Item< T >:

Classes

class  Free_List
 

Public Member Functions

T & item ()
 Returns a reference to the encapsulated item. More...
 

Static Public Member Functions

static Temp_Itemobtain ()
 Obtains a reference to a temporary item. More...
 
static void release (Temp_Item &p)
 Releases the temporary item p. More...
 

Private Member Functions

 Temp_Item ()
 Default constructor. More...
 
 Temp_Item (const Temp_Item &)
 Copy constructor: private and intentionally not implemented. More...
 
Temp_Itemoperator= (const Temp_Item &)
 Assignment operator: private and intentionally not implemented. More...
 

Static Private Member Functions

static Temp_Item *& free_list_ref ()
 Head of the free list. More...
 

Private Attributes

item_
 The encapsulated item. More...
 
Temp_Itemnext
 Pointer to the next item in the free list. More...
 

Friends

class Free_List
 

Detailed Description

template<typename T>
class Parma_Polyhedra_Library::Temp_Item< T >

A pool of temporary items of type T.

Definition at line 36 of file Temp_defs.hh.

Constructor & Destructor Documentation

template<typename T >
Parma_Polyhedra_Library::Temp_Item< T >::Temp_Item ( )
inlineprivate

Default constructor.

Definition at line 33 of file Temp_inlines.hh.

Referenced by Parma_Polyhedra_Library::Temp_Item< T >::obtain().

34  : item_() {
35 }
T item_
The encapsulated item.
Definition: Temp_defs.hh:49
template<typename T>
Parma_Polyhedra_Library::Temp_Item< T >::Temp_Item ( const Temp_Item< T > &  )
private

Copy constructor: private and intentionally not implemented.

Member Function Documentation

template<typename T >
Temp_Item< T > *& Parma_Polyhedra_Library::Temp_Item< T >::free_list_ref ( )
inlinestaticprivate

Head of the free list.

Definition at line 51 of file Temp_inlines.hh.

References Parma_Polyhedra_Library::Temp_Item< T >::Free_List::head_ptr.

Referenced by Parma_Polyhedra_Library::Temp_Item< T >::obtain(), and Parma_Polyhedra_Library::Temp_Item< T >::release().

51  {
52  static Free_List free_list;
53  return free_list.head_ptr;
54 }
template<typename T >
T & Parma_Polyhedra_Library::Temp_Item< T >::item ( )
inline

Returns a reference to the encapsulated item.

Definition at line 39 of file Temp_inlines.hh.

39  {
40  return item_;
41 }
T item_
The encapsulated item.
Definition: Temp_defs.hh:49
template<typename T >
Temp_Item< T > & Parma_Polyhedra_Library::Temp_Item< T >::obtain ( )
inlinestatic

Obtains a reference to a temporary item.

Definition at line 58 of file Temp_inlines.hh.

References Parma_Polyhedra_Library::Temp_Item< T >::free_list_ref(), Parma_Polyhedra_Library::Temp_Item< T >::next, and Parma_Polyhedra_Library::Temp_Item< T >::Temp_Item().

58  {
59  Temp_Item* const p = free_list_ref();
60  if (p != 0) {
61  free_list_ref() = p->next;
62  return *p;
63  }
64  else {
65  return *new Temp_Item();
66  }
67 }
Temp_Item()
Default constructor.
Definition: Temp_inlines.hh:33
Temp_Item * next
Pointer to the next item in the free list.
Definition: Temp_defs.hh:52
static Temp_Item *& free_list_ref()
Head of the free list.
Definition: Temp_inlines.hh:51
template<typename T>
Temp_Item& Parma_Polyhedra_Library::Temp_Item< T >::operator= ( const Temp_Item< T > &  )
private

Assignment operator: private and intentionally not implemented.

template<typename T >
void Parma_Polyhedra_Library::Temp_Item< T >::release ( Temp_Item< T > &  p)
inlinestatic

Releases the temporary item p.

Definition at line 71 of file Temp_inlines.hh.

References Parma_Polyhedra_Library::Temp_Item< T >::free_list_ref(), and Parma_Polyhedra_Library::Temp_Item< T >::next.

Referenced by Parma_Polyhedra_Library::Temp_Reference_Holder< T >::~Temp_Reference_Holder().

71  {
72  p.next = free_list_ref();
73  free_list_ref() = &p;
74 }
static Temp_Item *& free_list_ref()
Head of the free list.
Definition: Temp_inlines.hh:51

Friends And Related Function Documentation

template<typename T>
friend class Free_List
friend

Definition at line 64 of file Temp_defs.hh.

Member Data Documentation

template<typename T>
T Parma_Polyhedra_Library::Temp_Item< T >::item_
private

The encapsulated item.

Definition at line 49 of file Temp_defs.hh.


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