10#include <QCoreApplication>
12#include <QKeySequence>
16#include <QVersionNumber>
57 static QRectF
loadRect(QDataStream &stream,
const QVersionNumber &version);
67 static QString
typeName(
const int type);
139 static void writePayload(QDataStream &stream,
const QByteArray &payload);
152 static QByteArray
readPayload(QDataStream &stream,
const QVersionNumber &version);
198 const QVersionNumber &fileVersion);
201 static void serializeBlobRegistry(
const QMap<QString, QByteArray> &blobs, QMap<QString, QVariant> &metadata);
214 static void copyPandaFile(
const QFileInfo &srcPath,
const QFileInfo &destPath,
215 QSet<QString> *visited =
nullptr,
int depth = 0);
Deserialization/serialization context structs passed through load()/save() call chains.
Abstract base class for circuit element ports (connection endpoints).
Static utility class for reading and writing circuit and waveform files.
static void readDolphinHeader(QDataStream &stream)
Reads and validates the BeWavedDolphin waveform file header.
static QList< QGraphicsItem * > deserialize(QDataStream &stream, SerializationContext &context)
Deserializes items from stream until the stream is exhausted.
static void serialize(const QList< QGraphicsItem * > &items, QDataStream &stream, SerializationOptions options)
Serializes items to stream in the current .panda binary format.
static QMap< QString, QByteArray > readBoundedBlobMap(QDataStream &stream)
Reads a QMap<QString,QByteArray> from stream with bounds checking.
static void copyPandaFile(const QFileInfo &srcPath, const QFileInfo &destPath, QSet< QString > *visited=nullptr, int depth=0)
Copies a .panda file and its file-backed IC dependencies to destPath.
static QString readBoundedString(QDataStream &stream)
Reads a QString from stream, refusing to allocate more bytes than remain in the stream (prevents OOM ...
static void writePandaHeader(QDataStream &stream)
Writes the .panda circuit file header to stream.
static constexpr quint32 MAGIC_HEADER_WAVEFORM
static QString typeName(const int type)
Returns the human-readable element type name for the given type integer.
static void writeDolphinHeader(QDataStream &stream)
Writes the BeWavedDolphin waveform file header to stream.
static void serializeBlobRegistry(const QMap< QString, QByteArray > &blobs, QMap< QString, QVariant > &metadata)
Serializes embedded ICs into a metadata map (sets the "embeddedICs" key).
static QKeySequence readBoundedKeySequence(QDataStream &stream)
Reads a QKeySequence from stream, rejecting an implausible/oversized internal key-combination count b...
static QVersionNumber readPandaHeader(QDataStream &stream)
Reads and validates the .panda circuit file header; returns the stored version number.
static QString loadDolphinFileName(QDataStream &stream, const QVersionNumber &version)
Returns the BeWavedDolphin waveform file name stored in stream at version.
static void writePayload(QDataStream &stream, const QByteArray &payload)
Compresses payload (qCompress) and writes it to stream.
static Preamble readPreamble(QDataStream &stream)
Reads the full .panda preamble: header, dolphin filename, rect, and metadata (V_4_5+).
static QByteArray readPayload(QDataStream &stream, const QVersionNumber &version)
Reads the remainder of stream's device, decompressing it first if version indicates the compressed-pa...
static QMap< QString, QVariant > readBoundedMetadata(QDataStream &stream)
Reads the file-level metadata QMap<QString,QVariant> from stream without calling QList::reserve() wit...
static QMap< QString, QByteArray > deserializeBlobRegistry(const QMap< QString, QVariant > &metadata, const QVersionNumber &fileVersion)
Extracts the embedded IC registry from a metadata map.
static void createVersionedBackup(const QString &fileName, const QVersionNumber &version)
Copies fileName to a versioned sidecar before overwriting it during migration.
static constexpr quint32 MAGIC_HEADER_CIRCUIT
static QRectF loadRect(QDataStream &stream, const QVersionNumber &version)
Returns the canvas viewport rectangle from the last saved session.
Bundles all per-deserialization state so that load() overrides receive it through one explicit parame...
Options passed to GraphicElement::save() (and friends); the save-side counterpart of SerializationCon...
Result of reading a .panda file preamble (header + dolphin + rect + metadata).
QMap< QString, QVariant > metadata
QByteArray remainingPayload