Extern in .cpp files is a code smell.
[pdfium.git] / core / src / fpdftext / unicodenormalization.cpp
index b92787b..a773296 100644 (file)
@@ -1,75 +1,71 @@
-// Copyright 2014 PDFium Authors. All rights reserved.\r
-// Use of this source code is governed by a BSD-style license that can be\r
-// found in the LICENSE file.\r
\r
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
-\r
-#include "../../include/fpdftext/fpdf_text.h"\r
-extern const FX_WCHAR g_UnicodeData_Normalization[65536];\r
-extern const FX_WCHAR g_UnicodeData_Normalization_Map1[5376];\r
-extern const FX_WCHAR g_UnicodeData_Normalization_Map2[1734];\r
-extern const FX_WCHAR g_UnicodeData_Normalization_Map3[1164];\r
-extern const FX_WCHAR g_UnicodeData_Normalization_Map4[488];\r
-FX_LPCWSTR g_UnicodeData_Normalization_Maps[5] = {\r
-    NULL,\r
-    g_UnicodeData_Normalization_Map1,\r
-    g_UnicodeData_Normalization_Map2,\r
-    g_UnicodeData_Normalization_Map3,\r
-    g_UnicodeData_Normalization_Map4\r
-};\r
-FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_LPWSTR pDst)\r
-{\r
-    wch = wch & 0xFFFF;\r
-    FX_WCHAR wFind = g_UnicodeData_Normalization[wch];\r
-    if (!wFind) {\r
-        if (pDst) {\r
-            *pDst = wch;\r
-        }\r
-        return 1;\r
-    }\r
-    if(wFind >= 0x8000) {\r
-        wch = wFind - 0x8000;\r
-        wFind = 1;\r
-    } else {\r
-        wch = wFind & 0x0FFF;\r
-        wFind >>= 12;\r
-    }\r
-    FX_LPCWSTR pMap = g_UnicodeData_Normalization_Maps[wFind];\r
-    if (pMap == g_UnicodeData_Normalization_Map4) {\r
-        pMap = g_UnicodeData_Normalization_Map4 + wch;\r
-        wFind = (FX_WCHAR)(*pMap ++);\r
-    } else {\r
-        pMap += wch;\r
-    }\r
-    if (pDst) {\r
-        FX_WCHAR n = wFind;\r
-        while (n --) {\r
-            *pDst ++ = *pMap ++;\r
-        }\r
-    }\r
-    return (FX_STRSIZE)wFind;\r
-}\r
-FX_STRSIZE FX_WideString_GetNormalization(FX_WSTR wsSrc, FX_LPWSTR pDst)\r
-{\r
-    FX_STRSIZE nCount = 0;\r
-    for (FX_STRSIZE len = 0; len < wsSrc.GetLength(); len ++) {\r
-        FX_WCHAR wch = wsSrc.GetAt(len);\r
-        if(pDst) {\r
-            nCount += FX_Unicode_GetNormalization(wch, pDst + nCount);\r
-        } else {\r
-            nCount += FX_Unicode_GetNormalization(wch, pDst);\r
-        }\r
-    }\r
-    return nCount;\r
-}\r
-FX_STRSIZE FX_WideString_GetNormalization(FX_WSTR wsSrc, CFX_WideString &wsDst)\r
-{\r
-    FX_STRSIZE nLen = FX_WideString_GetNormalization(wsSrc, (FX_LPWSTR)NULL);\r
-    if (!nLen) {\r
-        return 0;\r
-    }\r
-    FX_LPWSTR pBuf = wsDst.GetBuffer(nLen);\r
-    FX_WideString_GetNormalization(wsSrc, pBuf);\r
-    wsDst.ReleaseBuffer(nLen);\r
-    return nLen;\r
-}\r
+// 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
+
+#include "../../include/fxcrt/fx_string.h"
+#include "unicodenormalizationdata.h"
+
+const FX_WCHAR* const g_UnicodeData_Normalization_Maps[5] = {
+    nullptr,
+    g_UnicodeData_Normalization_Map1,
+    g_UnicodeData_Normalization_Map2,
+    g_UnicodeData_Normalization_Map3,
+    g_UnicodeData_Normalization_Map4};
+
+FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst) {
+  wch = wch & 0xFFFF;
+  FX_WCHAR wFind = g_UnicodeData_Normalization[wch];
+  if (!wFind) {
+    if (pDst) {
+      *pDst = wch;
+    }
+    return 1;
+  }
+  if (wFind >= 0x8000) {
+    wch = wFind - 0x8000;
+    wFind = 1;
+  } else {
+    wch = wFind & 0x0FFF;
+    wFind >>= 12;
+  }
+  const FX_WCHAR* pMap = g_UnicodeData_Normalization_Maps[wFind];
+  if (pMap == g_UnicodeData_Normalization_Map4) {
+    pMap = g_UnicodeData_Normalization_Map4 + wch;
+    wFind = (FX_WCHAR)(*pMap++);
+  } else {
+    pMap += wch;
+  }
+  if (pDst) {
+    FX_WCHAR n = wFind;
+    while (n--) {
+      *pDst++ = *pMap++;
+    }
+  }
+  return (FX_STRSIZE)wFind;
+}
+FX_STRSIZE FX_WideString_GetNormalization(const CFX_WideStringC& wsSrc,
+                                          FX_WCHAR* pDst) {
+  FX_STRSIZE nCount = 0;
+  for (FX_STRSIZE len = 0; len < wsSrc.GetLength(); len++) {
+    FX_WCHAR wch = wsSrc.GetAt(len);
+    if (pDst) {
+      nCount += FX_Unicode_GetNormalization(wch, pDst + nCount);
+    } else {
+      nCount += FX_Unicode_GetNormalization(wch, pDst);
+    }
+  }
+  return nCount;
+}
+FX_STRSIZE FX_WideString_GetNormalization(const CFX_WideStringC& wsSrc,
+                                          CFX_WideString& wsDst) {
+  FX_STRSIZE nLen = FX_WideString_GetNormalization(wsSrc, (FX_WCHAR*)NULL);
+  if (!nLen) {
+    return 0;
+  }
+  FX_WCHAR* pBuf = wsDst.GetBuffer(nLen);
+  FX_WideString_GetNormalization(wsSrc, pBuf);
+  wsDst.ReleaseBuffer(nLen);
+  return nLen;
+}