Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TQClass.h
Go to the documentation of this file.
1 // @(#)root/base:$Id$
2 // Author: Valeriy Onuchin & Fons Rademakers 15/10/2000
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TQClass
13 #define ROOT_TQClass
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // This is part of the ROOT implementation of the Qt object //
18 // communication mechanism (see also //
19 // http://www.troll.no/qt/metaobjects.html) //
20 // //
21 // See TQObject for details. //
22 // //
23 // This implementation is provided by //
24 // Valeriy Onuchin (onuchin@sirius.ihep.su). //
25 // //
26 //////////////////////////////////////////////////////////////////////////
27 
28 #include "TQObject.h"
29 #include "TClass.h"
30 
31 // This class makes it possible to have a single connection from
32 // all objects of the same class
33 class TQClass : public TQObject, public TClass {
34 
35 private:
36  TQClass(const TClass&) : TQObject(), TClass() {};
37  TQClass& operator=(const TQClass&) { return *this; }
38 
39 friend class TQObject;
40 
41 public:
42  TQClass(const char *name, Version_t cversion,
43  const std::type_info &info, TVirtualIsAProxy *isa,
44  const char *dfil = 0, const char *ifil = 0,
45  Int_t dl = 0, Int_t il = 0) :
46  TQObject(),
47  TClass(name, cversion, info,isa,dfil, ifil, dl, il) { }
48 
49  virtual ~TQClass() { Disconnect(); }
50 
51  ClassDef(TQClass,0) // Class with connections
52 };
53 
54 
55 //---- Class Initialization Behavior --------------------------------------
56 //
57 // This Class and Function are automatically used for classes inheriting from
58 // TQObject. They make it possible to have a single connection from all
59 // objects of the same class.
60 namespace ROOT {
61 namespace Internal {
62  class TDefaultInitBehavior;
63  class TQObjectInitBehavior : public TDefaultInitBehavior {
64  public:
65  virtual TClass *CreateClass(const char *cname, Version_t id,
66  const std::type_info &info, TVirtualIsAProxy *isa,
67  const char *dfil, const char *ifil,
68  Int_t dl, Int_t il) const
69  {
70  return new TQClass(cname, id, info, isa, dfil, ifil,dl, il);
71  }
72  };
73 
74  inline const TQObjectInitBehavior *DefineBehavior(TQObject*, TQObject*)
75  {
76  TQObjectInitBehavior *behave = new TQObjectInitBehavior;
77  return behave;
78  }
79 }
80 }
81 
82 
83 #endif
84