GlobalObjects
Lade ...
Suche ...
Keine Treffer
GloTOndemandSet.h
gehe zur Dokumentation dieser Datei
1#ifndef INC_GLOTONDEMANDSET_H
2#define INC_GLOTONDEMANDSET_H
3//-----------------------------------------------------------------------------
36//-----------------------------------------------------------------------------
37#include "GloTypes.h"
38#include "GloOndemandSet.h"
39#include "GloBasePersistent.h"
40//-----------------------------------------------------------------------------
41namespace glo
42{
43 //---------------------------------------------------------------------------
77 template < class T > class TOndemandSet : public OndemandSet
78 {
79 public:
80 //============== Konstruktoren
81 //-----------------------------------------------------------------------
92 //-----------------------------------------------------------------------
104 TOndemandSet( Base & rBase );
105 //-----------------------------------------------------------------------
118 virtual ~TOndemandSet();
119 //-----------------------------------------------------------------------
120
121 private:
122 //============== Konstruktoren
123 //-----------------------------------------------------------------------
134 //-----------------------------------------------------------------------
135
136 public:
137 //============== Methoden
138 //-----------------------------------------------------------------------
154 virtual int getTypeAsString( std::string & rsTypeName ) override;
155 //-----------------------------------------------------------------------
157
188 virtual int insert( T * NewObj );
189 virtual int insert( std::shared_ptr<T> NewObj );
191 //-----------------------------------------------------------------------
193
226 virtual int remove( T * Object );
227 virtual int remove( std::shared_ptr<T> Object );
229 //-----------------------------------------------------------------------
251 virtual int get( T *& prRetVal, EnSeekMode eMode );
252 //-----------------------------------------------------------------------
254
271 virtual int get( std::shared_ptr<T> & rRetVal, EnSeekMode eMode );
272 virtual int get( TOndemand<T> & rRetVal, EnSeekMode eMode );
274 //-----------------------------------------------------------------------
295 virtual int get( T *& prRetVal, const ObjID & rObjID );
296 //-----------------------------------------------------------------------
317 virtual int get( std::shared_ptr<T> & rRetVal, const ObjID & rObjID );
318 //-----------------------------------------------------------------------
319
320 private:
321 //============== Operatoren
322 //-----------------------------------------------------------------------
333 //-----------------------------------------------------------------------
334 };
335 //---------------------------------------------------------------------------
336 #define SUPER OndemandSet
337 //---------------------------------------------------------------------------
338 template < class T >
340 : SUPER()
341 {
342 #ifdef _DEBUG
343 m_strDebugInfo = "TOndemandSet";
344 #endif
345 }
346 //---------------------------------------------------------------------------
347 template < class T >
349 : SUPER( rBase )
350 {
351 #ifdef _DEBUG
352 m_strDebugInfo = "TOndemandSet";
353 #endif
354 }
355 //---------------------------------------------------------------------------
356 template < class T >
360 //---------------------------------------------------------------------------
361 template < class T >
362 int TOndemandSet< T >::getTypeAsString( std::string & rsTypeName )
363 {
364 std::size_t t_nCount( 0 );
365
366 rsTypeName = typeid(T).name();
367 rsTypeName.replace( t_nCount, 6, "");
368 return 0;
369 }
370 //---------------------------------------------------------------------------
371 template < class T >
372 int TOndemandSet< T >::insert( T * pNewObj )
373 {
374 return SUPER::insertPers( pNewObj );
375 }
376 //---------------------------------------------------------------------------
377 template < class T >
378 int TOndemandSet< T >::insert( std::shared_ptr<T> spNewObj )
379 {
380 return SUPER::insertPers( spNewObj.operator->() );
381 }
382 //---------------------------------------------------------------------------
383 template < class T >
384 int TOndemandSet< T >::remove( T * pObject )
385 {
386 return SUPER::removePers( pObject );
387 }
388 //---------------------------------------------------------------------------
389 template < class T >
390 int TOndemandSet< T >::remove( std::shared_ptr<T> spObject )
391 {
392 return SUPER::removePers( spObject.operator->() );
393 }
394 //---------------------------------------------------------------------------
395 template < class T >
396 int TOndemandSet< T >::get( T *& prRetVal, EnSeekMode eMode )
397 {
398 return SUPER::getPers( (BasePersistent*&) prRetVal, eMode );
399 }
400 //---------------------------------------------------------------------------
401 template < class T >
402 int TOndemandSet< T >::get( std::shared_ptr<T> & rRetVal,
403 EnSeekMode eMode )
404 {
405 T * t_pPersObject = 0;
406 int t_iErr = this->get( t_pPersObject, eMode );
407
408 if ( t_pPersObject )
409 {
410 rRetVal.reset( t_pPersObject, Forgeter<T>() );
411 }
412 return t_iErr;
413 }
414 //---------------------------------------------------------------------------
415 template < class T >
417 EnSeekMode eMode )
418 {
419 T * t_pPersObject = 0;
420 int t_iErr = this->get( t_pPersObject, eMode );
421
422 if ( t_pPersObject )
423 {
424 rRetVal.set( t_pPersObject );
425 }
426 return t_iErr;
427 }
428 //---------------------------------------------------------------------------
429 template < class T >
430 int TOndemandSet< T >::get( T *& prRetVal, const ObjID & rObjID )
431 {
432 return SUPER::getPersistent( (BasePersistent*&) prRetVal, rObjID );
433 }
434 //---------------------------------------------------------------------------
435 template < class T >
436 int TOndemandSet< T >::get( std::shared_ptr<T> & rRetVal,
437 const ObjID & rObjID )
438 {
439 T * t_pPersObject = 0;
440 int t_iErr = this->get( t_pPersObject, rObjID );
441
442 if ( t_pPersObject )
443 {
444 rRetVal.reset( t_pPersObject, Forgeter<T>() );
445 }
446 return t_iErr;
447 }
448 //---------------------------------------------------------------------------
449 #undef SUPER
450 //---------------------------------------------------------------------------
451} // namespace glo
452#endif
Header für BasePersistent
Header für OndemandSet
#define SUPER
Definition GloTAllSet.h:1151
Für jede Bibliothek, hier 'GlobalObjects' gibt es eine Typen-Datei.
Diese Klasse ist die Schnittstelle zu den persistenten Objekten. Hier können "Objekte" angemeldet,...
Definition GloBase.h:250
Abstrakte Basisklasse für Persistent und die generische GenericPersistent.
Definition GloBasePersistent.h:102
std::string m_strDebugInfo
Definition GloCallBack.h:115
Speziel für GenericPersistent oder abgeleitete Klassen von Persistent die Forget-Methode für std::sha...
Definition GloTypes.h:1249
Ein Objekt-ID besteht aus der Klassen-ID, einer Datenbank-ID und der eigentlichen eindeutigen ObjektZ...
Definition GloObjID.h:77
Ist die Basisklasse von Template-Ondemand-Set. Objekte können nur einmalig eingefügt werden.
Definition GloOndemandSet.h:64
Referenz (als Attribut) eines persistenten Objekte auf ein anderes persistentes Objekt in der Datenba...
Definition GloTOndemand.h:90
int set(const T *pObj)
Definition GloTOndemand.h:383
Ein typsicherer Set von Referenzen auf persistente Objekte in der Datenbank (gedacht als Attribut für...
Definition GloTOndemandSet.h:78
virtual ~TOndemandSet()
Definition GloTOndemandSet.h:357
virtual int getTypeAsString(std::string &rsTypeName) override
Definition GloTOndemandSet.h:362
virtual int remove(T *Object)
Entfernt das übergebene persistentes Objekt aus dem Set.
Definition GloTOndemandSet.h:384
virtual int insert(T *NewObj)
Fügt das übergebene persistentes Objekt im Set hinter der aktuellen Position ein.
Definition GloTOndemandSet.h:372
TOndemandSet< T > & operator=(const TOndemandSet &)
TOndemandSet(const TOndemandSet &)
TOndemandSet()
Definition GloTOndemandSet.h:339
virtual int get(T *&prRetVal, EnSeekMode eMode)
Definition GloTOndemandSet.h:396
Definition GloAbstractBaseLot.h:42
EnSeekMode
Definition GloTypes.h:166