| Last change
 on this file since 6309fd was             9b8fa4, checked in by Frederik Heber <heber@…>, 14 years ago | 
        
          | 
Huge update of file structure to place installation header files into right folder.
 The problem ist that we desire use as include "CodePatterns/...". For this to
work, especially with the new Observer subfolder structure, it has been
necessary to place all header files away from their source files into a
distinct folder called CodePatterns. This emulates the later, after make
install present structure.
essentially all source and header files had to be changed to adapt the
include.
all Makefile.am's had to be changed.
nobase_ ... was removed such that header files are installed flat and not
creating their subfolder along the process.
We placed Observer into its own convenience library and own folder Observer
away from Patterns.
 
Some other changes:
 FIX: MemDebug.hpp inclusion has been removed in all stubs.
 | 
        
          | 
              
Property                 mode
 set to                 100644 | 
        
          | File size:
            1.3 KB | 
      
      
| Line |  | 
|---|
| 1 | /* | 
|---|
| 2 | * Clone.hpp | 
|---|
| 3 | * | 
|---|
| 4 | *  Created on: Jan 4, 2011 | 
|---|
| 5 | *      Author: heber | 
|---|
| 6 | */ | 
|---|
| 7 |  | 
|---|
| 8 | #ifndef CLONE_HPP_ | 
|---|
| 9 | #define CLONE_HPP_ | 
|---|
| 10 |  | 
|---|
| 11 | /**  \section <Clone> (Clone Howto) | 
|---|
| 12 | * | 
|---|
| 13 | * Prototypes serves as templates in object creation, i.e. new objects are | 
|---|
| 14 | * created by coping the prototype. Therefore each prototypical type has to | 
|---|
| 15 | * implement a clone() function. | 
|---|
| 16 | * | 
|---|
| 17 | * By inheriting this pattern and implementing the clone function you make | 
|---|
| 18 | * sure that the prototypes, e.g. to be stored in a factory table, can be | 
|---|
| 19 | * safely copied (the factory just calls clone of the prototype) and can | 
|---|
| 20 | * be handed out by the abstract and common interface. | 
|---|
| 21 | * | 
|---|
| 22 | * <h2> Howto </h2. | 
|---|
| 23 | * | 
|---|
| 24 | * Basically, you if you have your Prototype types, e.g. \a Prototype1 that | 
|---|
| 25 | * all have a common interface, \a IPrototype, you just inherit additionally | 
|---|
| 26 | * the specific Clone<IPrototype> class as follows: | 
|---|
| 27 | * | 
|---|
| 28 | * @code | 
|---|
| 29 | * class Prototype1 : | 
|---|
| 30 | *   public IPrototype, | 
|---|
| 31 | *   public Clone<IPrototype> | 
|---|
| 32 | * { | 
|---|
| 33 | * public: | 
|---|
| 34 | *   IPrototype clone() | 
|---|
| 35 | *   { | 
|---|
| 36 | *     ... do something to clone the class ... | 
|---|
| 37 | *   }; | 
|---|
| 38 | * }; | 
|---|
| 39 | * @endcode | 
|---|
| 40 | * | 
|---|
| 41 | * \link <ManipulableClone> {See also at ManipulableClones if changes to the | 
|---|
| 42 | * prototype instance can only be accomplished through its constructor. } | 
|---|
| 43 | * | 
|---|
| 44 | */ | 
|---|
| 45 | template <class interface> | 
|---|
| 46 | class Clone | 
|---|
| 47 | { | 
|---|
| 48 | public: | 
|---|
| 49 | virtual ~Clone() {}; | 
|---|
| 50 | virtual interface* clone() const = 0; | 
|---|
| 51 | }; | 
|---|
| 52 |  | 
|---|
| 53 | #endif /* CLONE_HPP_ */ | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.