vtf-logo

ObjectAndBlankSpace.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00008 #if !defined(__ads_utility_ObjectAndBlankSpace_h__)
00009 #define __ads_utility_ObjectAndBlankSpace_h__
00010 
00011 #include "../defs.h"
00012 
00013 BEGIN_NAMESPACE_ADS
00014 
00016 template<typename _Object, int _BlankSpaceSize = 64>
00017 class ObjectAndBlankSpace : public _Object {
00018   //
00019   // Public types.
00020   //
00021 
00022 public:
00023 
00025   typedef _Object Base;
00026 
00027   //
00028   // Member data.
00029   //
00030 
00031 private:
00032 
00033   // The blank space
00034   char _blankSpace[_BlankSpaceSize];
00035 
00036 public:
00037 
00038   //--------------------------------------------------------------------------
00040 
00041 
00043   ObjectAndBlankSpace() :
00044     Base()
00045   {}
00046   
00048   ObjectAndBlankSpace(const ObjectAndBlankSpace& other) :
00049     Base(other)
00050   {}
00051   
00053   ObjectAndBlankSpace&
00054   operator=(const ObjectAndBlankSpace& other) {
00055     if (this != &other) {
00056       Base::operator=(other);
00057     }
00058     return *this;
00059   }
00060   
00062   ObjectAndBlankSpace(const Base& object) :
00063     Base(object)
00064   {}
00065   
00067   ~ObjectAndBlankSpace()
00068   {}
00069 
00071 };
00072 
00073 
00074 
00075 
00076 
00077 #if 0
00079 template<typename _Object, int _BlankSpaceSize = 64>
00080 class ObjectAndBlankSpace {
00081   //
00082   // Public types.
00083   //
00084 
00085 public:
00086 
00088   typedef _Object Object;
00089 
00090   //
00091   // Member data.
00092   //
00093 
00094 private:
00095 
00096   // The object
00097   Object _object;
00098   // The blank space
00099   char _blankSpace[_BlankSpaceSize];
00100 
00101 public:
00102 
00103   //--------------------------------------------------------------------------
00105 
00106 
00108   ObjectAndBlankSpace() :
00109     _object()
00110   {}
00111   
00113   ObjectAndBlankSpace(const ObjectAndBlankSpace& other) :
00114     _object(other._object)
00115   {}
00116   
00118   ObjectAndBlankSpace&
00119   operator=(const ObjectAndBlankSpace& other) {
00120     if (this != &other) {
00121       _object = other._object;
00122     }
00123     return *this;
00124   }
00125   
00127   ObjectAndBlankSpace(const Object& object) :
00128     _object(object)
00129   {}
00130   
00132   ~ObjectAndBlankSpace()
00133   {}
00134 
00136   //--------------------------------------------------------------------------
00138 
00139   
00140   operator const Object&() const {
00141     return _object;
00142   }
00143 
00144   operator Object&() {
00145     return _object;
00146   }
00147 
00149 };
00150 #endif
00151 
00152 END_NAMESPACE_ADS
00153 
00154 #endif

Generated on Fri Aug 24 12:55:27 2007 for Algorithms and Data Structures Package by  doxygen 1.4.7