10#include "PdfBaseDataTypes.h"
38 template<std::
size_t N>
42 initFromUtf8String(
str, N - 1);
45 template<
typename T,
typename = std::enable_if_t<std::is_same_v<T, const
char*>>>
49 initFromUtf8String(
str, std::char_traits<char>::length(
str));
83 static PdfName FromEscaped(
const std::string_view&
name);
91 std::string GetEscapedName()
const;
99 std::string_view GetString()
const;
107 std::string_view GetRawData()
const;
119 bool operator==(
const char*
str)
const;
120 bool operator==(
const std::string&
str)
const;
121 bool operator==(
const std::string_view& view)
const;
127 bool operator!=(
const char*
str)
const;
128 bool operator!=(
const std::string&
str)
const;
129 bool operator!=(
const std::string_view& view)
const;
135 operator std::string_view()
const;
139 PdfName(std::nullptr_t) =
delete;
141 void expandUtf8String();
142 void initFromUtf8String(
const char*
str,
size_t length);
143 void initFromUtf8String(
const std::string_view& view);
152 std::unique_ptr<std::string> Utf8String;
156 bool m_dataAllocated;
159 std::shared_ptr<NameData> m_data;
160 std::string_view m_Utf8View;
176struct PODOFO_API PdfNameInequality
178 using is_transparent = std::true_type;
180 bool operator()(
const PdfName& lhs,
const PdfName& rhs)
const
182 return lhs.GetRawData() < rhs.GetRawData();
184 bool operator()(
const PdfName& lhs,
const std::string_view& rhs)
const
186 return lhs.GetRawData() < rhs;
188 bool operator()(
const std::string_view& lhs,
const PdfName& rhs)
const
190 return lhs < rhs.GetRawData();
194struct PODOFO_API PdfNameHashing
196 using is_transparent = std::true_type;
198 inline std::size_t operator()(
const std::string_view& name)
const
200 return std::hash<std::string_view>()(name);
202 inline std::size_t operator()(
const PdfName& name)
const
204 return std::hash<std::string_view>()(name);
208struct PODOFO_API PdfNameEquality
210 using is_transparent = std::true_type;
212 inline bool operator()(
const PdfName& lhs,
const PdfName& rhs)
const
214 return lhs.GetRawData() == rhs.GetRawData();
216 inline bool operator()(
const PdfName& lhs,
const std::string_view& rhs)
const
218 return lhs.GetRawData() == rhs;
220 inline bool operator()(
const std::string_view& lhs,
const PdfName& rhs)
const
222 return lhs == rhs.GetRawData();
226template<
typename TValue>
227using PdfNameMap = std::map<PdfName, TValue, PdfNameInequality>;
229template<
typename TValue>
230using PdfNameHashMap = std::unordered_map<PdfName, TValue, PdfNameHashing, PdfNameEquality>;
An interface for writing blocks of data to a data source.
Definition OutputStream.h:18
A class to inherit for classes that are stored as union members in a PdfVariant.
Definition PdfBaseDataTypes.h:21
An helper class to inherit to provide common serialization methods.
Definition PdfBaseDataTypes.h:40
This class represents a PdfName.
Definition PdfName.h:24
PdfName(const std::string_view &str)
Create a new PdfName object.
static const PdfName Null
Null name, corresponds to "/".
Definition PdfName.h:28
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:38
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16
PdfDataType
Every PDF datatype that can occur in a PDF file is referenced by an own enum (e.g.
Definition PdfDeclarations.h:167
@ Name
Name datatype. Names are used as keys in dictionary to reference values.
PdfWriteFlags
Specify additional options for writing the PDF.
Definition PdfDeclarations.h:149
cspan< char > bufferview
Convenient read-only char buffer span.
Definition basetypes.h:19