SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
ioportabilitynormalizer.h File Reference

Pre-save check for IO portability across .inp and .gpkg. More...

#include <QString>
#include <QStringList>
#include <QVector>
#include <openswmm/engine/openswmm_engine.h>
Include dependency graph for ioportabilitynormalizer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  openswmmvis::project::SlotPreview
 Per-slot preview row returned by the normalizer. More...
 
struct  openswmmvis::project::PreflightResult
 Outcome of a single pre-flight pass. More...
 
class  openswmmvis::project::IoPortabilityNormalizer
 Stateless utility — every method is static. More...
 

Namespaces

namespace  openswmmvis
 
namespace  openswmmvis::project
 

Detailed Description

Pre-save check for IO portability across .inp and .gpkg.

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
Date
2026
License\n GPL-3.0-or-later
    Slice IO-10. Sits between `SWMMVis::onSaveAs` (path dialog
    resolution) and `SWMMVisProjectWindow::saveAs` (the engine
    writer call). Walks every scalar external-file slot on the
    engine via the IO-9 typed C-API and produces:

      - a per-slot preview of how the relative form would render
        against the destination directory (`.inp` target only);
      - a list of non-fatal warnings (cross-volume slots, missing
        USE-direction files, etc.) for the GUI status panel.

    The normalizer never mutates the engine — the rebase math is
    the engine writer's job. Its purpose is to give the GUI an
    actionable preview so the user can fix problems before saving.

    Vector slots (per-gage, per-timeseries, per-hot-start save)
    are covered by their respective editors in Slice IO-11; this
    first cut focuses on the 7 scalar `SWMM_FilePathRole`s that
    dominate the portability burden.

    See `openswmm.gui/docs/IO_PORTABILITY_PLAN.md` §3.8.