📄 tsmbmusicaplibfunctional.h
字号:
* 儊儞僶娭悢傾僟僾僞丅
*
* 嶲徠丒堷悢側偟丒旕const丒栠傝抣偁傝
*/
template <class Result, class T>
class TSmbMusicAPLib_mem_fun_ref_t : public TSmbMusicAPLib_unary_function<T, Result>
{
public:
explicit TSmbMusicAPLib_mem_fun_ref_t( Result (T::*aOp)() ) : iOp(aOp) {}
Result operator()( T& aRef ) const
{
return (aRef.*iOp)();
}
private:
Result (T::*iOp)();
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 嶲徠丒堷悢側偟丒const丒栠傝抣偁傝
*/
template <class Result, class T>
class TSmbMusicAPLib_const_mem_fun_ref_t : public TSmbMusicAPLib_unary_function<T, Result>
{
public:
explicit TSmbMusicAPLib_const_mem_fun_ref_t( Result (T::*aOp)() const ) : iOp(aOp) {}
Result operator()( const T& aRef ) const
{
return (aRef.*iOp)();
}
private:
Result (T::*iOp)() const;
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 億僀儞僞丒堦堷悢丒旕const丒栠傝抣偁傝
*/
template <class Result, class T, class Arg>
class TSmbMusicAPLib_mem_fun1_t : public TSmbMusicAPLib_binary_function<T*, Arg, Result>
{
public:
explicit TSmbMusicAPLib_mem_fun1_t( Result (T::*aOp)(Arg) ) : iOp(aOp) {}
Result operator()( T* aPtr, Arg a1 ) const
{
return (aPtr->*iOp)(a1);
}
private:
Result (T::*iOp)(Arg);
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 億僀儞僞丒堦堷悢丒const丒栠傝抣偁傝
*/
template <class Result, class T, class Arg>
class TSmbMusicAPLib_const_mem_fun1_t : public TSmbMusicAPLib_binary_function<const T*, Arg, Result>
{
public:
explicit TSmbMusicAPLib_const_mem_fun1_t( Result (T::*aOp)(Arg) const ) : iOp(aOp) {}
Result operator()( const T* aPtr, Arg a1 ) const
{
return (aPtr->*iOp)(a1);
}
private:
Result (T::*iOp)(Arg) const;
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 嶲徠丒堦堷悢丒旕const丒栠傝抣偁傝
*/
template <class Result, class T, class Arg>
class TSmbMusicAPLib_mem_fun1_ref_t : public TSmbMusicAPLib_binary_function<T, Arg, Result>
{
public:
explicit TSmbMusicAPLib_mem_fun1_ref_t( Result (T::*aOp)(Arg) ) : iOp(aOp) {}
Result operator()( T& aRef, Arg a1 ) const
{
return (aRef.*iOp)(a1);
}
private:
Result (T::*iOp)(Arg);
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 嶲徠丒堦堷悢丒const丒栠傝抣偁傝
*/
template <class Result, class T, class Arg>
class TSmbMusicAPLib_const_mem_fun1_ref_t : public TSmbMusicAPLib_binary_function<T, Arg, Result>
{
public:
explicit TSmbMusicAPLib_const_mem_fun1_ref_t( Result (T::*aOp)(Arg) const ) : iOp(aOp) {}
Result operator()( const T& aRef, Arg a1 ) const
{
return (aRef.*iOp)(a1);
}
private:
Result (T::*iOp)(Arg) const;
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 億僀儞僞丒堷悢側偟丒旕const
*/
template <class T>
class TSmbMusicAPLib_mem_fun_t<void, T> : public TSmbMusicAPLib_unary_function<T*, void>
{
public:
explicit TSmbMusicAPLib_mem_fun_t( void (T::*aOp)() ) : iOp(aOp) {}
void operator()( T* aPtr ) const
{
(aPtr->*iOp)();
}
private:
void (T::*iOp)();
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 億僀儞僞丒堷悢側偟丒const
*/
template <class T>
class TSmbMusicAPLib_const_mem_fun_t<void, T> : public TSmbMusicAPLib_unary_function<const T*, void>
{
public:
explicit TSmbMusicAPLib_const_mem_fun_t( void (T::*aOp)() const ) : iOp(aOp) {}
void operator()( const T* aPtr ) const
{
(aPtr->*iOp)();
}
private:
void (T::*iOp)() const;
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 嶲徠丒堷悢側偟丒旕const
*/
template <class T>
class TSmbMusicAPLib_mem_fun_ref_t<void, T> : public TSmbMusicAPLib_unary_function<T, void>
{
public:
explicit TSmbMusicAPLib_mem_fun_ref_t( void (T::*aOp)() ) : iOp(aOp) {}
void operator()( T& aRef ) const
{
(aRef.*iOp)();
}
private:
void (T::*iOp)();
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 嶲徠丒堷悢側偟丒const
*/
template <class T>
class TSmbMusicAPLib_const_mem_fun_ref_t<void, T> : public TSmbMusicAPLib_unary_function<T, void>
{
public:
explicit TSmbMusicAPLib_const_mem_fun_ref_t( void (T::*aOp)() const ) : iOp(aOp) {}
void operator()( const T& aRef ) const
{
(aRef.*iOp)();
}
private:
void (T::*iOp)() const;
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 億僀儞僞丒堦堷悢丒旕const
*/
template <class T, class Arg>
class TSmbMusicAPLib_mem_fun1_t<void, T, Arg> : public TSmbMusicAPLib_binary_function<T*, Arg, void>
{
public:
explicit TSmbMusicAPLib_mem_fun1_t( void (T::*aOp)(Arg) ) : iOp(aOp) {}
void operator()( T* aPtr, Arg a1 ) const
{
(aPtr->*iOp)(a1);
}
private:
void (T::*iOp)(Arg);
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 億僀儞僞丒堦堷悢丒const
*/
template <class T, class Arg>
class TSmbMusicAPLib_const_mem_fun1_t<void, T, Arg> : public TSmbMusicAPLib_binary_function<const T*, Arg, void>
{
public:
explicit TSmbMusicAPLib_const_mem_fun1_t( void (T::*aOp)(Arg) const ) : iOp(aOp) {}
void operator()( const T* aPtr, Arg a1 ) const
{
(aPtr->*iOp)(a1);
}
private:
void (T::*iOp)(Arg) const;
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 嶲徠丒堦堷悢丒旕const
*/
template <class T, class Arg>
class TSmbMusicAPLib_mem_fun1_ref_t<void, T, Arg> : public TSmbMusicAPLib_binary_function<T, Arg, void>
{
public:
explicit TSmbMusicAPLib_mem_fun1_ref_t( void (T::*aOp)(Arg) ) : iOp(aOp) {}
void operator()( T& aRef, Arg a1 ) const
{
(aRef.*iOp)(a1);
}
private:
void (T::*iOp)(Arg);
};
/**
* 儊儞僶娭悢傾僟僾僞丅
*
* 栠傝抣側偟(void)梡偺摿庩壔僶乕僕儑儞丅
* 嶲徠丒堦堷悢丒const
*/
template <class T, class Arg>
class TSmbMusicAPLib_const_mem_fun1_ref_t<void, T, Arg> : public TSmbMusicAPLib_binary_function<T, Arg, void>
{
public:
explicit TSmbMusicAPLib_const_mem_fun1_ref_t( void (T::*aOp)(Arg) const ) : iOp(aOp) {}
void operator()( const T& aRef, Arg a1 ) const
{
(aRef.*iOp)(a1);
}
private:
void (T::*iOp)(Arg) const;
};
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 億僀儞僞丒堷悢側偟丒旕const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T>
inline TSmbMusicAPLib_mem_fun_t<Result, T> Mem_fun( Result (T::*aOp)() )
{
return TSmbMusicAPLib_mem_fun_t<Result, T>( aOp );
}
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 億僀儞僞丒堷悢側偟丒const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T>
inline TSmbMusicAPLib_const_mem_fun_t<Result, T> Mem_fun( Result (T::*aOp)() const )
{
return TSmbMusicAPLib_const_mem_fun_t<Result, T>( aOp );
}
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 嶲徠丒堷悢側偟丒旕const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T>
inline TSmbMusicAPLib_mem_fun_ref_t<Result, T> Mem_fun_ref( Result (T::*aOp)() )
{
return TSmbMusicAPLib_mem_fun_ref_t<Result, T>( aOp );
}
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 嶲徠丒堷悢側偟丒const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T>
inline TSmbMusicAPLib_const_mem_fun_ref_t<Result, T> Mem_fun_ref( Result (T::*aOp)() const )
{
return TSmbMusicAPLib_const_mem_fun_ref_t<Result, T>( aOp );
}
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 億僀儞僞丒堦堷悢丒旕const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T, class Arg>
inline TSmbMusicAPLib_mem_fun1_t<Result, T, Arg> Mem_fun( Result (T::*aOp)(Arg) )
{
return TSmbMusicAPLib_mem_fun1_t<Result, T, Arg>( aOp );
}
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 億僀儞僞丒堦堷悢丒const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T, class Arg>
inline TSmbMusicAPLib_const_mem_fun1_t<Result, T, Arg> Mem_fun( Result (T::*aOp)(Arg) const )
{
return TSmbMusicAPLib_const_mem_fun1_t<Result, T, Arg>( aOp );
}
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 嶲徠丒堦堷悢丒旕const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T, class Arg>
inline TSmbMusicAPLib_mem_fun1_ref_t<Result, T, Arg> Mem_fun_ref( Result (T::*aOp)(Arg) )
{
return TSmbMusicAPLib_mem_fun1_ref_t<Result, T, Arg>( aOp );
}
/**
* 儊儞僶娭悢傾僟僾僞傪曉偡僿儖僷乕丅
*
* @param[in] aOp 儊儞僶娭悢傊偺億僀儞僞丅
* 嶲徠丒堦堷悢丒const
* @return @a aOp 傪娭悢僆僽僕僃僋僩偱偁傞偐偺傛偆偵尒偣傞傾僟僾僞丅
*/
template <class Result, class T, class Arg>
inline TSmbMusicAPLib_const_mem_fun1_ref_t<Result, T, Arg> Mem_fun_ref( Result (T::*aOp)(Arg) const )
{
return TSmbMusicAPLib_const_mem_fun1_ref_t<Result, T, Arg>( aOp );
}
/**
* 抣儁傾偺戞侾梫慺傪曉偡僙儗僋僞丅
*
* @see TSmbMusicAPLibPair::iFirst
*/
template <class Pair>
struct TSmbMusicAPLib_select1st : public TSmbMusicAPLib_unary_function<Pair, typename Pair::first_type>
{
typename Pair::first_type& operator()( Pair& aPair ) const
{
return aPair.iFirst;
}
const typename Pair::first_type& operator()( const Pair& aPair ) const
{
return aPair.iFirst;
}
};
/**
* 抣儁傾偺戞俀梫慺傪曉偡僙儗僋僞丅
*
* @see TSmbMusicAPLibPair::iSecond
*/
template <class Pair>
struct TSmbMusicAPLib_select2nd : public TSmbMusicAPLib_unary_function<Pair, typename Pair::second_type>
{
typename Pair::second_type& operator()( Pair& aPair ) const
{
return aPair.iSecond;
}
const typename Pair::second_type& operator()( const Pair& aPair ) const
{
return aPair.iSecond;
}
};
/**
* 斈梡媡嶲徠僼傽儞僋僞丅
*
* 僐儞僥僫傪億僀儞僞僐儞僥僫偲偟偰巊偆嵺偵敪惗偡傞晄曋傪寉尭偡傞丅
* T* 傪庴偗庢傝 const T& 傪曉偡丅
*/
struct TSmbMusicAPLib_Dereference
{
template<typename T>
const T& operator()( const T* p ) const { return *p; }
/**
* 摍抣斾妑僼傽儞僋僞丅
*
* std::equal_to<T> 偺億僀儞僞僶乕僕儑儞丅
* STL僐儞僥僫傪億僀儞僞僐儞僥僫偲偟偰巊偆嵺偵敪惗偡傞晄曋傪寉尭偡傞丅
*
* @note 億僀儞僞偺傛偆偵摦嶌偡傞僆僽僕僃僋僩(ex. 僗儅乕僩億僀儞僞, 僀僥儗乕僞摍)
* 偵傕巊偊傞壜擻惈偑崅偄偺偱 T* 偱偼側偔 T 偺抣搉偟偲偟偰偄傞丅
*/
template<typename T>
struct equal_to : public TSmbMusicAPLib_binary_function<T, T, TBool>
{
TBool operator()( T p1, T p2 ) const { return *p1 == *p2; }
};
/**
* 摍抣斾妑僼傽儞僋僞丅
*
* TSmbMusicAPLib_Dereference::equal_to 偺宆巜掕晄梫僶乕僕儑儞丅<br>
* 偨偩偟曄姺壜擻偱偼側偄(僶僀儞僟摍 TSmbMusicAPLib_binary_function 傪尩奿偵梫媮偡傞晹昳偵偼搉偣側偄)丅
*
* @note 億僀儞僞偺傛偆偵摦嶌偡傞僆僽僕僃僋僩(ex. 僗儅乕僩億僀儞僞, 僀僥儗乕僞摍)
* 偵傕巊偊傞壜擻惈偑崅偄偺偱 T* 偱偼側偔 T 偺抣搉偟偲偟偰偄傞丅
*/
struct Equal_To
{
template<typename T>
TBool operator()( T p1, T p2 ) const { return TSmbMusicAPLib_Dereference::equal_to<T>()( p1, p2 ); }
};
/**
* 摍壙斾妑僼傽儞僋僞丅
*
* std::less<T> 偺億僀儞僞僶乕僕儑儞丅
* STL僐儞僥僫傪億僀儞僞僐儞僥僫偲偟偰巊偆嵺偵敪惗偡傞晄曋傪寉尭偡傞丅
*
* @note 億僀儞僞偺傛偆偵摦嶌偡傞僆僽僕僃僋僩(ex. 僗儅乕僩億僀儞僞, 僀僥儗乕僞摍)
* 偵傕巊偊傞壜擻惈偑崅偄偺偱 T* 偱偼側偔 T 偺抣搉偟偲偟偰偄傞丅
*/
template<typename T>
struct less : public TSmbMusicAPLib_binary_function<T, T, TBool>
{
TBool operator()( T p1, T p2 ) const { return *p1 < *p2; }
};
/**
* 摍壙斾妑僼傽儞僋僞丅
*
* TSmbMusicAPLib_Dereference::less 偺宆巜掕晄梫僶乕僕儑儞丅<br>
* 偨偩偟曄姺壜擻偱偼側偄(僶僀儞僟摍 TSmbMusicAPLib_binary_function 傪尩奿偵梫媮偡傞晹昳偵偼搉偣側偄)丅
*
* @note 億僀儞僞偺傛偆偵摦嶌偡傞僆僽僕僃僋僩(ex. 僗儅乕僩億僀儞僞, 僀僥儗乕僞摍)
* 偵傕巊偊傞壜擻惈偑崅偄偺偱 T* 偱偼側偔 T 偺抣搉偟偲偟偰偄傞丅
*/
struct Less
{
template<typename T>
TBool operator()( T p1, T p2 ) const { return TSmbMusicAPLib_Dereference::less<T>()( p1, p2 ); }
};
}; // end of TSmbMusicAPLib_Dereference
MUSICAPLIB_NAMESPACE_END
SEMCJ_NAMESPACE_END
#endif // __TSMBMUSICAPLIB_FUNCTIONAL_H__
/* Copyright (C) 2006 Sony Ericsson Mobile Communications Japan, Inc. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -