// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
namespace boost {

template <class T>
struct range_mutable_iterator<Tab<T>> {
    typedef T* type;
};

template <class T>
struct range_const_iterator<Tab<T>> {
    typedef const T* type;
};

} // namespace boost

template <class T>
inline T* range_begin( Tab<T>& tab ) {
    if( tab.Count() > 0 ) {
        return tab.Addr( 0 );
    } else {
        return 0;
    }
}

template <class T>
inline const T* range_begin( const Tab<T>& tab ) {
    if( tab.Count() > 0 ) {
        return tab.Addr( 0 );
    } else {
        return 0;
    }
}

template <class T>
inline T* range_end( Tab<T>& tab ) {
    if( tab.Count() > 0 ) {
        return tab.Addr( 0 ) + tab.Count();
    } else {
        return 0;
    }
}

template <class T>
inline const T* range_end( const Tab<T>& tab ) {
    if( tab.Count() > 0 ) {
        return tab.Addr( 0 ) + tab.Count();
    } else {
        return 0;
    }
}