| 229 | } |
| 230 | |
| 231 | void MetadataBuilder::moveNameToIndex(CheckStatusWrapper* status, const char* name, unsigned index) |
| 232 | { |
| 233 | try |
| 234 | { |
| 235 | MutexLockGuard g(mtx, FB_FUNCTION); |
| 236 | |
| 237 | indexError(index, "moveNameToIndex"); |
| 238 | |
| 239 | for (ObjectsArray<MsgMetadata::Item>::iterator i = msgMetadata->items.begin(); |
| 240 | i != msgMetadata->items.end(); |
| 241 | ++i) |
| 242 | { |
| 243 | if (i->field == name) |
| 244 | { |
| 245 | MsgMetadata::Item copy(getPool(), *i); |
| 246 | msgMetadata->items.remove(i); |
| 247 | msgMetadata->items.insert(index, copy); |
| 248 | return; |
| 249 | } |
| 250 | } |
| 251 | |
| 252 | (Arg::Gds(isc_metadata_name) << name).raise(); |
| 253 | } |
| 254 | catch (const Exception& ex) |
| 255 | { |
| 256 | ex.stuffException(status); |
| 257 | } |
| 258 | } |
| 259 | |
| 260 | unsigned MetadataBuilder::addField(CheckStatusWrapper* status) |
| 261 | { |