Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TDictAttributeMap.cxx
Go to the documentation of this file.
1 // @(#)root/meta:$Id:$
2 // Author: Bianca-Cristina Cristescu 03/07/13
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 /** \class TDictAttributeMap
13 The ROOT object has a list of properties which are stored and
14 retrieved using TDictAttributeMap.
15 TDictAttributeMap maps the property keys of the object to their
16 values.
17 */
18 
19 #include "TDictAttributeMap.h"
20 #include "THashTable.h"
21 #include "TNamed.h"
22 #include "TParameter.h"
23 
24 
25 ClassImp(TDictAttributeMap);
26 
27 ////////////////////////////////////////////////////////////////////////////////
28 ///Default constructor.
29 
30 TDictAttributeMap::TDictAttributeMap()
31 {
32  fStringProperty.SetOwner(kTRUE);
33 }
34 
35 ////////////////////////////////////////////////////////////////////////////////
36 ///Default destructor.
37 
38 TDictAttributeMap::~TDictAttributeMap()
39 {
40 }
41 
42 ////////////////////////////////////////////////////////////////////////////////
43 ///Add a property with a String value to the TDictAttributeMap.
44 ///Parameters: key and char* value of the property.
45 
46 void TDictAttributeMap::AddProperty(const char* key, const char* value)
47 {
48  //Add the property pair name - Int value to the hash table.
49  fStringProperty.Add(new TNamed(key, value));
50 }
51 
52 ////////////////////////////////////////////////////////////////////////////////
53 
54 Bool_t TDictAttributeMap::HasKey(const char* key) const
55 {
56  //Check whether the class has a property using the key.
57 
58  if (fStringProperty.FindObject(key))
59  return true;
60  return false;
61 }
62 
63 ////////////////////////////////////////////////////////////////////////////////
64 ///Access the value of a String property using the key.
65 
66 const char* TDictAttributeMap::GetPropertyAsString(const char* key) const
67 {
68  //Copy object into found to avoid calling the function two times.
69  TObject* found = fStringProperty.FindObject(key);
70  if(found)
71  return found->GetTitle();
72  else
73  //Show an error message if the key is not found.
74  Error("GetPropertyAsString"
75  , "Could not find property with String value for this key: %s", key);
76  return 0;
77 }
78 
79 ////////////////////////////////////////////////////////////////////////////////
80 ///Remove a String property from the attribute map specified by the key.
81 ///Returns the TString property removed or NULL if the property does not exist.
82 
83 TString TDictAttributeMap::RemovePropertyString(const char* key)
84 {
85  TObject *property = fStringProperty.FindObject(key);
86  if (property) {
87  fStringProperty.Remove(property);
88  return property->GetTitle();
89  }
90  return TString(0);
91 }
92 
93 Bool_t TDictAttributeMap::RemoveProperty(const char* key)
94 {
95  //Remove a property from the attribute map specified by the key.
96  //Returns true if property exists and was removed, false if property
97  //does not exist.
98 
99  if (TObject *property = fStringProperty.FindObject(key)) {
100  fStringProperty.Remove(property);
101  return true;
102  }
103  return false;
104 }
105 
106 ////////////////////////////////////////////////////////////////////////////////
107 ///Deletes all the properties of the class.
108 
109 void TDictAttributeMap::Clear(Option_t* /*option = ""*/)
110 {
111  fStringProperty.Delete();
112 }