helics  2.8.1
Publication.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_PUBLICATION_HPP_
8 #define HELICS_CPP98_PUBLICATION_HPP_
9 #pragma once
10 
11 #include "../shared_api_library/ValueFederate.h"
12 #include "helicsExceptions.hpp"
13 
14 #include <string>
15 #include <vector>
16 
17 namespace helicscpp {
19 class Publication {
20  public:
22  explicit Publication(helics_publication hpub) HELICS_NOTHROW: pub(hpub) {}
24  Publication() HELICS_NOTHROW: pub(HELICS_NULL_POINTER) {}
26  Publication(const Publication& publication): pub(publication.pub) {}
28  Publication& operator=(const Publication& publication)
29  {
30  pub = publication.pub;
31  return *this;
32  }
33  // there is no need for move operators since copying the underlying object is fine, it is a
34  // non-owning pointer
36  operator helics_publication() const { return pub; }
38  helics_publication baseObject() const { return pub; }
39 
41  bool isValid() const { return (helicsPublicationIsValid(pub) == helics_true); }
42 
46  void publish(const char* data, int len)
47  {
48  // returns helics_status
49  helicsPublicationPublishRaw(pub, data, len, HELICS_IGNORE_ERROR);
50  }
52  void publish(const char* str) { helicsPublicationPublishString(pub, str, HELICS_IGNORE_ERROR); }
54  void publish(const std::string& str)
55  {
56  helicsPublicationPublishString(pub, str.c_str(), HELICS_IGNORE_ERROR);
57  }
58 
60  void publish(int64_t val)
61  {
62  // returns helics_status
63  helicsPublicationPublishInteger(pub, val, HELICS_IGNORE_ERROR);
64  }
66  void publish(double val) { helicsPublicationPublishDouble(pub, val, HELICS_IGNORE_ERROR); }
67 
69  void publish(std::complex<double> cmplx)
70  {
71  helicsPublicationPublishComplex(pub, cmplx.real(), cmplx.imag(), HELICS_IGNORE_ERROR);
72  }
74  void publish(const std::vector<double>& data)
75  {
77  data.data(),
78  static_cast<int>(data.size()),
79  HELICS_IGNORE_ERROR);
80  }
82  void publish(const double* data, int length)
83  {
84  helicsPublicationPublishVector(pub, data, length, HELICS_IGNORE_ERROR);
85  }
87  void publish(const std::string& name, double val)
88  {
89  helicsPublicationPublishNamedPoint(pub, name.c_str(), val, HELICS_IGNORE_ERROR);
90  }
92  void publish(bool val)
93  {
94  helicsPublicationPublishBoolean(pub, val ? helics_true : helics_false, HELICS_IGNORE_ERROR);
95  }
97  const char* getKey() const { return helicsPublicationGetKey(pub); }
99  const char* getUnits() const { return helicsPublicationGetUnits(pub); }
101  const char* getType() const { return helicsPublicationGetType(pub); }
103  const char* getInfo() const { return helicsPublicationGetInfo(pub); }
104 
106  void setInfo(const std::string& info)
107  {
108  helicsPublicationSetInfo(pub, info.c_str(), HELICS_IGNORE_ERROR);
109  }
110 
111  private:
112  helics_publication pub;
113 };
114 
115 } // namespace helicscpp
116 #endif
data
@ data
print timing+data transmissions
Definition: loggingHelper.hpp:30
helicscpp::Publication::publish
void publish(const std::vector< double > &data)
Definition: Publication.hpp:74
helicscpp::Publication::Publication
Publication() HELICS_NOTHROW
Definition: Publication.hpp:24
helicscpp::Publication::operator=
Publication & operator=(const Publication &publication)
Definition: Publication.hpp:28
helicscpp::Publication::publish
void publish(std::complex< double > cmplx)
Definition: Publication.hpp:69
helicscpp::Publication::publish
void publish(const std::string &str)
Definition: Publication.hpp:54
helicscpp::Publication::publish
void publish(bool val)
Definition: Publication.hpp:92
helicsPublicationSetInfo
void helicsPublicationSetInfo(helics_publication pub, const char *info, helics_error *err)
Definition: ValueFederateExport.cpp:1299
helicscpp::Publication::setInfo
void setInfo(const std::string &info)
Definition: Publication.hpp:106
helics_publication
void * helics_publication
Definition: api-data.h:31
helicscpp::Publication::baseObject
helics_publication baseObject() const
Definition: Publication.hpp:38
helicsPublicationGetKey
const char * helicsPublicationGetKey(helics_publication pub)
Definition: ValueFederateExport.cpp:1190
helicscpp::Publication::isValid
bool isValid() const
Definition: Publication.hpp:41
helicscpp::Publication::getInfo
const char * getInfo() const
Definition: Publication.hpp:103
helicsPublicationPublishComplex
void helicsPublicationPublishComplex(helics_publication pub, double real, double imag, helics_error *err)
Definition: ValueFederateExport.cpp:582
helics_false
const helics_bool helics_false
Definition: api-data.h:95
helicscpp::Publication::Publication
Publication(const Publication &publication)
Definition: Publication.hpp:26
helicscpp::Publication::publish
void publish(double val)
Definition: Publication.hpp:66
helics_true
const helics_bool helics_true
Definition: api-data.h:94
helicsPublicationPublishVector
void helicsPublicationPublishVector(helics_publication pub, const double *vectorInput, int vectorLength, helics_error *err)
Definition: ValueFederateExport.cpp:596
helicsPublicationGetInfo
const char * helicsPublicationGetInfo(helics_publication pub)
Definition: ValueFederateExport.cpp:1283
helicsPublicationGetUnits
const char * helicsPublicationGetUnits(helics_publication pub)
Definition: ValueFederateExport.cpp:1243
helicsPublicationPublishNamedPoint
void helicsPublicationPublishNamedPoint(helics_publication pub, const char *str, double val, helics_error *err)
Definition: ValueFederateExport.cpp:614
helicsPublicationPublishInteger
void helicsPublicationPublishInteger(helics_publication pub, int64_t val, helics_error *err)
Definition: ValueFederateExport.cpp:511
helicsPublicationPublishBoolean
void helicsPublicationPublishBoolean(helics_publication pub, helics_bool val, helics_error *err)
Definition: ValueFederateExport.cpp:525
helicsPublicationPublishDouble
void helicsPublicationPublishDouble(helics_publication pub, double val, helics_error *err)
Definition: ValueFederateExport.cpp:539
helicsPublicationGetType
const char * helicsPublicationGetType(helics_publication pub)
Definition: ValueFederateExport.cpp:1139
helicscpp::Publication::publish
void publish(const std::string &name, double val)
Definition: Publication.hpp:87
helicsPublicationIsValid
helics_bool helicsPublicationIsValid(helics_publication pub)
Definition: ValueFederateExport.cpp:643
helicsPublicationPublishString
void helicsPublicationPublishString(helics_publication pub, const char *str, helics_error *err)
Definition: ValueFederateExport.cpp:497
helicscpp::Publication::publish
void publish(int64_t val)
Definition: Publication.hpp:60
helicscpp::Publication::publish
void publish(const char *str)
Definition: Publication.hpp:52
helicscpp::Publication::publish
void publish(const char *data, int len)
Definition: Publication.hpp:46
helicsPublicationPublishRaw
void helicsPublicationPublishRaw(helics_publication pub, const void *data, int inputDataLength, helics_error *err)
Definition: ValueFederateExport.cpp:483
helicscpp::Publication::getKey
const char * getKey() const
Definition: Publication.hpp:97
helicscpp::Publication::getType
const char * getType() const
Definition: Publication.hpp:101
helicscpp::Publication::Publication
Publication(helics_publication hpub) HELICS_NOTHROW
Definition: Publication.hpp:22
helicscpp::Publication::publish
void publish(const double *data, int length)
Definition: Publication.hpp:82
helicscpp::Publication
Definition: Publication.hpp:19
helicscpp
Definition: cpp98/Broker.hpp:18
helicscpp::Publication::getUnits
const char * getUnits() const
Definition: Publication.hpp:99