rsmbmusicaplibmap.h

来自「索爱手机代码」· C头文件 代码 · 共 742 行 · 第 1/3 页

H
742 行
字号
    template<class T>
    static void Destroy( T& aObj )
        {
        TSmbMusicAPLib_Delete::Destroy( aObj.iFirst );
        }
    };  // end of struct TSmbMusicAPLib_Delete1st

/**
 *  僐儞僥僫偵僥儞僾儗乕僩堷悢偲偟偰梌偊傞偙偲偑偱偒傞攋婞億儕僔乕丅
 *
 *  懳徾偑 TSmbMusicAPLibPair 宆偱偁傝丄 TSmbMusicAPLibPair::iSecond 偑 Heap object 偱偁傞偲偺慜採偱丄delete 墘嶼巕傪揔梡偡傞丅
 */
struct TSmbMusicAPLib_Delete2nd
    {
    template<class T>
    static void Destroy( T& aObj )
        {
        TSmbMusicAPLib_Delete::Destroy( aObj.iSecond );
        }
    };  // end of struct TSmbMusicAPLib_Delete2nd

/**
 *  僐儞僥僫偵僥儞僾儗乕僩堷悢偲偟偰梌偊傞偙偲偑偱偒傞攋婞億儕僔乕丅
 *
 *  懳徾偑 TSmbMusicAPLibPair 宆偱偁傝丄 TSmbMusicAPLibPair::iFirst, TSmbMusicAPLibPair::iSecond 偑嫟偵 Heap object 偱偁傞偲偺慜採偱丄delete 墘嶼巕傪揔梡偡傞丅
 */
struct TSmbMusicAPLib_DeletePair
    {
    template<class T>
    static void Destroy( T& aObj )
        {
        TSmbMusicAPLib_Delete::Destroy( aObj.iFirst );
        TSmbMusicAPLib_Delete::Destroy( aObj.iSecond );
        }
    };  // end of struct TSmbMusicAPLib_DeletePair

MUSICAPLIB_NAMESPACE_END
SEMCJ_NAMESPACE_END

#include    "RSmbMusicAPLibMap.inl"


