Exemple #1
0
//-*****************************************************************************
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 );
}
Exemple #2
0
//-*****************************************************************************
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;
}
Exemple #3
0
//-*****************************************************************************
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() );
}