Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Namespace Members | Data Fields | Globals

outerable_object.hpp

Go to the documentation of this file.
00001 //
00002 // See license.txt for license information.
00003 //
00004 // outerable_object.hpp
00005 //
00006 // 17-Jul-2003  phamilton  Created
00007 //
00008 
00009 #ifndef incCOMMON_OUTERABLE_OBJECT
00010 #define incCOMMON_OUTERABLE_OBJECT
00011 
00012 namespace ph {
00013 namespace common {
00014 
00015 // forwards
00016 class object_base;
00017 
00018 class outerable_object_base
00019 /**
00020         Abstract class representing a an object which has an outer.
00021 */
00022 {
00023 public:
00024         virtual ~outerable_object_base() {}
00025         
00026         virtual object_base *outer() const = 0;
00027                 //!< return the "outer" object from this one.
00028                 //!
00029         virtual void outer(object_base *outer) = 0;
00030                 //!< Set the outer object of this object.
00031                 //!
00032 };
00033 
00034 class outerable_helper
00035 /**
00036         A helper class whcih declares a member of the class type to provide the
00037         outer of an object.
00038 */
00039 {
00040 public:
00041         outerable_helper(object_base *outer=0) :
00042                 _outer(outer)
00043                         {};
00044                         
00045         object_base *outer_helper() const 
00046                 { return _outer; }
00047         void outer_helper(object_base *outer) 
00048                 { _outer = outer; }
00049                 
00050 private:
00051         object_base *_outer;
00052 };
00053 
00054 }; // common
00055 }; // ph
00056 
00057 #endif // incCOMMON_OUTERABLE_OBJECT

Generated on Wed Apr 5 22:03:25 2006 for cppxmlobj by  doxygen 1.4.3