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
37
38#ifndef OPENSWMM_ENGINE_OBJECT_DELETER_HPP
39#define OPENSWMM_ENGINE_OBJECT_DELETER_HPP
40
42#include <string>
43#include <vector>
44
45namespace openswmm::edit {
46
47// ============================================================================
48// Cascade result
49// ============================================================================
50
57 int obj_idx;
58 const char* field;
59 bool cascaded;
60};
61
64 std::vector<CascadeEntry> entries;
65
78 void add(int ot, int oi, const char* f, bool deleted) {
79 entries.push_back({ot, oi, f, deleted});
80 }
81};
82
83// ============================================================================
84// Impact analysis — read-only
85// ============================================================================
86
102CascadeResult analyze_node_impact(const SimulationContext& ctx, int node_idx);
118CascadeResult analyze_link_impact(const SimulationContext& ctx, int link_idx);
134CascadeResult analyze_subcatch_impact(const SimulationContext& ctx, int sc_idx);
149CascadeResult analyze_gage_impact(const SimulationContext& ctx, int gage_idx);
165CascadeResult analyze_table_impact(const SimulationContext& ctx, int table_idx);
180CascadeResult analyze_transect_impact(const SimulationContext& ctx, int transect_idx);
181
197CascadeResult analyze_pollutant_impact(const SimulationContext& ctx, int pollut_idx);
213CascadeResult analyze_pattern_impact(const SimulationContext& ctx, int pattern_idx);
228CascadeResult analyze_aquifer_impact(const SimulationContext& ctx, int aquifer_idx);
243CascadeResult analyze_snowpack_impact(const SimulationContext& ctx, int snowpack_idx);
259CascadeResult analyze_lid_impact(const SimulationContext& ctx, int lid_idx);
274CascadeResult analyze_street_impact(const SimulationContext& ctx, int street_idx);
289CascadeResult analyze_inlet_impact(const SimulationContext& ctx, int inlet_idx);
304CascadeResult analyze_landuse_impact(const SimulationContext& ctx, int landuse_idx);
317CascadeResult analyze_hydrograph_impact(const SimulationContext& ctx, const std::string& uh_name);
318
332std::vector<int> find_control_rule_refs(const SimulationContext& ctx,
333 const std::string& object_name);
334
335// ============================================================================
336// Deletion — mutates ctx
337// ============================================================================
338
354CascadeResult delete_node(SimulationContext& ctx, int node_idx);
370CascadeResult delete_link(SimulationContext& ctx, int link_idx);
387CascadeResult delete_subcatch(SimulationContext& ctx, int sc_idx);
403CascadeResult delete_gage(SimulationContext& ctx, int gage_idx);
404
420CascadeResult delete_nodes_many(SimulationContext& ctx, std::vector<int> indices);
436CascadeResult delete_links_many(SimulationContext& ctx, std::vector<int> indices);
452CascadeResult delete_subcatches_many(SimulationContext& ctx, std::vector<int> indices);
468CascadeResult delete_gages_many(SimulationContext& ctx, std::vector<int> indices);
484CascadeResult delete_table(SimulationContext& ctx, int table_idx);
500CascadeResult delete_transect(SimulationContext& ctx, int transect_idx);
501
518CascadeResult delete_pollutant(SimulationContext& ctx, int pollut_idx);
534CascadeResult delete_pattern(SimulationContext& ctx, int pattern_idx);
550CascadeResult delete_aquifer(SimulationContext& ctx, int aquifer_idx);
566CascadeResult delete_snowpack(SimulationContext& ctx, int snowpack_idx);
582CascadeResult delete_lid(SimulationContext& ctx, int lid_idx);
597CascadeResult delete_street(SimulationContext& ctx, int street_idx);
613CascadeResult delete_inlet(SimulationContext& ctx, int inlet_idx);
628CascadeResult delete_landuse(SimulationContext& ctx, int landuse_idx);
643CascadeResult delete_hydrograph(SimulationContext& ctx, const std::string& uh_name);
644
645} // namespace openswmm::edit
646
647#endif /* OPENSWMM_ENGINE_OBJECT_DELETER_HPP */
The central, reentrant simulation context for the new engine.
Definition ObjectDeleter.cpp:38
CascadeResult analyze_node_impact(const SimulationContext &ctx, int node_idx)
Inspect references to a node.
Definition ObjectDeleter.cpp:368
CascadeResult delete_link(SimulationContext &ctx, int link_idx)
Delete a link.
Definition ObjectDeleter.cpp:760
CascadeResult delete_nodes_many(SimulationContext &ctx, std::vector< int > indices)
Delete node rows in deduplicated descending pre-batch order.
Definition ObjectDeleter.cpp:1025
CascadeResult analyze_inlet_impact(const SimulationContext &ctx, int inlet_idx)
Inspect references to a inlet design.
Definition ObjectDeleter.cpp:1938
CascadeResult analyze_transect_impact(const SimulationContext &ctx, int transect_idx)
Inspect references to a transect.
Definition ObjectDeleter.cpp:603
CascadeResult delete_lid(SimulationContext &ctx, int lid_idx)
Delete a LID control.
Definition ObjectDeleter.cpp:1778
std::vector< int > find_control_rule_refs(const SimulationContext &ctx, const std::string &object_name)
Find stored rule-text tokens naming an object after an object keyword.
Definition ObjectDeleter.cpp:314
CascadeResult delete_landuse(SimulationContext &ctx, int landuse_idx)
Delete a land use.
Definition ObjectDeleter.cpp:2015
CascadeResult delete_snowpack(SimulationContext &ctx, int snowpack_idx)
Delete a snowpack.
Definition ObjectDeleter.cpp:1726
CascadeResult analyze_link_impact(const SimulationContext &ctx, int link_idx)
Inspect references to a link.
Definition ObjectDeleter.cpp:427
CascadeResult delete_subcatch(SimulationContext &ctx, int sc_idx)
Delete a subcatchment.
Definition ObjectDeleter.cpp:824
CascadeResult delete_aquifer(SimulationContext &ctx, int aquifer_idx)
Delete a aquifer.
Definition ObjectDeleter.cpp:1672
CascadeResult analyze_hydrograph_impact(const SimulationContext &ctx, const std::string &uh_name)
Inspect RDII references to an exact-case hydrograph group.
Definition ObjectDeleter.cpp:2103
CascadeResult analyze_lid_impact(const SimulationContext &ctx, int lid_idx)
Inspect references to a LID control.
Definition ObjectDeleter.cpp:1766
CascadeResult analyze_street_impact(const SimulationContext &ctx, int street_idx)
Inspect references to a street.
Definition ObjectDeleter.cpp:1857
CascadeResult delete_gage(SimulationContext &ctx, int gage_idx)
Delete a rain gage.
Definition ObjectDeleter.cpp:904
CascadeResult analyze_landuse_impact(const SimulationContext &ctx, int landuse_idx)
Inspect references to a land use.
Definition ObjectDeleter.cpp:2009
CascadeResult delete_links_many(SimulationContext &ctx, std::vector< int > indices)
Delete link rows in deduplicated descending pre-batch order.
Definition ObjectDeleter.cpp:1031
CascadeResult analyze_gage_impact(const SimulationContext &ctx, int gage_idx)
Inspect references to a rain gage.
Definition ObjectDeleter.cpp:488
CascadeResult delete_pattern(SimulationContext &ctx, int pattern_idx)
Delete a time pattern.
Definition ObjectDeleter.cpp:1620
CascadeResult analyze_table_impact(const SimulationContext &ctx, int table_idx)
Inspect references to a time-series/curve table.
Definition ObjectDeleter.cpp:512
CascadeResult analyze_subcatch_impact(const SimulationContext &ctx, int sc_idx)
Inspect references to a subcatchment.
Definition ObjectDeleter.cpp:448
CascadeResult analyze_snowpack_impact(const SimulationContext &ctx, int snowpack_idx)
Inspect references to a snowpack.
Definition ObjectDeleter.cpp:1718
CascadeResult delete_table(SimulationContext &ctx, int table_idx)
Delete a time-series/curve table.
Definition ObjectDeleter.cpp:1050
CascadeResult delete_pollutant(SimulationContext &ctx, int pollut_idx)
Delete a pollutant.
Definition ObjectDeleter.cpp:1431
CascadeResult analyze_pattern_impact(const SimulationContext &ctx, int pattern_idx)
Inspect references to a time pattern.
Definition ObjectDeleter.cpp:1614
CascadeResult delete_street(SimulationContext &ctx, int street_idx)
Delete a street.
Definition ObjectDeleter.cpp:1876
CascadeResult delete_transect(SimulationContext &ctx, int transect_idx)
Delete a transect.
Definition ObjectDeleter.cpp:1200
CascadeResult analyze_pollutant_impact(const SimulationContext &ctx, int pollut_idx)
Inspect references to a pollutant.
Definition ObjectDeleter.cpp:1425
CascadeResult delete_gages_many(SimulationContext &ctx, std::vector< int > indices)
Delete rain gage rows in deduplicated descending pre-batch order.
Definition ObjectDeleter.cpp:1041
CascadeResult analyze_aquifer_impact(const SimulationContext &ctx, int aquifer_idx)
Inspect references to a aquifer.
Definition ObjectDeleter.cpp:1664
CascadeResult delete_inlet(SimulationContext &ctx, int inlet_idx)
Delete a inlet design.
Definition ObjectDeleter.cpp:1946
CascadeResult delete_subcatches_many(SimulationContext &ctx, std::vector< int > indices)
Delete subcatchment rows in deduplicated descending pre-batch order.
Definition ObjectDeleter.cpp:1036
CascadeResult delete_node(SimulationContext &ctx, int node_idx)
Delete a node.
Definition ObjectDeleter.cpp:626
CascadeResult delete_hydrograph(SimulationContext &ctx, const std::string &uh_name)
Delete all authoring rows belonging to an exact-case hydrograph group.
Definition ObjectDeleter.cpp:2111
Central, reentrant simulation context.
Definition SimulationContext.hpp:390
Describes one object that was impacted (deleted or nullified) during a cascade deletion.
Definition ObjectDeleter.hpp:55
bool cascaded
true = deleted, false = reference nullified
Definition ObjectDeleter.hpp:59
const char * field
Static field-name string literal.
Definition ObjectDeleter.hpp:58
int obj_idx
Zero-based index at the time of impact.
Definition ObjectDeleter.hpp:57
int obj_type
SWMM_RefType value.
Definition ObjectDeleter.hpp:56
Aggregate cascade result for one deletion operation.
Definition ObjectDeleter.hpp:63
void add(int ot, int oi, const char *f, bool deleted)
Append one owned impact descriptor with a borrowed static field label.
Definition ObjectDeleter.hpp:78
std::vector< CascadeEntry > entries
Definition ObjectDeleter.hpp:64