mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-11-03 17:50:21 +01:00
Drop-in copy of C:\Users\maj00r\Projects\maj0sted-master minus its web/ directory - the WASM frontend is not being ported, the editor drives the same C++ API natively. What is left is plain C++20 with no dependencies: domain model (niweleta, plan and profile geometry, fitting, parallelism), project serialization, rail sampling and the editor document. src/web/ribbon.cpp was missing from the library source list; added, since without it the ribbon symbols never make it into the archive.
20 lines
720 B
C++
20 lines
720 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
#include "maj0sted/domain/map_project.hpp"
|
|
|
|
namespace maj0sted::io {
|
|
|
|
/// Serializes a whole map project (CRS + niwelety, each with its plan and
|
|
/// profile) to a self-contained textual format. The format is line-oriented and
|
|
/// dependency-free; @c deserialize round-trips it exactly.
|
|
[[nodiscard]] std::string serialize(const maj0sted::domain::MapProject& project);
|
|
|
|
/// Rebuilds a map project from text produced by @c serialize.
|
|
/// @throws std::runtime_error on malformed input; std::invalid_argument if the
|
|
/// reconstructed geometry violates a domain invariant.
|
|
[[nodiscard]] maj0sted::domain::MapProject deserialize(const std::string& text);
|
|
|
|
} // namespace maj0sted::io
|