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
patternregistry.h
Go to the documentation of this file.
1
21#ifndef OPENSWMMVIS_PATTERN_PATTERNREGISTRY_H
22#define OPENSWMMVIS_PATTERN_PATTERNREGISTRY_H
23
25
26#include <QHash>
27#include <QObject>
28#include <QString>
29#include <QVector>
30
31namespace openswmmvis::pattern {
32
33class PatternRegistry : public QObject
34{
35 Q_OBJECT
36
37public:
38 explicit PatternRegistry(QObject *parent = nullptr);
39 ~PatternRegistry() override;
40
41 // ── Lookup ──────────────────────────────────────────────────────────────
42
44 QVector<PatternProvider *> providers() const { return m_providers; }
45
46 int providerCount() const noexcept { return m_providers.size(); }
47
49 PatternProvider *findByName(const QString &name) const;
50
52 bool hasName(const QString &name) const { return findByName(name) != nullptr; }
53
54 // ── Mutation ────────────────────────────────────────────────────────────
55
63 PatternProvider *create(const QString &name, PatternType type);
64
68 PatternProvider *duplicate(const QString &srcName, const QString &newName);
69
75
81 bool rename(PatternProvider *p, const QString &newName);
82
83 // ── Engine I/O ──────────────────────────────────────────────────────────
84
94
100 int saveToEngine(void *engineHandle);
101
106 void attachEngine(void *engineHandle) { m_engineHandle = engineHandle; }
107
109 void *engineHandle() const noexcept { return m_engineHandle; }
110
111signals:
114
117
120 const QString &prevName, const QString &newName);
121
122private:
123 QVector<PatternProvider *> m_providers;
124 QHash<QString, PatternProvider *> m_byLowerName;
125 void *m_engineHandle = nullptr;
126};
127
128} // namespace openswmmvis::pattern
129
130#endif // OPENSWMMVIS_PATTERN_PATTERNREGISTRY_H
Definition patternprovider.h:49
Definition patternregistry.h:34
void providerAboutToBeRemoved(openswmmvis::pattern::PatternProvider *provider)
A provider is about to be removed. Subscribers must drop refs.
void providerRenamed(openswmmvis::pattern::PatternProvider *provider, const QString &prevName, const QString &newName)
A provider's name changed.
void attachEngine(void *engineHandle)
Attach an engine handle so subsequent mutations (create / remove / rename / duplicate) are mirrored t...
Definition patternregistry.h:106
int saveToEngine(void *engineHandle)
Push every provider's factors back to the engine via swmm_pattern_set_factors. New providers (missing...
Definition patternregistry.cpp:177
int providerCount() const noexcept
Definition patternregistry.h:46
bool hasName(const QString &name) const
True iff a provider with this name exists (case-insensitive).
Definition patternregistry.h:52
void remove(PatternProvider *p)
Remove + delete a provider. Safe to call with a stale pointer (no-op if not owned by this registry)....
Definition patternregistry.cpp:86
QVector< PatternProvider * > providers() const
All providers in insertion order.
Definition patternregistry.h:44
void * engineHandle() const noexcept
The currently-attached engine handle (or nullptr).
Definition patternregistry.h:109
PatternProvider * duplicate(const QString &srcName, const QString &newName)
Clone an existing provider under a new name. Copies the source provider's type and all factor values....
Definition patternregistry.cpp:58
int loadFromEngine(void *engineHandle)
Populate the registry from a live SWMM engine handle. Walks swmm_pattern_*, creates one PatternProvid...
Definition patternregistry.cpp:137
PatternProvider * findByName(const QString &name) const
Find by exact name (case-insensitive). Returns nullptr if absent.
Definition patternregistry.cpp:21
bool rename(PatternProvider *p, const QString &newName)
Rename a provider. Performs the uniqueness check; returns false (and emits no signal) if newName coll...
Definition patternregistry.cpp:103
PatternProvider * create(const QString &name, PatternType type)
Create + own a new provider with the given name + type.
Definition patternregistry.cpp:26
void providerAdded(openswmmvis::pattern::PatternProvider *provider)
A provider was created and added to the registry.
enum OpenSWMM::Render::@788::Value::Type type
ArrowPlacement p
Definition linesymbollayer.cpp:27
Definition patternprovider.h:36
PatternType
Pattern shape — fixed factor count per type. Numeric values intentionally match the engine's PatternT...
Definition patternprovider.h:41
Slice BQ Phase 6.7.2 — MVC model for a single SWMM time pattern.
QVector< int > parent
union-find
Definition pslgminsize.cpp:176
QString name
Definition sectionmodelbuilders.cpp:474