Get rid of FX_LPCSTR cast.
[pdfium.git] / core / include / fxcrt / fx_string.h
index 08fb83c..91032f9 100644 (file)
@@ -1,7 +1,7 @@
 // Copyright 2014 PDFium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
+
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
 #ifndef _FX_STRING_H_
@@ -184,6 +184,13 @@ public:
 
     static CFX_ByteString      FromUnicode(const CFX_WideString& str);
 
+    // Explicit conversion to raw string
+    FX_LPCSTR c_str() const
+    {
+        return m_pData ? m_pData->m_String : "";
+    }
+
+    // Implicit conversion to C-style string -- deprecated
     operator                           FX_LPCSTR() const
     {
         return m_pData ? m_pData->m_String : "";
@@ -340,7 +347,7 @@ public:
 protected:
 
     struct CFX_StringData*     m_pData;
-    void                                       AllocCopy(CFX_ByteString& dest, FX_STRSIZE nCopyLen, FX_STRSIZE nCopyIndex, FX_STRSIZE nExtraLen) const;
+    void                                       AllocCopy(CFX_ByteString& dest, FX_STRSIZE nCopyLen, FX_STRSIZE nCopyIndex) const;
     void                                       AssignCopy(FX_STRSIZE nSrcLen, FX_LPCSTR lpszSrcData);
     void                                       ConcatCopy(FX_STRSIZE nSrc1Len, FX_LPCSTR lpszSrc1Data, FX_STRSIZE nSrc2Len, FX_LPCSTR lpszSrc2Data);
     void                                       ConcatInPlace(FX_STRSIZE nSrcLen, FX_LPCSTR lpszSrcData);
@@ -597,7 +604,7 @@ private:
     }
 };
 typedef const CFX_WideStringC& FX_WSTR;
-#define FX_WSTRC(wstr) CFX_WideStringC((FX_LPCWSTR)wstr, sizeof(wstr) / sizeof(FX_WCHAR) - 1)
+#define FX_WSTRC(wstr) CFX_WideStringC(wstr, FX_ArraySize(wstr) - 1)
 struct CFX_StringDataW {
 
     long               m_nRefs;
@@ -634,13 +641,22 @@ public:
 
     static CFX_WideString      FromLocal(const char* str, FX_STRSIZE len = -1);
 
-    static CFX_WideString      FromUTF8(const char* str, FX_STRSIZE len = -1);
+    static CFX_WideString      FromUTF8(const char* str, FX_STRSIZE len);
 
-    static CFX_WideString      FromUTF16LE(const unsigned short* str, FX_STRSIZE len = -1);
+    static CFX_WideString      FromUTF16LE(const unsigned short* str, FX_STRSIZE len);
 
+    static FX_STRSIZE       WStringLength(const unsigned short* str);
+
+    // Explicit conversion to raw string
+    FX_LPCWSTR c_str() const
+    {
+        return m_pData ? m_pData->m_String : L"";
+    }
+
+    // Implicit conversion to C-style wide string -- deprecated
     operator FX_LPCWSTR() const
     {
-        return m_pData ? m_pData->m_String : (FX_WCHAR*)L"";
+        return m_pData ? m_pData->m_String : L"";
     }
 
     void                                       Empty();
@@ -756,16 +772,16 @@ protected:
     void                                       ConcatInPlace(FX_STRSIZE nSrcLen, FX_LPCWSTR lpszSrcData);
     void                                       ConcatCopy(FX_STRSIZE nSrc1Len, FX_LPCWSTR lpszSrc1Data, FX_STRSIZE nSrc2Len, FX_LPCWSTR lpszSrc2Data);
     void                                       AssignCopy(FX_STRSIZE nSrcLen, FX_LPCWSTR lpszSrcData);
-    void                                       AllocCopy(CFX_WideString& dest, FX_STRSIZE nCopyLen, FX_STRSIZE nCopyIndex, FX_STRSIZE nExtraLen) const;
+    void                                       AllocCopy(CFX_WideString& dest, FX_STRSIZE nCopyLen, FX_STRSIZE nCopyIndex) const;
 };
 inline CFX_WideStringC::CFX_WideStringC(const CFX_WideString& src)
 {
-    m_Ptr = (FX_LPCWSTR)src;
+    m_Ptr = src.c_str();
     m_Length = src.GetLength();
 }
 inline CFX_WideStringC& CFX_WideStringC::operator = (const CFX_WideString& src)
 {
-    m_Ptr = (FX_LPCWSTR)src;
+    m_Ptr = src.c_str();
     m_Length = src.GetLength();
     return *this;
 }
@@ -839,32 +855,6 @@ inline CFX_ByteString      FX_UTF8Encode(FX_WSTR wsStr)
 }
 inline CFX_ByteString  FX_UTF8Encode(const CFX_WideString &wsStr)
 {
-    return FX_UTF8Encode((FX_LPCWSTR)wsStr, wsStr.GetLength());
+    return FX_UTF8Encode(wsStr.c_str(), wsStr.GetLength());
 }
-class CFX_ByteStringL : public CFX_ByteStringC
-{
-public:
-    CFX_ByteStringL() : CFX_ByteStringC() {}
-    ~CFX_ByteStringL() {}
-
-    void               Empty(IFX_Allocator* pAllocator);
-    FX_LPSTR   AllocBuffer(FX_STRSIZE length, IFX_Allocator* pAllocator);
-
-    void               Set(FX_BSTR src, IFX_Allocator* pAllocator);
-};
-class CFX_WideStringL : public CFX_WideStringC
-{
-public:
-    CFX_WideStringL() : CFX_WideStringC() {}
-    ~CFX_WideStringL() {}
-
-    void               Empty(IFX_Allocator* pAllocator);
-    void               Set(FX_WSTR src, IFX_Allocator* pAllocator);
-
-    int                        GetInteger() const;
-    FX_FLOAT   GetFloat() const;
-
-    void               TrimRight(FX_LPCWSTR lpszTargets);
-};
-void   FX_UTF8Encode(FX_LPCWSTR pwsStr, FX_STRSIZE len, CFX_ByteStringL &utf8Str, IFX_Allocator* pAllocator = NULL);
 #endif