ATLAS Offline Software
NavigableVector_p1.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef DATAMODELATHENAPOOL_NAVIGABLEVECTOR_P1_H
6 #define DATAMODELATHENAPOOL_NAVIGABLEVECTOR_P1_H
7 
13 #include "ElementLinkVector_p1.h"
14 
19 template <typename INDEXTYPE, typename RPAR=void>
21 {
22 public:
24  size_t size() const { return m_navigableSizes.size(); }
25 
27  std::vector<RPAR> m_parameters;
28  std::vector<unsigned short> m_navigableSizes;
29 };
30 
31 
32 // specialization of the above class for non-weighted Navigables
33 template <typename INDEXTYPE>
34 class NavigableVector_p1<INDEXTYPE, void>
35 {
36 public:
38  size_t size() const { return m_navigableSizes.size(); }
39 
41  std::vector<unsigned short> m_navigableSizes;
42 };
43 
44 
45 
46 // Helper template to generate type of the persistent NavigableVector_pN
47 // from the type of the transient Navigable
48 // Used in the NavigableVectorCnv_pN
49 
50 namespace NavigationDefaults {
51  struct DefaultWeight;
52 }
53 
54 
55 template <class NAV, typename RPAR = typename NAV::parameter_type >
57 {
58  typedef NavigableVector_p1<
60  RPAR > type;
61 };
62 
63 
64 template <class NAV >
65 struct GeneratePersNavVectorType<NAV, NavigationDefaults::DefaultWeight >
66 {
67  typedef NavigableVector_p1<
69  > type;
70 };
71 
72 
73 
74 // If you define more Navigable_pN types, remember to add template instantiations to the Dict file
75 
78 
79 
80 #endif
81 
82 
83 
NavigableVector_p1::NavigableVector_p1
NavigableVector_p1()
Definition: NavigableVector_p1.h:23
NavigableVector_p1< INDEXTYPE, void >::m_links
ElementLinkVector_p1< INDEXTYPE > m_links
Definition: NavigableVector_p1.h:40
NavigableVector_p1::m_navigableSizes
std::vector< unsigned short > m_navigableSizes
Definition: NavigableVector_p1.h:28
NavigableVector_p1
Definition: NavigableVector_p1.h:21
GeneratePersNavVectorType< NAV, NavigationDefaults::DefaultWeight >::type
NavigableVector_p1< typename GenerateELinkIndexType_p1< typename NAV::external_index_type >::type > type
Definition: NavigableVector_p1.h:69
ElementLinkVector_p1
Definition: ElementLinkVector_p1.h:23
NavigableVector_p1::m_parameters
std::vector< RPAR > m_parameters
Definition: NavigableVector_p1.h:27
NavigableVector_p1< INDEXTYPE, void >::size
size_t size() const
Definition: NavigableVector_p1.h:38
NavigableVectorStr_p1
NavigableVector_p1< std::string > NavigableVectorStr_p1
Definition: NavigableVector_p1.h:77
NavigableVectorInt_p1
NavigableVector_p1< uint32_t > NavigableVectorInt_p1
Definition: NavigableVector_p1.h:76
NavigableVector_p1< INDEXTYPE, void >::m_navigableSizes
std::vector< unsigned short > m_navigableSizes
Definition: NavigableVector_p1.h:41
NavigableVector_p1::size
size_t size() const
Definition: NavigableVector_p1.h:24
NavigableVector_p1::m_links
ElementLinkVector_p1< INDEXTYPE > m_links
Definition: NavigableVector_p1.h:26
GeneratePersNavVectorType::type
NavigableVector_p1< typename GenerateELinkIndexType_p1< typename NAV::external_index_type >::type, RPAR > type
Definition: NavigableVector_p1.h:60
ElementLinkVector_p1.h
This file contains the class definition for the ElementLinkVector_p1 class.
NavigableVector_p1< INDEXTYPE, void >::NavigableVector_p1
NavigableVector_p1()
Definition: NavigableVector_p1.h:37
GeneratePersNavVectorType
Definition: NavigableVector_p1.h:57
NavigationDefaults
Definition: Navigable_p1.h:46
GenerateELinkIndexType_p1
Definition: ElementLink_p1.h:44