helics 3.7.0
Loading...
Searching...
No Matches
application_api/Translator.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#pragma once
8
9#include "../core/Core.hpp"
10#include "Federate.hpp"
11#include "helics/helics_enums.h"
12
13#include <memory>
14#include <string>
15
16namespace helics {
17class TranslatorOperations;
18class TranslatorOperator;
19class CoreApp;
21enum TranslatorTypes : std::int32_t {
25 UNRECOGNIZED = 7
26};
27
28constexpr std::string_view emptyString{""};
29
31HELICS_CXX_EXPORT TranslatorTypes
32 translatorTypeFromString(std::string_view translatorType) noexcept;
33
35class HELICS_CXX_EXPORT Translator: public Interface {
36 protected:
37 bool disableAssign = false;
38 private:
39 std::shared_ptr<TranslatorOperations>
40 transOp;
41 public:
43 Translator() = default;
45 Translator(Federate* ffed, std::string_view translatorName, InterfaceHandle ihandle);
47 Translator(Core* core, std::string_view translatorName, InterfaceHandle ihandle);
49 explicit Translator(Core* core, std::string_view translatorName = emptyString);
51 virtual ~Translator() = default;
52
53 Translator(Translator&& trans) = default;
55 Translator(const Translator& trans) = default;
56 Translator& operator=(Translator&& trans) = default;
58 Translator& operator=(const Translator& trans) = default;
59
61 void setOperator(std::shared_ptr<TranslatorOperator> operation);
62
63 virtual const std::string& getDisplayName() const override { return getName(); }
64
69 virtual void set(std::string_view property, double val);
70
75 virtual void setString(std::string_view property, std::string_view val);
76
77 void addPublication(std::string_view target)
78 {
79 addSourceTarget(target, InterfaceType::PUBLICATION);
80 }
81 void addInputTarget(std::string_view target)
82 {
83 addDestinationTarget(target, InterfaceType::INPUT);
84 }
85 void addSourceEndpoint(std::string_view target)
86 {
87 addSourceTarget(target, InterfaceType::ENDPOINT);
88 }
89 void addDestinationEndpoint(std::string_view target)
90 {
91 addDestinationTarget(target, InterfaceType::ENDPOINT);
92 }
93 void addSourceFilter(std::string_view filterName)
94 {
95 addSourceTarget(filterName, InterfaceType::FILTER);
96 }
98 void addDestinationFilter(std::string_view filterName)
99 {
100 addDestinationTarget(filterName, InterfaceType::FILTER);
101 }
103 void setTranslatorType(std::int32_t type);
104
105 protected:
107 void setTranslatorOperations(std::shared_ptr<TranslatorOperations> translatorOps);
109 friend void addOperations(Translator* translator, TranslatorTypes type);
110};
111
112} // namespace helics
Definition core/Core.hpp:41
Definition application_api/Federate.hpp:48
Definition LocalFederateId.hpp:65
Definition application_api/Federate.hpp:880
Definition application_api/Translator.hpp:35
void addDestinationFilter(std::string_view filterName)
Definition application_api/Translator.hpp:98
Translator()=default
Translator & operator=(const Translator &trans)=default
virtual ~Translator()=default
virtual const std::string & getDisplayName() const override
Definition application_api/Translator.hpp:63
Translator(const Translator &trans)=default
base helics enumerations for C and C++ API's
@ HELICS_TRANSLATOR_TYPE_JSON
Definition helics_enums.h:418
@ HELICS_TRANSLATOR_TYPE_CUSTOM
Definition helics_enums.h:416
@ HELICS_TRANSLATOR_TYPE_BINARY
Definition helics_enums.h:420
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
void addOperations(Filter *filt, FilterTypes type, Core *)
Definition Filters.cpp:54
TranslatorTypes
Definition application_api/Translator.hpp:21
TranslatorTypes translatorTypeFromString(std::string_view translatorType) noexcept
Definition Translator.cpp:25