OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_edit.h
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
47
48#ifndef OPENSWMM_EDIT_H
49#define OPENSWMM_EDIT_H
50
51#include "openswmm_engine.h"
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57/* =========================================================================
58 * Impact report — returned by analyze_impact and delete functions
59 * ========================================================================= */
60
88
102
113
121
122/* =========================================================================
123 * Impact analysis — read-only, works in any state where data exists
124 * ========================================================================= */
125
135 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
136
139 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
140
143 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
144
147 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
148
151 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
152
155 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
156
159 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
160
163 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
164
167 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
168
171 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
172
175 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
176
179 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
180
183 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
184
187 SWMM_Engine engine, int idx, SWMM_ImpactReport* report_out);
188
203 SWMM_Engine engine, const char* uh_name, SWMM_ImpactReport* report_out);
204
205/* =========================================================================
206 * Deletion — BUILDING or OPENED state only
207 * ========================================================================= */
208
226 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
227
236 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
237
246 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
247
252 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
253
283 SWMM_Engine engine, const int* indices, int n,
284 SWMM_ImpactReport* cascade_out);
285
288 SWMM_Engine engine, const int* indices, int n,
289 SWMM_ImpactReport* cascade_out);
290
293 SWMM_Engine engine, const int* indices, int n,
294 SWMM_ImpactReport* cascade_out);
295
298 SWMM_Engine engine, const int* indices, int n,
299 SWMM_ImpactReport* cascade_out);
300
309 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
310
318 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
319
330 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
331
341 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
342
348 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
349
355 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
356
362 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
363
369 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
370
376 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
377
383 SWMM_Engine engine, int idx, SWMM_ImpactReport* cascade_out);
384
396 SWMM_Engine engine, const char* uh_name, SWMM_ImpactReport* cascade_out);
397
398/* =========================================================================
399 * Type conversion result — returned by convert functions
400 * ========================================================================= */
401
416
424
425/* =========================================================================
426 * Type conversion — BUILDING or OPENED state only
427 * ========================================================================= */
428
448 SWMM_Engine engine, int idx, int new_type,
449 SWMM_ConversionResult* result_out);
450
466 SWMM_Engine engine, int idx, int new_type,
467 SWMM_ConversionResult* result_out);
468
469/* =========================================================================
470 * Conduit split / virtual-junction fusion — BUILDING or OPENED state only
471 * (refactored engine only; see openswmm_nodes.h swmm_node_set_virtual)
472 * ========================================================================= */
473
502 SWMM_Engine engine, int link_idx, double t,
503 const char* new_node_name, const char* new_link_name,
504 int make_virtual, int* new_node_idx, int* new_link_idx);
505
526 SWMM_Engine engine, int node_idx, int* surviving_link_idx);
527
545 SWMM_Engine engine, int link_idx, double t,
546 const char* new_node_name, const char* new_link_name,
547 const char* inlet_id, const char* capture_node,
548 int* new_node_idx, int* new_link_idx);
549
556 SWMM_Engine engine, int node_idx, int* surviving_link_idx);
557
558#ifdef __cplusplus
559} /* extern "C" */
560#endif
561
562#endif /* OPENSWMM_EDIT_H */
#define SWMM_ENGINE_API
Definition openswmm_2d.h:53
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:51
SWMM_ENGINE_API int swmm_link_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:132
SWMM_ENGINE_API int swmm_gage_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:158
SWMM_ENGINE_API int swmm_snowpack_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:243
SWMM_ENGINE_API int swmm_street_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:265
SWMM_ENGINE_API int swmm_pollutant_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a pollutant and re-pack every per-pollutant matrix.
Definition openswmm_edit_impl.cpp:428
SWMM_ENGINE_API int swmm_aquifer_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:232
SWMM_ENGINE_API int swmm_inlet_junction_fuse(SWMM_Engine engine, int node_idx, int *surviving_link_idx)
Inverse of swmm_conduit_split_inlet: removes the inlet junction's usage row, then re-fuses the condui...
Definition openswmm_edit_impl.cpp:639
SWMM_ENGINE_API int swmm_hydrograph_analyze_impact(SWMM_Engine engine, const char *uh_name, SWMM_ImpactReport *report_out)
Analyse which objects reference a unit-hydrograph group, without deleting it.
Definition openswmm_edit_impl.cpp:298
SWMM_ENGINE_API int swmm_link_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a link and cascade-delete or nullify all referencing objects.
Definition openswmm_edit_impl.cpp:327
SWMM_ENGINE_API int swmm_pattern_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:221
SWMM_ENGINE_API void swmm_impact_report_free(SWMM_ImpactReport *report)
Release heap memory owned by an impact report.
Definition openswmm_edit_impl.cpp:93
SWMM_ENGINE_API int swmm_conduit_split_inlet(SWMM_Engine engine, int link_idx, double t, const char *new_node_name, const char *new_link_name, const char *inlet_id, const char *capture_node, int *new_node_idx, int *new_link_idx)
Split a STREET conduit at t and make the inserted node an inlet junction with the given design and ca...
Definition openswmm_edit_impl.cpp:605
SWMM_ENGINE_API int swmm_pollutant_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:210
SWMM_ENGINE_API int swmm_table_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:171
SWMM_ENGINE_API int swmm_table_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a time series or curve and nullify all referencing objects.
Definition openswmm_edit_impl.cpp:406
SWMM_ENGINE_API int swmm_node_convert(SWMM_Engine engine, int idx, int new_type, SWMM_ConversionResult *result_out)
Convert a node to a different type in-place.
Definition openswmm_edit_impl.cpp:522
SWMM_ENGINE_API int swmm_subcatch_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a subcatchment and nullify all referencing objects.
Definition openswmm_edit_impl.cpp:338
SWMM_ENGINE_API int swmm_lid_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:254
SWMM_ENGINE_API int swmm_gage_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete many nodes in one call — equivalent to sequential swmm_node_delete calls in DESCENDING index o...
Definition openswmm_edit_impl.cpp:398
SWMM_ENGINE_API void swmm_conversion_result_free(SWMM_ConversionResult *result)
Release heap memory owned by a conversion result.
Definition openswmm_edit_impl.cpp:100
SWMM_ENGINE_API int swmm_inlet_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:276
SWMM_ENGINE_API int swmm_aquifer_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete an aquifer; referencing subcatchments lose their groundwater (gw_aquifer set to -1) and surviv...
Definition openswmm_edit_impl.cpp:448
SWMM_ENGINE_API int swmm_node_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete many nodes in one call — equivalent to sequential swmm_node_delete calls in DESCENDING index o...
Definition openswmm_edit_impl.cpp:380
SWMM_ENGINE_API int swmm_transect_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:184
SWMM_ENGINE_API int swmm_street_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a street; inlet-usage rows referencing it are cascade-deleted (consistent with link deletion) ...
Definition openswmm_edit_impl.cpp:478
SWMM_ENGINE_API int swmm_landuse_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a land use; buildup/washoff rows and subcatchment coverage columns for it are re-packed.
Definition openswmm_edit_impl.cpp:498
SWMM_ENGINE_API int swmm_subcatch_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete many nodes in one call — equivalent to sequential swmm_node_delete calls in DESCENDING index o...
Definition openswmm_edit_impl.cpp:392
SWMM_ENGINE_API int swmm_gage_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a rain gage and nullify subcatchment gage references.
Definition openswmm_edit_impl.cpp:349
SWMM_ENGINE_API int swmm_pattern_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a time pattern and clear all name-based references.
Definition openswmm_edit_impl.cpp:438
SWMM_ENGINE_API int swmm_virtual_junction_fuse(SWMM_Engine engine, int node_idx, int *surviving_link_idx)
Re-fuse the two conduits of a virtual junction into one, deleting the node (inverse of a virtual spli...
Definition openswmm_edit_impl.cpp:590
SWMM_ENGINE_API int swmm_snowpack_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a snowpack; referencing subcatchments' snowpack index and raw-name mirror are cleared,...
Definition openswmm_edit_impl.cpp:458
SWMM_ENGINE_API int swmm_node_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a node and cascade-delete or nullify all referencing objects.
Definition openswmm_edit_impl.cpp:314
SWMM_ENGINE_API int swmm_link_convert(SWMM_Engine engine, int idx, int new_type, SWMM_ConversionResult *result_out)
Convert a link to a different type in-place.
Definition openswmm_edit_impl.cpp:544
SWMM_ENGINE_API int swmm_inlet_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete an inlet design; inlet-usage rows referencing it are cascade-deleted and design_index values r...
Definition openswmm_edit_impl.cpp:488
SWMM_ENGINE_API int swmm_link_delete_many(SWMM_Engine engine, const int *indices, int n, SWMM_ImpactReport *cascade_out)
Delete many nodes in one call — equivalent to sequential swmm_node_delete calls in DESCENDING index o...
Definition openswmm_edit_impl.cpp:386
SWMM_ENGINE_API int swmm_lid_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a LID control; LID-usage rows referencing it are cascade-deleted and surviving lid_index value...
Definition openswmm_edit_impl.cpp:468
SWMM_ENGINE_API int swmm_node_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:119
SWMM_ENGINE_API int swmm_conduit_split(SWMM_Engine engine, int link_idx, double t, const char *new_node_name, const char *new_link_name, int make_virtual, int *new_node_idx, int *new_link_idx)
Split a conduit at normalized position t, inserting a new node.
Definition openswmm_edit_impl.cpp:568
SWMM_ENGINE_API int swmm_subcatch_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:145
SWMM_ENGINE_API int swmm_landuse_analyze_impact(SWMM_Engine engine, int idx, SWMM_ImpactReport *report_out)
Analyse which objects reference a given node, without deleting it.
Definition openswmm_edit_impl.cpp:287
SWMM_ENGINE_API int swmm_hydrograph_delete(SWMM_Engine engine, const char *uh_name, SWMM_ImpactReport *cascade_out)
Delete a unit-hydrograph group by name.
Definition openswmm_edit_impl.cpp:508
SWMM_ENGINE_API int swmm_transect_delete(SWMM_Engine engine, int idx, SWMM_ImpactReport *cascade_out)
Delete a transect and nullify link xsect_curve references.
Definition openswmm_edit_impl.cpp:417
SWMM_RefType
Category of an object that holds a cross-reference to a deleted object.
Definition openswmm_edit.h:64
@ SWMM_REF_TABLE
Definition openswmm_edit.h:69
@ SWMM_REF_NODE
Definition openswmm_edit.h:65
@ SWMM_REF_GAGE
Definition openswmm_edit.h:68
@ SWMM_REF_LANDUSE
Definition openswmm_edit.h:85
@ SWMM_REF_AQUIFER
Definition openswmm_edit.h:81
@ SWMM_REF_TRANSECT
Definition openswmm_edit.h:70
@ SWMM_REF_PATTERN
Definition openswmm_edit.h:80
@ SWMM_REF_INLET_DESIGN
Definition openswmm_edit.h:84
@ SWMM_REF_EXT_INFLOW
Definition openswmm_edit.h:72
@ SWMM_REF_LID_USAGE
Definition openswmm_edit.h:76
@ SWMM_REF_LID_CONTROL
Definition openswmm_edit.h:82
@ SWMM_REF_TREATMENT
Definition openswmm_edit.h:75
@ SWMM_REF_RDII_ASSIGN
Definition openswmm_edit.h:74
@ SWMM_REF_INLET_USAGE
Definition openswmm_edit.h:71
@ SWMM_REF_SUBCATCH
Definition openswmm_edit.h:67
@ SWMM_REF_DWF_INFLOW
Definition openswmm_edit.h:73
@ SWMM_REF_STREET
Definition openswmm_edit.h:83
@ SWMM_REF_HYDROGRAPH
Definition openswmm_edit.h:78
@ SWMM_REF_LINK
Definition openswmm_edit.h:66
@ SWMM_REF_POLLUTANT
Definition openswmm_edit.h:79
@ SWMM_REF_SNOWPACK
Definition openswmm_edit.h:77
@ SWMM_REF_CONTROL_RULE
Definition openswmm_edit.h:86
OpenSWMM Engine — primary transparent C API (master header).
Result of a node or link type conversion.
Definition openswmm_edit.h:409
int new_type
Definition openswmm_edit.h:410
int n_warnings
Definition openswmm_edit.h:414
int n_cleared
Definition openswmm_edit.h:412
const char ** cleared_fields
Definition openswmm_edit.h:411
const char ** warnings
Definition openswmm_edit.h:413
One object that references the deletion target.
Definition openswmm_edit.h:96
int cascaded
Definition openswmm_edit.h:100
const char * field
Definition openswmm_edit.h:99
int obj_type
Definition openswmm_edit.h:97
int obj_idx
Definition openswmm_edit.h:98
Aggregate impact report for a deletion operation.
Definition openswmm_edit.h:109
SWMM_ImpactEntry * entries
Definition openswmm_edit.h:110
int n_entries
Definition openswmm_edit.h:111