GSI Object Oriented Online Offline (Go4)  GO4-6.3.0
TGo4ObjectProxy.h
Go to the documentation of this file.
1 // $Id$
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #ifndef TGO4OBJECTPROXY_H
15 #define TGO4OBJECTPROXY_H
16 
17 #include "TGo4Proxy.h"
18 
19 class TGo4ObjectAccess : public TGo4Access {
20  public:
21  TGo4ObjectAccess(TObject *obj);
22  Bool_t CanGetObject() const override;
23  Bool_t GetObject(TObject *&obj, Bool_t &owner) const override;
24  TClass *GetObjectClass() const override;
25  const char *GetObjectName() const override;
26  const char *GetObjectClassName() const override;
27 
28  private:
29  TObject *fObject{nullptr};
30 };
31 
32 // **************************************************************
33 
34 class TGo4ObjectProxy : public TGo4Proxy {
35  public:
37  TGo4ObjectProxy(TObject *obj, Bool_t owner = kFALSE);
38  virtual ~TGo4ObjectProxy();
39 
40  void Initialize(TGo4Slot *slot) override;
41  void Finalize(TGo4Slot *slot) override;
42  Bool_t RemoveRegisteredObject(TObject *obj) override;
43 
44  std::unique_ptr<TGo4Access> ProvideAccess(const char *name) override;
45  TGo4LevelIter *MakeIter() override { return nullptr; }
46 
47  Int_t GetObjectKind() const override;
48  const char *GetContainedClassName() const override;
49  const char *GetContainedObjectInfo() override;
50  Int_t GetObjectSizeInfo() const override;
51 
52  void WriteData(TGo4Slot *slot, TDirectory *dir, Bool_t onlyobjs) override;
53  void ReadData(TGo4Slot *slot, TDirectory *dir) override;
54 
55  Bool_t IsAcceptObject(TClass *cl) const override;
56  Bool_t AssignObject(TGo4Slot *slot, TObject *obj, Bool_t owner) override;
57  TObject *GetAssignedObject() override;
58 
59  static Long_t DefineObjectSize(TObject *obj);
60 
61  protected:
62 
63  TObject *fObject{nullptr};
64  Bool_t fOwner{kFALSE};
65 
66  ClassDefOverride(TGo4ObjectProxy, 1);
67 };
68 
69 #endif
TClass * GetObjectClass() const override
const char * GetObjectClassName() const override
Bool_t CanGetObject() const override
const char * GetObjectName() const override
Bool_t GetObject(TObject *&obj, Bool_t &owner) const override
TGo4LevelIter * MakeIter() override
TGo4ObjectAccess(TObject *obj)