ATLAS Offline Software
Loading...
Searching...
No Matches
NavWrapper.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef NAVIGATION_NAVWRAPPER_H
6#define NAVIGATION_NAVWRAPPER_H
7
10
11#include <any>
12
13template<class NAVIMPL>
15{
16public:
17
19 typedef NAVIMPL navimpl_t;
20 // /*!{ \brief Publish important types from \a Navigable, new style */
21 // typedef typename navimpl::container_t container_t;
22 // typedef typename navimpl::constituent_t constituent_t;
23 // typedef typename navimpl::parameter_t parameter_t;
24 // typedef typename navimpl::object_iter_t object_iter_t;
25 // typedef typename navimpl::external_index_t external_index_t;
30 typedef typename navimpl_t::container_type container_type;
31 typedef typename navimpl_t::constituent_type constituent_type;
32 typedef typename navimpl_t::parameter_type parameter_type;
33 typedef typename navimpl_t::object_iter object_iter;
34 typedef typename navimpl_t::external_index_type external_index_type;
36
40 NavWrapper(const navimpl_t& theNav) : m_nav(theNav) { };
42 virtual ~NavWrapper() { };
43
44 // common interface with Navigable FIXME improve code organization
45
50 virtual void fillToken(INavigationToken& navToken) const
51 { m_nav.fillToken(navToken); }
52
57 virtual void fillToken(INavigationToken& navToken,
58 const std::any& parentParameter) const
59 { m_nav.fillToken(navToken, parentParameter); }
60
62 // Add data objects or elements //
64
69 void putElement(const container_type* pCont,
70 const constituent_type* pObj,
71 const parameter_type& oPar = parameter_type(),
72 size_t sizeHint = 0)
73 { m_nav.putElement(pCont,pObj,oPar,sizeHint); }
74
75 void putElement(const container_type* pCont,
77 const parameter_type& oPar = parameter_type(),
78 size_t sizeHint = 0)
79 { m_nav.putElement(pCont,iObj,oPar,sizeHint); }
80
81 void insertElement(const container_type* pCont,
82 const constituent_type* pObj,
83 const parameter_type& oPar = parameter_type(),
84 size_t sizeHint = 0)
85 { m_nav.insertElement(pCont,pObj,oPar,sizeHint); }
86
87 void insertElement(const container_type* pCont,
89 const parameter_type& oPar = parameter_type(),
90 size_t sizeHint = 0)
91 { m_nav.insertElement(pCont,iObj,oPar,sizeHint); }
92
94 // Data manipulation //
96
97 // re-weight (overwrite old weight)
98 void reweight(const constituent_type* pObj,
99 const parameter_type& oPar = parameter_type())
100 { m_nav.reweight(pObj,oPar); }
101 void reweight(const container_type* pCont,
103 const parameter_type& oPar = parameter_type())
104 { m_nav.reweight(pCont,iObj,oPar); }
106 const parameter_type& oPar = parameter_type())
107 { m_nav.reweight(oIter,oPar); }
108
109 // remove object from the Navigable
110 bool remove(const constituent_type* pObj)
111 { return m_nav.remove(pObj); }
112 bool remove(const container_type* pCont, external_index_type& iObj)
113 { return m_nav.remove(pCont,iObj); }
114 bool removeAll() { return m_nav.removeAll(); }
115
116 // check if constituent is already there
117 bool contains(const constituent_type* pObj) const
118 { return m_nav.contains(pObj); }
119 bool contains(const container_type* pCont,
120 external_index_type& iObj) const
121 { return m_nav.contains(pCont,iObj); }
122
124 // Access to Constituents //
126
127 // public object access: iterators, sizes etc.
128 virtual object_iter begin() const { return m_nav.begin(); }
129 virtual object_iter end() const { return m_nav.end(); }
130 virtual size_t size() const { return size_t(m_nav.size()); }
131
132 // public container access: relational parameter retrieval
134 { return m_nav.getParameter(pObj); }
136 external_index_type& iObj) const
137 { return m_nav.getParameter(pCont,iObj); }
139 { return m_nav.getParameter(oIter); }
140
141 // public container access: retrieve ElementLink for given object pointer
143 { return m_nav.getContainer(pObj); }
144 // const container_type* getContainer(constituent_const_iter oIter) const
145 // { return m_nav.getContainer(oIter); }
147 { return m_nav.getContainer(oIter); }
148
149 // get index of child in original container
150 bool getIndex(const constituent_type* pObj,
151 external_index_type& iObj) const
152 { return m_nav.getIndex(pObj,iObj); }
153 // bool getIndex(constituent_const_iter anIter,
154 // external_index_type& iObj) const;
156 external_index_type& iObj) const
157 { return m_nav.getIndex(oIter,iObj); }
158
159 protected:
160
162 const navimpl_t& getNavImpl() const { return m_nav; }
163
164 private:
167};
168
185
186//class NavigableTerminalNode
187//{
188//public:
189//};
197
198template<>
200{
201public:
202
206 virtual ~NavWrapper() { };
207
209 virtual void fillToken(INavigationToken& /*rToken*/) const { };
210 virtual void fillToken(INavigationToken& /*rToken*/,
211 const std::any& /*rPar*/ ) const { };
212
213};
214
225#endif
virtual void fillToken(INavigationToken &, const std::any &) const
Definition NavWrapper.h:210
virtual ~NavWrapper()
Base class destructor.
Definition NavWrapper.h:206
NavWrapper()
Default constructor.
Definition NavWrapper.h:204
virtual void fillToken(INavigationToken &) const
{
Definition NavWrapper.h:209
bool getIndex(object_iter oIter, external_index_type &iObj) const
Definition NavWrapper.h:155
navimpl_t::object_iter object_iter
Definition NavWrapper.h:33
bool removeAll()
Definition NavWrapper.h:114
NAVIMPL navimpl_t
Publish navigation implementation type.
Definition NavWrapper.h:19
void insertElement(const container_type *pCont, external_index_type &iObj, const parameter_type &oPar=parameter_type(), size_t sizeHint=0)
Insert element into Navigable store.
Definition NavWrapper.h:87
bool getIndex(const constituent_type *pObj, external_index_type &iObj) const
Definition NavWrapper.h:150
navimpl_t::external_index_type external_index_type
Definition NavWrapper.h:34
NavWrapper(const navimpl_t &theNav)
Optional constructor: construct from Navigable.
Definition NavWrapper.h:40
navimpl_t & getNavImpl()
Definition NavWrapper.h:161
parameter_type getParameter(const container_type *pCont, external_index_type &iObj) const
Definition NavWrapper.h:135
void putElement(const container_type *pCont, external_index_type &iObj, const parameter_type &oPar=parameter_type(), size_t sizeHint=0)
Add element to the Navigable store.
Definition NavWrapper.h:75
virtual ~NavWrapper()
Base class destructor.
Definition NavWrapper.h:42
virtual object_iter end() const
Definition NavWrapper.h:129
const container_type * getContainer(const constituent_type *pObj) const
Definition NavWrapper.h:142
navimpl_t::parameter_type parameter_type
Definition NavWrapper.h:32
virtual size_t size() const
Definition NavWrapper.h:130
bool contains(const container_type *pCont, external_index_type &iObj) const
Definition NavWrapper.h:119
navimpl_t::container_type container_type
{
Definition NavWrapper.h:30
bool remove(const constituent_type *pObj)
Definition NavWrapper.h:110
void putElement(const container_type *pCont, const constituent_type *pObj, const parameter_type &oPar=parameter_type(), size_t sizeHint=0)
Add element to Navigable store.
Definition NavWrapper.h:69
virtual void fillToken(INavigationToken &navToken) const
Visitor handler without relational parameter.
Definition NavWrapper.h:50
void reweight(const container_type *pCont, external_index_type &iObj, const parameter_type &oPar=parameter_type())
Definition NavWrapper.h:101
bool contains(const constituent_type *pObj) const
Definition NavWrapper.h:117
const navimpl_t & getNavImpl() const
Definition NavWrapper.h:162
virtual object_iter begin() const
Definition NavWrapper.h:128
parameter_type getParameter(const constituent_type *pObj) const
Definition NavWrapper.h:133
virtual void fillToken(INavigationToken &navToken, const std::any &parentParameter) const
Visitor handler including a relational parameter.
Definition NavWrapper.h:57
navimpl_t::constituent_type constituent_type
Definition NavWrapper.h:31
parameter_type getParameter(object_iter &oIter) const
Definition NavWrapper.h:138
const container_type * getContainer(object_iter oIter) const
Definition NavWrapper.h:146
void insertElement(const container_type *pCont, const constituent_type *pObj, const parameter_type &oPar=parameter_type(), size_t sizeHint=0)
Insert element into Navigable store.
Definition NavWrapper.h:81
void reweight(object_iter &oIter, const parameter_type &oPar=parameter_type())
Definition NavWrapper.h:105
bool remove(const container_type *pCont, external_index_type &iObj)
Definition NavWrapper.h:112
void reweight(const constituent_type *pObj, const parameter_type &oPar=parameter_type())
Definition NavWrapper.h:98
Dummy type needed fro specialized implementation.