/** @page Usage_RSmbMusicAPLibMap 楢憐婰壇僐儞僥僫 RSmbMusicAPLibMap 偺棙梡曽朄
 *  楢憐婰壇僐儞僥僫 RSmbMusicAPLibMap 偺棙梡曽朄傪丄僒儞僾儖僐乕僪傪梡偄偰帵偡丅
 *
 *  - 梊旛抦幆
 *      -# API愝寁偺儌僨儖偼STL(C++ Standard Template Library)偺 std::map 偱偁傞丅
 *         偨偩偟丄儊僜僢僪柤偼 SymbianOS 偺僐乕僨傿儞僌婯懃丒姷椺偵崌傢偣偨傕偺偲偟偰偄傞(傾儖僼傽儀僢僩戝暥帤偱巒傔傞丄L convention 摍)丅
 *      -# SymbianOS 屌桳偺巇條丒惂栺偵崌傢偣偰丄婔偽偔偐偺撈帺婡擻傪晅壛偟偰偄傞丅
 *  - 儊儌儕儕乕僋懳嶔 - SymbianOS 摿桳偺 'leave 傊偺旛偊'
 *      - 杮僋儔僗偵尷偭偨偙偲偱偼側偄偑丄SymbianOS 偵偍偄偰偼丄摦揑儊儌儕儕僜乕僗(Heap)傪巊偆僆僽僕僃僋僩傪埖偆応崌丄
 *        'leave 偵旛偊傞' 偺堄幆丒懳嶔僐乕僪偑昁恵偱偁傞丅偙傟偼丄C++昗弨巇條偺 exception 傪僒億乕僩奜偲偟丄
 *        撈帺偺 CleanupStack + leave 偺儊僇僯僘儉傪嵦偭偨摨OS偱偼丄偄偨偟偐偨偺側偄偙偲丅
 *      -# 僀儞僗僞儞僗曄悢偲偟偰梡偄傞応崌丅
 *          @code
 *  class CFoo : public CBase
 *      {
 *  public:
 *      static CFoo* NewLC();
 *      void ConstructL();
 *      ~CFoo();
 *      void DoSomethingL();
 *      ...
 *  private:
 *      CFoo();
 *      ...
 *  private:
 *      typedef RSmbMusicAPLibMap<TBarId, CBar*> TBarMap;   // CBar傊偺娭楢[1..*]偺幚憰宆
 *      TBarMap iBars;  // CBar傊偺娭楢[1..*]
 *      };
 *  ...
 *  CFoo* CFoo::NewLC()
 *      {
 *      CFoo* me = new(ELeave) CFoo();
 *      CleanupStack::PushL( me );
 *      me->ConstructL();
 *      return me;
 *      }
 *  CFoo::CFoo()
 *      : iBars()   // 僨僼僅儖僩僐儞僗僩儔僋僞偼 leave 偟側偄丅
 *      {
 *      }
 *  void CFoo::ConstructL()
 *      {
 *      ... iBars 偺弶婜壔 ...  // leave偑敪惗偟偆傞弶婜壔偼 2nd phase 僐儞僗僩儔僋僞偱丅
 *      }
 *  CFoo::~CFoo()
 *      {
 *      iBars.Release();    // R* 僋儔僗偺偍栺懇丅
 *      }
 *  void CFoo::DoSomethingL()
 *      {
 *      ... iBars 傪巊偭偰壗偐偡傞 ...      // C* 僋儔僗偼僨僗僩儔僋僞傪偁偰偵偱偒傞偐傜丄iBars 偺屄乆偺売強偛偲偺摿壔儕乕僋懳嶔偼尨懃晄梫丅
 *      }
 *          @endcode
 *      -# 僗僞僢僋僆僽僕僃僋僩(auto曄悢)偲偟偰梡偄傞応崌丅
 *          @code
 *  void CFoo::DoSomethingL()
 *      {
 *      typedef RSmbMusicAPLibMap<TBarId, CBar*> T; // {TBarId, CBar*} 偺楢憐攝楍傪偙偙偱巊偄偨偄偺丅
 *      T   bars;                       // 僨僼僅儖僩僐儞僗僩儔僋僞偼 leave 偟側偄丅
 *      CleanupReleasePushL( bars );    // leave敪惗偵旛偊傞丅
 *          ... bars 傪巊偭偰壗偐偡傞 ...
 *      CleanupStack::PopAndDestroy( &bars );   // T::Release() 偑屇傃弌偝傟傞丅
 *      }
 *          @endcode
 *  - 僒儞僾儖僐乕僪
 *      @code
 *  #include    "RSmbMusicAPLibMap.h"
 *  USING_NAMESPACE_MM
 *
 *  // C++ template 巊梡僐儞僥僫偺幚宆柤偼昁慠揑偵挿偨傜偟偔側傞丅
 *  // 僜乕僗僐乕僪偺壜撉惈丒曐庣惈傪岦忋偝偣傞偨傔偵偼丄typedef 傪梡偄偰丄儐僯乕僋僗僐乕僾撪偱揔愗偵娙堈側暿柤傪晅偗偰偍偔偲傛偄丅
 *  typedef RSmbMusicAPLibMap<TInt, const TText*>   T;
 *
 *  #include    <e32base.h>     // for Console::NewL()
 *  #include    <e32cons.h>     // for class CConsoleBase
 *
 *  LOCAL_D CConsoleBase* theConsole;
 *
 *  LOCAL_D void Print( const T& aContainer, const TDesC& aTitle=KNullDesC )
 *      {
 *      // aContainer 偺慡梫慺傪報帤偡傞丅
 *      // 仸STL僀僥儗乕僞峔暥傪梡偄偨揟宆椺偺僒儞僾儖傪寭偹傞丅
 *      if (aTitle.Length() > 0)
 *          theConsole->Printf( _L("%S"), &aTitle );
 *      theConsole->Printf( _L("[") );
 *      T::const_iterator end = aContainer.End();
 *      for (T::const_iterator i = aContainer.Begin(); i != end; ++i)
 *          theConsole->Printf( _L(" {%d,\"%s\"}"), i->iFirst, i->iSecond );
 *      theConsole->Printf( _L(" ]\n") );
 *      }
 *
 *  LOCAL_D void DoSampleL()
 *      {
 *      // {key, value} = {惍悢, 儕僥儔儖暥帤楍} 偺楢憐攝楍傪嶌惉偡傞丅
 *      T   m;
 *      CleanupReleasePushL( m );
 *
 *      // 弶婜抣傪擖傟傞丅
 *      m[ 10 ] = _S("10");
 *      m[ 20 ] = _S("20");
 *      m[ 30 ] = _S("30");
 *      Print( m );
 *
 *      // key=25 偑懚嵼偡傞偐偳偆偐挷傋傞丅
 *      {
 *          T::const_iterator i = m.Find( 25 );
 *          if (i == m.End())
 *              theConsole->Printf(_L("25 not found...\n") );
 *          else
 *              theConsole->Printf(_L("25 found!\n") );
 *      }
 *
 *      // 暋悢偺 key 15, 25, 35 傪堦搙偱憓擖偟偰傒傞丅
 *      const T::value_type v[] = {
 *          T::value_type( 15, _S("15") ),
 *          T::value_type( 25, _S("25") ),
 *          T::value_type( 35, _S("35") )
 *      };
 *      m.InsertL( v, v+3 );    // 慻傒崬傒攝楍傕僀僥儗乕僞偲偟偰摟夁揑偵埖偊傞偺偑STL棳丅
 *      Print( m );
 *
 *      // key=25 偑懚嵼偡傞偐偳偆偐挷傋傞丅
 *      {
 *          T::const_iterator i = m.Find( 25 );
 *          if (i == m.End())
 *              theConsole->Printf(_L("25 not found...\n") );
 *          else
 *              theConsole->Printf(_L("25 found!\n") );
 *      }
 *
 *      // key=25 傪嶍彍偡傞丅
 *      m.Erase( 25 );
 *      Print( m );
 *
 *      // key=25 偑懚嵼偡傞偐偳偆偐挷傋傞丅
 *      {
 *          T::const_iterator i = m.Find( 25 );
 *          if (i == m.End())
 *              theConsole->Printf(_L("25 not found...\n") );
 *          else
 *              theConsole->Printf(_L("25 found!\n") );
 *      }
 *
 *      // key=30 埲崀偺慡梫慺傪嶍彍偟偰傒傞丅
 *      m.Erase( m.Find(30), m.End() );
 *
 *      // m 偺摨抣僐僺乕偑傎偟偄応崌丅
 *      T* m2 = m.CloneLC();    // CleanupStack::PushL() 嵪傒偱曉偟偰偔傟傞丅
 *
 *      // 慡梫慺傪嶍彍偟偨偄側傜偙傟丅
 *      m.Clear();
 *
 *      // m, m2 偺撪梕傪報帤偟偰傒傞丅
 *      Print(  m , _L("m  = ") );
 *      Print( *m2, _L("m2 = ") );
 *
 *      theConsole->Getch();    // 報帤撪梕偑栚帇妋擣偱偒傞傛偆偵丄擖椡懸偪偱偄偭偨傫掆巭丅
 *
 *      // 巊偄廔傢偭偨傜儕僜乕僗攋婞丅
 *      // Release() 偺屇傃弌偟偼丄CleanupStack 偺堿偵塀傟偰偄傞偩偗丅
 *      CleanupStack::PopAndDestroy( m2 );  // 僗僞僢僋愭摢偼偙傟偺偼偢丅
 *      CleanupStack::PopAndDestroy( &m );  // 師偼偙傟偑愊傑傟偰偄傞偼偢丅
 *      }
 *
 *  LOCAL_C void MyMainL()
 *      {
 *      theConsole = Console::NewL( _L("TSample"), TSize(KConsFullScreen, KConsFullScreen) );
 *      CleanupStack::PushL(theConsole);
 *      DoSampleL();
 *      CleanupStack::PopAndDestroy();  // theConsole
 *      theConsole = NULL;
 *      }
 *
 *  GLDEF_C TInt E32Main()
 *      {
 *      __UHEAP_MARK;
 *      CTrapCleanup* cleanup = CTrapCleanup::New();
 *      TRAPD(error, MyMainL());
 *      __ASSERT_ALWAYS(!error, User::Panic( MYDLL_UID3, KErrArgument ));
 *      delete cleanup;
 *      __UHEAP_MARKEND;
 *      return(KErrNone);
 *      }
 *      @endcode
 *  - 僒儞僾儖僐乕僪偺幚峴寢壥
 *      @code
 *  [ {10,"10"} {20,"20"} {30,"30"} ]
 *  25 not found...
 *  [ {10,"10"} {15,"15"} {20,"20"} {25,"25"} {30,"30"} {35,"35"} ]
 *  25 found!
 *  [ {10,"10"} {15,"15"} {20,"20"} {30,"30"} {35,"35"} ]
 *  25 not found...
 *  m  = [  ]
 *  m2 = [ {10,"10"} {15,"15"} {20,"20"} ]
 *      @endcode
 */




#endif  // __RSMBMUSICAPLIB_MAP_H__

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

⌨️ 快捷键说明

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