⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsmbmusicaplibiterator.h

📁 索爱手机代码
💻 H
📖 第 1 页 / 共 2 页
字号:
 *  僐儞僥僫偵梫慺傪捛壛偡傞偨傔偺憓擖斀暅巕丅
 *  僐儞僥僫偺儊儞僶 Push_backL(const T&) 傪巊偭偰丄枛旜偵梫慺傪捛壛弌椡偡傞丅
 */
template<typename Container>
class TSmbMusicAPLib_back_insert_iterator : public TSmbMusicAPLib_iterator<TSmbMusicAPLib_output_iterator_tag, void, void, void, void>
    {
public:
    typedef Container   container_type;

public:
    explicit TSmbMusicAPLib_back_insert_iterator( Container& aContainer ) : iContainer( &aContainer ) {}
    TSmbMusicAPLib_back_insert_iterator& operator=( typename Container::const_reference aVal )
        {
        // :leavescan off:
        iContainer->Push_backL( aVal );
        // :leavescan on:
        return *this;
        }
    TSmbMusicAPLib_back_insert_iterator& operator*()
        {
        return *this;
        }
    TSmbMusicAPLib_back_insert_iterator& operator++()
        {
        return *this;
        }
    TSmbMusicAPLib_back_insert_iterator operator++( int )
        {
        return *this;
        }

protected:
    Container*  iContainer;
    };  // end of TSmbMusicAPLib_back_insert_iterator
/**
 *  憓擖斀暅巕傪曉偡僿儖僷乕丅
 *
 *  堷悢 aContainer 偐傜僐儞僥僫偺宆傪墘銏寛掕偟丄憓擖斀暅巕傪惗惉偟偰曉偡丅
 *
 *  @param[out] aContainer  懳徾僐儞僥僫丅
 *  @return @a aContainer 偺枛旜偵捛壛弌椡偡傞憓擖斀暅巕丅
 *  @attention  杮儊僜僢僪帺懱偼 Leave 偟側偄偑丄L晅偒娭悢柤偲偟偰偄傞丅
 *              曉媝僆僽僕僃僋僩傪巊偊偽 Leave 偟偆傞偺偱丄杮僿儖僷乕偺幚嵺偺巊梡宍懺偐傜峫偊傞偲丄
 *              偙偆偟偨曽偑 L convention 杮棃偺栚揑偵揔偆偲敾抐偟偨丅
 */
template<typename Container>
inline TSmbMusicAPLib_back_insert_iterator<Container> Back_inserterL( Container& aContainer )
    {
    return TSmbMusicAPLib_back_insert_iterator<Container>( aContainer );
    }

/**
 *  憓擖斀暅巕丅
 *
 *  僐儞僥僫偵梫慺傪捛壛偡傞偨傔偺憓擖斀暅巕丅
 *  僐儞僥僫偺儊儞僶 Push_frontL(const T&) 傪巊偭偰丄愭摢偵梫慺傪捛壛弌椡偡傞丅
 */
template<typename Container>
class TSmbMusicAPLib_front_insert_iterator : public TSmbMusicAPLib_iterator<TSmbMusicAPLib_output_iterator_tag, void, void, void, void>
    {
public:
    typedef Container   container_type;

public:
    explicit TSmbMusicAPLib_front_insert_iterator( Container& aContainer ) : iContainer( &aContainer ) {}
    TSmbMusicAPLib_front_insert_iterator& operator=( typename Container::const_reference aVal )
        {
        // :leavescan off:
        iContainer->Push_frontL( aVal );
        // :leavescan on:
        return *this;
        }
    TSmbMusicAPLib_front_insert_iterator& operator*()
        {
        return *this;
        }
    TSmbMusicAPLib_front_insert_iterator& operator++()
        {
        return *this;
        }
    TSmbMusicAPLib_front_insert_iterator operator++( int )
        {
        return *this;
        }

protected:
    Container* iContainer;
    };  // end of TSmbMusicAPLib_front_insert_iterator
/**
 *  憓擖斀暅巕傪曉偡僿儖僷乕丅
 *
 *  堷悢 aContainer 偐傜僐儞僥僫偺宆傪墘銏寛掕偟丄憓擖斀暅巕傪惗惉偟偰曉偡丅
 *
 *  @param[out] aContainer  懳徾僐儞僥僫丅
 *  @return @a aContainer 偺愭摢偵捛壛弌椡偡傞憓擖斀暅巕丅
 *  @attention  杮儊僜僢僪帺懱偼 Leave 偟側偄偑丄L晅偒娭悢柤偲偟偰偄傞丅
 *              曉媝僆僽僕僃僋僩傪巊偊偽 Leave 偟偆傞偺偱丄杮僿儖僷乕偺幚嵺偺巊梡宍懺偐傜峫偊傞偲丄
 *              偙偆偟偨曽偑 L convention 杮棃偺栚揑偵揔偆偲敾抐偟偨丅
 */
