| /*****************************************************************************/ |
| // 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 |
| |
| /*****************************************************************************/ |