helics  3.3.0
cpp98/Core.hpp
1 /*
2 Copyright (c) 2017-2022,
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_CORE_HPP_
8 #define HELICS_CPP98_CORE_HPP_
9 #pragma once
10 
11 #include "Filter.hpp"
12 #include "config.hpp"
13 #include "helics/helics.h"
14 
15 #include <stdexcept>
16 #include <string>
17 
18 namespace helicscpp {
19 class Core {
20  public:
22  Core() HELICS_NOTHROW: core(HELICS_NULL_POINTER) {}
24  Core(const std::string& type, const std::string& name, const std::string& initString)
25  {
26  core = helicsCreateCore(type.c_str(), name.c_str(), initString.c_str(), hThrowOnError());
27  }
29  Core(const std::string& type, const std::string& name, int argc, char** argv)
30  {
31  core = helicsCreateCoreFromArgs(type.c_str(), name.c_str(), argc, argv, hThrowOnError());
32  }
34  explicit Core(HelicsCore cr) HELICS_NOTHROW: core(cr) {}
35 
39  operator HelicsCore() { return core; }
41  HelicsCore baseObject() const { return core; }
43  bool isConnected() const { return (helicsCoreIsConnected(core) != HELICS_FALSE); }
45  Core(const Core& cr) { core = helicsCoreClone(cr.core, hThrowOnError()); }
47  Core& operator=(const Core& cr)
48  {
50  return *this;
51  }
52 #ifdef HELICS_HAS_RVALUE_REFS
53 
54  Core(Core&& cr) HELICS_NOTHROW: core(cr.core)
55  {
56  cr.core = HELICS_NULL_POINTER;
57  }
59  Core& operator=(Core&& cr) HELICS_NOTHROW
60  {
61  core = cr.core;
62  cr.core = HELICS_NULL_POINTER;
63  return *this;
64  }
65 #endif
66 
70  {
72  }
73 
77  void disconnect()
78  {
80  }
85  bool waitForDisconnect(int msToWait = -1)
86  {
88  }
91  const char* getIdentifier() const
92  {
94  }
96  const char* getAddress() const
97  {
98  return helicsCoreGetAddress(core);
99  }
108  Filter registerFilter(HelicsFilterTypes type, const std::string& name = std::string())
109  {
110  return Filter(helicsCoreRegisterFilter(core, type, name.c_str(), hThrowOnError()));
111  }
112 
119  CloningFilter registerCloningFilter(const std::string& deliveryEndpoint)
120  {
121  return CloningFilter(
122  helicsCoreRegisterCloningFilter(core, deliveryEndpoint.c_str(), hThrowOnError()));
123  }
124 
129  void setGlobal(const std::string& valueName, const std::string& value)
130  {
131  helicsCoreSetGlobal(core, valueName.c_str(), value.c_str(), hThrowOnError());
132  }
133 
134  void globalError(int errorCode, const std::string& errorString)
135  {
136  helicsCoreGlobalError(core, errorCode, errorString.c_str(), HELICS_IGNORE_ERROR);
137  }
142  void sendCommand(const std::string& target, const std::string& command)
143  {
144  helicsCoreSendCommand(core, target.c_str(), command.c_str(), hThrowOnError());
145  }
146 
160  std::string query(const std::string& target,
161  const std::string& queryStr,
163  {
164  // returns HelicsQuery
165  HelicsQuery q = helicsCreateQuery(target.c_str(), queryStr.c_str());
166  if (mode != HELICS_SEQUENCING_MODE_FAST) {
167  helicsQuerySetOrdering(q, mode, HELICS_IGNORE_ERROR);
168  }
169  std::string result(helicsQueryCoreExecute(q, core, hThrowOnError()));
170  helicsQueryFree(q);
171  return result;
172  }
173 
174  protected:
176 };
177 
178 } // namespace helicscpp
179 #endif
helicsCoreSendCommand
void helicsCoreSendCommand(HelicsCore core, const char *target, const char *command, HelicsError *err)
Definition: helicsExport.cpp:756
helicscpp::Core::query
std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) const
Definition: cpp98/Core.hpp:160
helicsCoreClone
HelicsCore helicsCoreClone(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:431
helicsQueryCoreExecute
const char * helicsQueryCoreExecute(HelicsQuery query, HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:1053
HELICS_FALSE
const HelicsBool HELICS_FALSE
Definition: api-data.h:115
helicsCoreFree
void helicsCoreFree(HelicsCore core)
Definition: helicsExport.cpp:924
helicsQuerySetOrdering
void helicsQuerySetOrdering(HelicsQuery query, int32_t mode, HelicsError *err)
Definition: helicsExport.cpp:1189
helicscpp::Core::setReadyToInit
void setReadyToInit()
Definition: cpp98/Core.hpp:69
helicscpp::CloningFilter
Definition: Filter.hpp:112
helicscpp::Core::~Core
~Core()
Definition: cpp98/Core.hpp:37
helicscpp::Core::registerCloningFilter
CloningFilter registerCloningFilter(const std::string &deliveryEndpoint)
Definition: cpp98/Core.hpp:119
helicscpp::Core::setGlobal
void setGlobal(const std::string &valueName, const std::string &value)
Definition: cpp98/Core.hpp:129
helicscpp::Core::Core
Core(const std::string &type, const std::string &name, int argc, char **argv)
Definition: cpp98/Core.hpp:29
helicsCoreSetGlobal
void helicsCoreSetGlobal(HelicsCore core, const char *valueName, const char *value, HelicsError *err)
Definition: helicsExport.cpp:743
helicsCreateCore
HelicsCore helicsCreateCore(const char *type, const char *name, const char *initString, HelicsError *err)
Definition: helicsExport.cpp:361
helicsQueryFree
void helicsQueryFree(HelicsQuery query)
Definition: helicsExport.cpp:1198
helicscpp::Core::sendCommand
void sendCommand(const std::string &target, const std::string &command)
Definition: cpp98/Core.hpp:142
helicsCoreGetIdentifier
const char * helicsCoreGetIdentifier(HelicsCore core)
Definition: helicsExport.cpp:793
helicsCreateCoreFromArgs
HelicsCore helicsCreateCoreFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition: helicsExport.cpp:396
helicsCoreRegisterCloningFilter
HelicsFilter helicsCoreRegisterCloningFilter(HelicsCore core, const char *name, HelicsError *err)
Definition: MessageFiltersExport.cpp:163
helicscpp::Core::Core
Core() HELICS_NOTHROW
Definition: cpp98/Core.hpp:22
helicsCoreGlobalError
void helicsCoreGlobalError(HelicsCore core, int errorCode, const char *errorString, HelicsError *err)
Definition: helicsExport.cpp:645
helicscpp::Core::waitForDisconnect
bool waitForDisconnect(int msToWait=-1)
Definition: cpp98/Core.hpp:85
helicscpp::Core::registerFilter
Filter registerFilter(HelicsFilterTypes type, const std::string &name=std::string())
Definition: cpp98/Core.hpp:108
helicscpp::Core
Definition: cpp98/Core.hpp:19
helicsCoreRegisterFilter
HelicsFilter helicsCoreRegisterFilter(HelicsCore core, HelicsFilterTypes type, const char *name, HelicsError *err)
Definition: MessageFiltersExport.cpp:102
helicscpp::Core::operator=
Core & operator=(const Core &cr)
Definition: cpp98/Core.hpp:47
helicscpp::hThrowOnError
Definition: helicsExceptions.hpp:38
helicsCoreDisconnect
void helicsCoreDisconnect(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:853
helicscpp::Core::getIdentifier
const char * getIdentifier() const
Definition: cpp98/Core.hpp:91
HelicsSequencingModes
HelicsSequencingModes
Definition: helics_enums.h:395
HelicsFilterTypes
HelicsFilterTypes
Definition: helics_enums.h:359
helicscpp::Core::isConnected
bool isConnected() const
Definition: cpp98/Core.hpp:43
helicscpp::Core::getAddress
const char * getAddress() const
Definition: cpp98/Core.hpp:96
helicscpp::Core::core
HelicsCore core
reference to the underlying core object
Definition: cpp98/Core.hpp:175
HELICS_SEQUENCING_MODE_FAST
@ HELICS_SEQUENCING_MODE_FAST
Definition: helics_enums.h:397
helicscpp::Core::Core
Core(const std::string &type, const std::string &name, const std::string &initString)
Definition: cpp98/Core.hpp:24
HelicsCore
void * HelicsCore
Definition: api-data.h:54
helicsCoreSetReadyToInit
void helicsCoreSetReadyToInit(HelicsCore core, HelicsError *err)
Definition: helicsExport.cpp:826
helicsCreateQuery
HelicsQuery helicsCreateQuery(const char *target, const char *query)
Definition: helicsExport.cpp:1012
helicscpp::Core::Core
Core(const Core &cr)
Definition: cpp98/Core.hpp:45
HelicsQuery
void * HelicsQuery
Definition: api-data.h:77
helicsCoreIsConnected
HelicsBool helicsCoreIsConnected(HelicsCore core)
Definition: helicsExport.cpp:734
helicsCoreGetAddress
const char * helicsCoreGetAddress(HelicsCore core)
Definition: helicsExport.cpp:815
helicscpp::Core::disconnect
void disconnect()
Definition: cpp98/Core.hpp:77
helicscpp::Filter
Definition: Filter.hpp:18
helicsCoreWaitForDisconnect
HelicsBool helicsCoreWaitForDisconnect(HelicsCore core, int msToWait, HelicsError *err)
Definition: helicsExport.cpp:880
helicscpp::Core::Core
Core(HelicsCore cr) HELICS_NOTHROW
Definition: cpp98/Core.hpp:34
helicscpp
Definition: cpp98/Broker.hpp:18
helicscpp::Core::baseObject
HelicsCore baseObject() const
Definition: cpp98/Core.hpp:41