2012-04-19 14:35:52 +08:00
/****************************************************************************
Copyright ( c ) 2010 cocos2d - x . org
http : //www.cocos2d-x.org
Permission is hereby granted , free of charge , to any person obtaining a copy
of this software and associated documentation files ( the " Software " ) , to deal
in the Software without restriction , including without limitation the rights
to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
copies of the Software , and to permit persons to whom the Software is
furnished to do so , subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software .
THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE .
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifndef __CCSTRING_H__
# define __CCSTRING_H__
2012-08-18 05:45:21 +08:00
# if (CC_TARGET_PLATFORM == CC_PLATFORM_BLACKBERRY)
# include <string.h>
# endif
2012-08-03 11:07:59 +08:00
# include <stdarg.h>
2012-04-19 14:35:52 +08:00
# include <string>
2012-06-16 12:48:20 +08:00
# include <functional>
2012-04-19 14:35:52 +08:00
# include "CCObject.h"
NS_CC_BEGIN
2012-06-20 18:09:11 +08:00
/**
* @ addtogroup data_structures
* @ {
*/
2012-04-19 14:35:52 +08:00
class CC_DLL CCString : public CCObject
{
public :
CCString ( ) ;
CCString ( const char * str ) ;
CCString ( const std : : string & str ) ;
CCString ( const CCString & str ) ;
virtual ~ CCString ( ) ;
/* override assignment operator */
CCString & operator = ( const CCString & other ) ;
/** init a string with format, it's similar with the c function 'sprintf' */
2013-04-19 17:56:27 +08:00
bool initWithFormat ( const char * format , . . . ) CC_FORMAT_PRINTF ( 2 , 3 ) ;
2012-04-19 14:35:52 +08:00
/** convert to int value */
int intValue ( ) const ;
/** convert to unsigned int value */
unsigned int uintValue ( ) const ;
/** convert to float value */
float floatValue ( ) const ;
/** convert to double value */
double doubleValue ( ) const ;
/** convert to bool value */
bool boolValue ( ) const ;
/** get the C string */
const char * getCString ( ) const ;
/** get the length of string */
unsigned int length ( ) const ;
2012-06-14 14:56:21 +08:00
/** compare to a c string */
int compare ( const char * ) const ;
2012-04-19 14:35:52 +08:00
/* override functions */
virtual CCObject * copyWithZone ( CCZone * pZone ) ;
virtual bool isEqual ( const CCObject * pObject ) ;
2012-09-17 15:02:24 +08:00
/** create a string with std string, you can also pass a c string pointer because the default constructor of std::string can access a c string pointer.
2012-06-14 16:05:58 +08:00
* @ return A CCString pointer which is an autorelease object pointer ,
* it means that you needn ' t do a release operation unless you retain it .
*/
2012-06-20 11:48:31 +08:00
static CCString * create ( const std : : string & str ) ;
2012-06-14 16:05:58 +08:00
/** create a string with format, it's similar with the c function 'sprintf', the default buffer size is (1024*100) bytes,
* if you want to change it , you should modify the kMaxStringLen macro in CCString . cpp file .
* @ return A CCString pointer which is an autorelease object pointer ,
* it means that you needn ' t do a release operation unless you retain it .
*/
2013-04-19 17:56:27 +08:00
static CCString * createWithFormat ( const char * format , . . . ) CC_FORMAT_PRINTF ( 1 , 2 ) ;
2012-06-14 16:05:58 +08:00
/** create a string with binary data
* @ return A CCString pointer which is an autorelease object pointer ,
* it means that you needn ' t do a release operation unless you retain it .
*/
2012-08-02 16:23:31 +08:00
static CCString * createWithData ( const unsigned char * pData , unsigned long nLen ) ;
2012-06-14 16:05:58 +08:00
/** create a string with a file,
* @ return A CCString pointer which is an autorelease object pointer ,
* it means that you needn ' t do a release operation unless you retain it .
*/
static CCString * createWithContentsOfFile ( const char * pszFileName ) ;
2012-04-19 14:35:52 +08:00
private :
/** only for internal use */
bool initWithFormatAndValist ( const char * format , va_list ap ) ;
public :
std : : string m_sString ;
} ;
2012-06-15 04:50:47 +08:00
struct CCStringCompare : public std : : binary_function < CCString * , CCString * , bool > {
public :
bool operator ( ) ( CCString * a , CCString * b ) const {
return strcmp ( a - > getCString ( ) , b - > getCString ( ) ) < 0 ;
}
} ;
2012-06-14 16:05:58 +08:00
# define CCStringMake(str) CCString::create(str)
2012-04-19 14:35:52 +08:00
# define ccs CCStringMake
2012-06-20 18:09:11 +08:00
// end of data_structure group
/// @}
2012-04-19 14:35:52 +08:00
NS_CC_END
2012-08-02 13:02:59 +08:00
# endif //__CCSTRING_H__