OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_tables.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
31
32#ifndef OPENSWMM_TABLES_H
33#define OPENSWMM_TABLES_H
34
35#include "openswmm_engine.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/* =========================================================================
42 * Identity
43 * ========================================================================= */
44
51
58SWMM_ENGINE_API int swmm_table_index(SWMM_Engine engine, const char* id);
59
66SWMM_ENGINE_API const char* swmm_table_id(SWMM_Engine engine, int idx);
67
89SWMM_ENGINE_API int swmm_table_get_type(SWMM_Engine engine, int idx, int* type);
90
91/* =========================================================================
92 * Creation (BUILDING or OPENED — references resolve by name at initialize())
93 * ========================================================================= */
94
101SWMM_ENGINE_API int swmm_timeseries_add(SWMM_Engine engine, const char* id);
102
114SWMM_ENGINE_API int swmm_curve_add(SWMM_Engine engine, const char* id, int type);
115
116/* =========================================================================
117 * Data points
118 * ========================================================================= */
119
132SWMM_ENGINE_API int swmm_table_add_point(SWMM_Engine engine, int idx, double x, double y);
133
141SWMM_ENGINE_API int swmm_table_get_point_count(SWMM_Engine engine, int idx, int* count);
142
152SWMM_ENGINE_API int swmm_table_get_point(SWMM_Engine engine, int idx, int pt_idx, double* x, double* y);
153
160SWMM_ENGINE_API int swmm_table_clear(SWMM_Engine engine, int idx);
161
181 int* n_relative, double* anchor);
182
201 int n_relative, double anchor);
202
203/* =========================================================================
204 * Lookup (cursor-optimized)
205 * ========================================================================= */
206
219SWMM_ENGINE_API int swmm_table_lookup(SWMM_Engine engine, int idx, double x, double* y);
220
221/* =========================================================================
222 * Patterns
223 * ========================================================================= */
224
235SWMM_ENGINE_API int swmm_pattern_add(SWMM_Engine engine, const char* id, int type);
236
245SWMM_ENGINE_API int swmm_pattern_set_factors(SWMM_Engine engine, int idx, const double* factors, int count);
246
253
260SWMM_ENGINE_API int swmm_pattern_index(SWMM_Engine engine, const char* id);
261
268SWMM_ENGINE_API const char* swmm_pattern_id(SWMM_Engine engine, int idx);
269
282SWMM_ENGINE_API int swmm_pattern_get_type(SWMM_Engine engine, int idx, int* type);
283
291SWMM_ENGINE_API int swmm_pattern_get_factor_count(SWMM_Engine engine, int idx, int* count);
292
301SWMM_ENGINE_API int swmm_pattern_get_factor(SWMM_Engine engine, int idx, int i, double* v);
302
323
335SWMM_ENGINE_API int swmm_pattern_rename(SWMM_Engine engine, int idx, const char* newId);
336
337#ifdef __cplusplus
338} /* extern "C" */
339#endif
340
341#endif /* OPENSWMM_TABLES_H */
double * y
Definition odesolve.c:28
#define SWMM_ENGINE_API
Definition openswmm_2d.h:53
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:51
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_table_add_point(SWMM_Engine engine, int idx, double x, double y)
Append a data point (x, y) to a table.
Definition openswmm_tables_impl.cpp:128
SWMM_ENGINE_API int swmm_pattern_add(SWMM_Engine engine, const char *id, int type)
Add a new time pattern to the model.
Definition openswmm_tables_impl.cpp:216
SWMM_ENGINE_API int swmm_pattern_get_factor(SWMM_Engine engine, int idx, int i, double *v)
Get one multiplier factor from a pattern.
Definition openswmm_tables_impl.cpp:276
SWMM_ENGINE_API int swmm_table_get_point(SWMM_Engine engine, int idx, int pt_idx, double *x, double *y)
Get a specific data point from a table.
Definition openswmm_tables_impl.cpp:146
SWMM_ENGINE_API int swmm_table_lookup(SWMM_Engine engine, int idx, double x, double *y)
Interpolate a Y value from a table for a given X.
Definition openswmm_tables_impl.cpp:203
SWMM_ENGINE_API const char * swmm_pattern_id(SWMM_Engine engine, int idx)
Get the string identifier of a pattern by index.
Definition openswmm_tables_impl.cpp:251
SWMM_ENGINE_API int swmm_pattern_index(SWMM_Engine engine, const char *id)
Look up a pattern's zero-based index by its string identifier.
Definition openswmm_tables_impl.cpp:245
SWMM_ENGINE_API int swmm_table_get_point_count(SWMM_Engine engine, int idx, int *count)
Get the number of data points in a table.
Definition openswmm_tables_impl.cpp:138
SWMM_ENGINE_API int swmm_table_get_type(SWMM_Engine engine, int idx, int *type)
Get a table's type code.
Definition openswmm_tables_impl.cpp:77
SWMM_ENGINE_API int swmm_timeseries_add(SWMM_Engine engine, const char *id)
Add a new time series to the model.
Definition openswmm_tables_impl.cpp:90
SWMM_ENGINE_API int swmm_pattern_remove(SWMM_Engine engine, int idx)
Remove a time pattern by index, clearing any reference sites.
Definition openswmm_tables_impl.cpp:287
SWMM_ENGINE_API int swmm_table_clear(SWMM_Engine engine, int idx)
Remove all data points from a table.
Definition openswmm_tables_impl.cpp:158
SWMM_ENGINE_API int swmm_table_count(SWMM_Engine engine)
Get the total number of tables (time series + curves) in the model.
Definition openswmm_tables_impl.cpp:58
SWMM_ENGINE_API int swmm_pattern_count(SWMM_Engine engine)
Get the total number of time patterns in the model.
Definition openswmm_tables_impl.cpp:240
SWMM_ENGINE_API const char * swmm_table_id(SWMM_Engine engine, int idx)
Get the string identifier of a table by index.
Definition openswmm_tables_impl.cpp:70
SWMM_ENGINE_API int swmm_pattern_get_type(SWMM_Engine engine, int idx, int *type)
Get a pattern's type code.
Definition openswmm_tables_impl.cpp:258
SWMM_ENGINE_API int swmm_timeseries_get_relative_info(SWMM_Engine engine, int idx, int *n_relative, double *anchor)
Get a timeseries' time-only (relative) row info.
Definition openswmm_tables_impl.cpp:174
SWMM_ENGINE_API int swmm_curve_add(SWMM_Engine engine, const char *id, int type)
Add a new curve to the model.
Definition openswmm_tables_impl.cpp:107
SWMM_ENGINE_API int swmm_timeseries_set_relative_info(SWMM_Engine engine, int idx, int n_relative, double anchor)
Declare a timeseries' leading rows as time-only (relative).
Definition openswmm_tables_impl.cpp:186
SWMM_ENGINE_API int swmm_table_index(SWMM_Engine engine, const char *id)
Look up a table's zero-based index by its string identifier.
Definition openswmm_tables_impl.cpp:63
SWMM_ENGINE_API int swmm_pattern_set_factors(SWMM_Engine engine, int idx, const double *factors, int count)
Set the multiplier factors for a time pattern.
Definition openswmm_tables_impl.cpp:227
SWMM_ENGINE_API int swmm_pattern_rename(SWMM_Engine engine, int idx, const char *newId)
Rename a time pattern; updates every stored reference to the previous name across inflows,...
Definition openswmm_tables_impl.cpp:300
SWMM_ENGINE_API int swmm_pattern_get_factor_count(SWMM_Engine engine, int idx, int *count)
Get the number of multiplier factors stored for a pattern.
Definition openswmm_tables_impl.cpp:267