Sierra Toolkit  Version of the Day
Iterators.cpp
1 #include <stk_mesh/base/Iterators.hpp>
2 
3 namespace stk_classic {
4 namespace mesh {
5 
6 BucketVectorEntityIteratorRange get_entity_range(const std::vector<Bucket*>& buckets)
7 {
8  if ( buckets.empty() ) {
9  BucketVectorEntityIterator end_itr(buckets.end());
10  return std::make_pair(end_itr, end_itr);
11  }
12  else {
13  return std::make_pair(BucketVectorEntityIterator(buckets.begin(), BucketPtrIterator((*buckets.begin())->begin()), buckets.end()),
14  BucketVectorEntityIterator(buckets.end()));
15  }
16 }
17 
18 SelectedBucketVectorEntityIteratorRange get_entity_range(const std::vector<Bucket*>& buckets, const Selector& selector)
19 {
20  if ( buckets.empty() ) {
21  SelectedBucketVectorIterator end_select_itr(buckets.end());
22  //SelectedBucketVectorIterator end_select_itr(selector, buckets.end(), buckets.end());
23  SelectedBucketVectorEntityIterator end_itr(end_select_itr);
24  return std::make_pair(end_itr, end_itr);
25  }
26  else {
27  //SelectedBucketVectorIterator end_select_itr(selector, buckets.end(), buckets.end());
28  SelectedBucketVectorIterator end_select_itr(buckets.end());
29  return std::make_pair(SelectedBucketVectorEntityIterator(SelectedBucketVectorIterator(selector, buckets.begin(), buckets.end()),
30  BucketPtrIterator((*buckets.begin())->begin()),
31  end_select_itr),
32  SelectedBucketVectorEntityIterator(end_select_itr));
33  }
34 }
35 
36 AllBucketsRange get_bucket_range(const std::vector<std::vector<Bucket*> >& buckets)
37 {
38  if (buckets.empty()) {
39  AllBucketsIterator end_itr(buckets.end());
40  return std::make_pair(end_itr, end_itr);
41  }
42  else {
43  return std::make_pair(AllBucketsIterator(buckets.begin(), buckets.begin()->begin(), buckets.end()),
44  AllBucketsIterator(buckets.end()));
45  }
46 }
47 
48 AllBucketsRange get_bucket_range(const std::vector<std::vector<Bucket*> >& buckets,
49  std::vector<std::vector<Bucket*> >::const_iterator itr)
50 {
51  AllBucketsIterator end_itr(itr+1);
52  return std::make_pair(AllBucketsIterator(itr, itr->begin(), itr+1),
53  end_itr);
54 }
55 
56 AllSelectedBucketsRange get_selected_bucket_range(const AllBucketsRange& bucket_range, const Selector& selector)
57 {
58  return std::make_pair(AllSelectedBucketsIterator(selector, bucket_range.first, bucket_range.second),
59  AllSelectedBucketsIterator(selector, bucket_range.second, bucket_range.second));
60 }
61 
62 SelectedBucketVectorIteratorRange get_selected_bucket_range(const std::vector<Bucket*>& buckets, const Selector& selector)
63 {
64  return std::make_pair(SelectedBucketVectorIterator(selector, buckets.begin(), buckets.end()),
65  SelectedBucketVectorIterator(buckets.end()));
66 }
67 
68 #if 0
69 //this code is broken
70 // \TODO fix
71 SelectedBucketRangeEntityIteratorRange get_selected_bucket_entity_range(const AllBucketsRange& bucket_range, const Selector& selector)
72 {
73 
74  if (bucket_range.first == bucket_range.second) {
75  AllSelectedBucketsIterator end_select_itr(bucket_range.second);
76  //AllSelectedBucketsIterator end_select_itr(selector, bucket_range.second, bucket_range.second);
77  SelectedBucketRangeEntityIterator end_itr(end_select_itr);
78  return std::make_pair(end_itr, end_itr);
79  }
80  else {
81  AllSelectedBucketsRange selected_bucket_range = get_selected_bucket_range(bucket_range, selector);
82  return std::make_pair(SelectedBucketRangeEntityIterator(selected_bucket_range.first,
83  BucketPtrIterator( (*selected_bucket_range.first)->begin()),
84  selected_bucket_range.second),
85  SelectedBucketRangeEntityIterator(selected_bucket_range.second));
86  }
87 }
88 #endif
89 
90 } //namespace mesh
91 } //namespace stk_classic
Sierra Toolkit.