Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TListOfFunctionTemplates.h
Go to the documentation of this file.
1 // @(#)root/cont
2 // Author: Philippe Canal Aug 2013
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2013, 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_TListOfFunctionTemplates
13 #define ROOT_TListOfFunctionTemplates
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TListOfFunctionTemplates //
18 // //
19 // A collection of TFunctionTemplate objects designed for fast access //
20 // given a DeclId_t and for keep track of TFunctionTempalte that were //
21 // described unloaded function. //
22 // //
23 //////////////////////////////////////////////////////////////////////////
24 
25 #include "THashList.h"
26 
27 #include "THashTable.h"
28 
29 #include "TDictionary.h"
30 
31 class TExMap;
32 class TFunctionTemplate;
33 
34 class TListOfFunctionTemplates : public THashList
35 {
36 private:
37  friend class TClass;
38 
39  typedef TDictionary::DeclId_t DeclId_t;
40  TClass *fClass; // Context of this list. Not owned.
41 
42  TExMap *fIds; // Map from DeclId_t to TFunction*
43  THashList *fUnloaded; // Holder of TFunction for unloaded functions.
44  THashTable fOverloads; // TLists of overloads.
45  ULong64_t fLastLoadMarker; // Represent interpreter state when we last did a full load.
46 
47  TListOfFunctionTemplates(const TListOfFunctionTemplates&); // not implemented
48  TListOfFunctionTemplates& operator=(const TListOfFunctionTemplates&); // not implemented
49  TList *GetListForObjectNonConst(const char* name);
50 
51  void MapObject(TObject *obj);
52  void UnmapObject(TObject *obj);
53 
54 public:
55 
56  TListOfFunctionTemplates(TClass *cl);
57  ~TListOfFunctionTemplates();
58 
59  virtual void Clear(Option_t *option);
60  virtual void Delete(Option_t *option="");
61 
62  using THashList::FindObject;
63  virtual TObject *FindObject(const char *name) const;
64  virtual TList *GetListForObject(const char* name) const;
65  virtual TList *GetListForObject(const TObject* obj) const;
66 
67  TFunctionTemplate *Get(DeclId_t id);
68 
69  void AddFirst(TObject *obj);
70  void AddFirst(TObject *obj, Option_t *opt);
71  void AddLast(TObject *obj);
72  void AddLast(TObject *obj, Option_t *opt);
73  void AddAt(TObject *obj, Int_t idx);
74  void AddAfter(const TObject *after, TObject *obj);
75  void AddAfter(TObjLink *after, TObject *obj);
76  void AddBefore(const TObject *before, TObject *obj);
77  void AddBefore(TObjLink *before, TObject *obj);
78 
79  void RecursiveRemove(TObject *obj);
80  TObject *Remove(TObject *obj);
81  TObject *Remove(TObjLink *lnk);
82 
83  void Load();
84  void Unload();
85  void Unload(TFunctionTemplate *func);
86 
87  ClassDef(TListOfFunctionTemplates,0); // List of TFunctions for a class
88 };
89 
90 #endif // ROOT_TListOfFunctionTemplates