1// Copyright 2016 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 CORE_FPDFAPI_PARSER_FPDF_PARSER_UTILITY_H_ 8#define CORE_FPDFAPI_PARSER_FPDF_PARSER_UTILITY_H_ 9 10#include "core/fxcrt/fx_string.h" 11#include "core/fxcrt/retain_ptr.h" 12 13class IFX_SeekableReadStream; 14class CPDF_Dictionary; 15class CPDF_Object; 16 17// Use the accessors below instead of directly accessing PDF_CharType. 18extern const char PDF_CharType[256]; 19 20inline bool PDFCharIsWhitespace(uint8_t c) { 21 return PDF_CharType[c] == 'W'; 22} 23inline bool PDFCharIsNumeric(uint8_t c) { 24 return PDF_CharType[c] == 'N'; 25} 26inline bool PDFCharIsDelimiter(uint8_t c) { 27 return PDF_CharType[c] == 'D'; 28} 29inline bool PDFCharIsOther(uint8_t c) { 30 return PDF_CharType[c] == 'R'; 31} 32 33inline bool PDFCharIsLineEnding(uint8_t c) { 34 return c == '\r' || c == '\n'; 35} 36 37constexpr int32_t kInvalidHeaderOffset = -1; 38 39// On success, return a positive offset value to the PDF header.. If the header 40// cannot be found, or if there is an error reading from |pFile|, then return 41// |kInvalidHeaderOffset|. 42int32_t GetHeaderOffset(const RetainPtr<IFX_SeekableReadStream>& pFile); 43 44int32_t GetDirectInteger(CPDF_Dictionary* pDict, const ByteString& key); 45 46std::ostream& operator<<(std::ostream& buf, const CPDF_Object* pObj); 47 48#endif // CORE_FPDFAPI_PARSER_FPDF_PARSER_UTILITY_H_ 49