GlobalObjects
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GloTOndemandList.h
Go to the documentation of this file.
1#ifndef INC_GLOTONDEMANDLIST_H
2#define INC_GLOTONDEMANDLIST_H
3//-----------------------------------------------------------------------------
43//-----------------------------------------------------------------------------
44#include "GloTypes.h"
45#include "GloOndemandList.h"
46#include "GloBasePersistent.h"
47//-----------------------------------------------------------------------------
48namespace glo
49{
50 //---------------------------------------------------------------------------
94 template < class T > class TOndemandList : public OndemandList
95 {
96 public:
97 //============== Konstruktoren
98 //-----------------------------------------------------------------------
109 //-----------------------------------------------------------------------
121 TOndemandList( Base & rBase );
122 //-----------------------------------------------------------------------
135 virtual ~TOndemandList();
136 //-----------------------------------------------------------------------
137
138 private:
139 //============== Konstruktoren
140 //-----------------------------------------------------------------------
151 //-----------------------------------------------------------------------
152
153 public:
154 //============== static methods
155 //-----------------------------------------------------------------------
167 static unsigned long getStaticGloClassID(){ return T::getStaticGloClassID();};
168 //-----------------------------------------------------------------------
169
170 public:
171 //============== Methoden
172 //-----------------------------------------------------------------------
188 virtual int getTypeAsString( std::string & rsTypeName ) override;
189 //-----------------------------------------------------------------------
191
222 virtual int insert( T * NewObj );
223 virtual int insert( std::shared_ptr<T> NewObj );
225 //-----------------------------------------------------------------------
227
258 virtual int insertBefore( T * NewObj, const T * Object );
259 virtual int insertBefore( std::shared_ptr<T> NewObj,
260 const std::shared_ptr<T> Object );
262 //-----------------------------------------------------------------------
264
293 virtual int append( T * NewObj );
294 virtual int append( std::shared_ptr<T> NewObj );
296 //-----------------------------------------------------------------------
298
331 virtual int remove( T * Object );
332 virtual int remove( std::shared_ptr<T> Object );
334 //-----------------------------------------------------------------------
364 virtual int get( T *& prRetVal, EnSeekMode eMode );
365 //-----------------------------------------------------------------------
367
390 virtual int get( std::shared_ptr<T> & rRetVal, EnSeekMode eMode );
391 virtual int get( TOndemand<T> & rRetVal, EnSeekMode eMode );
393 //-----------------------------------------------------------------------
429 virtual int get( glo::ObjID & rObjID, T *& prRetVal, EnSeekMode eMode );
430 //-----------------------------------------------------------------------
432
461 virtual int get( glo::ObjID & rObjID, std::shared_ptr<T> & rRetVal, EnSeekMode eMode );
462 virtual int get( glo::ObjID & rObjID, TOndemand<T> & rRetVal, EnSeekMode eMode );
464 //-----------------------------------------------------------------------
491 virtual int get( T *& prRetVal, const ObjID & rObjID );
492 //-----------------------------------------------------------------------
512 virtual int get( std::shared_ptr<T> & rRetVal, const ObjID & rObjID );
513 //-----------------------------------------------------------------------
514
515 private:
516 //============== Operatoren
517 //-----------------------------------------------------------------------
528 //-----------------------------------------------------------------------
529 };
530 //---------------------------------------------------------------------------
531 #define SUPER OndemandList
532 //---------------------------------------------------------------------------
533 template < class T >
535 : SUPER()
536 {
537 #ifdef _DEBUG
538 m_strDebugInfo = "TOndemandList";
539 #endif
540 }
541 //---------------------------------------------------------------------------
542 template < class T >
544 : SUPER( rBase )
545 {
546 #ifdef _DEBUG
547 m_strDebugInfo = "TOndemandList";
548 #endif
549 }
550 //---------------------------------------------------------------------------
551 template < class T >
555 //---------------------------------------------------------------------------
556 template < class T >
557 int TOndemandList< T >::getTypeAsString( std::string & rsTypeName )
558 {
559 std::size_t t_nCount( 0 );
560
561 rsTypeName = typeid(T).name();
562 rsTypeName.replace( t_nCount, 6, "");
563 return 0;
564 }
565 //---------------------------------------------------------------------------
566 template < class T >
567 int TOndemandList< T >::insert( T * pNewObj )
568 {
569 return SUPER::insertPers( pNewObj );
570 }
571 //---------------------------------------------------------------------------
572 template < class T >
573 int TOndemandList< T >::insert( std::shared_ptr<T> spNewObj )
574 {
575 return SUPER::insertPers( spNewObj.operator->() );
576 }
577 //---------------------------------------------------------------------------
578 template < class T >
579 int TOndemandList< T >::insertBefore( T * pNewObj, const T * pObject )
580 {
581 return SUPER::insertPersBefore( pNewObj, pObject );
582 }
583 //---------------------------------------------------------------------------
584 template < class T >
585 int TOndemandList< T >::insertBefore( std::shared_ptr<T> spNewObj,
586 const std::shared_ptr<T> spObject )
587 {
588 return SUPER::insertPersBefore( spNewObj.operator->(), spObject.operator->() );
589 }
590 //---------------------------------------------------------------------------
591 template < class T >
592 int TOndemandList< T >::append( T * pNewObj )
593 {
594 return SUPER::appendPers( pNewObj );
595 }
596 //---------------------------------------------------------------------------
597 template < class T >
598 int TOndemandList< T >::append( std::shared_ptr<T> spNewObj )
599 {
600 return SUPER::appendPers( spNewObj.operator->() );
601 }
602 //---------------------------------------------------------------------------
603 template < class T >
604 int TOndemandList< T >::remove( T * pObject )
605 {
606 return SUPER::removePers( pObject );
607 }
608 //---------------------------------------------------------------------------
609 template < class T >
610 int TOndemandList< T >::remove( std::shared_ptr<T> spObject )
611 {
612 return SUPER::removePers( spObject.operator->() );
613 }
614 //---------------------------------------------------------------------------
615 template < class T >
616 int TOndemandList< T >::get( T *& prRetVal, EnSeekMode eMode )
617 {
618 return SUPER::getPers( (BasePersistent*&) prRetVal, eMode );
619 }
620 //---------------------------------------------------------------------------
621 template < class T >
622 int TOndemandList< T >::get( std::shared_ptr<T> & rRetVal,
623 EnSeekMode eMode )
624 {
625 T * t_pPersObject = nullptr;
626 int t_iErr = this->get( t_pPersObject, eMode );
627
628 if ( t_pPersObject )
629 {
630 rRetVal.reset( t_pPersObject, Forgetter<T>() );
631 }
632 return t_iErr;
633 }
634 //---------------------------------------------------------------------------
635 template < class T >
637 EnSeekMode eMode )
638 {
639 T * t_pPersObject = nullptr;
640 int t_iErr = this->get( t_pPersObject, eMode );
641
642 if ( t_pPersObject )
643 {
644 rRetVal.set( t_pPersObject );
645 }
646 return t_iErr;
647 }
648 //---------------------------------------------------------------------------
649 template < class T >
650 int TOndemandList< T >::get( glo::ObjID & rObjID, T *& prRetVal, EnSeekMode eMode )
651 {
652 return SUPER::getPers( rObjID, (BasePersistent*&) prRetVal, eMode );
653 }
654 //---------------------------------------------------------------------------
655 template < class T >
657 std::shared_ptr<T> & rRetVal,
658 EnSeekMode eMode )
659 {
660 T * t_pPersObject = nullptr;
661 int t_iErr = this->get( rObjID, t_pPersObject, eMode );
662
663 if ( t_pPersObject )
664 {
665 rRetVal.reset( t_pPersObject, Forgetter<T>() );
666 }
667 return t_iErr;
668 }
669 //---------------------------------------------------------------------------
670 template < class T >
672 TOndemand<T> & rRetVal,
673 EnSeekMode eMode )
674 {
675 T * t_pPersObject = nullptr;
676 int t_iErr = this->get( rObjID, t_pPersObject, eMode );
677
678 if ( t_pPersObject )
679 {
680 rRetVal.set( t_pPersObject );
681 }
682 return t_iErr;
683 }
684 //---------------------------------------------------------------------------
685 template < class T >
686 int TOndemandList< T >::get( T *& prRetVal, const ObjID & rObjID )
687 {
688 return SUPER::getPersistent( (BasePersistent*&) prRetVal, rObjID );
689 }
690 //---------------------------------------------------------------------------
691 template < class T >
692 int TOndemandList< T >::get( std::shared_ptr<T> & rRetVal,
693 const ObjID & rObjID )
694 {
695 T * t_pPersObject = nullptr;
696 int t_iErr = this->get( t_pPersObject, rObjID );
697
698 if ( t_pPersObject )
699 {
700 rRetVal.reset( t_pPersObject, Forgetter<T>() );
701 }
702 return t_iErr;
703 }
704 //---------------------------------------------------------------------------
705 #undef SUPER
706 //---------------------------------------------------------------------------
707} // namespace glo
708#endif
Header for BasePersistent
Header for OndemandList
#define SUPER
Definition GloTAllSet.h:1302
For each library, here 'GlobalObjects' there is a type file.
Definition GloBase.h:263
Abstract base class for Persistent and the generic GenericPersistent.
Definition GloBasePersistent.h:124
std::string m_strDebugInfo
Definition GloCallBack.h:111
Especially for GenericPersistent or derived classes of Persistent the Forget method for std::shared_p...
Definition GloTypes.h:1253
An object ID consists of the class ID, a database ID and the actual unique object number (all unsigne...
Definition GloObjID.h:84
Definition GloTOndemand.h:209
int set(const T *rObj)
Adopts the object ID of the passed object as reference.
Definition GloTOndemand.h:535
virtual int get(T *&prRetVal, EnSeekMode eMode)
Definition GloTOndemandList.h:616
TOndemandList(const TOndemandList &)
virtual int insert(T *NewObj)
Inserts the passed persistent object into the list behind the current position.
Definition GloTOndemandList.h:567
virtual ~TOndemandList()
Definition GloTOndemandList.h:552
TOndemandList()
Definition GloTOndemandList.h:534
virtual int insertBefore(T *NewObj, const T *Object)
Inserts a persistent object before another object in the list.
Definition GloTOndemandList.h:579
virtual int remove(T *Object)
Removes the passed persistent object from the list.
Definition GloTOndemandList.h:604
virtual int append(T *NewObj)
Appends a persistent object to the end of the list.
Definition GloTOndemandList.h:592
virtual int getTypeAsString(std::string &rsTypeName) override
Definition GloTOndemandList.h:557
TOndemandList< T > & operator=(const TOndemandList &)
static unsigned long getStaticGloClassID()
Definition GloTOndemandList.h:167
Definition GloAbstractBaseLot.h:49
EnSeekMode
Definition GloTypes.h:192