//-*****************************************************************************
void IScalarProperty::get( void *oSamp, const ISampleSelector &iSS ) const
{
    ALEMBIC_ABC_SAFE_CALL_BEGIN( "IScalarProperty::get()" );

    AbcA::index_t index = iSS.getIndex( m_property->getTimeSampling(),
                                        m_property->getNumSamples() );
    m_property->getSample( index, oSamp );

    ALEMBIC_ABC_SAFE_CALL_END();
}
//-*****************************************************************************
void IArrayProperty::getDimensions( Util::Dimensions & oDim,
                                    const ISampleSelector &iSS )
{
    ALEMBIC_ABC_SAFE_CALL_BEGIN( "IArrayProperty::getDimensions()" );

    m_property->getDimensions(
        iSS.getIndex( m_property->getTimeSampling(),
                      m_property->getNumSamples() ),
        oDim );

    ALEMBIC_ABC_SAFE_CALL_END();
}
//-*****************************************************************************
void IArrayProperty::get( AbcA::ArraySamplePtr& oSamp,
                          const ISampleSelector &iSS )
{
    ALEMBIC_ABC_SAFE_CALL_BEGIN( "IArrayProperty::get()" );

    m_property->getSample(
        iSS.getIndex( m_property->getTimeSampling(),
                      m_property->getNumSamples() ),
        oSamp );

    ALEMBIC_ABC_SAFE_CALL_END();
}
//-*****************************************************************************
bool IArrayProperty::getKey( AbcA::ArraySampleKey& oKey,
                             const ISampleSelector &iSS )
{
    ALEMBIC_ABC_SAFE_CALL_BEGIN( "IArrayProperty::getKey()" );

    return m_property->getKey(
        iSS.getIndex( m_property->getTimeSampling(),
                      m_property->getNumSamples() ),
        oKey );

    ALEMBIC_ABC_SAFE_CALL_END();

    // for error handler that don't throw
    return false;
}