8#include "PdfBaseDataTypes.h"
30 template<std::
size_t N>
34 initFromUtf8String(
str, N - 1,
true);
37 template<
typename T,
typename = std::enable_if_t<std::is_same_v<T, const
char*>>>
41 initFromUtf8String(
str, std::char_traits<char>::length(
str),
false);
79 inline bool IsHex()
const {
return m_isHex; }
88 bool IsStringEvaluated()
const;
99 std::string_view GetString()
const;
101 std::string_view GetRawData()
const;
121 bool operator==(
const char*
str)
const;
122 bool operator==(
const std::string&
str)
const;
123 bool operator==(
const std::string_view& view)
const;
129 bool operator!=(
const char*
str)
const;
130 bool operator!=(
const std::string&
str)
const;
131 bool operator!=(
const std::string_view& view)
const;
134 operator std::string_view()
const;
146 void initFromUtf8String(
const char*
str,
size_t length,
bool literal);
147 void ensureCharsEvaluated()
const;
156 bool StringEvaluated;
160 bool m_dataAllocated;
164 std::string_view m_Utf8View;
165 std::shared_ptr<StringData> m_data;
172struct PODOFO_API PdfStringInequality
174 using is_transparent = std::true_type;
176 inline bool operator()(
const PdfString& lhs,
const PdfString& rhs)
const
178 return lhs.GetString() < rhs.GetString();
180 inline bool operator()(
const PdfString& lhs,
const std::string_view& rhs)
const
182 return lhs.GetString() < rhs;
184 bool operator()(
const std::string_view& lhs,
const PdfString& rhs)
const
186 return lhs < rhs.GetString();
190struct PODOFO_API PdfStringHashing
192 using is_transparent = std::true_type;
194 inline std::size_t operator()(
const std::string_view& str)
const
196 return std::hash<std::string_view>()(str);
198 inline std::size_t operator()(
const PdfString& str)
const
200 return std::hash<std::string_view>()(str);
204struct PODOFO_API PdfStringEquality
206 using is_transparent = std::true_type;
208 inline bool operator()(
const PdfString& lhs,
const PdfString& rhs)
const
210 return lhs.GetString() == rhs.GetString();
212 inline bool operator()(
const PdfString& lhs,
const std::string_view& rhs)
const
214 return lhs.GetString() == rhs;
216 inline bool operator()(
const std::string_view& lhs,
const PdfString& rhs)
const
218 return lhs == rhs.GetString();
222template<
typename TValue>
223using PdfStringMap = std::map<PdfString, TValue, PdfStringInequality>;
225template<
typename TValue>
226using PdfStringHashMap = std::unordered_map<PdfString, TValue, PdfStringHashing, PdfStringEquality>;
An interface for writing blocks of data to a data source.
Definition OutputStream.h:15
A class to inherit for classes that are stored as union members in a PdfVariant.
Definition PdfBaseDataTypes.h:18
An helper class to inherit to provide common serialization methods.
Definition PdfBaseDataTypes.h:36
A string that can be written to a PDF document.
Definition PdfString.h:21
bool IsHex() const
Check if this is a hex string.
Definition PdfString.h:79
PdfString(const std::string_view &view)
Construct a new PdfString from a utf-8 string The input string will be copied.
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:30
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13
PdfStringCharset
Definition PdfDeclarations.h:106
PdfWriteFlags
Specify additional options for writing the PDF.
Definition PdfDeclarations.h:136
cspan< char > bufferview
Convenient read-only char buffer span.
Definition basetypes.h:15