Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

RmString.h

00001 //=============================================================================
00002 // filename: RmString.h                                                        
00003 //                                                                             
00004 //           ATI Research, Inc.                                                
00005 //           3D Application Research Group                                     
00006 //                                                                             
00007 // Description: String Class for RenderMonkey.                                 
00008 //                                                                             
00009 //=============================================================================
00010 //   (C) 2004 ATI Research, Inc.  All rights reserved.                         
00011 //=============================================================================
00012 
00013 #ifndef _RM_CORE_STRING_H_
00014 #define _RM_CORE_STRING_H_
00015 
00016 #include <Core/RmTypes.h>
00017 #include <Core/RmLinkedList.h>
00018 
00019 //=============================================================================
00027 //=============================================================================
00028 template < class RmCharType > 
00029 class  RmString    
00030 {
00031 private :
00032    
00033    //==========================================================================
00035    //
00038    //
00042    //
00049    //==========================================================================
00050    struct StringData
00051    {
00052        RM_INT32  iBufferSize;
00053        RM_INT32  iSize;
00054 
00055    }; // End of StringData
00056 
00057    //==========================================================================
00060    //==========================================================================
00061    StringData*       GetData();
00062 
00063    //==========================================================================
00066    //==========================================================================
00067    const StringData* GetData() const;
00068 
00069 public :
00070 
00071    //==========================================================================
00073    //==========================================================================
00074    RmString();
00075 
00076    //==========================================================================
00078    //==========================================================================
00079    RmString( /*[in]*/ const RmString<RmCharType> &src );
00080 
00081    //==========================================================================
00083    //==========================================================================
00084    RmString( /*[in]*/ const RmCharType* srcStr );
00085 
00086    //==========================================================================
00088    //==========================================================================
00089    RmString( /*[in]*/ const RM_INT32 reserveSize );
00090 
00091    //==========================================================================
00093    //==========================================================================
00094    ~RmString();
00095 
00096    //==========================================================================
00100    //==========================================================================
00101    RM_INT32 GetLength()         const    { return GetData()->iSize;       };
00102 
00103    //==========================================================================
00107    //==========================================================================
00108    RM_INT32 GetBufferSize()     const    { return GetData()->iBufferSize; };
00109 
00110    //==========================================================================
00114    //==========================================================================
00115    const RmCharType *GetBuffer() const   { return m_pBuffer;              };
00116 
00117    //==========================================================================
00118    // Reserve/Clear from memory
00119    //==========================================================================
00120 
00121    //==========================================================================
00126    //==========================================================================
00127    void Reserve( /*[in]*/ const RM_INT32 reserveSize );
00128 
00129    //==========================================================================
00133    //==========================================================================
00134    void Clear();
00135 
00136    //==========================================================================
00137    // Comparison
00138    //==========================================================================
00139     
00140    //==========================================================================
00150    //==========================================================================
00151    RM_INT32 Compare( /*[in]*/ const RmString<RmCharType> &src,
00152                      /*[in]*/ bool                        bCaseSensitive = true ) const;
00153 
00154    //==========================================================================
00164    //==========================================================================
00165    RM_INT32 Compare( /*[in]*/ const RmCharType* srcStr,
00166                      /*[in]*/ bool              bCaseSensitive = true ) const;
00167 
00168    //==========================================================================
00185    //==========================================================================
00186    RM_INT32 Find( /*[in]*/ const RmString<RmCharType> &src,
00187                    /*[in]*/ const RM_INT32              startIndex = 0,
00188                    /*[in]*/ bool                        bCaseSensitive = true) const;
00189 
00190    //==========================================================================
00207    //==========================================================================
00208    RM_INT32 Find( /*[in]*/ const RmCharType* srcStr,
00209                   /*[in]*/ const RM_INT32    startIndex = 0,
00210                   /*[in]*/ bool              bCaseSensitive = true) const;
00211 
00212    //==========================================================================
00229    //==========================================================================
00230    RM_INT32 Find( /*[in]*/  const RmCharType Char,
00231                   /*[in]*/ const RM_INT32   startIndex = 0,
00232                   /*[in]*/ bool             bCaseSensitive = true) const;
00233 
00234    //==========================================================================
00251    //==========================================================================
00252    RM_INT32 FindOneOf( /*[in]*/ const RmString<RmCharType> &src,
00253                        /*[in]*/ const RM_INT32              startIndex = 0,
00254                        /*[in]*/ bool                        bCaseSensitive = true) const;
00255 
00256    //==========================================================================
00273    //==========================================================================
00274    RM_INT32 FindOneOf( /*[in]*/ const RmCharType* srcStr,
00275                        /*[in]*/ const RM_INT32    startIndex = 0,
00276                        /*[in]*/ bool              bCaseSensitive = true) const;
00277 
00278    //==========================================================================
00295    //==========================================================================
00296    RM_INT32 FindFromEnd( /*[in]*/ const RmString<RmCharType> &src,
00297                          /*[in]*/ const RM_INT32              startIndex = -1,
00298                          /*[in]*/ bool                        bCaseSensitive = true) const;
00299 
00300    //==========================================================================
00317    //==========================================================================
00318    RM_INT32 FindFromEnd( /*[in]*/ const RmCharType*  srcStr,
00319                          /*[in]*/ const RM_INT32     startIndex = -1,
00320                          /*[in]*/ bool               bCaseSensitive = true) const;
00321 
00322    //==========================================================================
00339    //==========================================================================
00340    RM_INT32 FindFromEnd( /*[in]*/ const RmCharType Char,
00341                          /*[in]*/ const RM_INT32   startIndex = -1,
00342                          /*[in]*/ bool             bCaseSensitive = true) const;
00343 
00344    //==========================================================================
00352    //==========================================================================
00353    RM_INT32 FindOneOfFromEnd( /*[in]*/ const RmString<RmCharType> &src,
00354                               /*[in]*/ const RM_INT32              startIndex = -1,
00355                               /*[in]*/ bool                        bCaseSensitive = true) const;
00356 
00357    //==========================================================================
00365    //==========================================================================
00366    RM_INT32 FindOneOfFromEnd( /*[in]*/ const RmCharType* srcStr,
00367                               /*[in]*/ const RM_INT32    startIndex = -1,
00368                               /*[in]*/ bool              bCaseSensitive = true) const;
00369 
00370    //==========================================================================
00378    //==========================================================================
00379    RM_INT32 FindWholeWord( /*[in]*/ const RmCharType* srcStr,
00380                            /*[in]*/ const RM_INT32    startIndex = 0,
00381                            /*[in]*/ bool              bCaseSensitive = true) const;
00382 
00383    //==========================================================================
00385    //==========================================================================
00386    void RemoveBefore( /*[in]*/ const RM_INT32 nIndex );
00387 
00388    //==========================================================================
00390    //==========================================================================
00391    void RemoveAfter( /*[in]*/  const RM_INT32 nIndex );
00392 
00393    //==========================================================================
00396    //
00401    //
00407    //==========================================================================
00408    void Insert( /*[in]*/ const RM_INT32 destIndex,
00409                 /*[in]*/ const RmString<RmCharType> &src,
00410                 /*[in]*/ const RM_INT32 srcStartIndex = 0,
00411                 /*[in]*/ const RM_INT32 numChars = 0 );
00412 
00413    //==========================================================================
00416    //
00421    //
00427    //==========================================================================
00428    void Insert( /*[in]*/ const RM_INT32 destIndex,
00429                 /*[in]*/ const RmCharType* srcStr,
00430                 /*[in]*/ const RM_INT32 srcStartIndex = 0,
00431                 /*[in]*/ const RM_INT32 numChars = 0 );
00432 
00433    //==========================================================================
00436    //
00441    //
00447    //==========================================================================
00448    void Insert( /*[in]*/ const RM_INT32 destIndex,
00449                 /*[in]*/ const RmCharType Char );
00450                 
00451    //==========================================================================
00453    //
00455    //==========================================================================
00456    void Copy( /*[in]*/ const RmString<RmCharType> &src,
00457               /*[in]*/ const RM_INT32 srcStartIndex = 0,
00458               /*[in]*/ const RM_INT32 numChars = 0 );
00459 
00460    //==========================================================================
00462    //
00464    //==========================================================================
00465    void Copy( /*[in]*/ const RmCharType* srcStr,
00466               /*[in]*/ const RM_INT32 srcStartIndex = 0,
00467               /*[in]*/ const RM_INT32 numChars = 0 );
00468 
00469    //==========================================================================
00471    //==========================================================================
00472    void Append( /*[in]*/ const RmString<RmCharType> &src,
00473                 /*[in]*/ const RM_INT32 srcStartIndex = 0,
00474                 /*[in]*/ const RM_INT32 numChars = 0 );   
00475 
00476    //==========================================================================
00478    //==========================================================================
00479    void Append( /*[in]*/ const RmCharType* srcStr,
00480                 /*[in]*/ const RM_INT32 srcStartIndex = 0,
00481                 /*[in]*/ const RM_INT32 numChars = 0 );   
00482 
00483    //==========================================================================
00485    //==========================================================================
00486    void Append( /*[in]*/ const RmCharType srcChar );
00487 
00488    //==========================================================================
00490    //==========================================================================
00491    void Prepend( /*[in]*/ const RmString<RmCharType> &src,
00492                  /*[in]*/ const RM_INT32 srcStartIndex = 0,
00493                  /*[in]*/ const RM_INT32 numChars = 0 );   
00494 
00495    //==========================================================================
00497    //==========================================================================
00498    void Prepend( /*[in]*/ const RmCharType* srcStr,
00499                  /*[in]*/ const RM_INT32 srcStartIndex = 0,
00500                  /*[in]*/ const RM_INT32 numChars = 0 );   
00501 
00502    //==========================================================================
00504    //==========================================================================
00505    void Prepend( /*[in]*/ const RmCharType srcChar );
00506 
00507    //==========================================================================
00509    //==========================================================================
00510    void Replace( /*[in]*/ const RmCharType *origStr,
00511                  /*[in]*/ const RmCharType *newStr,
00512                  /*[in]*/ const RM_INT32 beginScanIndex = 0,
00513                  /*[in]*/ const RM_INT32 endScanIndex = 0,
00514                  /*[in]*/ bool bCaseSensitive = true,
00515                  /*[in]*/ bool bWholeWord = false );
00516 
00517    //==========================================================================
00519    //==========================================================================
00520    void ToUpper();
00521 
00522    //==========================================================================
00524    //==========================================================================
00525    void ToLower();
00526 
00527    //==========================================================================
00529    //
00534    //
00538    //==========================================================================
00539    void Format( /*[in]*/ const RmCharType* szFormat, /*[in]*/ ... );
00540 
00541    //==========================================================================
00543    //
00548    //
00552    //==========================================================================
00553    void AppendFormat( /*[in]*/ const RmCharType* szFormat, /*[in]*/ ... );
00554 
00555    //==========================================================================
00557    //
00559    //
00561    //
00567    //==========================================================================
00568    RmString<RmCharType> GetDirectoryName() const;
00569 
00570    RmString<RmCharType> GetFileName( /*[in]*/ const bool bWithExtension=true ) const;
00571 
00572    RmString<RmCharType> GetExtensionName() const;
00573 
00574    RmLinkedList<RmString<RmCharType> > GetEachDirectories( /*[in]*/ const bool bIncludeLast ) const;
00575 
00576    //==========================================================================
00578 
00579    RmCharType& operator[] ( /*[in]*/ const RM_INT32 nIndex );
00580 
00581    const RmCharType& operator[] ( /*[in]*/ const RM_INT32 nIndex ) const;
00582 
00584    void operator = ( /*[in]*/ const RmString<RmCharType> &src );
00585 
00586    void operator = ( /*[in]*/ const RmCharType* srcStr );
00587 
00588    bool operator == ( /*[in]*/ const RmString<RmCharType> &src ) const;
00589 
00590    bool operator == ( /*[in]*/ const RmCharType* srcStr ) const;
00591 
00592    bool operator != ( /*[in]*/ const RmString<RmCharType> &src ) const;
00593 
00594    bool operator != ( /*[in]*/ const RmCharType* srcStr ) const;
00595 
00598    RmString<RmCharType> operator + ( /*[in]*/ const RmString<RmCharType> &src ) const;
00599 
00600    RmString<RmCharType> operator + ( /*[in]*/ const RmCharType* srcStr ) const;
00601 
00602    RmString<RmCharType> operator + ( /*[in]*/ const RmCharType srcChar ) const;
00603 
00606    void operator += ( /*[in]*/ const RmString<RmCharType> &src );
00607 
00608    void operator += ( /*[in]*/ const RmCharType* srcStr );
00609 
00610    void operator += ( /*[in]*/ const RmCharType srcChar );
00611 
00613    //
00616    operator const RmCharType*() const
00617    {
00618        return m_pBuffer;
00619    }; 
00620 
00621    //==========================================================================
00622 
00623 private :
00624     RmCharType *m_pBuffer; //< Buffer
00625 
00626     //=========================================================================
00628     //=========================================================================
00629     void AllocBuffer( /*[in]*/ const RM_INT32 iNewSize, 
00630                       /*[in]*/ const bool bPreserve );
00631 
00632     //=========================================================================
00634     //=========================================================================
00635     void DeallocBuffer();
00636 
00637     //=========================================================================
00639     //=========================================================================
00640     void CopyBuffer( /*[in]*/ const RmCharType* srcStr,
00641                      /*[in]*/ const RM_INT32 iSize );
00642 
00643     //=========================================================================
00645     //=========================================================================
00646     void AppendBuffer( /*[in]*/ const RmCharType* srcStr,
00647                        /*[in]*/ const RM_INT32 iSize );
00648 
00649     //=========================================================================
00651     //=========================================================================
00652     void PrependBuffer( /*[in]*/ const RmCharType* srcStr,
00653                         /*[in]*/ const RM_INT32 iSize );
00654 
00655     //=========================================================================
00657     //=========================================================================
00658     void InsertBuffer( /*[in]*/ const RM_INT32 destIndex,
00659                        /*[in]*/ const RmCharType* srcStr,
00660                        /*[in]*/ const RM_INT32 iSize );
00661 
00662     //=========================================================================
00664     //=========================================================================
00665     void MoveBuffer( /*[in]*/ const RM_INT32 srcIndex,
00666                      /*[in]*/ const RM_INT32 destIndex,
00667                      /*[in]*/ const RM_INT32 iSize );                     
00668 
00669     //=========================================================================
00671     //=========================================================================
00672     RM_INT32 GetStrSize( /*[in]*/ const RmCharType* srcStr ) const;
00673 
00674     //=========================================================================
00676     //=========================================================================
00677     bool IsDelimeter( /*[in]*/ RmCharType ch ) const;
00678 }; // End of RmString
00679 
00680 
00681 //===========================================================================
00682 // External Operators
00683 //===========================================================================
00684 template <class RmCharType> 
00685 RmString<RmCharType> operator + ( /*[in]*/ const RmCharType* srcStr1,
00686                                   /*[in]*/ const RmString<RmCharType>& srcStr2 );
00687 
00688 
00689 //===========================================================================
00690 // Inlined implementation
00691 // 
00692 // - Actual Implemention of RmString is defined in RmString.inl ( inline )
00693 //===========================================================================
00694 #include <Core/RmString.inl>
00695 
00696 typedef RmString<RM_CHAR>  RmStringA;
00697 typedef RmString<RM_WCHAR> RmStringW;
00698 
00699 //..............................................................................................................//
00700 //..............................................................................................................//
00701 //..............................................................................................................//
00702 // Helper Functions
00703 //
00704 // Note : For all function, if numChar == -1, then operation continues until either src or dest terminates
00705 //        string with '\0' character.
00706 //
00707 // <String Function Name>A - String function for ASCII string
00708 // <String Function Name>A - String function for Unicode string
00709 //
00710 //..............................................................................................................//
00711 //..............................................................................................................//
00712 //..............................................................................................................//
00713 
00714 //=============================================================
00715 // Conversion Functions
00716 // 
00717 // - pDest must have enough memory allocated. 
00718 //   ( at least same length of pSrc )
00719 //=============================================================
00720 RM_API void RmStrWtoA( RM_CHAR  *pDest, const RM_WCHAR *pSrc, int numChar = -1 );
00721 RM_API void RmStrAtoW( RM_WCHAR *pDest, const RM_CHAR  *pSrc, int numChar = -1 );
00722 RM_API void RmStrAtoA( RM_CHAR  *pDest, const RM_CHAR  *pSrc, int numChar = -1 );
00723 RM_API void RmStrWtoW( RM_WCHAR *pDest, const RM_WCHAR *pSrc, int numChar = -1 );
00724 
00725 //=============================================================
00726 // Conversion with allocation
00727 //
00728 // - Allocate string and copy the contents from src then return 
00729 //   that string.  
00730 //   User of this function is responsible for calling RmStrFree
00731 //   after done using returned string
00732 //=============================================================
00733 RM_API RM_CHAR*  RmStrAllocWtoA( const RM_WCHAR *pSrc );
00734 RM_API RM_CHAR*  RmStrAllocAtoA( const RM_CHAR *pSrc );
00735 
00736 RM_API RM_WCHAR* RmStrAllocAtoW( const RM_CHAR *pSrc );
00737 RM_API RM_WCHAR* RmStrAllocWtoW( const RM_WCHAR *pSrc );
00738 
00739 
00740 //=============================================================
00741 // Free string
00742 //
00743 // - Free pointer to characters that is returned by RmStrAllocXXXX
00744 //   functions
00745 //=============================================================
00746 RM_API void RmStrFreeA( RM_CHAR *pStr );
00747 RM_API void RmStrFreeW( RM_WCHAR *pStr );
00748 
00749 //=============================================================
00750 // Duplicate
00751 //
00752 // - Same as strdup or wcsdup ( for unicode ).  User of this function
00753 //   must call free to destroy the returned pointer.
00754 //=============================================================
00755 RM_API RM_CHAR*  RmStrDupA( const RM_CHAR *pStr );
00756 RM_API RM_WCHAR* RmStrDupW( const RM_WCHAR *pStr );
00757 
00758 //=============================================================
00759 // String Length
00760 //=============================================================
00761 RM_API int RmStrLenA( const RM_CHAR *pSrc );
00762 RM_API int RmStrLenW( const RM_WCHAR *pSrc );
00763 
00764 //=============================================================
00765 // Find sub string ( or character )inside source string
00766 // 
00767 // - Returns NULL, if sub string was not found
00768 //=============================================================
00769 RM_API RM_CHAR*  RmStrStrA( const RM_CHAR *pSrc, const RM_CHAR *pFindStr );
00770 RM_API RM_WCHAR* RmStrStrW( const RM_WCHAR *pSrc, const RM_WCHAR *pFindStr );
00771 RM_API RM_CHAR*  RmStrChrA( const RM_CHAR *pSrc, RM_CHAR ch );
00772 RM_API RM_WCHAR* RmStrChrW( const RM_WCHAR *pSrc, RM_WCHAR ch );
00773 RM_API RM_CHAR*  RmStrRChrA( const RM_CHAR *pSrc, RM_CHAR ch );   // Find from end
00774 RM_API RM_WCHAR* RmStrRChrW( const RM_WCHAR *pSrc, RM_WCHAR ch ); // Find from end
00775 
00776 //=============================================================
00777 // String Copy
00778 //=============================================================
00779 RM_API void RmStrCopyA( RM_CHAR *pDest, const RM_CHAR *pSrc, int numChar = -1 );
00780 RM_API void RmStrCopyW( RM_WCHAR *pDest, const RM_WCHAR *pSrc, int numChar = -1 );
00781 
00782 //=============================================================
00783 // Concatenation
00784 // 
00785 // - Appends src string to the end of dest string
00786 //=============================================================
00787 RM_API void RmStrCatA( RM_CHAR *pDest, const RM_CHAR *pSrc, int numChar = -1 );
00788 RM_API void RmStrCatW( RM_WCHAR *pDest, const RM_WCHAR *pSrc, int numChar = -1 );
00789 
00790 //=============================================================
00791 // Compare
00792 //
00793 // - Returns 1, if Str1 is greater than Str2
00794 //           0, if they are equal
00795 //          -1, if Str2 is greater than Str1
00796 //=============================================================
00797 RM_API int RmStrCmpA( const RM_CHAR *pStr1, const RM_CHAR *pStr2, int numChar = -1  );
00798 RM_API int RmStrCmpW( const RM_WCHAR *pStr1, const RM_WCHAR *pStr2, int numChar = -1  );
00799 
00800 // Non-case sensitive compare
00801 RM_API int RmStrICmpA( const RM_CHAR *pStr1, const RM_CHAR *pStr2, int numChar = -1  );
00802 RM_API int RmStrICmpW( const RM_WCHAR *pStr1, const RM_WCHAR *pStr2, int numChar = -1  );
00803 
00804 //=============================================================
00805 // Type Conversion
00806 //
00807 // - String to float, int, etc 
00808 //=============================================================
00809 RM_API RM_LONG   RmStrToLongA( const RM_CHAR *pSrc, RM_CHAR **pEndPtr, int base );
00810 RM_API RM_ULONG  RmStrToULongA( const RM_CHAR *pSrc, RM_CHAR **pEndPtr, int base );
00811 RM_API RM_DOUBLE RmStrToDoubleA( const RM_CHAR *pSrc, RM_CHAR **pEndPtr );
00812 
00813 RM_API RM_LONG   RmStrToLongW( const RM_WCHAR *pSrc, RM_WCHAR **pEndPtr, int base );
00814 RM_API RM_ULONG  RmStrToULongW( const RM_WCHAR *pSrc, RM_WCHAR **pEndPtr, int base );
00815 RM_API RM_DOUBLE RmStrToDoubleW( const RM_WCHAR *pSrc, RM_WCHAR **pEndPtr );
00816 
00817 //=============================================================
00818 // Macros to map string function based on flag ( unicode or not )
00819 //
00820 // - In you application use <String Function Name>T whereever applicable.
00821 //   For example, use RmStrCmpT instead of strcmp.   Your source is
00822 //   compilable for both Unicode an ASCII build   
00823 //=============================================================
00824 #ifdef _UNICODE
00825    #define RmStringT      RmStringW
00826 
00827    #define RmStrAtoT      RmStrAtoW
00828    #define RmStrWtoT      RmStrWtoW
00829 
00830    #define RmStrTtoA      RmStrWtoA
00831    #define RmStrTtoW      RmStrWtoW
00832 
00833    #define RmStrAllocAtoT RmStrAllocAtoW
00834    #define RmStrAllocWtoT RmStrAllocWtoW
00835 
00836    #define RmStrAllocTtoA RmStrAllocWtoA
00837    #define RmStrAllocTtoW RmStrAllocWtoW
00838 
00839    #define RmStrCopyT     RmStrCopyW
00840    #define RmStrCmpT      RmStrCmpW
00841 
00842    #define RmStrCatT      RmStrCatW
00843 
00844    #define RmStrStrT      RmStrStrW
00845    #define RmStrChrT      RmStrChrW
00846    #define RmStrRChrT     RmStrRChrW
00847 
00848    #define RmStrICmpT     RmStrICmpW
00849 
00850    #define RmStrToLongT   RmStrToLongW
00851    #define RmStrToULongT  RmStrToULongW
00852    #define RmStrToDoubleT RmStrToDoubleW
00853 
00854    #define RmStrDupT      RmStrDupW
00855 
00856    #define RmStrFreeT     RmStrFreeW
00857 
00858    #define RmStrLenT      RmStrLenW
00859 
00860    #define RmStrPrintf    swprintf
00861    #define RmStrNPrintf   _snwprintf
00862 
00863    #define RmStrScanf     swscanf
00864 
00865    #define RmStrTokT      wcstok 
00866 
00867    #define RmStrAtoF      _wtof
00868    #define RmStrAtoI      _wtoi
00869    #define RmStrAtoL      _wtol
00870 
00871 #else // For non unicode build
00872    #define RmStringT      RmStringA
00873 
00874    #define RmStrAtoT      RmStrAtoA
00875    #define RmStrWtoT      RmStrWtoA
00876 
00877    #define RmStrTtoA      RmStrAtoA
00878    #define RmStrTtoW      RmStrAtoW
00879 
00880    #define RmStrAllocAtoT RmStrAllocAtoA
00881    #define RmStrAllocWtoT RmStrAllocWtoA
00882 
00883    #define RmStrAllocTtoA RmStrAllocAtoA
00884    #define RmStrAllocTtoW RmStrAllocAtoW
00885 
00886    #define RmStrCopyT     RmStrCopyA
00887    #define RmStrCmpT      RmStrCmpA
00888 
00889    #define RmStrCatT      RmStrCatA
00890 
00891    #define RmStrStrT      RmStrStrA
00892    #define RmStrChrT      RmStrChrA
00893    #define RmStrRChrT     RmStrRChrA
00894 
00895    #define RmStrICmpT     RmStrICmpA
00896 
00897    #define RmStrToLongT   RmStrToLongA
00898    #define RmStrToULongT  RmStrToULongA
00899    #define RmStrToDoubleT RmStrToDoubleA
00900 
00901    #define RmStrFreeT     RmStrFreeA
00902 
00903    #define RmStrLenT      RmStrLenA
00904 
00905    #define RmStrDupT      RmStrDupA
00906 
00907    #define RmStrPrintf    sprintf
00908    #define RmStrNPrintf   _snprintf
00909 
00910    #define RmStrScanf     sscanf
00911 
00912    #define RmStrTokT      strtok 
00913 
00914    #define RmStrAtoF      atof
00915    #define RmStrAtoI      atoi
00916    #define RmStrAtoL      atol
00917 
00918 #endif
00919 
00920 typedef RmLinkedList<RmStringT>        RmStringList;
00921 typedef RmStringList::iterator         RmStringListIterator;
00922 typedef RmStringList::const_iterator   RmStringListConstIterator;
00923 
00924 //=========================================================================
00932 //=========================================================================
00933 RM_API bool RmStringWtoA( RmStringT &strUnicode, RmStringA &strAscii );
00934 
00935 //=========================================================================
00943 //=========================================================================
00944 RM_API bool RmStringAtoW( RmStringA &strAscii, RmStringT &strUnicode );
00945 
00946 
00947 #endif

Generated on Fri Feb 25 16:08:40 2005 for RenderMonkey SDK by doxygen 1.3.6