summaryrefslogtreecommitdiff
path: root/xfa/fgas/crt/fgas_algorithm.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fgas/crt/fgas_algorithm.h')
-rw-r--r--xfa/fgas/crt/fgas_algorithm.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/xfa/fgas/crt/fgas_algorithm.h b/xfa/fgas/crt/fgas_algorithm.h
new file mode 100644
index 0000000000..662b1b62a9
--- /dev/null
+++ b/xfa/fgas/crt/fgas_algorithm.h
@@ -0,0 +1,54 @@
+// 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 XFA_FGAS_CRT_FGAS_ALGORITHM_H_
+#define XFA_FGAS_CRT_FGAS_ALGORITHM_H_
+
+#include <cstdint>
+
+#include "core/include/fxcrt/fx_basic.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int32_t FX_Base64EncodeA(const uint8_t* pSrc, int32_t iSrcLen, FX_CHAR* pDst);
+int32_t FX_Base64DecodeA(const FX_CHAR* pSrc, int32_t iSrcLen, uint8_t* pDst);
+int32_t FX_Base64DecodeW(const FX_WCHAR* pSrc, int32_t iSrcLen, uint8_t* pDst);
+uint8_t FX_Hex2Dec(uint8_t hexHigh, uint8_t hexLow);
+int32_t FX_SeparateStringW(const FX_WCHAR* pStr,
+ int32_t iStrLen,
+ FX_WCHAR delimiter,
+ CFX_WideStringArray& pieces);
+#ifdef __cplusplus
+};
+#endif
+
+template <class baseType>
+class CFX_DSPATemplate {
+ public:
+ int32_t Lookup(const baseType& find, const baseType* pArray, int32_t iCount) {
+ FXSYS_assert(pArray != NULL);
+ if (iCount < 1) {
+ return -1;
+ }
+ int32_t iStart = 0, iEnd = iCount - 1, iMid;
+ do {
+ iMid = (iStart + iEnd) / 2;
+ const baseType& v = pArray[iMid];
+ if (find == v) {
+ return iMid;
+ } else if (find < v) {
+ iEnd = iMid - 1;
+ } else {
+ iStart = iMid + 1;
+ }
+ } while (iStart <= iEnd);
+ return -1;
+ }
+};
+
+#endif // XFA_FGAS_CRT_FGAS_ALGORITHM_H_