113 {
114 if (linkIndex == 0 && linkKey == 0)
115 {
117 return;
118 }
119
120 unsigned targetIndex = 0
u;
122 ++ targetIndex;
123
124
125
126
127
128
129
130
131
133 {
135 {
138 {
140 allowedSet.insert(i);
141 }
142 }
144 for (auto iter = allowedSet.begin(); iter != allowedSet.end();)
145 {
148 if (eventIndex + 1 >= targetOffsetColumn.size())
149 throw std::runtime_error (
"target offset column not yet filled for: " +
m_targetNames.at(index));
150 if (targetOffsetColumn.at(eventIndex) + linkIndex >= targetOffsetColumn.at(eventIndex + 1))
151 iter = allowedSet.erase(iter);
152 else
154 }
155
156
157
158
159
160
161
162
164 {
166 targetIndex = *allowedSet.begin();
167 else
168 {
169 std::ostringstream
error;
170 error <<
"target key mismatch: read sgkey " << std::hex << linkKey << std::dec;
173 {
176 {
177 error <<
", alternate key found for non-variant link:";
179 {
180 if (key != linkKey)
181 error <<
" " << std::hex <<
key << std::dec;
182 }
183 } else
184 {
186 }
187 throw std::runtime_error (std::move (error).
str());
188 }
189 }
190 }
191
193 {
194
195
197 return;
198 }
199
201 if (eventIndex + 1 >= targetOffsetColumn.size())
202 throw std::runtime_error (
"target offset column not yet filled for: " +
m_targetNames.at(targetIndex));
203 auto myLinkIndex = linkIndex + targetOffsetColumn.at(eventIndex);
204 if (myLinkIndex >= targetOffsetColumn.at(eventIndex + 1))
205 throw std::runtime_error (
"index out of range for link: " +
m_columnName +
" with element index " + std::to_string(linkIndex) +
" targeting " +
m_targetNames.at(targetIndex) +
" with offset " + std::to_string(targetOffsetColumn.at(eventIndex)) +
" and next offset " + std::to_string(targetOffsetColumn.at(eventIndex + 1)));
206
208 }
std::vector< SG::sgkey_t > m_targetKeys
std::vector< const std::vector< ColumnarOffsetType > * > m_targetOffsetColumns
std::vector< std::vector< typename CM::LinkKeyType > > m_keysColumns
@ u
Enums for curvilinear frames.
static LinkIndexType mergeLinkKeyIndex(LinkIndexType key, LinkIndexType index)
merge a key and index value into a link value