chxavcleanstring.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:3k
源码类别:

Symbian

开发平台:

C/C++

  1. /************************************************************************
  2.  * chxavcleanstring.h
  3.  * ------------------
  4.  *
  5.  * Synopsis:
  6.  * For on-the-fly conversion to a descriptor (from const char* or resource).
  7.  * Cleanup is handled automatically.
  8.  *
  9.  * Target:
  10.  * Symbian OS
  11.  *
  12.  *
  13.  * (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
  14.  *
  15.  *****************************************************************************/
  16. #ifndef _chxavcleanstring_h_
  17. #define _chxavcleanstring_h_
  18. // Symbian includes...
  19. #include <aknpopup.h>
  20. #include <akntitle.h>
  21. #include <eikenv.h>
  22. #include <coemain.h>
  23. // Helix includes...
  24. #include "hxassert.h"
  25. // Include from this project...
  26. #include "chxavstringutils.h"
  27. // class CHXAvCleanString
  28. class CHXAvCleanString
  29. {
  30. public:
  31.     explicit CHXAvCleanString(TInt resId)
  32.     {
  33. m_pText = CEikonEnv::Static()->AllocReadResourceLC(resId);
  34.     }
  35.     explicit CHXAvCleanString(const CHXString& str)
  36.     {
  37. m_pText = CHXAvStringUtils::AllocTextL(str);
  38.         CleanupStack::PushL(m_pText);
  39.     } 
  40.     // format with int (%d) argument
  41.     CHXAvCleanString(TInt resId, TInt arg)
  42.     {
  43.         m_pText = CHXAvStringUtils::AllocResFormatTextL(resId, arg);
  44.         CleanupStack::PushL(m_pText);
  45.     }
  46.     // format with float (%f) argument
  47.     CHXAvCleanString(TInt resId, double arg)
  48.     {
  49.         m_pText = CHXAvStringUtils::AllocResFormatTextL(resId, arg);
  50.         CleanupStack::PushL(m_pText);
  51.     }
  52.     // format with string descriptor (%S) argument
  53.     CHXAvCleanString(TInt resId, const TDesC& desc)
  54.     {
  55.         m_pText = CHXAvStringUtils::AllocResFormatTextL(resId, desc);
  56.         CleanupStack::PushL(m_pText);
  57.     }
  58.     // format; int %d argument
  59.     CHXAvCleanString(const TDesC& formatString, TInt arg)
  60.     {
  61.         m_pText = CHXAvStringUtils::AllocFormatTextL(formatString, arg);
  62.         CleanupStack::PushL(m_pText);
  63.     }
  64.    
  65.     // explicit conversions are safer; funny semantic aids ease-of-use
  66.     // operator const TDesC&() const { return *m_pText; }
  67.     // operator TDesC&() { return *m_pText; }
  68.     HBufC* operator&() { return m_pText; }
  69.     TDesC& operator()()  { return *m_pText; }
  70.     const HBufC* operator&() const { return m_pText; }
  71.     const TDesC& operator()() const { return *m_pText; }
  72.     ~CHXAvCleanString(){ CleanupStack::PopAndDestroy(); }
  73. private:
  74.     // automatic instanciation only, no funny stuff
  75.     void * operator new(size_t);
  76.     CHXAvCleanString& operator=(const CHXAvCleanString&);
  77.     CHXAvCleanString(const CHXAvCleanString&);
  78.     HBufC* m_pText;
  79. };
  80. #endif //_chxavcleanstring_h_