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