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 for (IdDictRegion* region2 :
m_dictionary->all_regions()) {
82 IdDictRange*
range =
dynamic_cast<IdDictRange*
> (
entry);
83 if (range) {
84 region2->prepend_entry(std::make_unique<IdDictRangeRef> (*range));
85 }
86 }
87 }
88
89
90
91 if (prepend_entries.size() > 0) {
92
93 const IdDictRegion& region2 = *
m_dictionary->all_regions().back();
94 size_t region_number = region2.
index() + 1;
95
96
97 for (IdDictRegion* region3 :
dictionary.all_regions()) {
98 auto new_region = std::make_unique<IdDictRegion> ("dummy", "dummy", "");
99
100 new_region->set_index (region_number++);
101
102
104 for (const std::unique_ptr<IdDictRegionEntry>& entry : region3->entries()) {
105 if (i++ >= prepend_entries.size()) continue;
106
107 IdDictRange*
range =
dynamic_cast<IdDictRange*
> (
entry.get());
108 if (range) {
109 new_region->add_entry(std::make_unique<IdDictRangeRef> (*range));
110 }
111 }
112
113
115
117 }
118 }
120 }
123 } else {
124 std::cout <<
125 "IdDictDictionaryRef::generate_implementation: - WARNING no dictionary named " <<
m_dictionary_name <<
" found, cannot generate implementation "
126 << std::endl;
127 }
128 }
129}
const std::vector< std::unique_ptr< IdDictRegionEntry > > & entries()
Non-const access to entry pointers.