GlobalObjects
Alle Klassen Namensbereiche Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Freundbeziehungen Makrodefinitionen Seiten
GloTOndemandSet.h
gehe zur Dokumentation dieser Datei
1#ifndef INC_GLOTONDEMANDSET_H
2#define INC_GLOTONDEMANDSET_H
3//-----------------------------------------------------------------------------
43//-----------------------------------------------------------------------------
44#include "GloTypes.h"
45#include "GloOndemandSet.h"
46#include "GloBasePersistent.h"
47//-----------------------------------------------------------------------------
48namespace glo
49{
50 //---------------------------------------------------------------------------
92 template < class T > class TOndemandSet : public OndemandSet
93 {
94 public:
95 //============== Konstruktoren
96 //-----------------------------------------------------------------------
106 TOndemandSet();
107 //-----------------------------------------------------------------------
119 TOndemandSet( Base & rBase );
120 //-----------------------------------------------------------------------
133 virtual ~TOndemandSet();
134 //-----------------------------------------------------------------------
135
136 private:
137 //============== Konstruktoren
138 //-----------------------------------------------------------------------
149 //-----------------------------------------------------------------------
150
151 public:
152 //============== static methods
153 //-----------------------------------------------------------------------
165 static unsigned long getStaticGloClassID(){ return T::getStaticGloClassID();};
166 //-----------------------------------------------------------------------
167
168 public:
169 //============== Methoden
170 //-----------------------------------------------------------------------
186 virtual int getTypeAsString( std::string & rsTypeName ) override;
187 //-----------------------------------------------------------------------
189
218 virtual int insert( T * NewObj );
219 virtual int insert( std::shared_ptr<T> NewObj );
221 //-----------------------------------------------------------------------
223
256 virtual int remove( T * Object );
257 virtual int remove( std::shared_ptr<T> Object );
259 //-----------------------------------------------------------------------
289 virtual int get( T *& prRetVal, EnSeekMode eMode );
290 //-----------------------------------------------------------------------
292
315 virtual int get( std::shared_ptr<T> & rRetVal, EnSeekMode eMode );
316 virtual int get( TOndemand<T> & rRetVal, EnSeekMode eMode );
318 //-----------------------------------------------------------------------
354 virtual int get( glo::ObjID & rObjID, T *& prRetVal, EnSeekMode eMode );
355 //-----------------------------------------------------------------------
357
386 virtual int get( glo::ObjID & rObjID, std::shared_ptr<T> & rRetVal, EnSeekMode eMode );
387 virtual int get( glo::ObjID & rObjID, TOndemand<T> & rRetVal, EnSeekMode eMode );
389 //-----------------------------------------------------------------------
418 virtual int get( T *& prRetVal, const ObjID & rObjID );
419 //-----------------------------------------------------------------------
439 virtual int get( std::shared_ptr<T> & rRetVal, const ObjID & rObjID );
440 //-----------------------------------------------------------------------
441
442 private:
443 //============== Operatoren
444 //-----------------------------------------------------------------------
455 //-----------------------------------------------------------------------
456 };
457 //---------------------------------------------------------------------------
458 #define SUPER OndemandSet
459 //---------------------------------------------------------------------------
460 template < class T >
462 : SUPER()
463 {
464 #ifdef _DEBUG
465 m_strDebugInfo = "TOndemandSet";
466 #endif
467 }
468 //---------------------------------------------------------------------------
469 template < class T >
471 : SUPER( rBase )
472 {
473 #ifdef _DEBUG
474 m_strDebugInfo = "TOndemandSet";
475 #endif
476 }
477 //---------------------------------------------------------------------------
478 template < class T >
482 //---------------------------------------------------------------------------
483 template < class T >
484 int TOndemandSet< T >::getTypeAsString( std::string & rsTypeName )
485 {
486 std::size_t t_nCount( 0 );
487
488 rsTypeName = typeid(T).name();
489 rsTypeName.replace( t_nCount, 6, "");
490 return 0;
491 }
492 //---------------------------------------------------------------------------
493 template < class T >
494 int TOndemandSet< T >::insert( T * pNewObj )
495 {
496 return SUPER::insertPers( pNewObj );
497 }
498 //---------------------------------------------------------------------------
499 template < class T >
500 int TOndemandSet< T >::insert( std::shared_ptr<T> spNewObj )
501 {
502 return SUPER::insertPers( spNewObj.operator->() );
503 }
504 //---------------------------------------------------------------------------
505 template < class T >
506 int TOndemandSet< T >::remove( T * pObject )
507 {
508 return SUPER::removePers( pObject );
509 }
510 //---------------------------------------------------------------------------
511 template < class T >
512 int TOndemandSet< T >::remove( std::shared_ptr<T> spObject )
513 {
514 return SUPER::removePers( spObject.operator->() );
515 }
516 //---------------------------------------------------------------------------
517 template < class T >
518 int TOndemandSet< T >::get( T *& prRetVal, EnSeekMode eMode )
519 {
520 return SUPER::getPers( (BasePersistent*&) prRetVal, eMode );
521 }
522 //---------------------------------------------------------------------------
523 template < class T >
524 int TOndemandSet< T >::get( std::shared_ptr<T> & rRetVal,
525 EnSeekMode eMode )
526 {
527 T * t_pPersObject = nullptr;
528 int t_iErr = this->get( t_pPersObject, eMode );
529
530 if ( t_pPersObject )
531 {
532 rRetVal.reset( t_pPersObject, Forgetter<T>() );
533 }
534 return t_iErr;
535 }
536 //---------------------------------------------------------------------------
537 template < class T >
539 EnSeekMode eMode )
540 {
541 T * t_pPersObject = nullptr;
542 int t_iErr = this->get( t_pPersObject, eMode );
543
544 if ( t_pPersObject )
545 {
546 rRetVal.set( t_pPersObject );
547 }
548 return t_iErr;
549 }
550 //---------------------------------------------------------------------------
551 template < class T >
552 int TOndemandSet< T >::get( glo::ObjID & rObjID, T *& prRetVal, EnSeekMode eMode )
553 {
554 return SUPER::getPers( rObjID, (BasePersistent*&) prRetVal, eMode );
555 }
556 //---------------------------------------------------------------------------
557 template < class T >
559 std::shared_ptr<T> & rRetVal,
560 EnSeekMode eMode )
561 {
562 T * t_pPersObject = nullptr;
563 int t_iErr = this->get( rObjID, t_pPersObject, eMode );
564
565 if ( t_pPersObject )
566 {
567 rRetVal.reset( t_pPersObject, Forgetter<T>() );
568 }
569 return t_iErr;
570 }
571 //---------------------------------------------------------------------------
572 template < class T >
574 TOndemand<T> & rRetVal,
575 EnSeekMode eMode )
576 {
577 T * t_pPersObject = nullptr;
578 int t_iErr = this->get( rObjID, t_pPersObject, eMode );
579
580 if ( t_pPersObject )
581 {
582 rRetVal.set( t_pPersObject );
583 }
584 return t_iErr;
585 }
586 //---------------------------------------------------------------------------
587 template < class T >
588 int TOndemandSet< T >::get( T *& prRetVal, const ObjID & rObjID )
589 {
590 return SUPER::getPersistent( (BasePersistent*&) prRetVal, rObjID );
591 }
592 //---------------------------------------------------------------------------
593 template < class T >
594 int TOndemandSet< T >::get( std::shared_ptr<T> & rRetVal,
595 const ObjID & rObjID )
596 {
597 T * t_pPersObject = nullptr;
598 int t_iErr = this->get( t_pPersObject, rObjID );
599
600 if ( t_pPersObject )
601 {
602 rRetVal.reset( t_pPersObject, Forgetter<T>() );
603 }
604 return t_iErr;
605 }
606 //---------------------------------------------------------------------------
607 #undef SUPER
608 //---------------------------------------------------------------------------
609} // namespace glo
610#endif
Header für BasePersistent
Header für OndemandSet
#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
Ein Objekt-ID besteht aus der Klassen-ID, einer Datenbank-ID und der eigentlichen eindeutigen ObjektZ...
Definition GloObjID.h:84
Referenz (als Attribut) eines persistenten Objekte auf ein anderes persistentes Objekt in der Datenba...
Definition GloTOndemand.h:102
int set(const T *rObj)
Übernimmt die Objekt-ID des übergeben Objekt als Referenz.
Definition GloTOndemand.h:443
virtual ~TOndemandSet()
Definition GloTOndemandSet.h:479
virtual int getTypeAsString(std::string &rsTypeName) override
Definition GloTOndemandSet.h:484
virtual int remove(T *Object)
Entfernt das übergebene persistentes Objekt aus dem Set.
Definition GloTOndemandSet.h:506
virtual int insert(T *NewObj)
Fügt das übergebene persistentes Objekt im Set ein.
Definition GloTOndemandSet.h:494
TOndemandSet< T > & operator=(const TOndemandSet &)
TOndemandSet(const TOndemandSet &)
static unsigned long getStaticGloClassID()
Definition GloTOndemandSet.h:165
TOndemandSet()
Definition GloTOndemandSet.h:461
virtual int get(T *&prRetVal, EnSeekMode eMode)
Definition GloTOndemandSet.h:518
Definition GloAbstractBaseLot.h:49
EnSeekMode
Definition GloTypes.h:192