helics  3.5.2
TranslatorOperations.hpp
Go to the documentation of this file.
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 #pragma once
8 
13 #include "../common/GuardedTypes.hpp"
14 #include "../core/core-data.hpp"
15 #include "../core/helicsTime.hpp"
16 
17 #include <atomic>
18 #include <functional>
19 #include <memory>
20 #include <set>
21 #include <string>
22 #include <utility>
23 #include <vector>
24 
25 namespace helics {
26 class Core;
27 
30  public:
33 
34  private:
35  virtual SmallBuffer convertToValue(std::unique_ptr<Message> message) override;
36  virtual std::unique_ptr<Message> convertToMessage(const SmallBuffer& value) override;
37 };
38 
42  public:
45 
46  private:
47  virtual SmallBuffer convertToValue(std::unique_ptr<Message> message) override;
48  virtual std::unique_ptr<Message> convertToMessage(const SmallBuffer& value) override;
49 };
50 
53  public:
56 
59  std::function<SmallBuffer(std::unique_ptr<Message> message)> userToValueFunction)
60  {
61  toValueFunction = std::move(userToValueFunction);
62  }
63 
66  std::function<std::unique_ptr<Message>(const SmallBuffer& value)> userToMessageFunction)
67  {
68  toMessageFunction = std::move(userToMessageFunction);
69  }
70 
71  private:
73  std::function<SmallBuffer(std::unique_ptr<Message> message)> toValueFunction;
75  std::function<std::unique_ptr<Message>(const SmallBuffer& value)> toMessageFunction;
76 
77  virtual SmallBuffer convertToValue(std::unique_ptr<Message> message) override;
78  virtual std::unique_ptr<Message> convertToMessage(const SmallBuffer& value) override;
79 };
80 
83  public:
84  TranslatorOperations() = default;
85  virtual ~TranslatorOperations() = default;
86  // still figuring out if these functions have a use or not
87  TranslatorOperations(const TranslatorOperations& fo) = delete;
89  TranslatorOperations& operator=(const TranslatorOperations& fo) = delete;
90  TranslatorOperations& operator=(TranslatorOperations&& fo) = delete;
91 
96  virtual void set(std::string_view property, double val);
101  virtual void setString(std::string_view property, std::string_view val);
102  virtual std::shared_ptr<TranslatorOperator> getOperator() = 0;
103 };
104 
107  private:
108  std::shared_ptr<TranslatorOperator> to;
109 
110  public:
111  explicit CustomTranslatorOperation(std::shared_ptr<TranslatorOperator> op): to(std::move(op)) {}
112  virtual std::shared_ptr<TranslatorOperator> getOperator() override { return to; }
113 };
114 
117  private:
118  std::shared_ptr<JsonTranslatorOperator> to;
119 
120  public:
122  virtual std::shared_ptr<TranslatorOperator> getOperator() override
123  {
124  return std::static_pointer_cast<TranslatorOperator>(to);
125  }
126 };
127 
130  private:
131  std::shared_ptr<BinaryTranslatorOperator> to;
132 
133  public:
136 
137  virtual std::shared_ptr<TranslatorOperator> getOperator() override
138  {
139  return std::static_pointer_cast<TranslatorOperator>(to);
140  }
141 };
142 
143 } // namespace helics
Definition: TranslatorOperations.hpp:129
BinaryTranslatorOperation()
Definition: TranslatorOperations.cpp:87
Definition: TranslatorOperations.hpp:41
Definition: TranslatorOperations.hpp:106
Definition: TranslatorOperations.hpp:52
void setToValueFunction(std::function< SmallBuffer(std::unique_ptr< Message > message)> userToValueFunction)
Definition: TranslatorOperations.hpp:58
void setToMessageFunction(std::function< std::unique_ptr< Message >(const SmallBuffer &value)> userToMessageFunction)
Definition: TranslatorOperations.hpp:65
Definition: TranslatorOperations.hpp:116
Definition: TranslatorOperations.hpp:29
Definition: SmallBuffer.hpp:25
Definition: TranslatorOperations.hpp:82
virtual void setString(std::string_view property, std::string_view val)
Definition: TranslatorOperations.cpp:75
virtual void set(std::string_view property, double val)
Definition: TranslatorOperations.cpp:67
Definition: core-data.hpp:131
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition: AsyncFedCallInfo.hpp:14