43namespace ALEMBIC_VERSION_NS {
45typedef std::pair< OGroupPtr, Alembic::Util::uint64_t >
ParentPair;
48class OGroup::PrivateData
60 std::vector<Alembic::Util::uint64_t> childVec;
63 Alembic::Util::uint64_t pos;
92 mData->childVec.push_back(0);
109 child.reset(
new OData());
113 Alembic::Util::uint64_t pos =
mData->stream->getAndSeekEndPos();
115 Alembic::Util::uint64_t size =
iSize;
116 mData->stream->write(&size, 8);
131 mData->childVec.push_back(
child->getPos() | 0x8000000000000000ULL);
137 const Alembic::Util::uint64_t *
iSizes,
147 for (Alembic::Util::uint64_t
i = 0;
i <
iNumData; ++
i)
155 child.reset(
new OData());
159 Alembic::Util::uint64_t pos =
mData->stream->getAndSeekEndPos();
162 for (Alembic::Util::uint64_t
i = 0;
i <
iNumData; ++
i)
164 Alembic::Util::uint64_t size =
iSizes[
i];
177 const Alembic::Util::uint64_t *
iSizes,
185 mData->childVec.push_back(
child->getPos() | 0x8000000000000000ULL);
194 mData->childVec.push_back(
iData->getPos() | 0x8000000000000000ULL);
209 iGroup->mData->parents.push_back(
215void OGroup::addEmptyGroup()
223void OGroup::addEmptyData()
242 if (
mData->childVec.empty())
248 mData->pos =
mData->stream->getAndSeekEndPos();
249 Alembic::Util::uint64_t size =
mData->childVec.size();
250 mData->stream->write(&size, 8);
251 mData->stream->write(&
mData->childVec.front(), size*8);
255 ParentPairVec::iterator
it;
259 if (!
it->first &&
it->second == 0)
261 mData->stream->seek(8);
265 else if (
it->first->isFrozen())
267 mData->stream->seek(
it->first->mData->pos + (
it->second + 1) * 8);
270 it->first->mData->childVec[
it->second] =
mData->pos;
273 mData->parents.clear();
277bool OGroup::isFrozen()
282Alembic::Util::uint64_t OGroup::getNumChildren()
const
284 return mData->childVec.size();
287bool OGroup::isChildGroup(Alembic::Util::uint64_t
iIndex)
const
293bool OGroup::isChildData(Alembic::Util::uint64_t
iIndex)
const
299bool OGroup::isChildEmptyGroup(Alembic::Util::uint64_t
iIndex)
const
305bool OGroup::isChildEmptyData(Alembic::Util::uint64_t
iIndex)
const
318 Alembic::Util::uint64_t pos =
iData->getPos() | 0x8000000000000000ULL;
322 mData->stream->write(&pos, 8);
std::pair< OGroupPtr, Alembic::Util::uint64_t > ParentPair
std::vector< ParentPair > ParentPairVec