helics  2.8.1
Filter.hpp
1 /*
2 Copyright (c) 2017-2021,
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 "../shared_api_library/MessageFilters.h"
12 #include "helicsExceptions.hpp"
13 
14 #include <string>
15 
16 namespace helicscpp {
18 class Filter {
19  public:
21  explicit Filter(helics_filter 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 helics_filter() const { return filt; }
36  helics_filter 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  }
84 
85  protected:
87 };
88 
91 class CloningFilter: public Filter {
92  public:
94  explicit CloningFilter(helics_filter hfilt) HELICS_NOTHROW: Filter(hfilt) {}
96  CloningFilter() HELICS_NOTHROW{};
98  CloningFilter(const CloningFilter& filter): Filter(filter) {}
101  {
102  Filter::operator=(filter);
103  return *this;
104  }
105 
109  void addDeliveryEndpoint(const std::string& deliveryEndpoint)
110  {
111  helicsFilterAddDeliveryEndpoint(filt, deliveryEndpoint.c_str(), hThrowOnError());
112  }
113 
115  void removeDeliveryEndpoint(const std::string& deliveryEndpoint)
116  {
117  helicsFilterRemoveDeliveryEndpoint(filt, deliveryEndpoint.c_str(), hThrowOnError());
118  }
119 };
120 
121 } // namespace helicscpp
122 #endif
helicscpp::Filter::addSourceTarget
void addSourceTarget(const std::string &source)
Definition: Filter.hpp:67
helicscpp::Filter::filt
helics_filter filt
the reference to the underlying publication
Definition: Filter.hpp:86
helicscpp::CloningFilter::CloningFilter
CloningFilter(const CloningFilter &filter)
Definition: Filter.hpp:98
helicscpp::Filter::Filter
Filter(const Filter &filter)
Definition: Filter.hpp:25
helicsFilterGetInfo
const char * helicsFilterGetInfo(helics_filter filt)
Definition: MessageFiltersExport.cpp:409
helicscpp::CloningFilter
Definition: Filter.hpp:91
helicsFilterSetInfo
void helicsFilterSetInfo(helics_filter filt, const char *info, helics_error *err)
Definition: MessageFiltersExport.cpp:425
helicsFilterSet
void helicsFilterSet(helics_filter filt, const char *prop, double val, helics_error *err)
Definition: MessageFiltersExport.cpp:294
helicscpp::CloningFilter::CloningFilter
CloningFilter(helics_filter hfilt) HELICS_NOTHROW
Definition: Filter.hpp:94
helicscpp::Filter::operator=
Filter & operator=(const Filter &filter)
Definition: Filter.hpp:27
helicscpp::Filter::set
void set(const std::string &property, double val)
Definition: Filter.hpp:45
helicsFilterIsValid
helics_bool helicsFilterIsValid(helics_filter filt)
Definition: MessageFiltersExport.cpp:274
helics_true
const helics_bool helics_true
Definition: api-data.h:94
helics_filter
void * helics_filter
Definition: api-data.h:41
helicscpp::Filter::Filter
Filter() HELICS_NOTHROW
Definition: Filter.hpp:23
helicscpp::CloningFilter::CloningFilter
CloningFilter() HELICS_NOTHROW
Definition: Filter.hpp:96
helicscpp::Filter::setString
void setString(const std::string &property, const std::string &val)
Definition: Filter.hpp:53
helicscpp::Filter::removeTarget
void removeTarget(const std::string &dest)
Definition: Filter.hpp:73
helicsFilterRemoveDeliveryEndpoint
void helicsFilterRemoveDeliveryEndpoint(helics_filter filt, const char *deliveryEndpoint, helics_error *err)
Definition: MessageFiltersExport.cpp:392
helicscpp::Filter::addDestinationTarget
void addDestinationTarget(const std::string &dest)
Definition: Filter.hpp:60
helicsFilterAddSourceTarget
void helicsFilterAddSourceTarget(helics_filter filt, const char *source, helics_error *err)
Definition: MessageFiltersExport.cpp:341
helicscpp::Filter::setInfo
void setInfo(const std::string &info)
Definition: Filter.hpp:80
helicscpp::hThrowOnError
Definition: helicsExceptions.hpp:38
helicsFilterRemoveTarget
void helicsFilterRemoveTarget(helics_filter filt, const char *target, helics_error *err)
Definition: MessageFiltersExport.cpp:375
helicscpp::Filter::getName
const char * getName() const
Definition: Filter.hpp:40
helicsFilterAddDeliveryEndpoint
void helicsFilterAddDeliveryEndpoint(helics_filter filt, const char *deliveryEndpoint, helics_error *err)
Definition: MessageFiltersExport.cpp:358
helicscpp::CloningFilter::operator=
CloningFilter & operator=(const CloningFilter &filter)
Definition: Filter.hpp:100
helicscpp::CloningFilter::addDeliveryEndpoint
void addDeliveryEndpoint(const std::string &deliveryEndpoint)
Definition: Filter.hpp:109
helicsFilterAddDestinationTarget
void helicsFilterAddDestinationTarget(helics_filter filt, const char *dst, helics_error *err)
Definition: MessageFiltersExport.cpp:324
helicscpp::Filter::baseObject
helics_filter baseObject() const
Definition: Filter.hpp:36
helicscpp::Filter::getInfo
const char * getInfo() const
Definition: Filter.hpp:78
helicsFilterSetString
void helicsFilterSetString(helics_filter filt, const char *prop, const char *val, helics_error *err)
Definition: MessageFiltersExport.cpp:309
helicscpp::Filter::isValid
bool isValid() const
Definition: Filter.hpp:38
helicsFilterGetName
const char * helicsFilterGetName(helics_filter filt)
Definition: MessageFiltersExport.cpp:284
helicscpp::Filter
Definition: Filter.hpp:18
helicscpp
Definition: cpp98/Broker.hpp:18
helicscpp::CloningFilter::removeDeliveryEndpoint
void removeDeliveryEndpoint(const std::string &deliveryEndpoint)
Definition: Filter.hpp:115
helicscpp::Filter::Filter
Filter(helics_filter hfilt) HELICS_NOTHROW
Definition: Filter.hpp:21