51 {
55
56
57
58
59
60
61
62
63
64
65
66
67 std::vector<IdDictRegionEntry*> prepend_entries;
68 for (
const std::unique_ptr<IdDictRegionEntry>& entry : region.
entries()) {
69 if (
this ==
entry.get())
break;
70
71
72 IdDictRange*
range =
dynamic_cast<IdDictRange*
> (
entry.get());
73 if (range) {
74 prepend_entries.insert(prepend_entries.begin(),
entry.get());
75 }
76 }
77
78
79
80
81
82 for (IdDictRegion* region2 :
m_dictionary->all_regions()) {
84 IdDictRange*
range =
dynamic_cast<IdDictRange*
> (
entry);
85 if (range) {
86 region2->prepend_entry(std::make_unique<IdDictRangeRef> (*range));
87 }
88 }
89 }
90
91
92
93 if (prepend_entries.size() > 0) {
94
95 const IdDictRegion& region2 = *
m_dictionary->all_regions().back();
96 size_t region_number = region2.
index() + 1;
97
98
99 for (IdDictRegion* region3 :
dictionary.all_regions()) {
100 auto new_region = std::make_unique<IdDictRegion> ("dummy", "dummy", "");
101
102 new_region->set_index (region_number++);
103
104
106 for (const std::unique_ptr<IdDictRegionEntry>& entry : region3->entries()) {
107 if (i++ >= prepend_entries.size()) continue;
108
109 IdDictRange*
range =
dynamic_cast<IdDictRange*
> (
entry.get());
110 if (range) {
111 new_region->add_entry(std::make_unique<IdDictRangeRef> (*range));
112 }
113 }
114
115
117
119 }
120 }
122 }
125 } else {
126 std::cout <<
127 "IdDictDictionaryRef::generate_implementation: - WARNING no dictionary named " <<
m_dictionary_name <<
" found, cannot generate implementation "
128 << std::endl;
129 }
130 }
131}
const std::vector< std::unique_ptr< IdDictRegionEntry > > & entries()
Non-const access to entry pointers.