//-***************************************************************************** const AbcA::ObjectHeader * OrData::getChildHeader( AbcA::ObjectReaderPtr iParent, const std::string &iName ) { ChildrenMap::iterator fiter = m_childrenMap.find( iName ); if ( fiter == m_childrenMap.end() ) { return NULL; } return & getChildHeader( iParent, fiter->second ); }
//-***************************************************************************** AbcA::ObjectReaderPtr OrData::getChild( AbcA::ObjectReaderPtr iParent, size_t i ) { ABCA_ASSERT( i < m_children.size(), "Out of range index in OrData::getChild: " << i ); AbcA::ObjectReaderPtr optr = m_children[i].made.lock(); if ( ! optr ) { // we haven't fully loaded the meta data if ( ! m_children[i].loadedMetaData ) { getChildHeader( iParent, i ); } // Make a new one. optr = Alembic::Util::shared_ptr<OrImpl>( new OrImpl( iParent, m_group, m_children[i].header ) ); m_children[i].made = optr; } return optr; }
//-***************************************************************************** ObjectWriterPtr ObjectWriter::getChild( size_t i ) { const ObjectHeader &ohead = getChildHeader( i ); return getChild( ohead.getName() ); }
//-***************************************************************************** ObjectReaderPtr ObjectReader::getChild( size_t i ) { const ObjectHeader &header = getChildHeader( i ); return getChild( header.getName() ); }