// 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_ALGORITHM | |
#define _FX_ALGORITHM | |
#define FX_IsOdd(a) ((a)&1) | |
#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 |