Logo ROOT   6.14/05
Reference Guide
RooStringVar.cxx
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * @(#)root/roofitcore:$Id$
5  * Authors: *
6  * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7  * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8  * *
9  * Copyright (c) 2000-2005, Regents of the University of California *
10  * and Stanford University. All rights reserved. *
11  * *
12  * Redistribution and use in source and binary forms, *
13  * with or without modification, are permitted according to the terms *
14  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15  *****************************************************************************/
16 
17 /**
18 \file RooStringVar.cxx
19 \class RooStringVar
20 \ingroup Roofitcore
21 
22 RooStringVar implements a string values RooAbsArg
23 **/
24 
25 #include "RooFit.h"
26 #include "Riostream.h"
27 
28 #include <math.h>
29 #include "TObjString.h"
30 #include "TTree.h"
31 #include "RooStringVar.h"
32 #include "RooStreamParser.h"
33 #include "RooMsgService.h"
34 
35 
36 
37 using namespace std;
38 
40 
41 
42 
43 
44 ////////////////////////////////////////////////////////////////////////////////
45 /// Constructor with initial value and internal buffer size
46 
47 RooStringVar::RooStringVar(const char *name, const char *title, const char* value, Int_t size) :
48  RooAbsString(name, title, size)
49 {
50  if(!isValidString(value)) {
51  coutW(InputArguments) << "RooStringVar::RooStringVar(" << GetName()
52  << "): initial contents too long and ignored" << endl ;
53  } else {
54  strlcpy(_value,value,_len) ;
55  }
56 
57  setValueDirty() ;
58  setShapeDirty() ;
59 }
60 
61 
62 
63 ////////////////////////////////////////////////////////////////////////////////
64 /// Copy constructor
65 
66 RooStringVar::RooStringVar(const RooStringVar& other, const char* name) :
67  RooAbsString(other, name)
68 {
69 }
70 
71 
72 
73 ////////////////////////////////////////////////////////////////////////////////
74 /// Destructor
75 
77 {
78 }
79 
80 
81 
82 ////////////////////////////////////////////////////////////////////////////////
83 
84 RooStringVar::operator TString()
85 {
86  // Cast operator to TString
87  return TString(_value) ;
88 }
89 
90 
91 
92 ////////////////////////////////////////////////////////////////////////////////
93 /// Set value to given TString
94 
95 void RooStringVar::setVal(const char* value)
96 {
97  if (!isValidString(value)) {
98  coutW(InputArguments) << "RooStringVar::setVal(" << GetName() << "): new string too long and ignored" << endl ;
99  } else {
100  if (value) {
101  strlcpy(_value,value,_len) ;
102  } else {
103  _value[0] = 0 ;
104  }
105  }
106 }
107 
108 
109 
110 ////////////////////////////////////////////////////////////////////////////////
111 /// Set value to given TString
112 
113 RooAbsArg& RooStringVar::operator=(const char* newValue)
114 {
115  if (!isValidString(newValue)) {
116  coutW(InputArguments) << "RooStringVar::operator=(" << GetName() << "): new string too long and ignored" << endl ;
117  } else {
118  if (newValue) {
119  strlcpy(_value,newValue,_len) ;
120  } else {
121  _value[0] = 0 ;
122  }
123  }
124 
125  return *this ;
126 }
127 
128 
129 
130 ////////////////////////////////////////////////////////////////////////////////
131 /// Read object contents from given stream
132 
133 Bool_t RooStringVar::readFromStream(istream& is, Bool_t compact, Bool_t verbose)
134 {
135  TString token,errorPrefix("RooStringVar::readFromStream(") ;
136  errorPrefix.Append(GetName()) ;
137  errorPrefix.Append(")") ;
138  RooStreamParser parser(is,errorPrefix) ;
139 
140  TString newValue ;
141  Bool_t ret(kFALSE) ;
142 
143  if (compact) {
144  parser.readString(newValue,kTRUE) ;
145  } else {
146  newValue = parser.readLine() ;
147  }
148 
149  if (!isValidString(newValue)) {
150  if (verbose)
151  coutW(InputArguments) << "RooStringVar::readFromStream(" << GetName()
152  << "): new string too long and ignored" << endl ;
153  } else {
154  strlcpy(_value,newValue,_len) ;
155  }
156 
157  return ret ;
158 }
159 
160 
161 ////////////////////////////////////////////////////////////////////////////////
162 /// Write object contents to given stream
163 
164 void RooStringVar::writeToStream(ostream& os, Bool_t /*compact*/) const
165 {
166  os << getVal() ;
167 }
168 
169 
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
virtual const char * getVal() const
Return value of object. Calculated if dirty, otherwise cached value is returned.
Definition: RooStringVar.h:34
virtual void setVal(const char *newVal)
Set value to given TString.
virtual Bool_t isValidString(const char *, Bool_t printError=kFALSE) const
Check if given string value is valid.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
STL namespace.
#define coutW(a)
Definition: RooMsgService.h:33
void setValueDirty() const
Definition: RooAbsArg.h:441
virtual RooAbsArg & operator=(const char *newValue)
Set value to given TString.
char * _value
Definition: RooAbsString.h:68
TString readLine()
Read an entire line from the stream and return as TString This method recognizes the use of &#39;\&#39; in th...
virtual void writeToStream(std::ostream &os, Bool_t compact) const
Write object contents to given stream.
Bool_t readString(TString &value, Bool_t zapOnError=kFALSE)
Read a string token.
virtual ~RooStringVar()
Destructor.
const Bool_t kFALSE
Definition: RtypesCore.h:88
#define ClassImp(name)
Definition: Rtypes.h:359
RooAbsString is the common abstract base class for objects that represent a string value...
Definition: RooAbsString.h:25
void setShapeDirty() const
Definition: RooAbsArg.h:442
virtual Bool_t readFromStream(std::istream &is, Bool_t compact, Bool_t verbose=kFALSE)
Read object contents from given stream.
RooAbsArg is the common abstract base class for objects that represent a value (of arbitrary type) an...
Definition: RooAbsArg.h:66
RooStringVar implements a string values RooAbsArg.
Definition: RooStringVar.h:23
const Bool_t kTRUE
Definition: RtypesCore.h:87
char name[80]
Definition: TGX11.cxx:109