CMS 3D CMS Logo

findDataMember.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Utilities
4 // Class : findDataMember
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author: Chris Jones
10 // Created: Wed Aug 13 10:07:46 EDT 2008
11 // $Id: findDataMember.cc,v 1.3 2012/08/03 18:08:11 wmtan Exp $
12 //
13 
14 // system include files
15 #include "TInterpreter.h"
16 #include "TVirtualMutex.h"
17 
19 
20 // user include files
23 
24 //
25 // constants, enums and typedefs
26 //
27 
28 namespace reco {
29 
30 edm::
33  const std::string& iName,
34  int& oError)
35 {
38  edm::TypeWithDict type = iType;
39  if (!bool(type)) {
40  return ret;
41  }
42  if (type.isPointer()) {
43  type = type.toType();
44  }
45  ret = type.dataMemberByName(iName);
46  if (!bool(ret)) {
47  // check base classes
48  edm::TypeBases bases(type);
49  for (auto const& B : bases) {
50  ret = findDataMember(edm::BaseWithDict(B).typeOf(), iName, oError);
51  //only stop if we found it or some other error happened
52  if (bool(ret) || (oError != parser::kNameDoesNotExist)) {
53  break;
54  }
55  }
56  }
57  if (bool(ret) && !ret.isPublic()) {
58  ret = edm::MemberWithDict();
59  oError = parser::kIsNotPublic;
60  }
61  else if (bool(ret)) {
62  oError = parser::kNoError;
63  }
64  return ret;
65 }
66 
67 } // namespace reco
68 
type
Definition: HCALResponse.h:21
edm::MemberWithDict findDataMember(const edm::TypeWithDict &iType, const std::string &iName, int &oError)
TypeWithDict toType() const
MemberWithDict dataMemberByName(std::string const &) const
bool isPublic() const
static const std::string B
fixed size matrix
bool isPointer() const