CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
DDFilteredView Class Reference

#include <DDFilteredView.h>

Public Types

typedef DDExpandedView::nav_type nav_type
 

Public Member Functions

void addFilter (const DDFilter &, DDLogOp op=DDLogOp::AND)
 
void clearScope ()
 clears the scope; the full tree is available, depth=0 More...
 
int copyno () const
 Copy number associated with the current node. More...
 
nav_type copyNumbers () const
 return the stack of copy numbers More...
 
 DDFilteredView (const DDCompactView &)
 
bool firstChild ()
 set the current node to the first child ... More...
 
const DDGeoHistorygeoHistory () const
 The list of ancestors up to the root-node of the current node. More...
 
bool goTo (const nav_type &)
 
const std::vector< DDGeoHistory > & history () const
 
const DDLogicalPartlogicalPart () const
 The logical-part of the current node in the filtered-view. More...
 
DDsvalues_type mergedSpecifics () const
 
void mergedSpecificsV (DDsvalues_type &merged) const
 
nav_type navPos () const
 return the stack of sibling numbers More...
 
bool next ()
 set current node to the next node in the filtered tree More...
 
bool nextSibling ()
 set the current node to the next sibling ... More...
 
bool parent ()
 set the current node to the parent node ... More...
 
void print ()
 
void reset ()
 clears the scope and sets the filtered view to its root-node More...
 
const DDRotationMatrixrotation () const
 The absolute rotation of the current node. More...
 
const DDGeoHistoryscope () const
 The scope of the expanded-view. More...
 
bool setScope (const DDGeoHistory &hist)
 sets the scope of the expanded view More...
 
std::vector< const
DDsvalues_type * > 
specifics () const
 
void specificsV (std::vector< const DDsvalues_type * > &result) const
 User specific data attached to the current node. More...
 
const DDTranslationtranslation () const
 The absolute translation of the current node. More...
 
 ~DDFilteredView ()
 

Private Member Functions

bool filter ()
 

Private Attributes

std::vector< DDFilter const * > criteria_
 
DDExpandedView epv_
 
std::vector< DDLogOplogOps_
 
std::vector< DDGeoHistoryparents_
 

Detailed Description

Definition at line 11 of file DDFilteredView.h.

Member Typedef Documentation

Definition at line 14 of file DDFilteredView.h.

Constructor & Destructor Documentation

DDFilteredView::DDFilteredView ( const DDCompactView cpv)

Definition at line 5 of file DDFilteredView.cc.

References epv_, DDExpandedView::geoHistory(), and parents_.

6  : epv_(cpv)
7 {
8  parents_.push_back(epv_.geoHistory());
9 }
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
DDFilteredView::~DDFilteredView ( )

Definition at line 11 of file DDFilteredView.cc.

12 { }

Member Function Documentation

void DDFilteredView::addFilter ( const DDFilter f,
DDLogOp  op = DDLogOp::AND 
)
void DDFilteredView::clearScope ( )

clears the scope; the full tree is available, depth=0

Definition at line 83 of file DDFilteredView.cc.

References DDExpandedView::clearScope(), epv_, DDExpandedView::geoHistory(), and parents_.

84 {
85  epv_.clearScope();
86  parents_.clear();
87  parents_.push_back(epv_.geoHistory());
88 }
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
void clearScope()
clears the scope; the full tree is available, depth=0
int DDFilteredView::copyno ( ) const

Copy number associated with the current node.

Definition at line 63 of file DDFilteredView.cc.

References DDExpandedView::copyno(), and epv_.

Referenced by DTGeometryParserFromDDD::buildLayer(), DTGeometryBuilderFromDDD::buildLayer(), and DTGeometryParsFromDD::insertLayer().

64 {
65  return epv_.copyno();
66 }
DDExpandedView epv_
int copyno() const
Copy number associated with the current node.
DDFilteredView::nav_type DDFilteredView::copyNumbers ( ) const

return the stack of copy numbers

Definition at line 248 of file DDFilteredView.cc.

References DDExpandedView::copyNumbers(), and epv_.

