OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
ObjectDeleter.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2//
3// Copyright 2026 Caleb Buahin
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
32
33#ifndef OPENSWMM_ENGINE_OBJECT_DELETER_HPP
34#define OPENSWMM_ENGINE_OBJECT_DELETER_HPP
35
37#include <string>
38#include <vector>
39
40namespace openswmm::edit {
41
42// ============================================================================
43// Cascade result
44// ============================================================================
45
52 int obj_idx;
53 const char* field;
54 bool cascaded;
55};
56
59 std::vector<CascadeEntry> entries;
60
61 void add(int ot, int oi, const char* f, bool deleted) {
62 entries.push_back({ot, oi, f, deleted});
63 }
64};
65
66// ============================================================================
67// Impact analysis — read-only
68// ============================================================================
69
70CascadeResult analyze_node_impact (const SimulationContext& ctx, int node_idx);
71CascadeResult analyze_link_impact (const SimulationContext& ctx, int link_idx);
72CascadeResult analyze_subcatch_impact(const SimulationContext& ctx, int sc_idx);
73CascadeResult analyze_gage_impact (const SimulationContext& ctx, int gage_idx);
74CascadeResult analyze_table_impact (const SimulationContext& ctx, int table_idx);
75CascadeResult analyze_transect_impact(const SimulationContext& ctx, int transect_idx);
76
77CascadeResult analyze_pollutant_impact(const SimulationContext& ctx, int pollut_idx);
78CascadeResult analyze_pattern_impact (const SimulationContext& ctx, int pattern_idx);
79CascadeResult analyze_aquifer_impact (const SimulationContext& ctx, int aquifer_idx);
80CascadeResult analyze_snowpack_impact (const SimulationContext& ctx, int snowpack_idx);
81CascadeResult analyze_lid_impact (const SimulationContext& ctx, int lid_idx);
82CascadeResult analyze_street_impact (const SimulationContext& ctx, int street_idx);
83CascadeResult analyze_inlet_impact (const SimulationContext& ctx, int inlet_idx);
84CascadeResult analyze_landuse_impact (const SimulationContext& ctx, int landuse_idx);
86CascadeResult analyze_hydrograph_impact(const SimulationContext& ctx, const std::string& uh_name);
87
99std::vector<int> find_control_rule_refs(const SimulationContext& ctx,
100 const std::string& object_name);
101
102// ============================================================================
103// Deletion — mutates ctx
104// ============================================================================
105
106CascadeResult delete_node (SimulationContext& ctx, int node_idx);
107CascadeResult delete_link (SimulationContext& ctx, int link_idx);
108CascadeResult delete_subcatch(SimulationContext& ctx, int sc_idx);
109CascadeResult delete_gage (SimulationContext& ctx, int gage_idx);
110
129CascadeResult delete_nodes_many (SimulationContext& ctx, std::vector<int> indices);
131CascadeResult delete_links_many (SimulationContext& ctx, std::vector<int> indices);
133CascadeResult delete_subcatches_many(SimulationContext& ctx, std::vector<int> indices);
135CascadeResult delete_gages_many (SimulationContext& ctx, std::vector<int> indices);
136CascadeResult delete_table (SimulationContext& ctx, int table_idx);
137CascadeResult delete_transect(SimulationContext& ctx, int transect_idx);
138
139CascadeResult delete_pollutant(SimulationContext& ctx, int pollut_idx);
140CascadeResult delete_pattern (SimulationContext& ctx, int pattern_idx);
141CascadeResult delete_aquifer (SimulationContext& ctx, int aquifer_idx);
142CascadeResult delete_snowpack (SimulationContext& ctx, int snowpack_idx);
143CascadeResult delete_lid (SimulationContext& ctx, int lid_idx);
144CascadeResult delete_street (SimulationContext& ctx, int street_idx);
145CascadeResult delete_inlet (SimulationContext& ctx, int inlet_idx);
146CascadeResult delete_landuse (SimulationContext& ctx, int landuse_idx);
147CascadeResult delete_hydrograph(SimulationContext& ctx, const std::string& uh_name);
148
149} // namespace openswmm::edit
150
151#endif /* OPENSWMM_ENGINE_OBJECT_DELETER_HPP */
The central, reentrant simulation context for the new engine.
Definition ObjectDeleter.cpp:37
CascadeResult analyze_node_impact(const SimulationContext &ctx, int node_idx)
Definition ObjectDeleter.cpp:177
CascadeResult delete_link(SimulationContext &ctx, int link_idx)
Definition ObjectDeleter.cpp:560
CascadeResult delete_nodes_many(SimulationContext &ctx, std::vector< int > indices)
Batch deletion — equivalent to sequential per-object deletes in DESCENDING index order,...
Definition ObjectDeleter.cpp:771
CascadeResult analyze_inlet_impact(const SimulationContext &ctx, int inlet_idx)
Definition ObjectDeleter.cpp:1474
CascadeResult analyze_transect_impact(const SimulationContext &ctx, int transect_idx)
Definition ObjectDeleter.cpp:407
CascadeResult delete_lid(SimulationContext &ctx, int lid_idx)
Definition ObjectDeleter.cpp:1372
std::vector< int > find_control_rule_refs(const SimulationContext &ctx, const std::string &object_name)
Find control rules whose text references an object by name.
Definition ObjectDeleter.cpp:136
CascadeResult delete_landuse(SimulationContext &ctx, int landuse_idx)
Definition ObjectDeleter.cpp:1542
CascadeResult delete_snowpack(SimulationContext &ctx, int snowpack_idx)
Definition ObjectDeleter.cpp:1331
CascadeResult analyze_link_impact(const SimulationContext &ctx, int link_idx)
Definition ObjectDeleter.cpp:235
CascadeResult delete_subcatch(SimulationContext &ctx, int sc_idx)
Definition ObjectDeleter.cpp:614
CascadeResult delete_aquifer(SimulationContext &ctx, int aquifer_idx)
Definition ObjectDeleter.cpp:1289
CascadeResult analyze_hydrograph_impact(const SimulationContext &ctx, const std::string &uh_name)
Unit-hydrograph groups are keyed by name (no stable index exists).
Definition ObjectDeleter.cpp:1597
CascadeResult analyze_lid_impact(const SimulationContext &ctx, int lid_idx)
Definition ObjectDeleter.cpp:1364
CascadeResult analyze_street_impact(const SimulationContext &ctx, int street_idx)
Definition ObjectDeleter.cpp:1403
CascadeResult delete_gage(SimulationContext &ctx, int gage_idx)
Definition ObjectDeleter.cpp:686
CascadeResult analyze_landuse_impact(const SimulationContext &ctx, int landuse_idx)
Definition ObjectDeleter.cpp:1536
CascadeResult delete_links_many(SimulationContext &ctx, std::vector< int > indices)
Batch deletion — equivalent to sequential per-object deletes in DESCENDING index order,...
Definition ObjectDeleter.cpp:778
CascadeResult analyze_gage_impact(const SimulationContext &ctx, int gage_idx)
Definition ObjectDeleter.cpp:296
CascadeResult delete_pattern(SimulationContext &ctx, int pattern_idx)
Definition ObjectDeleter.cpp:1250
CascadeResult analyze_table_impact(const SimulationContext &ctx, int table_idx)
Definition ObjectDeleter.cpp:319
CascadeResult analyze_subcatch_impact(const SimulationContext &ctx, int sc_idx)
Definition ObjectDeleter.cpp:256
CascadeResult analyze_snowpack_impact(const SimulationContext &ctx, int snowpack_idx)
Definition ObjectDeleter.cpp:1323
CascadeResult delete_table(SimulationContext &ctx, int table_idx)
Definition ObjectDeleter.cpp:800
CascadeResult delete_pollutant(SimulationContext &ctx, int pollut_idx)
Definition ObjectDeleter.cpp:1104
CascadeResult analyze_pattern_impact(const SimulationContext &ctx, int pattern_idx)
Definition ObjectDeleter.cpp:1244
CascadeResult delete_street(SimulationContext &ctx, int street_idx)
Definition ObjectDeleter.cpp:1423
CascadeResult delete_transect(SimulationContext &ctx, int transect_idx)
Definition ObjectDeleter.cpp:944
CascadeResult analyze_pollutant_impact(const SimulationContext &ctx, int pollut_idx)
Definition ObjectDeleter.cpp:1098
CascadeResult delete_gages_many(SimulationContext &ctx, std::vector< int > indices)
Batch deletion — equivalent to sequential per-object deletes in DESCENDING index order,...
Definition ObjectDeleter.cpp:790
CascadeResult analyze_aquifer_impact(const SimulationContext &ctx, int aquifer_idx)
Definition ObjectDeleter.cpp:1281
CascadeResult delete_inlet(SimulationContext &ctx, int inlet_idx)
Definition ObjectDeleter.cpp:1482
CascadeResult delete_subcatches_many(SimulationContext &ctx, std::vector< int > indices)
Batch deletion — equivalent to sequential per-object deletes in DESCENDING index order,...
Definition ObjectDeleter.cpp:784
CascadeResult delete_node(SimulationContext &ctx, int node_idx)
Definition ObjectDeleter.cpp:430
CascadeResult delete_hydrograph(SimulationContext &ctx, const std::string &uh_name)
Definition ObjectDeleter.cpp:1606
Central, reentrant simulation context.
Definition SimulationContext.hpp:353
Describes one object that was impacted (deleted or nullified) during a cascade deletion.
Definition ObjectDeleter.hpp:50
bool cascaded
true = deleted, false = reference nullified
Definition ObjectDeleter.hpp:54
const char * field
Static field-name string literal.
Definition ObjectDeleter.hpp:53
int obj_idx
Zero-based index at the time of impact.
Definition ObjectDeleter.hpp:52
int obj_type
SWMM_RefType value.
Definition ObjectDeleter.hpp:51
Aggregate cascade result for one deletion operation.
Definition ObjectDeleter.hpp:58
void add(int ot, int oi, const char *f, bool deleted)
Definition ObjectDeleter.hpp:61
std::vector< CascadeEntry > entries
Definition ObjectDeleter.hpp:59