template<typename Container>
inline TSmbMusicAPLib_front_insert_iterator<Container> Front_inserterL( Container& aContainer )
    {
    return TSmbMusicAPLib_front_insert_iterator<Container>( aContainer );
    }

/**
 *  憓擖斀暅巕丅
 *
 *  僐儞僥僫偵梫慺傪捛壛偡傞偨傔偺憓擖斀暅巕丅
 *  僐儞僥僫偺儊儞僶 InsertL(Iterator, const T&) 傪巊偭偰丄巜掕埵抲偵梫慺傪憓擖偡傞丅
 */
template<typename Container>
class TSmbMusicAPLib_insert_iterator : public TSmbMusicAPLib_iterator<TSmbMusicAPLib_output_iterator_tag, void, void, void, void>
    {
public:
    typedef Container   container_type;

public:
    TSmbMusicAPLib_insert_iterator( Container& aContainer, typename Container::iterator aIter ) : iContainer(&aContainer), iIter(aIter) {}
    TSmbMusicAPLib_insert_iterator& operator=( const typename Container::const_reference aVal )
        {
        // :leavescan off:
        iIter = iContainer->InsertL( iIter, aVal );
        // :leavescan on:
        ++iIter;
        return *this;
        }
    TSmbMusicAPLib_insert_iterator& operator*()
        {
        return *this;
        }
    TSmbMusicAPLib_insert_iterator& operator++()
        {
        return *this;
        }
    TSmbMusicAPLib_insert_iterator& operator++( int )
        {
        return *this;
        }

protected:
    Container* iContainer;
    typename Container::iterator    iIter;
    };  // end of TSmbMusicAPLib_insert_iterator
/**
 *  憓擖斀暅巕傪曉偡僿儖僷乕丅
 *
 *  堷悢 aContainer 偐傜僐儞僥僫偺宆傪墘銏寛掕偟丄憓擖斀暅巕傪惗惉偟偰曉偡丅
 *
 *  @param[out] aContainer  懳徾僐儞僥僫丅
 *  @param[in]  aIter       憓擖埵抲丅
 *  @return @a aContainer 偺埵抲 @a aIter 偵梫慺傪憓擖偡傞憓擖斀暅巕丅
 */
template<typename Container, typename Iterator>
inline TSmbMusicAPLib_insert_iterator<Container> Inserter( Container& aContainer, Iterator aIter )
    {
    return TSmbMusicAPLib_insert_iterator<Container>( aContainer, typename Container::iterator(aIter) );
    }




