\doxysection{src/include/serif/utils/serialize/archive.hpp File Reference} \hypertarget{archive_8hpp}{}\label{archive_8hpp}\index{src/include/serif/utils/serialize/archive.hpp@{src/include/serif/utils/serialize/archive.hpp}} {\ttfamily \#include $<$cstddef$>$}\newline {\ttfamily \#include $<$filesystem$>$}\newline {\ttfamily \#include $<$fstream$>$}\newline {\ttfamily \#include $<$map$>$}\newline {\ttfamily \#include $<$optional$>$}\newline {\ttfamily \#include $<$string$>$}\newline {\ttfamily \#include $<$string\+\_\+view$>$}\newline {\ttfamily \#include $<$vector$>$}\newline {\ttfamily \#include "{}serif/utils/serialize/record.\+hpp"{}}\newline Include dependency graph for archive.\+hpp\+: \nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=350pt]{archive_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]{archive_8hpp__dep__incl} \end{center} \end{figure} \doxysubsubsection*{Classes} \begin{DoxyCompactItemize} \item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_write_options}{serif\+::utils\+::serialize\+::\+Write\+Options}} \begin{DoxyCompactList}\small\item\em Annotations belong to the written observation, not to the stellar physics. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_read_options}{serif\+::utils\+::serialize\+::\+Read\+Options}} \begin{DoxyCompactList}\small\item\em Bound resource use when inspecting an unfamiliar archive; limits may be raised explicitly. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_entry}{serif\+::utils\+::serialize\+::\+Entry}} \begin{DoxyCompactList}\small\item\em The ledger locates each independent field without decoding the rest of the archive. \end{DoxyCompactList}\item struct \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_pack}{serif\+::utils\+::serialize\+::\+Pack}} \begin{DoxyCompactList}\small\item\em A pack owns its data immediately, so subsequent model changes cannot alter a pending write. \end{DoxyCompactList}\item class \mbox{\hyperlink{classserif_1_1utils_1_1serialize_1_1_reader}{serif\+::utils\+::serialize\+::\+Reader}} \begin{DoxyCompactList}\small\item\em Inspect the ledger first, then seek directly to whichever components are actually needed. \end{DoxyCompactList}\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*{Enumerations} \begin{DoxyCompactItemize} \item enum class \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_af59ceea5df9600e1e8c0e762e6b08c99}{serif\+::utils\+::serialize\+::\+Format}} \{ \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_af59ceea5df9600e1e8c0e762e6b08c99a9d7183f16acce70658f686ae7f1a4d20}{serif\+::utils\+::serialize\+::binary}} , \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_af59ceea5df9600e1e8c0e762e6b08c99a1cb251ec0d568de6a929b520c4aed8d1}{serif\+::utils\+::serialize\+::text}} \} \begin{DoxyCompactList}\small\item\em Both encodings share the same component schemas and indexed, sectioned file layout. \end{DoxyCompactList}\item enum class \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a02674e30cfb576e300d365827de17279}{serif\+::utils\+::serialize\+::\+Version\+Tolerance}} \{ \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a02674e30cfb576e300d365827de17279ae79a3672fcb675134bb57abd3e0dfae3}{serif\+::utils\+::serialize\+::same\+\_\+major}} , \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a02674e30cfb576e300d365827de17279a3b7efa09444a31c5d58596e5bbf87d47}{serif\+::utils\+::serialize\+::exact}} , \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a02674e30cfb576e300d365827de17279a100b8cad7cf2a56f6df78f171f97a1ec}{serif\+::utils\+::serialize\+::any}} \} \begin{DoxyCompactList}\small\item\em Application-\/version compatibility is separate from file-\/format and component-\/schema compatibility. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsubsection*{Functions} \begin{DoxyCompactItemize} \item {\footnotesize template$<$typename T$>$ }\\\mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_field}{Field}} \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ab93715bd271d15568badc8f1d5423271}{serif\+::utils\+::serialize\+::named}} (std\+::string name, const T \&value) \begin{DoxyCompactList}\small\item\em Assign an explicit top-\/level name, for example when storing two stars in the same archive. \end{DoxyCompactList}\item void \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a7f4727c3a8f5b10ed46c149785bd8c82}{serif\+::utils\+::serialize\+::add\+\_\+component}} (\mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_pack}{Pack}} \&\mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ad8a45ed21a6cf9a7ca63582a18526f9b}{pack}}, \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_field}{Field}} component) \begin{DoxyCompactList}\small\item\em Insert a component while rejecting conflicting definitions of the same named object. \end{DoxyCompactList}\item {\footnotesize template$<$typename... T$>$ }\\\mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_pack}{Pack}} \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ad8a45ed21a6cf9a7ca63582a18526f9b}{serif\+::utils\+::serialize\+::pack}} (const T \&... values) \begin{DoxyCompactList}\small\item\em Capture every supplied component; unregistered nested types remain visible as unsupported entries. \end{DoxyCompactList}\item \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_ace9e0af29889a767ef1c95a09a4b7265}{Result}}$<$ void $>$ \mbox{\hyperlink{namespaceserif_1_1utils_1_1serialize_a53de7b4a0d01bed188ef53fbeb4c3e7e}{serif\+::utils\+::serialize\+::write}} (const std\+::filesystem\+::path \&path, const \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_pack}{Pack}} \&contents, const \mbox{\hyperlink{structserif_1_1utils_1_1serialize_1_1_write_options}{Write\+Options}} \&options=\{\}) \begin{DoxyCompactList}\small\item\em Write a complete temporary file and atomically replace the destination only after it closes successfully. \end{DoxyCompactList}\end{DoxyCompactItemize}