Sierra Toolkit  Version of the Day
generic_mesh_traits.hpp
1 #ifndef STK_UTIL_GENERIC_MESH_TRAITS_HPP
2 #define STK_UTIL_GENERIC_MESH_TRAITS_HPP
3 
4 
5 namespace stk_classic {
6 
7 template <typename Mesh>
8 struct generic_mesh_traits {
9  // persistant through modifications (up to change owner):
10  //typedef typename Mesh::entity_global_id entity_global_id;
11 
12  // persistant through modifications (up to change owner):
13  typedef typename Mesh::entity_local_id entity_local_id;
14  // not-persistant through modifications (up to change owner):
15  typedef typename Mesh::entity_descriptor entity_descriptor;
16  // entity_descriptor_iterator de-references to an entity_descriptor:
17  typedef typename Mesh::entity_descriptor_iterator entity_descriptor_iterator;
18  typedef typename Mesh::entity_value entity_value;
19  typedef typename Mesh::entity_size_type entity_size_type; // not used yet
20 
21 
22  typedef typename Mesh::part_descriptor part_descriptor;
23  // part_descriptor_iterator de-references to a part_descriptor:
24  typedef typename Mesh::part_descriptor_iterator part_descriptor_iterator;
25  typedef typename Mesh::part_value part_value;
26  typedef typename Mesh::part_size_type part_size_type; // not used yet
27 
28  typedef typename Mesh::bucket_descriptor bucket_descriptor;
29  // bucket_descriptor_iterator de-references to a bucket_descriptor:
30  typedef typename Mesh::bucket_descriptor_iterator bucket_descriptor_iterator;
31  typedef typename Mesh::bucket_value bucket_value; // not used yet
32  typedef typename Mesh::bucket_size_type bucket_size_type; // not used yet
33  // potentially heavy bucket_descriptor_iterator:
34  typedef typename Mesh::selected_bucket_descriptor_iterator selected_bucket_descriptor_iterator;
35 
36  // potentially heavy bucket_descriptor_iterator:
37  typedef typename Mesh::part_bucket_descriptor_iterator part_bucket_descriptor_iterator;
38  typedef typename Mesh::part_bucket_size_type part_bucket_size_type; // not used yet
39 
40  // potentially heavy part_descriptor_iterator:
41  typedef typename Mesh::bucket_part_descriptor_iterator bucket_part_descriptor_iterator;
42  typedef typename Mesh::bucket_part_size_type bucket_part_size_type; // not used yet
43 
44  // potentially heavy entity_descriptor_iterator:
45  typedef typename Mesh::bucket_entity_descriptor_iterator bucket_entity_descriptor_iterator;
46  typedef typename Mesh::bucket_entity_size_type bucket_entity_size_type; // not used yet
47 
48  inline part_descriptor universal_part();
49 
50  static inline part_descriptor null_part();
51  static inline bucket_descriptor null_bucket();
52  static inline entity_local_id null_entity();
53  static inline relation_descriptor null_relation();
54 
55  typedef typename Mesh::relation_descriptor relation_descriptor;
56  typedef typename Mesh::relation_descriptor_iterator relation_descriptor_iterator;
57  typedef typename Mesh::selected_relation_descriptor_iterator selected_relation_descriptor_iterator
58  typedef typename Mesh::relation_value relation_value; // not used yet
59  typedef typename Mesh::relation_size_type relation_size_type; // not used yet
60 };
61 
62 
63 // Note: A Selector is a unary-predicate that accepts the appropriate type
64 // for the function being used and returns a boolean.
65 
66 template <typename Mesh>
67 inline typename generic_mesh_traits<Mesh>::part_descriptor
68 generic_mesh_traits<Mesh>::universal_part()
69 { return Mesh::universal_part(); }
70 
71 template <typename Mesh>
72 inline typename generic_mesh_traits<Mesh>::part_descriptor
73 generic_mesh_traits<Mesh>::null_part()
74 { return Mesh::null_part(); }
75 
76 template <typename Mesh>
77 inline typename generic_mesh_traits<Mesh>::bucket_descriptor
78 generic_mesh_traits<Mesh>::null_bucket()
79 { return Mesh::null_bucket(); }
80 
81 template <typename Mesh>
82 inline typename generic_mesh_traits<Mesh>::entity_local_id
83 generic_mesh_traits<Mesh>::null_entity()
84 { return Mesh::null_entity(); }
85 
86 template <typename Mesh>
87 inline typename generic_mesh_traits<Mesh>::relation_descriptor
88 generic_mesh_traits<Mesh>::null_relation()
89 { return Mesh::null_relation(); }
90 
91 
92 } // namespace stk_classic
93 
94 
95 #endif // STK_UTIL_GENERIC_MESH_TRAITS_HPP
Sierra Toolkit.