namespace detail {

using MUSICAPLIB_NAMESPACE::TSmbMusicAPLib_iterator_traits;
using MUSICAPLIB_NAMESPACE::TSmbMusicAPLib_iterator;
/**
 *  '僲乕儅儖' 側斀暅巕傪娙扨偵嶌傞偨傔偺傾僟僾僞丅
 *
 *  旕class側斀暅巕(揟宆揑偵偼 pointer)傪丄斀暅巕僋儔僗偲偟偰巊梡偱偒傞傛偆偵偡傞丅
 */
template<typename Iterator, typename Container>
class TSmbMusicAPLib_normal_iterator
    {
public:
    typedef typename TSmbMusicAPLib_iterator_traits<Iterator>::iterator_category    iterator_category;  /**< 斀暅巕偺庬椶傪昞偡僇僥僑儕丅   */
    typedef typename TSmbMusicAPLib_iterator_traits<Iterator>::value_type           value_type;         /**< 斀暅巕偑埖偆梫慺偺宆丅         */
    typedef typename TSmbMusicAPLib_iterator_traits<Iterator>::difference_type      difference_type;    /**< 斀暅巕娫偺嵎(嫍棧)傪昞偡宆丅   */
    typedef typename TSmbMusicAPLib_iterator_traits<Iterator>::pointer              pointer;            /**< 斀暅巕偑埖偆梫慺偺億僀儞僞宆丅 */
    typedef typename TSmbMusicAPLib_iterator_traits<Iterator>::reference            reference;          /**< 斀暅巕偑埖偆梫慺偺嶲徠宆丅     */

public:
    TSmbMusicAPLib_normal_iterator() : iCurrent(Iterator()) {}
    explicit TSmbMusicAPLib_normal_iterator( const Iterator& aRhs ) : iCurrent(aRhs) {}
    template<typename Iter>
    TSmbMusicAPLib_normal_iterator( const TSmbMusicAPLib_normal_iterator<Iter, Container>& aRhs ) : iCurrent(aRhs.Base()) {}
    reference operator*() const
        {
        return *iCurrent;
        }
    pointer operator->() const
        {
        return iCurrent;
        }
    TSmbMusicAPLib_normal_iterator& operator++()
        {
        ++iCurrent;
        return *this;
        }
    TSmbMusicAPLib_normal_iterator operator++( int )
        {
        return TSmbMusicAPLib_normal_iterator( iCurrent++ );
        }
    TSmbMusicAPLib_normal_iterator& operator--()
        {
        --iCurrent;
        return *this;
        }
    TSmbMusicAPLib_normal_iterator operator--( int )
        {
        return TSmbMusicAPLib_normal_iterator( iCurrent-- );
        }
    reference operator[]( difference_type aDiffer ) const
        {
        return iCurrent[ aDiffer ];
        }
    TSmbMusicAPLib_normal_iterator& operator+=( const difference_type& aDiffer )
        {
        iCurrent += aDiffer;
        return *this;
        }
    TSmbMusicAPLib_normal_iterator operator+( const difference_type& aDiffer ) const
        {
        return TSmbMusicAPLib_normal_iterator( iCurrent + aDiffer );
        }
    TSmbMusicAPLib_normal_iterator& operator-=( const difference_type& aDiffer )
        {
        iCurrent -= aDiffer;
        return *this;
        }
    TSmbMusicAPLib_normal_iterator operator-( const difference_type& aDiffer ) const
        {
        return TSmbMusicAPLib_normal_iterator( iCurrent - aDiffer );
        }
    const Iterator& Base() const
        {
        return iCurrent;
        }

protected:
    Iterator iCurrent;
    };  // end of TSmbMusicAPLib_normal_iterator

// 慜曽岦斀暅巕偺梫審
template<typename IteratorL, typename IteratorR, typename Container>
inline TBool operator==( const TSmbMusicAPLib_normal_iterator<IteratorL, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<IteratorR, Container>& aRhs )
    {
    return aLhs.Base() == aRhs.Base();
    }

template<typename Iterator, typename Container>
inline TBool operator==( const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aRhs )
    {
    return aLhs.Base() == aRhs.Base();
    }

template<typename IteratorL, typename IteratorR, typename Container>
inline TBool operator!=( const TSmbMusicAPLib_normal_iterator<IteratorL, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<IteratorR, Container>& aRhs )
    {
    return aLhs.Base() != aRhs.Base();
    }

template<typename Iterator, typename Container>
inline TBool operator!=( const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aRhs )
    {
    return aLhs.Base() != aRhs.Base();
    }

// 儔儞僟儉傾僋僙僗斀暅巕偺梫審
template<typename IteratorL, typename IteratorR, typename Container>
inline TBool operator<( const TSmbMusicAPLib_normal_iterator<IteratorL, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<IteratorR, Container>& aRhs )
    {
    return aLhs.Base() < aRhs.Base();
    }

template<typename Iterator, typename Container>
inline TBool operator<( const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aRhs )
    {
    return aLhs.Base() < aRhs.Base();
    }

template<typename IteratorL, typename IteratorR, typename Container>
inline TBool operator>( const TSmbMusicAPLib_normal_iterator<IteratorL, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<IteratorR, Container>& aRhs )
    {
    return aLhs.Base() > aRhs.Base();
    }

template<typename Iterator, typename Container>
inline TBool operator>( const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aRhs )
    {
    return aLhs.Base() > aRhs.Base();
    }

template<typename IteratorL, typename IteratorR, typename Container>
inline TBool operator<=( const TSmbMusicAPLib_normal_iterator<IteratorL, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<IteratorR, Container>& aRhs )
    {
    return aLhs.Base() <= aRhs.Base();
    }

template<typename Iterator, typename Container>
inline TBool operator<=( const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aRhs )
    {
    return aLhs.Base() <= aRhs.Base();
    }

template<typename IteratorL, typename IteratorR, typename Container>
inline TBool operator>=( const TSmbMusicAPLib_normal_iterator<IteratorL, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<IteratorR, Container>& aRhs )
    {
    return aLhs.Base() >= aRhs.Base();
    }

template<typename Iterator, typename Container>
inline TBool operator>=( const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aRhs )
    {
    return aLhs.Base() >= aRhs.Base();
    }

// iterator/const_iterator 偺儈僢僋僗懳嶔丅
template<typename IteratorL, typename IteratorR, typename Container>
inline typename TSmbMusicAPLib_normal_iterator<IteratorL, Container>::difference_type operator-( const TSmbMusicAPLib_normal_iterator<IteratorL, Container>& aLhs, const TSmbMusicAPLib_normal_iterator<IteratorR, Container>& aRhs )
    {
    return aLhs.Base() - aRhs.Base();
    }
template<typename Iterator, typename Container>
inline TSmbMusicAPLib_normal_iterator<Iterator, Container> operator+( typename TSmbMusicAPLib_normal_iterator<Iterator, Container>::difference_type aDiffer, const TSmbMusicAPLib_normal_iterator<Iterator, Container>& aIter )
    {
    return TSmbMusicAPLib_normal_iterator<Iterator, Container>( aIter.Base() + aDiffer );
    }

}   // end of namespace detail

MUSICAPLIB_NAMESPACE_END
SEMCJ_NAMESPACE_END

#endif  // __TSMBMUSICAPLib_ITERATOR_H__

/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -