////////////////////////////////////////////////////////////////////////// CreateChildArray //////////////////////////////////////////////////////////////////////////
| 467 | // CreateChildArray |
| 468 | /////////////////////////////////////////////////////////////////////////////// |
| 469 | void cHierDatabaseIter::CreateChildArray() //throw (eArchive, eHierDatabase) |
| 470 | { |
| 471 | ASSERT(!Done()); |
| 472 | ASSERT(!CanDescend()); |
| 473 | if (Done()) |
| 474 | { |
| 475 | throw eHierDatabase(_T("Attempt to call iter::CreateChildArray() when done is true")); |
| 476 | } |
| 477 | if (CanDescend()) |
| 478 | { |
| 479 | throw eHierDatabase(_T("Attempt to call iter::CreateChildArray() when child already exists")); |
| 480 | } |
| 481 | |
| 482 | cHierArrayInfo newInfo; |
| 483 | cHierAddr infoAddr; |
| 484 | |
| 485 | // write the new info |
| 486 | newInfo.mParent = mInfoAddr; |
| 487 | infoAddr = util_WriteObject(mpDb, &newInfo); |
| 488 | mIter->mChild = infoAddr; |
| 489 | // |
| 490 | // rewrite the current object, since its child info just changed |
| 491 | // |
| 492 | util_RewriteObject(mpDb, &(*mIter), GetCurrentAddr()); |
| 493 | } |
| 494 | |
| 495 | /////////////////////////////////////////////////////////////////////////////// |
| 496 | // CreateEntry |
no test coverage detected