Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
DefaultHepRepAttValue.cc
Go to the documentation of this file.
1// Copyright FreeHEP, 2005.
2
3#include "cheprep/config.h"
4
5#include <cstdlib>
6#include <cstring>
7#include <cctype>
8#include <cstdio>
9#include <iostream>
10#include <algorithm>
11
13
15
16using namespace std;
17using namespace HEPREP;
18
19/**
20 * @author Mark Donszelmann
21 * @version $Id: DefaultHepRepAttValue.cc,v 1.10 2005-06-02 21:28:45 duns Exp $
22 */
23namespace cheprep {
24
25std::string DefaultHepRepAttValue::labelStrings[LABELSTRINGS_LEN];
26
27DefaultHepRepAttValue::DefaultHepRepAttValue(string aName, string aValue, int aShowLabel)
28 : name(aName), type(HepRepConstants::TYPE_STRING), stringValue(aValue), showLabelValue(aShowLabel) {
29
30 init();
31}
32
33DefaultHepRepAttValue::DefaultHepRepAttValue(string aName, int64 aValue, int aShowLabel)
34 : name(aName), type(HepRepConstants::TYPE_LONG), longValue(aValue), showLabelValue(aShowLabel) {
35
36 init();
37}
38
39DefaultHepRepAttValue::DefaultHepRepAttValue(string aName, int aValue, int aShowLabel)
40 : name(aName), type(HepRepConstants::TYPE_INT), longValue(aValue), showLabelValue(aShowLabel) {
41
42 init();
43}
44
45DefaultHepRepAttValue::DefaultHepRepAttValue(string aName, double aValue, int aShowLabel)
46 : name(aName), type(HepRepConstants::TYPE_DOUBLE), doubleValue(aValue), showLabelValue(aShowLabel) {
47
48 init();
49}
50
51DefaultHepRepAttValue::DefaultHepRepAttValue(string aName, bool aValue, int aShowLabel)
52 : name(aName), type(HepRepConstants::TYPE_BOOLEAN), booleanValue(aValue), showLabelValue(aShowLabel) {
53
54 init();
55}
56
57DefaultHepRepAttValue::DefaultHepRepAttValue(string aName, vector<double> aValue, int aShowLabel)
58 : name(aName), type(HepRepConstants::TYPE_COLOR), colorValue(aValue), showLabelValue(aShowLabel) {
59
60 init();
61}
62
64}
65
66void DefaultHepRepAttValue::init() {
67 labelStrings[0] = "NAME";
68 labelStrings[1] = "DESC";
69 labelStrings[2] = "VALUE";
70 labelStrings[3] = "EXTRA";
71}
72
74 switch(type) {
75 case HepRepConstants::TYPE_COLOR: new DefaultHepRepAttValue(name, colorValue, showLabelValue);
76 case HepRepConstants::TYPE_STRING: new DefaultHepRepAttValue(name, stringValue, showLabelValue);
77 case HepRepConstants::TYPE_LONG: new DefaultHepRepAttValue(name, longValue, showLabelValue);
78 case HepRepConstants::TYPE_INT: new DefaultHepRepAttValue(name, (int)longValue, showLabelValue);
79 case HepRepConstants::TYPE_DOUBLE: new DefaultHepRepAttValue(name, doubleValue, showLabelValue);
80 case HepRepConstants::TYPE_BOOLEAN: new DefaultHepRepAttValue(name, booleanValue, showLabelValue);
81 default: return new DefaultHepRepAttValue(name, "Unknown type stored in HepRepAttDef", showLabelValue);
82 }
83}
84
86 return name;
87}
88
90 string s = name;
91 transform(s.begin(), s.end(), s.begin(), (int(*)(int)) tolower);
92 return s;
93}
94
96 return type;
97}
98
100 switch(type) {
101 case HepRepConstants::TYPE_COLOR: return("Color");
102 case HepRepConstants::TYPE_STRING: return("String");
103 case HepRepConstants::TYPE_LONG: return("long");
104 case HepRepConstants::TYPE_INT: return("int");
105 case HepRepConstants::TYPE_DOUBLE: return("double");
106 case HepRepConstants::TYPE_BOOLEAN: return("boolean");
107 default: return "Unknown type stored in HepRepAttDef";
108 }
109}
110
112 return showLabelValue;
113}
114
116 if (type != HepRepConstants::TYPE_STRING) cerr << "Trying to access AttValue '" << getName() << "' as 'string'" << endl;
117 return stringValue;
118}
119
121 if (type != HepRepConstants::TYPE_STRING) cerr << "Trying to access AttValue '" << getName() << "' as 'string'" << endl;
122 string s = stringValue;
123 transform(s.begin(), s.end(), s.begin(), (int(*)(int)) tolower);
124 return s;
125}
126
128 if (type != HepRepConstants::TYPE_LONG) cerr << "Trying to access AttValue '" << getName() << "' as 'long'" << endl;
129 return longValue;
130}
131
133 if (type != HepRepConstants::TYPE_INT) cerr << "Trying to access AttValue '" << getName() << "' as 'int'" << endl;
134 return (int64)longValue;
135}
136
138 if (type != HepRepConstants::TYPE_DOUBLE) cerr << "Trying to access AttValue '" << getName() << "' as 'double'" << endl;
139 return doubleValue;
140}
141
143 if (type != HepRepConstants::TYPE_BOOLEAN) cerr << "Trying to access AttValue '" << getName() << "' as 'boolean'" << endl;
144 return booleanValue;
145}
146
148 if (type != HepRepConstants::TYPE_COLOR) cerr << "Trying to access AttValue '" << getName() << "' as 'color'" << endl;
149 return colorValue;
150}
151
152
154 switch(type) {
161 default: return "Unknown typecode";
162 }
163}
164
165string DefaultHepRepAttValue::getAsString(vector<double> c) {
166 char buffer[40];
167 sprintf(buffer, "%4.2f, %4.2f, %4.2f, %4.2f",
168 c[0],
169 c[1],
170 c[2],
171 (c.size() > 3) ? c[3] : 1.0);
172 return buffer;
173}
174
176 char buffer[40];
177 sprintf(buffer, "%d", i);
178 return buffer;
179}
180
182 char buffer[40];
183 sprintf(buffer, CHEPREP_INT64_FORMAT, i);
184 return buffer;
185}
186
187// NOTE: keep at %g rather than %lg for backward compatibility
189 char buffer[40];
190 sprintf(buffer, "%g", d);
191 return buffer;
192}
193
195 return b ? "true" : "false";
196}
197
198
199
200
202 return toShowLabel(showLabel());
203}
204
205
207 string label = "";
208 bool first = true;
210 label = "NONE";
211 } else {
212 for (int i=0; i<16; i++) {
213 if (((showLabel >> i) & 0x0001) == 0x0001) {
214 if (first) {
215 first = false;
216 } else {
217 label.append(", ");
218 }
219 if (i < LABELSTRINGS_LEN) {
220 label.append(labelStrings[i]);
221 } else {
222 char hex[20];
223 sprintf(hex, "%0x", 1 << i);
224 label.append(hex);
225 }
226 }
227 }
228 }
229 return label;
230}
231
232} // cheprep
HEPREP::HepRepAttValue * copy()
DefaultHepRepAttValue(std::string name, std::string value, int showLabel)
#define CHEPREP_INT64_FORMAT
Definition: config.h:33
long long int64
Definition: config.h:31
#define buffer
Definition: xmlparse.cc:611