BankAndCustomer
Lade ...
Suche ...
Keine Treffer
GloTOndemand.h
gehe zur Dokumentation dieser Datei
1#ifndef INC_GLOTONDEMAND_H
2#define INC_GLOTONDEMAND_H
3//-----------------------------------------------------------------------------
36//-----------------------------------------------------------------------------
37#include "GloTypes.h"
38#include "GloReference.h"
39#include "GloBase.h"
40#include "GloObjID.h"
41#include "GloBasePersistent.h"
42//-----------------------------------------------------------------------------
43namespace glo
44{
45 //---------------------------------------------------------------------------
88 template < class T > class TOndemand : public Reference
89 {
90 public:
91 //============== Konstruktoren
92 //-----------------------------------------------------------------------
102 TOndemand();
103 //-----------------------------------------------------------------------
117 TOndemand( const ObjID & rObjID );
118 //-----------------------------------------------------------------------
132 TOndemand( Base & rBase );
133 //-----------------------------------------------------------------------
149 TOndemand( const ObjID & rObjID, Base & rBase );
150 //-----------------------------------------------------------------------
162 TOndemand( const TOndemand & rT );
163 //-----------------------------------------------------------------------
173 virtual ~TOndemand();
174 //-----------------------------------------------------------------------
175
176 //============== Methoden
177 //-----------------------------------------------------------------------
195 int set( const T * pObj );
196 //-----------------------------------------------------------------------
214 int set( const T & rObj );
215 //-----------------------------------------------------------------------
233 int set( const std::shared_ptr<T> & spObj );
234 //-----------------------------------------------------------------------
254 int get( T *& prObj ) const;
255 //-----------------------------------------------------------------------
271 int get( std::shared_ptr<T> & rRetVal ) const;
272 //-----------------------------------------------------------------------
288 virtual void setReference( const ObjID & rObjID );
289 //-----------------------------------------------------------------------
290
291 public:
292 //============== Operatoren
293 //-----------------------------------------------------------------------
295
306 TOndemand< T > & operator= ( const TOndemand & rT );
307 TOndemand< T > & operator= ( const Reference & rT );
309 //-----------------------------------------------------------------------
311
322 bool operator== ( const TOndemand & rT ) const;
323 bool operator!= ( const TOndemand & rT ) const;
325 //-----------------------------------------------------------------------
326 };
327 //---------------------------------------------------------------------------
328 #define SUPER Reference
329 //---------------------------------------------------------------------------
330 template < class T >
332 : SUPER()
333 {
334 #ifdef _DEBUG
335 m_strDebugInfo = "TOndemand";
336 #endif
337 }
338 //---------------------------------------------------------------------------
339 template < class T >
341 : SUPER( rObjID )
342 {
343 #ifdef _DEBUG
344 m_strDebugInfo = "TOndemand";
345 #endif
346 }
347 //---------------------------------------------------------------------------
348 template < class T >
350 : SUPER( rBase )
351 {
352 #ifdef _DEBUG
353 m_strDebugInfo = "TOndemand";
354 #endif
355 }
356 //---------------------------------------------------------------------------
357 template < class T >
359 Base & rBase )
360 : SUPER( rObjID, rBase )
361 {
362 #ifdef _DEBUG
363 m_strDebugInfo = "TOndemand";
364 #endif
365 }
366 //---------------------------------------------------------------------------
367 template < class T >
369 : SUPER( rT )
370 {
371 #ifdef _DEBUG
372 m_strDebugInfo = "TOndemand";
373 #endif
374 }
375 //---------------------------------------------------------------------------
376 template < class T >
380 //---------------------------------------------------------------------------
381 template < class T >
382 int TOndemand< T >::set( const T * pObj )
383 {
384 return SUPER::setReference( pObj );
385 }
386 //---------------------------------------------------------------------------
387 template < class T >
388 int TOndemand< T >::set( const T & rObj )
389 {
390 return SUPER::setReference( rObj );
391 }
392 //---------------------------------------------------------------------------
393 template < class T >
394 int TOndemand< T >::set( const std::shared_ptr<T> & spObj )
395 {
396 return SUPER::setReference( spObj.get() );
397 }
398 //---------------------------------------------------------------------------
399 template < class T >
400 int TOndemand< T >::get( T *& prObj ) const
401 {
402 int t_iErr = 0;
403 BasePersistent * t_pGetObj = 0;
404
405 t_iErr = SUPER::getReference( t_pGetObj );
406 if ( ! t_iErr )
407 {
408 prObj = dynamic_cast<T*>( t_pGetObj );
409 if ( ! prObj )
410 {
411 t_pGetObj->forget();
412 t_iErr = ERR_WRONG_TYPE;
413 }
414 }
415 return t_iErr;
416 }
417 //---------------------------------------------------------------------------
418 template < class T >
419 int TOndemand< T >::get( std::shared_ptr<T> & rRetVal ) const
420 {
421 T * t_pPersObject = 0;
422 int t_iErr = this->get( t_pPersObject );
423
424 if ( t_pPersObject )
425 {
426 //rRetVal = std::shared_ptr<T>( t_pPersObject, Forgeter<T>() );
427 rRetVal.reset( t_pPersObject, Forgeter<T>() );
428 }
429 return t_iErr;
430 }
431 //---------------------------------------------------------------------------
432 template < class T >
433 void TOndemand< T >::setReference( const ObjID & rObjID )
434 {
435 SUPER::setReference( rObjID );
436 }
437 //---------------------------------------------------------------------------
438 template < class T >
440 {
441 if ( this != & rT )
442 {
443 SUPER::operator=( rT );
444 }
445 return *this;
446 }
447 //---------------------------------------------------------------------------
448 template < class T >
450 {
451 if ( this != & rT )
452 {
453 SUPER::operator=( rT );
454 }
455 return *this;
456 }
457 //---------------------------------------------------------------------------
458 template < class T >
459 bool TOndemand< T >::operator== ( const TOndemand & rT ) const
460 {
461 return SUPER::operator==( rT );
462 }
463 //---------------------------------------------------------------------------
464 template < class T >
465 bool TOndemand< T >::operator!= ( const TOndemand & rT ) const
466 {
467 if ( *this == rT )
468 {
469 return false;
470 }
471 return true;
472 }
473 //---------------------------------------------------------------------------
474 #undef SUPER
475 //---------------------------------------------------------------------------
476} // namespace glo
477#endif
Header für BasePersistent
Header für ObjID
Header für Reference
#define SUPER
Definition GloTOndemand.h:328
Abstrakte Basisklasse für Persistent und die generische GenericPersistent.
Definition GloBasePersistent.h:116
virtual unsigned int forget()
std::string m_strDebugInfo
Definition GloCallBack.h:115
Ein Objekt-ID besteht aus der Klassen-ID, einer Datenbank-ID und der eigentlichen eindeutigen ObjektZ...
Definition GloObjID.h:77
Die Basisklasse eines Referenz-Attributs von persistenten Objekten auf andere persistente Objekte in ...
Definition GloReference.h:65
friend class Base
Definition GloReference.h:75
Referenz (als Attribut) eines persistenten Objekte auf ein anderes persistentes Objekt in der Datenba...
Definition GloTOndemand.h:89
bool operator==(const TOndemand &rT) const
Vergleichsoperator.
Definition GloTOndemand.h:459
int set(const T *pObj)
Definition GloTOndemand.h:382
virtual ~TOndemand()
Definition GloTOndemand.h:377
virtual void setReference(const ObjID &rObjID)
Definition GloTOndemand.h:433
TOndemand()
Definition GloTOndemand.h:331
bool operator!=(const TOndemand &rT) const
Vergleichsoperator.
Definition GloTOndemand.h:465
int get(T *&prObj) const
Definition GloTOndemand.h:400
TOndemand< T > & operator=(const TOndemand &rT)
Zuweisungsoperator.
Definition GloTOndemand.h:439
Definition GloBasePersistent.h:52