helics  3.5.2
Filter.hpp
1 /*
2 Copyright (c) 2017-2024,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-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 
16 namespace helicscpp {
18 class 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  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  }
57 
60  void addDestinationTarget(const std::string& dest)
61  {
63  }
64 
67  void addSourceTarget(const std::string& source)
68  {
70  }
71 
73  void removeTarget(const std::string& dest)
74  {
76  }
78  const char* getInfo() const { return helicsFilterGetInfo(filt); }
80  void setInfo(const std::string& info)
81  {
82  helicsFilterSetInfo(filt, info.c_str(), HELICS_IGNORE_ERROR);
83  }
85  const char* getTag(const std::string& tagname) const
86  {
87  return helicsFilterGetTag(filt, tagname.c_str());
88  }
90  void setTag(const std::string& tagname, const std::string& tagvalue)
91  {
92  helicsFilterSetTag(filt, tagname.c_str(), tagvalue.c_str(), HELICS_IGNORE_ERROR);
93  }
94  void setOption(int32_t option, int32_t value = 1)
95  {
96  helicsFilterSetOption(filt, option, value, HELICS_IGNORE_ERROR);
97  }
98  int32_t getOption(int32_t option) { return helicsFilterGetOption(filt, option); }
99 
100  void setCallback(HelicsMessage (*filtCall)(HelicsMessage message, void* userData),
101  void* userData)
102  {
103  helicsFilterSetCustomCallback(filt, filtCall, userData, HELICS_IGNORE_ERROR);
104  }
105 
106  protected:
108 };
109 
112 class CloningFilter: public Filter {
113  public:
115  explicit CloningFilter(HelicsFilter hfilt) HELICS_NOTHROW: Filter(hfilt) {}
117  CloningFilter() HELICS_NOTHROW{};
119  CloningFilter(const CloningFilter& filter): Filter(filter) {}
122  {
123  Filter::operator=(filter);
124  return *this;
125  }
126 
130  void addDeliveryEndpoint(const std::string& deliveryEndpoint)
131  {
132  helicsFilterAddDeliveryEndpoint(filt, deliveryEndpoint.c_str(), hThrowOnError());
133  }
134 
136  void removeDeliveryEndpoint(const std::string& deliveryEndpoint)
137  {
138  helicsFilterRemoveDeliveryEndpoint(filt, deliveryEndpoint.c_str(), hThrowOnError());
139  }
140 };
141 
142 } // namespace helicscpp
143 #endif
void helicsFilterSetString(HelicsFilter filt, const char *prop, const char *val, HelicsError *err)
Definition: MessageFiltersExport.cpp:344
const char * helicsFilterGetName(HelicsFilter filt)
Definition: MessageFiltersExport.cpp:319
void helicsFilterAddSourceTarget(HelicsFilter filt, const char *source, HelicsError *err)
Definition: MessageFiltersExport.cpp:376
void helicsFilterAddDestinationTarget(HelicsFilter filt, const char *dst, HelicsError *err)
Definition: MessageFiltersExport.cpp:359
HelicsBool helicsFilterIsValid(HelicsFilter filt)
Definition: MessageFiltersExport.cpp:309
void helicsFilterSet(HelicsFilter filt, const char *prop, double val, HelicsError *err)
Definition: MessageFiltersExport.cpp:329
void * HelicsFilter
Definition: api-data.h:43
void * HelicsMessage
Definition: api-data.h:94
const HelicsBool HELICS_TRUE
Definition: api-data.h:114
Definition: Filter.hpp:112
CloningFilter() HELICS_NOTHROW
Definition: Filter.hpp:117
CloningFilter(HelicsFilter hfilt) HELICS_NOTHROW
Definition: Filter.hpp:115
void addDeliveryEndpoint(const std::string &deliveryEndpoint)
Definition: Filter.hpp:130
CloningFilter & operator=(const CloningFilter &filter)
Definition: Filter.hpp:121
void removeDeliveryEndpoint(const std::string &deliveryEndpoint)
Definition: Filter.hpp:136
CloningFilter(const CloningFilter &filter)
Definition: Filter.hpp:119
Definition: Filter.hpp:18
void addDestinationTarget(const std::string &dest)
Definition: Filter.hpp:60
HelicsFilter baseObject() const
Definition: Filter.hpp:36
Filter(HelicsFilter hfilt) HELICS_NOTHROW
Definition: Filter.hpp:21
void addSourceTarget(const std::string &source)
Definition: Filter.hpp:67
const char * getTag(const std::string &tagname) const
Definition: Filter.hpp:85
void setTag(const std::string &tagname, const std::string &tagvalue)
Definition: Filter.hpp:90
Filter(const Filter &filter)
Definition: Filter.hpp:25
void setString(const std::string &property, const std::string &val)
Definition: Filter.hpp:53
void removeTarget(const std::string &dest)
Definition: Filter.hpp:73
Filter() HELICS_NOTHROW
Definition: Filter.hpp:23
const char * getName() const
Definition: Filter.hpp:40
void set(const std::string &property, double val)
Definition: Filter.hpp:45
const char * getInfo() const
Definition: Filter.hpp:78
Filter & operator=(const Filter &filter)
Definition: Filter.hpp:27
bool isValid() const
Definition: Filter.hpp:38
void setInfo(const std::string &info)
Definition: Filter.hpp:80
HelicsFilter filt
the reference to the underlying publication
Definition: Filter.hpp:107
Definition: helicsExceptions.hpp:38
void helicsFilterAddDeliveryEndpoint(HelicsFilter filt, const char *deliveryEndpoint, HelicsError *err)
Definition: MessageFiltersExport.cpp:393
void helicsFilterRemoveTarget(HelicsFilter filt, const char *target, HelicsError *err)
Definition: MessageFiltersExport.cpp:410
const char * helicsFilterGetInfo(HelicsFilter filt)
Definition: MessageFiltersExport.cpp:444
void helicsFilterSetTag(HelicsFilter filt, const char *tagname, const char *tagvalue, HelicsError *err)
Definition: MessageFiltersExport.cpp:494
int helicsFilterGetOption(HelicsFilter filt, int option)
Definition: MessageFiltersExport.cpp:526
void helicsFilterRemoveDeliveryEndpoint(HelicsFilter filt, const char *deliveryEndpoint, HelicsError *err)
Definition: MessageFiltersExport.cpp:427
void helicsFilterSetOption(HelicsFilter filt, int option, int value, HelicsError *err)
Definition: MessageFiltersExport.cpp:510
const char * helicsFilterGetTag(HelicsFilter filt, const char *tagname)
Definition: MessageFiltersExport.cpp:477
void helicsFilterSetInfo(HelicsFilter filt, const char *info, HelicsError *err)
Definition: MessageFiltersExport.cpp:461
void helicsFilterSetCustomCallback(HelicsFilter filter, HelicsMessage(*filtCall)(HelicsMessage message, void *userData), void *userdata, HelicsError *err)
Definition: MessageFiltersExport.cpp:542
Definition: cpp98/Broker.hpp:18