/usr/include/poppler/UnicodeMap.h is in libpoppler-private-dev 0.62.0-2ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | //========================================================================
//
// UnicodeMap.h
//
// Mapping from Unicode to an encoding.
//
// Copyright 2001-2003 Glyph & Cog, LLC
//
//========================================================================
//========================================================================
//
// Modified under the Poppler project - http://poppler.freedesktop.org
//
// All changes made under the Poppler project to this file are licensed
// under GPL version 2 or later
//
// Copyright (C) 2017 Adrian Johnson <ajohnson@redneon.com>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
//
//========================================================================
#ifndef UNICODEMAP_H
#define UNICODEMAP_H
#ifdef USE_GCC_PRAGMAS
#pragma interface
#endif
#include "poppler-config.h"
#include "goo/gtypes.h"
#include "CharTypes.h"
#ifdef MULTITHREADED
#include "goo/GooMutex.h"
#endif
class GooString;
//------------------------------------------------------------------------
enum UnicodeMapKind {
unicodeMapUser, // read from a file
unicodeMapResident, // static list of ranges
unicodeMapFunc // function pointer
};
typedef int (*UnicodeMapFunc)(Unicode u, char *buf, int bufSize);
struct UnicodeMapRange {
Unicode start, end; // range of Unicode chars
Guint code, nBytes; // first output code
};
struct UnicodeMapExt;
//------------------------------------------------------------------------
class UnicodeMap {
public:
// Create the UnicodeMap specified by <encodingName>. Sets the
// initial reference count to 1. Returns NULL on failure.
static UnicodeMap *parse(GooString *encodingNameA);
// Create a resident UnicodeMap.
UnicodeMap(const char *encodingNameA, GBool unicodeOutA,
UnicodeMapRange *rangesA, int lenA);
// Create a resident UnicodeMap that uses a function instead of a
// list of ranges.
UnicodeMap(const char *encodingNameA, GBool unicodeOutA,
UnicodeMapFunc funcA);
~UnicodeMap();
void incRefCnt();
void decRefCnt();
GooString *getEncodingName() { return encodingName; }
GBool isUnicode() { return unicodeOut; }
// Return true if this UnicodeMap matches the specified
// <encodingNameA>.
GBool match(GooString *encodingNameA);
// Map Unicode to the target encoding. Fills in <buf> with the
// output and returns the number of bytes used. Output will be
// truncated at <bufSize> bytes. No string terminator is written.
// Returns 0 if no mapping is found.
int mapUnicode(Unicode u, char *buf, int bufSize);
private:
UnicodeMap(GooString *encodingNameA);
GooString *encodingName;
UnicodeMapKind kind;
GBool unicodeOut;
union {
UnicodeMapRange *ranges; // (user, resident)
UnicodeMapFunc func; // (func)
};
int len; // (user, resident)
UnicodeMapExt *eMaps; // (user)
int eMapsLen; // (user)
int refCnt;
#ifdef MULTITHREADED
GooMutex mutex;
#endif
};
//------------------------------------------------------------------------
#define unicodeMapCacheSize 4
class UnicodeMapCache {
public:
UnicodeMapCache();
~UnicodeMapCache();
// Get the UnicodeMap for <encodingName>. Increments its reference
// count; there will be one reference for the cache plus one for the
// caller of this function. Returns NULL on failure.
UnicodeMap *getUnicodeMap(GooString *encodingName);
private:
UnicodeMap *cache[unicodeMapCacheSize];
};
#endif
|