\doxysection{src/include/serif/utils/serialize/record.hpp File Reference} \hypertarget{record_8hpp}{}\label{record_8hpp}\index{src/include/serif/utils/serialize/record.hpp@{src/include/serif/utils/serialize/record.hpp}} {\ttfamily \#include $<$algorithm$>$}\newline {\ttfamily \#include $<$array$>$}\newline {\ttfamily \#include $<$bit$>$}\newline {\ttfamily \#include $<$concepts$>$}\newline {\ttfamily \#include $<$cstdint$>$}\newline {\ttfamily \#include $<$exception$>$}\newline {\ttfamily \#include $<$expected$>$}\newline {\ttfamily \#include $<$functional$>$}\newline {\ttfamily \#include $<$limits$>$}\newline {\ttfamily \#include $<$map$>$}\newline {\ttfamily \#include $<$optional$>$}\newline {\ttfamily \#include $<$string$>$}\newline {\ttfamily \#include $<$string\+\_\+view$>$}\newline {\ttfamily \#include $<$tuple$>$}\newline {\ttfamily \#include $<$type\+\_\+traits$>$}\newline {\ttfamily \#include $<$utility$>$}\newline {\ttfamily \#include $<$variant$>$}\newline {\ttfamily \#include $<$vector$>$}\newline Include dependency graph for record.\+hpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{record_8hpp__incl} \end{center} \end{figure} This graph shows which files directly or indirectly include this file\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{record_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_error}{serif\+::utils\+::serialize\+::\+Error}} \begin{DoxyCompactList}\small\item\em Identify the component or field that could not be saved or reconstructed. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_node}{serif\+::utils\+::serialize\+::\+Node}} \begin{DoxyCompactList}\small\item\em A named component owns its fields, stable schema identifier, and schema version. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_field}{serif\+::utils\+::serialize\+::\+Field}} \begin{DoxyCompactList}\small\item\em Associate a field name with an already encoded child. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_member}{serif\+::utils\+::serialize\+::\+Member$<$ T $>$}} \begin{DoxyCompactList}\small\item\em Name a typed field expected by a component\textquotesingle{}s loader. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01_node_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ Node $>$}} \begin{DoxyCompactList}\small\item\em Preserve a raw component when inspection, rather than typed reconstruction, is wanted. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01_t_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ T $>$}} \begin{DoxyCompactList}\small\item\em Store numeric values using explicit portable widths. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01std_1_1string_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ std\+::string $>$}} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01std_1_1string__view_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ std\+::string\+\_\+view $>$}} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01char_0f_size_0e_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ char\mbox{[}\+Size\mbox{]}$>$}} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01std_1_1vector_3_01_t_01_4_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ std\+::vector$<$ T $>$ $>$}} \begin{DoxyCompactList}\small\item\em Arrays of coefficients are contiguous payloads, while compound values retain named children. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01std_1_1array_3_01_t_00_01_size_01_4_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ std\+::array$<$ T, Size $>$ $>$}} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01std_1_1optional_3_01_t_01_4_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ std\+::optional$<$ T $>$ $>$}} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_serializer_3_01std_1_1tuple_3_01_t_8_8_8_01_4_01_4}{serif\+::utils\+::serialize\+::\+Serializer$<$ std\+::tuple$<$ T... $>$ $>$}} \end{DoxyCompactItemize} \doxysubsubsection*{Namespaces} \begin{DoxyCompactItemize} \item namespace \mbox{\hyperlink{namespaceserif}{serif}} \item namespace \mbox{\hyperlink{namespaceserif_1_1utils}{serif\+::utils}} \item namespace \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize}{serif\+::utils\+::serialize}} \end{DoxyCompactItemize} \doxysubsubsection*{Typedefs} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename T$>$ }\\using \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ace9e0af29889a767ef1c95a09a4b7265}{serif\+::utils\+::serialize\+::\+Result}} = std\+::expected$<$T, \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_error}{Error}}$>$ \item using \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a76d9829ffc510737a78d63b06f115861}{serif\+::utils\+::serialize\+::\+Value}} \begin{DoxyCompactList}\small\item\em Portable scientific data; runtime pointers and computational caches have no representation here. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename T$>$ }\\\mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_node}{Node}} \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a4ea480fabb9d06528d01b26691fa80ec}{serif\+::utils\+::serialize\+::encode}} (const T \&value) \begin{DoxyCompactList}\small\item\em Produce data when a serializer exists, otherwise record the missing capability explicitly. \end{DoxyCompactList}\item {\footnotesize template$<$typename T$>$ }\\\mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ace9e0af29889a767ef1c95a09a4b7265}{Result}}$<$ T $>$ \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_abb3b906587e8c2950b461d615bba7606}{serif\+::utils\+::serialize\+::decode}} (const \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_node}{Node}} \&node) \begin{DoxyCompactList}\small\item\em Translate invalid saved parameters into a value error at the reconstruction boundary. \end{DoxyCompactList}\item {\footnotesize template$<$typename T$>$ }\\\mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_field}{Field}} \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a73c789fd95f83d2f547facf07bc3ea79}{serif\+::utils\+::serialize\+::field}} (std\+::string name, const T \&value) \begin{DoxyCompactList}\small\item\em Encode one named field of a component. \end{DoxyCompactList}\item {\footnotesize template$<$typename... Fields$>$ }\\\mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_node}{Node}} \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_accd9d8a1543b90311f64896a155c6e1c}{serif\+::utils\+::serialize\+::object}} (std\+::string\+\_\+view type, Fields... fields) \begin{DoxyCompactList}\small\item\em Compose a component from its independently serialized fields. \end{DoxyCompactList}\item {\footnotesize template$<$typename T$>$ }\\\mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_member}{Member}}$<$ T $>$ \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a019c595419bddb41b7a05042e2f6d611}{serif\+::utils\+::serialize\+::member}} (std\+::string\+\_\+view name) \begin{DoxyCompactList}\small\item\em Describe one field to read\+\_\+object without a separate temporary variable. \end{DoxyCompactList}\item {\footnotesize template$<$typename T$>$ }\\\mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ace9e0af29889a767ef1c95a09a4b7265}{Result}}$<$ T $>$ \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a21172de2e2f37c8797a238eb0bdaea30}{serif\+::utils\+::serialize\+::read\+\_\+field}} (const \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_node}{Node}} \&node, std\+::string\+\_\+view name) \begin{DoxyCompactList}\small\item\em Read a required field and retain its full path in any diagnostic. \end{DoxyCompactList}\item {\footnotesize template$<$typename Construct, typename... Members$>$ }\\auto \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_adb5114bee6aa1ea6612b96babf0ae8c2}{serif\+::utils\+::serialize\+::read\+\_\+object}} (const \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_node}{Node}} \&node, std\+::string\+\_\+view type, Construct construct, Members... members) -\/$>$ \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ace9e0af29889a767ef1c95a09a4b7265}{Result}}$<$ std\+::invoke\+\_\+result\+\_\+t$<$ Construct, typename Members\+::\+Type... $>$ $>$ \begin{DoxyCompactList}\small\item\em Construct a component only after every required field has decoded successfully. \end{DoxyCompactList}\item std\+::string \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ad1fa896c36b9c32ff4b8bdb8660cba33}{serif\+::utils\+::serialize\+::fingerprint}} (std\+::string\+\_\+view bytes) \begin{DoxyCompactList}\small\item\em Versioned content identity for accidental corruption and resource matching; not a cryptographic signature. \end{DoxyCompactList}\end{DoxyCompactItemize}