/*****************************************************************************/ // Copyright 2006-2007 Adobe Systems Incorporated // All Rights Reserved. // // NOTICE: Adobe permits you to use, modify, and distribute this file in // accordance with the terms of the Adobe license agreement accompanying it. /*****************************************************************************/ /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_string.h#2 $ */ /* $DateTime: 2012/07/31 22:04:34 $ */ /* $Change: 840853 $ */ /* $Author: tknoll $ */ /** \file * Text string representation. */ /*****************************************************************************/ #ifndef __dng_string__ #define __dng_string__ /*****************************************************************************/ #include "dng_types.h" #include "dng_memory.h" /*****************************************************************************/ class dng_string { private: // Always stored internally as a UTF-8 encoded string. dng_memory_data fData; public: dng_string (); dng_string (const dng_string &s); dng_string & operator= (const dng_string &s); ~dng_string (); const char * Get () const; bool IsASCII () const; void Set (const char *s); void Set_ASCII (const char *s); void Set_UTF8 (const char *s); uint32 Get_SystemEncoding (dng_memory_data &buffer) const; void Set_SystemEncoding (const char *s); bool ValidSystemEncoding () const; void Set_JIS_X208_1990 (const char *s); static uint32 DecodeUTF8 (const char *&s, uint32 maxBytes = 6, bool *isValid = NULL); static bool IsUTF8 (const char *s); void Set_UTF8_or_System (const char *s); uint32 Get_UTF16 (dng_memory_data &buffer) const; void Set_UTF16 (const uint16 *s); void Clear (); void Truncate (uint32 maxBytes); bool TrimTrailingBlanks (); bool TrimLeadingBlanks (); bool IsEmpty () const; bool NotEmpty () const { return !IsEmpty (); } uint32 Length () const; bool operator== (const dng_string &s) const; bool operator!= (const dng_string &s) const { return !(*this == s); } // A utility for doing case insensitive comparisons on strings... static bool Matches (const char *t, const char *s, bool case_sensitive = false); // ...wrapped up for use with dng_string. bool Matches (const char *s, bool case_sensitive = false) const; bool StartsWith (const char *s, bool case_sensitive = false) const; bool EndsWith (const char *s, bool case_sensitive = false) const; bool Contains (const char *s, bool case_sensitive = false, int32 *match_offset = NULL) const; bool Replace (const char *old_string, const char *new_string, bool case_sensitive = true); bool TrimLeading (const char *s, bool case_sensitive = false); void Append (const char *s); void SetUppercase (); void SetLowercase (); void SetLineEndings (char ending); void SetLineEndingsToNewLines () { SetLineEndings ('\n'); } void SetLineEndingsToReturns () { SetLineEndings ('\r'); } void StripLowASCII (); void ForceASCII (); int32 Compare (const dng_string &s) const; // A utility to convert fields of numbers into comma separated numbers. void NormalizeAsCommaSeparatedNumbers (); }; /*****************************************************************************/ #endif /*****************************************************************************/