helics 3.7.0
Loading...
Searching...
No Matches
Filter.hpp
1/*
2Copyright (c) 2017-2026,
3Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Energy
4Innovation LLC. See the top-level NOTICE for additional details. All rights reserved.
5SPDX-License-Identifier: BSD-3-Clause
6*/
7#ifndef HELICS_CPP98_FILTER_HPP_
8#define HELICS_CPP98_FILTER_HPP_
9#pragma once
10
11#include "helics/helics.h"
12#include "helicsExceptions.hpp"
13
14#include <string>
15
16namespace helicscpp {
18class Filter {
19 public:
21 explicit Filter(HelicsFilter hfilt) HELICS_NOTHROW: filt(hfilt) {}
23 Filter() HELICS_NOTHROW: filt(HELICS_NULL_POINTER) {}
25 Filter(const Filter& filter): filt(filter.filt) {}
27 Filter& operator=(const Filter& filter)
28 {
29 filt = filter.filt;
30 return *this;
31 }
32
34 operator HelicsFilter() const { return filt; }
36 HELICS_NODISCARD HelicsFilter baseObject() const { return filt; }
38 bool isValid() const { return (helicsFilterIsValid(filt) == HELICS_TRUE); }
40 const char* getName() const { return helicsFilterGetName(filt); }
45 void set(const std::string& property, double val)
46 {
47 helicsFilterSet(filt, property.c_str(), val, hThrowOnError());
48 }
53 void setString(const std::string& property, const std::string& val)
54 {
55 helicsFilterSetString(filt, property.c_str(), val.c_str(), hThrowOnError());
56 }
60 HELICS_NODISCARD double getProperty(const std::string& property)
61 {
62 return helicsFilterGetPropertyDouble(filt, property.c_str());
63 }
67 HELICS_NODISCARD const char* getString(const std::string& property)
68 {
69 return helicsFilterGetPropertyString(filt, property.c_str());
70 }
71
74 void addDestinationTarget(const std::string& dest)
75 {
77 }
78
81 void addSourceTarget(const std::string& source)
82 {
84 }
85
87 void removeTarget(const std::string& dest)
88 {
90 }
92 HELICS_NODISCARD const char* getInfo() const { return helicsFilterGetInfo(filt); }
94 void setInfo(const std::string& info)
95 {
96 helicsFilterSetInfo(filt, info.c_str(), HELICS_IGNORE_ERROR);
97 }
99 HELICS_NODISCARD const char* getTag(const std::string& tagname) const
100 {
101 return helicsFilterGetTag(filt, tagname.c_str());
102 }
104 void setTag(const std::string& tagname, const std::string& tagvalue)
105 {
106 helicsFilterSetTag(filt, tagname.c_str(), tagvalue.c_str(), HELICS_IGNORE_ERROR);
107 }
108 void setOption(int32_t option, int32_t value = 1)
109 {
110 helicsFilterSetOption(filt, option, value, HELICS_IGNORE_ERROR);
111 }
112 HELICS_NODISCARD int32_t getOption(int32_t option)
113 {
114 return helicsFilterGetOption(filt, option);
115 }
116
117 void setCallback(HelicsMessage (*filtCall)(HelicsMessage message, void* userData),
118 void* userData)
119 {
120 helicsFilterSetCustomCallback(filt, filtCall, userData, HELICS_IGNORE_ERROR);
121 }
122
123 protected:
125};
126
129class CloningFilter: public Filter {
130 public:
132 explicit CloningFilter(HelicsFilter hfilt) HELICS_NOTHROW: Filter(hfilt) {}
134 CloningFilter() HELICS_NOTHROW {};
136 CloningFilter(const CloningFilter& filter): Filter(filter) {}
139 {
140 Filter::operator=(filter);
141 return *this;
142 }
143
147 void addDeliveryEndpoint(const std::string& deliveryEndpoint)
148 {
149 helicsFilterAddDeliveryEndpoint(filt, deliveryEndpoint.c_str(), hThrowOnError());
150 }
151
153 void removeDeliveryEndpoint(const std::string& deliveryEndpoint)
154 {
155 helicsFilterRemoveDeliveryEndpoint(filt, deliveryEndpoint.c_str(), hThrowOnError());
156 }
157};
158
159} // namespace helicscpp
160#endif
double helicsFilterGetPropertyDouble(HelicsFilter filt, const char *prop)
Definition MessageFiltersExport.cpp:361
void helicsFilterSetString(HelicsFilter filt, const char *prop, const char *val, HelicsError *err)
Definition MessageFiltersExport.cpp:346
void helicsFilterAddSourceTarget(HelicsFilter filt, const char *source, HelicsError *err)
Definition MessageFiltersExport.cpp:412
void helicsFilterAddDestinationTarget(HelicsFilter filt, const char *dst, HelicsError *err)
Definition MessageFiltersExport.cpp:395
const char * helicsFilterGetPropertyString(HelicsFilter filt, const char *prop)
Definition MessageFiltersExport.cpp:375
const char * helicsFilterGetName(HelicsFilter filt)
Definition MessageFiltersExport.cpp:321
HelicsBool helicsFilterIsValid(HelicsFilter filt)
Definition MessageFiltersExport.cpp:311
void helicsFilterSet(HelicsFilter filt, const char *prop, double val, HelicsError *err)
Definition MessageFiltersExport.cpp:331
void * HelicsFilter
Definition api-data.h:43
void * HelicsMessage
Definition api-data.h:100
const HelicsBool HELICS_TRUE
Definition api-data.h:122
Definition Filter.hpp:129
CloningFilter() HELICS_NOTHROW
Definition Filter.hpp:134
CloningFilter(HelicsFilter hfilt) HELICS_NOTHROW
Definition Filter.hpp:132
CloningFilter & operator=(const CloningFilter &filter)
Definition Filter.hpp:138
void addDeliveryEndpoint(const std::string &deliveryEndpoint)
Definition Filter.hpp:147
void removeDeliveryEndpoint(const std::string &deliveryEndpoint)
Definition Filter.hpp:153
CloningFilter(const CloningFilter &filter)
Definition Filter.hpp:136
Definition Filter.hpp:18
void addDestinationTarget(const std::string &dest)
Definition Filter.hpp:74
Filter(HelicsFilter hfilt) HELICS_NOTHROW
Definition Filter.hpp:21
HELICS_NODISCARD const char * getInfo() const
Definition Filter.hpp:92
void addSourceTarget(const std::string &source)
Definition Filter.hpp:81
void setTag(const std::string &tagname, const std::string &tagvalue)
Definition Filter.hpp:104
Filter(const Filter &filter)
Definition Filter.hpp:25
HELICS_NODISCARD HelicsFilter baseObject() const
Definition Filter.hpp:36
void setString(const std::string &property, const std::string &val)
Definition Filter.hpp:53
void removeTarget(const std::string &dest)
Definition Filter.hpp:87
HELICS_NODISCARD double getProperty(const std::string &property)
Definition Filter.hpp:60
Filter() HELICS_NOTHROW
Definition Filter.hpp:23
Filter & operator=(const Filter &filter)
Definition Filter.hpp:27
void set(const std::string &property, double val)
Definition Filter.hpp:45
const char * getName() const
Definition Filter.hpp:40
bool isValid() const
Definition Filter.hpp:38
void setInfo(const std::string &info)
Definition Filter.hpp:94
HELICS_NODISCARD const char * getTag(const std::string &tagname) const
Definition Filter.hpp:99
HELICS_NODISCARD const char * getString(const std::string &property)
Definition Filter.hpp:67
HelicsFilter filt
the reference to the underlying publication
Definition Filter.hpp:124
Definition helicsExceptions.hpp:38
const char * helicsFilterGetTag(HelicsFilter filt, const char *tagname)
Definition MessageFiltersExport.cpp:513
void helicsFilterAddDeliveryEndpoint(HelicsFilter filt, const char *deliveryEndpoint, HelicsError *err)
Definition MessageFiltersExport.cpp:429
void helicsFilterRemoveTarget(HelicsFilter filt, const char *target, HelicsError *err)
Definition MessageFiltersExport.cpp:446
void helicsFilterSetTag(HelicsFilter filt, const char *tagname, const char *tagvalue, HelicsError *err)
Definition MessageFiltersExport.cpp:530
int helicsFilterGetOption(HelicsFilter filt, int option)
Definition MessageFiltersExport.cpp:562
void helicsFilterRemoveDeliveryEndpoint(HelicsFilter filt, const char *deliveryEndpoint, HelicsError *err)
Definition MessageFiltersExport.cpp:463
void helicsFilterSetOption(HelicsFilter filt, int option, int value, HelicsError *err)
Definition MessageFiltersExport.cpp:546
void helicsFilterSetInfo(HelicsFilter filt, const char *info, HelicsError *err)
Definition MessageFiltersExport.cpp:497
const char * helicsFilterGetInfo(HelicsFilter filt)
Definition MessageFiltersExport.cpp:480
void helicsFilterSetCustomCallback(HelicsFilter filter, HelicsMessage(*filtCall)(HelicsMessage message, void *userData), void *userdata, HelicsError *err)
Definition MessageFiltersExport.cpp:578
Definition cpp98/Broker.hpp:18