helics 3.7.0
Loading...
Searching...
No Matches
cpp98/Core.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#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
18namespace helicscpp {
19class 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 HELICS_NODISCARD HelicsCore baseObject() const { return core; }
43 HELICS_NODISCARD bool isConnected() const
44 {
46 }
48 HELICS_NODISCARD bool isOpenToNewFederates() const
49 {
51 }
55 Core& operator=(const Core& cr)
56 {
58 return *this;
59 }
60#ifdef HELICS_HAS_RVALUE_REFS
62 Core(Core&& cr) HELICS_NOTHROW: core(cr.core) { cr.core = HELICS_NULL_POINTER; }
64 Core& operator=(Core&& cr) HELICS_NOTHROW
65 {
66 core = cr.core;
67 cr.core = HELICS_NULL_POINTER;
68 return *this;
69 }
70#endif
75
84 bool waitForDisconnect(int msToWait = -1)
85 {
87 }
90 const char* getIdentifier() const { return helicsCoreGetIdentifier(core); }
92 const char* getAddress() const { return helicsCoreGetAddress(core); }
101 Filter registerFilter(HelicsFilterTypes type, const std::string& name = std::string())
102 {
103 return Filter(helicsCoreRegisterFilter(core, type, name.c_str(), hThrowOnError()));
104 }
105
112 CloningFilter registerCloningFilter(const std::string& deliveryEndpoint)
113 {
114 return CloningFilter(
115 helicsCoreRegisterCloningFilter(core, deliveryEndpoint.c_str(), hThrowOnError()));
116 }
117
122 void setGlobal(const std::string& valueName, const std::string& value)
123 {
124 helicsCoreSetGlobal(core, valueName.c_str(), value.c_str(), hThrowOnError());
125 }
126
131 void addAlias(const std::string& interfaceName, const std::string& alias)
132 {
133 helicsCoreAddAlias(core, interfaceName.c_str(), alias.c_str(), hThrowOnError());
134 }
135
136 void globalError(int errorCode, const std::string& errorString)
137 {
138 helicsCoreGlobalError(core, errorCode, errorString.c_str(), HELICS_IGNORE_ERROR);
139 }
144 void sendCommand(const std::string& target, const std::string& command)
145 {
146 helicsCoreSendCommand(core, target.c_str(), command.c_str(), hThrowOnError());
147 }
148
162 std::string query(const std::string& target,
163 const std::string& queryStr,
165 {
166 // returns HelicsQuery
167 HelicsQuery q = helicsCreateQuery(target.c_str(), queryStr.c_str());
168 if (mode != HELICS_SEQUENCING_MODE_FAST) {
169 helicsQuerySetOrdering(q, mode, HELICS_IGNORE_ERROR);
170 }
171 std::string result(helicsQueryCoreExecute(q, core, hThrowOnError()));
173 return result;
174 }
175
176 protected:
178};
179
180} // namespace helicscpp
181#endif
HelicsFilter helicsCoreRegisterCloningFilter(HelicsCore core, const char *name, HelicsError *err)
Definition MessageFiltersExport.cpp:208
HelicsFilter helicsCoreRegisterFilter(HelicsCore core, HelicsFilterTypes type, const char *name, HelicsError *err)
Definition MessageFiltersExport.cpp:147
void * HelicsCore
Definition api-data.h:54
void * HelicsQuery
Definition api-data.h:83
const HelicsBool HELICS_FALSE
Definition api-data.h:123
Definition Filter.hpp:129
Definition cpp98/Core.hpp:19
void disconnect()
Definition cpp98/Core.hpp:79
void setGlobal(const std::string &valueName, const std::string &value)
Definition cpp98/Core.hpp:122
Core(const Core &cr)
Definition cpp98/Core.hpp:53
bool waitForDisconnect(int msToWait=-1)
Definition cpp98/Core.hpp:84
const char * getIdentifier() const
Definition cpp98/Core.hpp:90
void addAlias(const std::string &interfaceName, const std::string &alias)
Definition cpp98/Core.hpp:131
Core(HelicsCore cr) HELICS_NOTHROW
Definition cpp98/Core.hpp:34
Core() HELICS_NOTHROW
Definition cpp98/Core.hpp:22
Core(const std::string &type, const std::string &name, int argc, char **argv)
Definition cpp98/Core.hpp:29
HELICS_NODISCARD bool isOpenToNewFederates() const
Definition cpp98/Core.hpp:48
~Core()
Definition cpp98/Core.hpp:37
HelicsCore core
reference to the underlying core object
Definition cpp98/Core.hpp:177
void setReadyToInit()
Definition cpp98/Core.hpp:74
void sendCommand(const std::string &target, const std::string &command)
Definition cpp98/Core.hpp:144
Filter registerFilter(HelicsFilterTypes type, const std::string &name=std::string())
Definition cpp98/Core.hpp:101
HELICS_NODISCARD HelicsCore baseObject() const
Definition cpp98/Core.hpp:41
Core & operator=(const Core &cr)
Definition cpp98/Core.hpp:55
HELICS_NODISCARD bool isConnected() const
Definition cpp98/Core.hpp:43
Core(const std::string &type, const std::string &name, const std::string &initString)
Definition cpp98/Core.hpp:24
const char * getAddress() const
Definition cpp98/Core.hpp:92
CloningFilter registerCloningFilter(const std::string &deliveryEndpoint)
Definition cpp98/Core.hpp:112
std::string query(const std::string &target, const std::string &queryStr, HelicsSequencingModes mode=HELICS_SEQUENCING_MODE_FAST) const
Definition cpp98/Core.hpp:162
Definition Filter.hpp:18
Definition helicsExceptions.hpp:38
void helicsCoreSetGlobal(HelicsCore core, const char *valueName, const char *value, HelicsError *err)
Definition helicsExport.cpp:824
const char * helicsCoreGetIdentifier(HelicsCore core)
Definition helicsExport.cpp:902
void helicsCoreSendCommand(HelicsCore core, const char *target, const char *command, HelicsError *err)
Definition helicsExport.cpp:844
void helicsCoreDisconnect(HelicsCore core, HelicsError *err)
Definition helicsExport.cpp:969
void helicsQuerySetOrdering(HelicsQuery query, int32_t mode, HelicsError *err)
Definition helicsExport.cpp:1322
HelicsCore helicsCoreClone(HelicsCore core, HelicsError *err)
Definition helicsExport.cpp:426
void helicsCoreAddAlias(HelicsCore core, const char *interfaceName, const char *alias, HelicsError *err)
Definition helicsExport.cpp:615
const char * helicsCoreGetAddress(HelicsCore core)
Definition helicsExport.cpp:924
HelicsBool helicsCoreIsOpenToNewFederates(HelicsCore core)
Definition helicsExport.cpp:815
void helicsQueryFree(HelicsQuery query)
Definition helicsExport.cpp:1331
void helicsCoreSetReadyToInit(HelicsCore core, HelicsError *err)
Definition helicsExport.cpp:935
void helicsCoreGlobalError(HelicsCore core, int errorCode, const char *errorString, HelicsError *err)
Definition helicsExport.cpp:717
HelicsQuery helicsCreateQuery(const char *target, const char *query)
Definition helicsExport.cpp:1145
HelicsCore helicsCreateCore(const char *type, const char *name, const char *initString, HelicsError *err)
Definition helicsExport.cpp:356
HelicsCore helicsCreateCoreFromArgs(const char *type, const char *name, int argc, const char *const *argv, HelicsError *err)
Definition helicsExport.cpp:391
const char * helicsQueryCoreExecute(HelicsQuery query, HelicsCore core, HelicsError *err)
Definition helicsExport.cpp:1186
void helicsCoreFree(HelicsCore core)
Definition helicsExport.cpp:1056
HelicsBool helicsCoreWaitForDisconnect(HelicsCore core, int msToWait, HelicsError *err)
Definition helicsExport.cpp:1004
HelicsBool helicsCoreIsConnected(HelicsCore core)
Definition helicsExport.cpp:806
HelicsFilterTypes
Definition helics_enums.h:393
HelicsSequencingModes
Definition helics_enums.h:429
@ HELICS_SEQUENCING_MODE_FAST
Definition helics_enums.h:431
Definition cpp98/Broker.hpp:18