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   	#ifndef ROOT_TQObject
29   	#include "TQObject.h"
30   	#endif
31   	#ifndef ROOT_TClass
32   	#include "TClass.h"
33   	#endif
34   	
35   	// This class makes it possible to have a single connection from
36   	// all objects of the same class
37   	class TQClass : public TQObject, public TClass {
38   	
39   	private:
40   	   TQClass(const TClass&) : TQObject(), TClass() {};
41   	   TQClass& operator=(const TQClass&) { return *this; }
42   	      
43   	friend class TQObject;
44   	
45   	public:
46   	   TQClass(const char *name, Version_t cversion,
47   	           const type_info &info, TVirtualIsAProxy *isa,
48   	           ShowMembersFunc_t showmembers,
49   	           const char *dfil = 0, const char *ifil = 0,
50   	           Int_t dl = 0, Int_t il = 0) :
51   	           TQObject(),
52   	           TClass(name, cversion, info,isa,showmembers, dfil, ifil, dl, il) { }
53   	
54   	   virtual ~TQClass() { Disconnect(); }
55   	
56   	   ClassDef(TQClass,0)  // Class with connections
57   	};
58   	
59   	
60   	//---- Class Initialization Behavior --------------------------------------
61   	//
62   	// This Class and Function are automatically used for classes inheriting from
63   	// TQObject. They make it possible to have a single connection from all
64   	// objects of the same class.
65   	namespace ROOT {
66   	   class TDefaultInitBehavior;
67   	   class TQObjectInitBehavior : public TDefaultInitBehavior {
68   	   public:
69   	      virtual TClass *CreateClass(const char *cname, Version_t id,
70   	                                  const type_info &info, TVirtualIsAProxy *isa,
71   	                                  ShowMembersFunc_t show,
72   	                                  const char *dfil, const char *ifil,
73   	                                  Int_t dl, Int_t il) const
74   	      {
75   	         return new TQClass(cname, id, info, isa, show, dfil, ifil,dl, il);
76   	      }
77   	   };
78   	
79   	   inline const TQObjectInitBehavior *DefineBehavior(TQObject*, TQObject*)
80   	   {
81   	      TQObjectInitBehavior *behave = new TQObjectInitBehavior;
82   	      return behave;
83   	   }
84   	}
85   	
86   	#endif
87   	
88