GlobalObjects
Alle Klassen Namensbereiche Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Freundbeziehungen Makrodefinitionen Seiten
GloTPointerSet.h
gehe zur Dokumentation dieser Datei
1#ifndef INC_GLOTPOINTERSET_H
2#define INC_GLOTPOINTERSET_H
3//-----------------------------------------------------------------------------
43//-----------------------------------------------------------------------------
44#include "GloTypes.h"
45#include "GloPointerSet.h"
46#include "GloBasePersistent.h"
47//-----------------------------------------------------------------------------
48namespace glo
49{
50 //---------------------------------------------------------------------------
87 template < class T > class TPointerSet : public PointerSet
88 {
89 public:
90 //============== Konstruktoren
91 //-----------------------------------------------------------------------
101 TPointerSet();
102 //-----------------------------------------------------------------------
114 TPointerSet( Base & rBase );
115 //-----------------------------------------------------------------------
128 virtual ~TPointerSet();
129 //-----------------------------------------------------------------------
130
131 private:
132 //============== Konstruktoren
133 //-----------------------------------------------------------------------
144 //-----------------------------------------------------------------------
145
146 public:
147 //============== static methods
148 //-----------------------------------------------------------------------
160 static unsigned long getStaticGloClassID(){ return T::getStaticGloClassID();};
161 //-----------------------------------------------------------------------
162
163 public:
164 //============== Methoden
165 //-----------------------------------------------------------------------
181 virtual int getTypeAsString( std::string & rsTypeName ) override;
182 //-----------------------------------------------------------------------
214 virtual int insert( T * pNewObj );
215 //-----------------------------------------------------------------------
245 virtual int insert( std::shared_ptr<T> spNewObj );
246 //-----------------------------------------------------------------------
282 virtual int remove( T * pObject );
283 //-----------------------------------------------------------------------
317 virtual int remove( std::shared_ptr<T> spObject );
318 //-----------------------------------------------------------------------
358 virtual int get( T *& prRetVal, EnSeekMode eMode );
359 //-----------------------------------------------------------------------
393 virtual int get( std::shared_ptr<T> & rRetVal, EnSeekMode eMode );
394 //-----------------------------------------------------------------------
395
396 private:
397 //============== Operatoren
398 //-----------------------------------------------------------------------
409 //-----------------------------------------------------------------------
410 };
411 //---------------------------------------------------------------------------
412 #define SUPER PointerSet
413 //---------------------------------------------------------------------------
414 template < class T >
416 : SUPER()
417 {
418 #ifdef _DEBUG
419 m_strDebugInfo = "TPointerSet";
420 #endif
421 }
422 //---------------------------------------------------------------------------
423 template < class T >
425 : SUPER( rBase )
426 {
427 #ifdef _DEBUG
428 m_strDebugInfo = "TPointerSet";
429 #endif
430 }
431 //---------------------------------------------------------------------------
432 template < class T >
436 //---------------------------------------------------------------------------
437 template < class T >
438 int TPointerSet< T >::getTypeAsString( std::string & rsTypeName )
439 {
440 std::size_t t_nCount( 0 );
441
442 rsTypeName = typeid(T).name();
443 rsTypeName.replace( t_nCount, 6, "");
444 return 0;
445 }
446 //---------------------------------------------------------------------------
447 template < class T >
448 int TPointerSet< T >::insert( T * pNewObj )
449 {
450 return SUPER::insertPers( pNewObj );
451 }
452 //---------------------------------------------------------------------------
453 template < class T >
454 int TPointerSet< T >::insert( std::shared_ptr<T> spNewObj )
455 {
456 return SUPER::insertPers( spNewObj.operator->() );
457 }
458 //---------------------------------------------------------------------------
459 template < class T >
460 int TPointerSet< T >::remove( T * pObject )
461 {
462 return SUPER::removePers( pObject );
463 }
464 //---------------------------------------------------------------------------
465 template < class T >
466 int TPointerSet< T >::remove( std::shared_ptr<T> spObject )
467 {
468 return SUPER::removePers( spObject.operator->() );
469 }
470 //---------------------------------------------------------------------------
471 template < class T >
472 int TPointerSet< T >::get( T *& prRetVal, EnSeekMode eMode )
473 {
474 return SUPER::getPers( (BasePersistent*&) prRetVal, eMode );
475 }
476 //---------------------------------------------------------------------------
477 template < class T >
478 int TPointerSet< T >::get( std::shared_ptr<T> & rRetVal, EnSeekMode eMode )
479 {
480 T * t_pPersObject = nullptr;
481 int t_iErr = this->get( t_pPersObject, eMode );
482
483 if ( t_pPersObject )
484 {
485 //rRetVal = std::shared_ptr<T>( t_pPersObject, Forgetter<T>() );
486 rRetVal.reset( t_pPersObject, Forgetter<T>() );
487 }
488 return t_iErr;
489 }
490 //---------------------------------------------------------------------------
491 #undef SUPER
492 //---------------------------------------------------------------------------
493} // namespace glo
494#endif
Header für BasePersistent
Header für PointerSet
#define SUPER
Definition GloTAllSet.h:1300
Für jede Bibliothek, hier 'GlobalObjects' gibt es eine Typen-Datei.
Definition GloBase.h:263
Abstrakte Basisklasse für Persistent und die generische GenericPersistent.
Definition GloBasePersistent.h:124
std::string m_strDebugInfo
Definition GloCallBack.h:111
Speziel für GenericPersistent oder abgeleitete Klassen von Persistent die Forget-Methode für std::sha...
Definition GloTypes.h:1253
virtual int insert(T *pNewObj)
Definition GloTPointerSet.h:448
TPointerSet(const TPointerSet &)
virtual int getTypeAsString(std::string &rsTypeName) override
Definition GloTPointerSet.h:438
TPointerSet< T > & operator=(const TPointerSet &)
virtual int remove(T *pObject)
Definition GloTPointerSet.h:460
virtual int get(T *&prRetVal, EnSeekMode eMode)
Definition GloTPointerSet.h:472
static unsigned long getStaticGloClassID()
Definition GloTPointerSet.h:160
TPointerSet()
Definition GloTPointerSet.h:415
virtual ~TPointerSet()
Definition GloTPointerSet.h:433
Definition GloAbstractBaseLot.h:49
EnSeekMode
Definition GloTypes.h:192