Home | History | Annotate | Download | only in include
      1 // Copyright 2014 PDFium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
      6 
      7 #ifndef _FX_ALGORITHM
      8 #define _FX_ALGORITHM
      9 #define FX_IsOdd(a) ((a)&1)
     10 #ifdef __cplusplus
     11 extern "C" {
     12 #endif
     13 int32_t FX_Base64EncodeA(const uint8_t* pSrc, int32_t iSrcLen, FX_CHAR* pDst);
     14 int32_t FX_Base64DecodeA(const FX_CHAR* pSrc, int32_t iSrcLen, uint8_t* pDst);
     15 int32_t FX_Base64DecodeW(const FX_WCHAR* pSrc, int32_t iSrcLen, uint8_t* pDst);
     16 uint8_t FX_Hex2Dec(uint8_t hexHigh, uint8_t hexLow);
     17 int32_t FX_SeparateStringW(const FX_WCHAR* pStr,
     18                            int32_t iStrLen,
     19                            FX_WCHAR delimiter,
     20                            CFX_WideStringArray& pieces);
     21 #ifdef __cplusplus
     22 };
     23 #endif
     24 template <class baseType>
     25 class CFX_DSPATemplate {
     26  public:
     27   int32_t Lookup(const baseType& find, const baseType* pArray, int32_t iCount) {
     28     FXSYS_assert(pArray != NULL);
     29     if (iCount < 1) {
     30       return -1;
     31     }
     32     int32_t iStart = 0, iEnd = iCount - 1, iMid;
     33     do {
     34       iMid = (iStart + iEnd) / 2;
     35       const baseType& v = pArray[iMid];
     36       if (find == v) {
     37         return iMid;
     38       } else if (find < v) {
     39         iEnd = iMid - 1;
     40       } else {
     41         iStart = iMid + 1;
     42       }
     43     } while (iStart <= iEnd);
     44     return -1;
     45   }
     46 };
     47 #endif
     48