Hi Marc, For the time being (i.e. until we finally get around to implement a better solution), there is a family of ClassDefT macros (see $ROOTSYS/include/Rtypes.h for the gory details): ClassDefT(ClassName,ClassId) : Used as the end of the class definition in the case of template class, ClassName is of a form similar to TemplateName<T> ClassDefT2(ClassName, TemplateParam) ClassDef2T2(ClassName, TemplateParam1, TemplateParam2 ) ClassDef3T2(ClassName, TemplateParam1, TemplateParam2, TemplateParam3 ) Used in the header file of the class template definition. with the parameter ClassImpT(ClassName, TemplateParam) ClassImp2T(ClassName, TemplateParam1, TemplateParam2 ) ClassImp3T(ClassName, TemplateParam1, TemplateParam2, TemplateParam3 ) Implement the required static data member and ImplFileName type of methods. Should be in a .cxx file. So In your case: //---- GuardedMap.hh // K denotes the key, O denotes the Object template <typename K, typename O> class TGuardedMap { // private typedefs typedef map<K, O> KO_Map; typedef map<K, O>::iterator KO_iter; //on UNIX it occurs a Deadlock with normal Mutex!!! TThreadMutex m_Mutex; // the Mutex to protect the map ... public: ClassDef(TGuardedMap<K,O>,1) }; ClassDef2T2(TGuardedMap,K,O) //---- ImpGuardedMap.cxx #include "GuardedMap.hh" #include "MyKeyAndObject.hh" ClassImp2T(TGuardedMap,K,O) TGuardedMap<MyKey,MyObject> dummy; Cheers, Philippe. -----Original Message----- From: hemberg@[62.52.27.101] [mailto:hemberg@[62.52.27.101]]On Behalf Of Marc Hemberger Sent: Thursday, September 27, 2001 2:37 PM To: Philippe Canal Cc: roottalk@pcroot.cern.ch Subject: Template question ... Hi Philippe, just another template question: I have a templated class, which wraps a map<Key, Object> in a thread safe way. This works fine in C++. How can I give this TGuardedMap now over to CINT with the ClassDefT etc. macros? They all allow only one template argument. How can that be done: // K denotes the key, O denotes the Object template <typename K, typename O> class TGuardedMap { // private typedefs typedef map<K, O> KO_Map; typedef map<K, O>::iterator KO_iter; //on UNIX it occurs a Deadlock with normal Mutex!!! TThreadMutex m_Mutex; // the Mutex to protect the map ... }; This works in compiled code, but I want to have this template also available with all what the ClassDef's give to it. I have not found anything about these templates with more than one argument. Could you guide me to the source of HOWTO ?;-) Greetings, Marc -- Dr. Marc Hemberger /\_/\ ( o.o ) > ^ < |\ _,,,---,, realTech privat: ZZZzz /,`.-'`' -. ;-;;,_ system consulting GmbH |,4- ) )-,_. ,\ ( `'-' Industriestr. 39c Marstallstr. 49d '---''(_/--' `-'\_) 69190 Walldorf 68723 Schwetzingen Marc.Hemberger@realtech.de MHemberger@csi.com ** Disclaimer: My views/comments/beliefs, as strange as they are, are my own.**
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:00 MET