Referenced by HcalGeomParameters::loadGeometry(), HGCalDDDConstants::loadGeometry(), PrintGeomInfoAction::update(), and PrintGeomMatInfo::update().

249 {
250  return epv_.copyNumbers();
251 }
nav_type copyNumbers() const
return the stack of copy numbers
DDExpandedView epv_
bool DDFilteredView::filter ( )
private

Definition at line 220 of file DDFilteredView.cc.

References AND, begin, criteria_, end, epv_, logOps_, OR, and query::result.

Referenced by Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::filter(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::find(), next(), nextSibling(), Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::setDataAccessor(), and Vispa.Plugins.Browser.BrowserTabController.BrowserTabController::switchCenterView().

221 {
222  bool result = true;
223  auto logOpIt = logOps_.begin();
224  // loop over all user-supplied criteria (==filters)
225  for( auto it = begin(criteria_); it != end(criteria_); ++it, ++logOpIt) {
226  // avoid useless evaluations
227  if(( result && ( *logOpIt ) == DDLogOp::OR ) ||
228  (( !result ) && ( *logOpIt ) == DDLogOp::AND )) continue;
229 
230  bool locres = (*it)->accept(epv_);
231 
232  // now do the logical-operations on the results encountered so far:
233  if (*logOpIt == DDLogOp::AND) { // AND
234  result &= locres;
235  }
236  else { // OR
237  result |= locres;
238  }
239  } // <-- loop over filters
240  return result;
241 }
DDExpandedView epv_
std::vector< DDFilter const * > criteria_
tuple result
Definition: query.py:137
std::vector< DDLogOp > logOps_
#define end
Definition: vmac.h:37
#define begin
Definition: vmac.h:30
bool DDFilteredView::firstChild ( )

set the current node to the first child ...

Algorithm:

  • find the first child matching the filter down the current subtree using next() which transverses already in the required hierarchical sequence ...

Definition at line 110 of file DDFilteredView.cc.

References DDExpandedView::depth_, epv_, DDExpandedView::geoHistory(), DDExpandedView::goToHistory(), next(), parents_, query::result, and DDExpandedView::scope_.

Referenced by ListIds::analyze(), HcalParametersFromDD::build(), CmsTrackerLevelBuilder::build(), CSCGeometryParsFromDD::build(), CmsDetConstruction::buildComponent(), GEMGeometryBuilderFromDDD::buildGeometry(), ME0GeometryBuilderFromDDD::buildGeometry(), GEMGeometryParsFromDD::buildGeometry(), RPCGeometryBuilderFromDDD::buildGeometry(), RPCGeometryParsFromDD::buildGeometry(), DTGeometryBuilderFromDDD::buildGeometry(), DTGeometryParsFromDD::buildGeometry(), DTGeometryParserFromDDD::buildLayer(), DTGeometryBuilderFromDDD::buildLayer(), CaloTrkProcessing::CaloTrkProcessing(), DDDCmsTrackerContruction::construct(), ECalSD::ECalSD(), MaterialBudgetHcalHistos::fillBeginJob(), HcalTB06BeamSD::getNames(), MaterialBudgetHcalHistos::getNames(), HCalSD::getNames(), HCalSD::HCalSD(), HcalTB06BeamSD::HcalTB06BeamSD(), HFFibre::HFFibre(), HFShowerFibreBundle::HFShowerFibreBundle(), HFShowerPMT::HFShowerPMT(), FastTimeDDDConstants::initialize(), HGCalDDDConstants::initialize(), DreamSD::initMap(), HcalTB02SD::initMap(), ECalSD::initMap(), DTGeometryParsFromDD::insertLayer(), EcalTBHodoscopeGeometryLoaderFromDDD::makeGeometry(), MuonDDDConstants::MuonDDDConstants(), nextSibling(), DTGeometryParserFromDDD::parseGeometry(), CocoaAnalyzer::ReadXMLFile(), CmsTrackerRingBuilder::sortNS(), PrintGeomMatInfo::update(), and PrintGeomInfoAction::update().

111 {
112  bool result = false;
113 
114  // save the current position
115  DDGeoHistory savedPos = epv_.geoHistory();
116 
117  // save the current scope
118  DDGeoHistory savedScope = epv_.scope_;
119  int savedDepth = epv_.depth_;
120 
121  // set current node to be the scope
123  epv_.depth_ = 0;
124 
125  // search the subtree for the first matching node
126  if (next()) {
127  result = true;
128  epv_.scope_ = savedScope;
129  epv_.depth_ = savedDepth;
130  }
131  else { // restore the starting point
132  epv_.scope_ = savedScope;
133  epv_.depth_ = savedDepth;
134  epv_.goToHistory(savedPos);
135  }
136 
137  if (result) {
138  parents_.push_back(epv_.geoHistory());
139  }
140 
141  return result;
142 }
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
unsigned int depth_
depth of the scope, 0==unrestricted depth
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
bool next()
set current node to the next node in the filtered tree
tuple result
Definition: query.py:137
std::vector< DDExpandedNode > DDGeoHistory
Geometrical &#39;path&#39; of the current node up to the root-node.
bool goToHistory(const DDGeoHistory &sc)
DDGeoHistory scope_
scope of the expanded view
const DDGeoHistory & DDFilteredView::geoHistory ( ) const
bool DDFilteredView::goTo ( const nav_type )

Definition at line 253 of file DDFilteredView.cc.

References query::result.

Referenced by TouchableToHistory::getFilteredView(), and DDDefaultNumberingScheme::node().

254 {
255  // WARNING!!!!!!!!!!
256  // NOT IMPLEMENTED!!!!!!!
257  bool result(false);
258  return result;
259 }
tuple result
Definition: query.py:137
const std::vector< DDGeoHistory > & DDFilteredView::history ( ) const

Definition at line 271 of file DDFilteredView.cc.

References parents_.

Referenced by CmsTrackerLevelBuilder::build().

272 {
273  return parents_;
274 }
std::vector< DDGeoHistory > parents_
const DDLogicalPart & DDFilteredView::logicalPart ( ) const
DDsvalues_type DDFilteredView::mergedSpecifics ( ) const

Definition at line 56 of file DDFilteredView.cc.

References epv_, and DDExpandedView::mergedSpecificsV().

Referenced by HcalParametersFromDD::build(), DTGeometryBuilderFromDDD::buildGeometry(), DTGeometryParsFromDD::buildGeometry(), CaloTrkProcessing::CaloTrkProcessing(), ECalSD::ECalSD(), MaterialBudgetHcalHistos::fillBeginJob(), HCalSD::HCalSD(), HFFibre::HFFibre(), HFShowerFibreBundle::HFShowerFibreBundle(), HFShowerPMT::HFShowerPMT(), FastTimeDDDConstants::loadSpecPars(), HGCalDDDConstants::loadSpecPars(), MuonDDDConstants::MuonDDDConstants(), and CocoaAnalyzer::ReadXMLFile().

57 {
58  DDsvalues_type merged;
59  epv_.mergedSpecificsV(merged);
60  return merged;
61 }
DDExpandedView epv_
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
std::maps an index to a DDValue. The index corresponds to the index assigned to the name of the std::...
Definition: DDsvalues.h:19
void mergedSpecificsV(DDsvalues_type &res) const
void DDFilteredView::mergedSpecificsV ( DDsvalues_type merged) const

Definition at line 51 of file DDFilteredView.cc.

References epv_, and DDExpandedView::mergedSpecificsV().

52 {
53  epv_.mergedSpecificsV(merged);
54 }
DDExpandedView epv_
void mergedSpecificsV(DDsvalues_type &res) const
DDFilteredView::nav_type DDFilteredView::navPos ( ) const

return the stack of sibling numbers

Definition at line 243 of file DDFilteredView.cc.

References epv_, and DDExpandedView::navPos().

Referenced by DDDefaultNumberingScheme::DDDefaultNumberingScheme(), GeometricDet::GeometricDet(), and DDDefaultNumberingScheme::id().

244 {
245  return epv_.navPos();
246 }
DDExpandedView epv_
nav_type navPos() const
return the stack of sibling numbers which indicates the current position in the DDExpandedView ...
bool DDFilteredView::next ( void  )
bool DDFilteredView::nextSibling ( )

set the current node to the next sibling ...

Algorithm:

  • find the first node - which matches the filter - in the subtrees of the siblings of the current node

Definition at line 150 of file DDFilteredView.cc.

References epv_, filter(), firstChild(), DDExpandedView::geoHistory(), DDExpandedView::goToHistory(), DDExpandedView::nextSibling(), DDExpandedView::parent(), parents_, and query::result.

Referenced by BeautifulSoup.Tag::__str__(), BeautifulSoup.PageElement::_invert(), CmsTrackerLevelBuilder::build(), CmsDetConstruction::buildComponent(), GEMGeometryBuilderFromDDD::buildGeometry(), GEMGeometryParsFromDD::buildGeometry(), ME0GeometryBuilderFromDDD::buildGeometry(), RPCGeometryBuilderFromDDD::buildGeometry(), RPCGeometryParsFromDD::buildGeometry(), DTGeometryBuilderFromDDD::buildGeometry(), DTGeometryParsFromDD::buildGeometry(), DTGeometryParserFromDDD::buildLayer(), DTGeometryBuilderFromDDD::buildLayer(), DTGeometryParsFromDD::insertLayer(), EcalTBHodoscopeGeometryLoaderFromDDD::makeGeometry(), and DTGeometryParserFromDDD::parseGeometry().

151 {
152  //PRE: the current node A is one matching the filter or the (scoped) root
153  //POST: current node is A if no filter has matched, or B with matching filter
154  // B is the firstChild matching the filter in the subtrees of A's siblings
155  bool result = false;
156  DDGeoHistory savedPos = epv_.geoHistory();
157 
158  bool flag = true;
159  //bool shuffleParent = false;
160  while (flag) {
161  if (epv_.nextSibling()) {
162  if ( filter() ) {
163  result = true;
164  break;
165  }
166  else if (firstChild()) {
167  result = true;
168  // firstChild increases parents!
169  parents_.pop_back();
170  break;
171  }
172  } // <-- epv_.nextSibling
173  else if (!epv_.parent()) {
174  flag = false;
175  }
176  if (epv_.geoHistory().size() == parents_[parents_.size()-2].size()) {
177  flag = false;
178  }
179  }
180 
181  if (!result)
182  epv_.goToHistory(savedPos);
183  else
184  parents_.back() = epv_.geoHistory();
185 
186  return result;
187 }
bool parent()
set the current node to the parent node ...
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
tuple result
Definition: query.py:137
std::vector< DDExpandedNode > DDGeoHistory
Geometrical &#39;path&#39; of the current node up to the root-node.
bool nextSibling()
set the current node to the next sibling ...
bool firstChild()
set the current node to the first child ...
bool goToHistory(const DDGeoHistory &sc)
bool DDFilteredView::parent ( )

set the current node to the parent node ...

Definition at line 189 of file DDFilteredView.cc.

References epv_, DDExpandedView::goToHistory(), parents_, and query::result.

Referenced by BeautifulSoup.PageElement::_invert(), Vispa.Gui.ConnectableWidget.ConnectableWidget::addMenuEntry(), Vispa.Views.LineDecayView.LineDecayContainer::applyFilter(), Vispa.Views.BoxDecayView.BoxDecayContainer::arrangeUsingRelations(), Vispa.Views.BoxDecayView.BoxDecayContainer::autolayoutAlgorithm(), Vispa.Gui.ZoomableScrollableWidgetOwner.ZoomableScrollableWidgetOwner::autosizeScrollArea(), Vispa.Views.BoxDecayView.BoxDecayContainer::autosizeScrollArea(), CmsTrackerLevelBuilder::build(), CmsDetConstruction::buildComponent(), DTGeometryBuilderFromDDD::buildGeometry(), DTGeometryParsFromDD::buildGeometry(), Vispa.Gui.PortWidget.PortWidget::connectionPoint(), DDDCmsTrackerContruction::construct(), Vispa.Main.StartupScreen.StartupScreen::createDescriptionWidget(), Vispa.Views.BoxDecayView.BoxDecayContainer::dataAccessor(), Vispa.Views.LineDecayView.LineDecayContainer::dataAccessor(), Vispa.Views.LineDecayView.DecayLine::dataAccessor(), Vispa.Views.LineDecayView.LineDecayContainer::delete(), Vispa.Views.LineDecayView.DecayNode::delete(), Vispa.Views.LineDecayView.DecayLine::delete(), Vispa.Gui.VispaWidget.VispaWidget::delete(), Vispa.Gui.VispaWidget.VispaWidget::dragWidget(), Vispa.Share.ImageExporter.ImageExporter::exportImageDialog(), Vispa.Views.LineDecayView.DecayLine::extendedSize(), DTGeometryParsFromDD::insertLayer(), Vispa.Gui.VispaWidget.VispaWidget::keyPressEvent(), Vispa.Gui.MenuWidget.MenuWidget::leaveEvent(), Vispa.Gui.ConnectableWidget.ConnectableWidget::leaveEvent(), Vispa.Gui.PortWidget.PortWidget::moduleParent(), Vispa.Gui.WidgetContainer.WidgetContainer::mouseDoubleClickEvent(), Vispa.Gui.VispaWidget.VispaWidget::mouseDoubleClickEvent(), Vispa.Gui.PortConnection.PointToPointConnection::mousePressEvent(), Vispa.Gui.VispaWidget.VispaWidget::mousePressEvent(), Vispa.Views.LineDecayView.ParticleWidget::mousePressEvent(), Vispa.Views.LineDecayView.DecayNode::move(), Vispa.Views.LineDecayView.LineDecayContainer::noDecorationsMode(), Vispa.Views.LineDecayView.LineDecayContainer::operationId(), Vispa.Views.LineDecayView.DecayLine::paint(), Vispa.Gui.VispaWidget.VispaWidget::paintEvent(), DTGeometryParserFromDDD::parseGeometry(), Vispa.Gui.ConnectableWidget.ConnectableWidget::positionizeMenuWidget(), Vispa.Views.LineDecayView.DecayLine::qtLineStyle(), Vispa.Views.WidgetView.WidgetView::restoreSelection(), Vispa.Views.WidgetView.WidgetView::select(), Vispa.Gui.PortConnection.PointToPointConnection::select(), Vispa.Gui.VispaWidget.VispaWidget::select(), Vispa.Views.LineDecayView.LineDecayContainer::select(), Vispa.Views.LineDecayView.LineDecayContainer::sizeHint(), CmsTrackerRingBuilder::sortNS(), Vispa.Views.LineDecayView.LineDecayContainer::tabController(), Vispa.Views.BoxDecayView.BoxDecayContainer::toggleCollapsed(), Vispa.Views.LineDecayView.DecayNode::unite(), Vispa.Views.PropertyView.PropertyView::valueChanged(), Vispa.Views.BoxDecayView.BoxDecayContainer::widgetByObject(), Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::widgetDoubleClicked(), and Vispa.Gui.VispaWidgetOwner.VispaWidgetOwner::widgetDragged().

190 {
191  bool result = false;
192 
193  if (parents_.size()==1) {
194  result = false;
195  }
196  else {
197  parents_.pop_back();
198  epv_.goToHistory(parents_.back());
199  result = true;
200  }
201 
202  // =====> CHECK WHETHER THE FOLLOWING REMARKS STILL REPRESENT THE IMPLEMENTATION ABOVE <===
203  // case 1: we've reached the (scoped) root of the underlying expanded-view
204  // from the first child of the fitered-view; result must be true
205  // case 2: we've reached a parent-node where the filter said 'yes';
206  // result must be true
207  // case 3: we are already at the (scoped) root of the underlying expanded-view
208  // result must be false
209 
210  return result;
211 }
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
tuple result
Definition: query.py:137
bool goToHistory(const DDGeoHistory &sc)
void DDFilteredView::print ( void  )

Definition at line 261 of file DDFilteredView.cc.

References epv_, i, parents_, and DDExpandedView::scope_.

261  {
262  edm::LogInfo("DDFliteredView") << "FilteredView Status" << std::endl
263  << "-------------------" << std::endl
264  << "scope = " << epv_.scope_ << std::endl
265  << "parents:" << std::endl;
266  for (unsigned int i=0; i<parents_.size(); ++i)
267  edm::LogInfo("DDFliteredView") << " " << parents_[i] << std::endl;
268 
269 }
int i
Definition: DBlmapReader.cc:9
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
DDGeoHistory scope_
scope of the expanded view
void DDFilteredView::reset ( void  )

clears the scope and sets the filtered view to its root-node

Definition at line 213 of file DDFilteredView.cc.

References epv_, DDExpandedView::geoHistory(), parents_, and DDExpandedView::reset().

Referenced by DDDefaultNumberingScheme::DDDefaultNumberingScheme().

214 {
215  epv_.reset();
216  parents_.clear();
217  parents_.push_back(epv_.geoHistory());
218 }
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
void reset()
true, if a call to firstChild() would succeed (current node has at least one child) ...
const DDRotationMatrix & DDFilteredView::rotation ( void  ) const
const DDGeoHistory & DDFilteredView::scope ( ) const

The scope of the expanded-view.

Definition at line 68 of file DDFilteredView.cc.

References epv_, and DDExpandedView::scope().

69 {
70  return epv_.scope();
71 }
DDExpandedView epv_
const DDGeoHistory & scope() const
The scope of the expanded-view.
bool DDFilteredView::setScope ( const DDGeoHistory hist)

sets the scope of the expanded view

Definition at line 73 of file DDFilteredView.cc.

References epv_, parents_, query::result, and DDExpandedView::setScope().

74 {
75  bool result = epv_.setScope(hist,0);
76  if (result) {
77  parents_.clear();
78  parents_.push_back(hist);
79  }
80  return result;
81 }
DDExpandedView epv_
std::vector< DDGeoHistory > parents_
tuple result
Definition: query.py:137
bool setScope(const DDGeoHistory &hist, int depth=0)
sets the scope of the expanded view
std::vector< const DDsvalues_type * > DDFilteredView::specifics ( ) const

Definition at line 40 of file DDFilteredView.cc.

References epv_, query::result, and DDExpandedView::specificsV().

Referenced by CSCGeometryParsFromDD::build(), GEMGeometryParsFromDD::buildGeometry(), GEMGeometryBuilderFromDDD::buildGeometry(), RPCGeometryBuilderFromDDD::buildGeometry(), RPCGeometryParsFromDD::buildGeometry(), and CocoaAnalyzer::ReadXMLFile().

41 {
42  std::vector<const DDsvalues_type * > result; epv_.specificsV(result);
43  return result;
44 }
DDExpandedView epv_
void specificsV(std::vector< const DDsvalues_type * > &vc) const
tuple result
Definition: query.py:137
void DDFilteredView::specificsV ( std::vector< const DDsvalues_type * > &  result) const

User specific data attached to the current node.

Definition at line 46 of file DDFilteredView.cc.

References epv_, and DDExpandedView::specificsV().

Referenced by dddGetStringRaw(), and ExtractStringFromDDD::getString().

47 {
49 }
DDExpandedView epv_
void specificsV(std::vector< const DDsvalues_type * > &vc) const
tuple result
Definition: query.py:137
const DDTranslation & DDFilteredView::translation ( void  ) const

Member Data Documentation

std::vector<DDFilter const *> DDFilteredView::criteria_
private

Definition at line 84 of file DDFilteredView.h.

Referenced by addFilter(), and filter().

DDExpandedView DDFilteredView::epv_
private
std::vector<DDLogOp> DDFilteredView::logOps_
private

Definition at line 85 of file DDFilteredView.h.

Referenced by addFilter(), and filter().

std::vector<DDGeoHistory> DDFilteredView::parents_
private