helics  2.8.1
cpp98/Core.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_CORE_HPP_
8 #define HELICS_CPP98_CORE_HPP_
9 #pragma once
10 
11 #include "../cpp98/Filter.hpp"
12 #include "../shared_api_library/MessageFilters.h"
13 #include "../shared_api_library/helics.h"
14 #include "config.hpp"
15 
16 #include <stdexcept>
17 #include <string>
18 
19 namespace helicscpp {
20 class Core {
21  public:
23  Core() HELICS_NOTHROW: core(HELICS_NULL_POINTER) {}
25  Core(const std::string& type, const std::string& name, const std::string& initString)
26  {
27  core = helicsCreateCore(type.c_str(), name.c_str(), initString.c_str(), hThrowOnError());
28  }
30  Core(const std::string& type, const std::string& name, int argc, char** argv)
31  {
32  core = helicsCreateCoreFromArgs(type.c_str(), name.c_str(), argc, argv, hThrowOnError());
33  }
35  explicit Core(helics_core cr) HELICS_NOTHROW: core(cr) {}
36 
40  operator helics_core() { return core; }
42  helics_core baseObject() const { return core; }
44  bool isConnected() const { return (helicsCoreIsConnected(core) != helics_false); }
46  Core(const Core& cr) { core = helicsCoreClone(cr.core, hThrowOnError()); }
48  Core& operator=(const Core& cr)
49  {
51  return *this;
52  }
53 #ifdef HELICS_HAS_RVALUE_REFS
54 
55  Core(Core&& cr) HELICS_NOTHROW
56  {
57  core = cr.core;
58  cr.core = HELICS_NULL_POINTER;
59  }
61  Core& operator=(Core&& cr) HELICS_NOTHROW
62  {
63  core = cr.core;
64  cr.core = HELICS_NULL_POINTER;
65  return *this;
66  }
67 #endif
68 
72 
81  bool waitForDisconnect(int msToWait = -1)
82  {
84  }
87  const char* getIdentifier() const { return helicsCoreGetIdentifier(core); }
89  const char* getAddress() const { return helicsCoreGetAddress(core); }
98  Filter registerFilter(helics_filter_type type, const std::string& name = std::string())
99  {
100  return Filter(helicsCoreRegisterFilter(core, type, name.c_str(), hThrowOnError()));
101  }
102 
109  CloningFilter registerCloningFilter(const std::string& deliveryEndpoint)
110  {
111  return CloningFilter(
112  helicsCoreRegisterCloningFilter(core, deliveryEndpoint.c_str(), hThrowOnError()));
113  }
114 
119  void setGlobal(const std::string& valueName, const std::string& value)
120  {
121  helicsCoreSetGlobal(core, valueName.c_str(), value.c_str(), hThrowOnError());
122  }
123 
124  void globalError(int errorCode, const std::string& errorString)
125  {
126  helicsCoreGlobalError(core, errorCode, errorString.c_str(), HELICS_IGNORE_ERROR);
127  }
141  std::string query(const std::string& target,
142  const std::string& queryStr,
144  {
145  // returns helics_query
146  helics_query q = helicsCreateQuery(target.c_str(), queryStr.c_str());
147  if (mode != helics_sequencing_mode_fast) {
148  helicsQuerySetOrdering(q, mode, HELICS_IGNORE_ERROR);
149  }
150  std::string result(helicsQueryCoreExecute(q, core, hThrowOnError()));
151  helicsQueryFree(q);
152  return result;
153  }
154 
155  protected:
157 };
158 
159 } // namespace helicscpp
160 #endif
helicsQueryFree
void helicsQueryFree(helics_query query)
Definition: helicsExport.cpp:1063
helicscpp::Core::setReadyToInit
void setReadyToInit()
Definition: cpp98/Core.hpp:71
helicsCoreRegisterFilter
helics_filter helicsCoreRegisterFilter(helics_core core, helics_filter_type type, const char *name, helics_error *err)
Definition: MessageFiltersExport.cpp:103
helicscpp::CloningFilter
Definition: Filter.hpp:91
helicscpp::Core::~Core
~Core()
Definition: cpp98/Core.hpp:38
helicsQueryCoreExecute
const char * helicsQueryCoreExecute(helics_query query, helics_core core, helics_error *err)
Definition: helicsExport.cpp:937
helicscpp::Core::registerCloningFilter
CloningFilter registerCloningFilter(const std::string &deliveryEndpoint)
Definition: cpp98/Core.hpp:109
helicsCreateCoreFromArgs
helics_core helicsCreateCoreFromArgs(const char *type, const char *name, int argc, const char *const *argv, helics_error *err)
Definition: helicsExport.cpp:301
helicscpp::Core::setGlobal
void setGlobal(const std::string &valueName, const std::string &value)
Definition: cpp98/Core.hpp:119
helicsCoreRegisterCloningFilter
helics_filter helicsCoreRegisterCloningFilter(helics_core core, const char *name, helics_error *err)
Definition: MessageFiltersExport.cpp:164
helicscpp::Core::Core
Core(const std::string &type, const std::string &name, int argc, char **argv)
Definition: cpp98/Core.hpp:30
helics_core
void * helics_core
Definition: api-data.h:46
helics_query
void * helics_query
Definition: api-data.h:66
helicsCreateCore
helics_core helicsCreateCore(const char *type, const char *name, const char *initString, helics_error *err)
Definition: helicsExport.cpp:266
helicsCoreWaitForDisconnect
helics_bool helicsCoreWaitForDisconnect(helics_core core, int msToWait, helics_error *err)
Definition: helicsExport.cpp:773
helics_false
const helics_bool helics_false
Definition: api-data.h:95
helicscpp::Core::baseObject
helics_core baseObject() const
Definition: cpp98/Core.hpp:42
helicsCoreDisconnect
void helicsCoreDisconnect(helics_core core, helics_error *err)
Definition: helicsExport.cpp:746
helicsCoreGetAddress
const char * helicsCoreGetAddress(helics_core core)
Definition: helicsExport.cpp:708
helics_sequencing_mode
helics_sequencing_mode
Definition: helics_enums.h:333
helicsCoreIsConnected
helics_bool helicsCoreIsConnected(helics_core core)
Definition: helicsExport.cpp:645
helicscpp::Core::Core
Core() HELICS_NOTHROW
Definition: cpp98/Core.hpp:23
helicsCoreSetGlobal
void helicsCoreSetGlobal(helics_core core, const char *valueName, const char *value, helics_error *err)
Definition: helicsExport.cpp:654
helicsCoreGlobalError
void helicsCoreGlobalError(helics_core core, int errorCode, const char *errorString, helics_error *err)
Definition: helicsExport.cpp:556
helicsCoreGetIdentifier
const char * helicsCoreGetIdentifier(helics_core core)
Definition: helicsExport.cpp:686
helicscpp::Core::waitForDisconnect
bool waitForDisconnect(int msToWait=-1)
Definition: cpp98/Core.hpp:81
helicsQuerySetOrdering
void helicsQuerySetOrdering(helics_query query, int32_t mode, helics_error *err)
Definition: helicsExport.cpp:1054
helicscpp::Core
Definition: cpp98/Core.hpp:20
helics_filter_type
helics_filter_type
Definition: helics_enums.h:308
helicscpp::Core::operator=
Core & operator=(const Core &cr)
Definition: cpp98/Core.hpp:48
helicscpp::hThrowOnError
Definition: helicsExceptions.hpp:38
helicscpp::Core::getIdentifier
const char * getIdentifier() const
Definition: cpp98/Core.hpp:87
helicscpp::Core::core
helics_core core
reference to the underlying core object
Definition: cpp98/Core.hpp:156
helicscpp::Core::isConnected
bool isConnected() const
Definition: cpp98/Core.hpp:44
helicscpp::Core::getAddress
const char * getAddress() const
Definition: cpp98/Core.hpp:89
helicscpp::Core::Core
Core(const std::string &type, const std::string &name, const std::string &initString)
Definition: cpp98/Core.hpp:25
helicscpp::Core::registerFilter
Filter registerFilter(helics_filter_type type, const std::string &name=std::string())
Definition: cpp98/Core.hpp:98
helicsCoreClone
helics_core helicsCoreClone(helics_core core, helics_error *err)
Definition: helicsExport.cpp:336
helicsCoreFree
void helicsCoreFree(helics_core core)
Definition: helicsExport.cpp:817
helicscpp::Core::Core
Core(const Core &cr)
Definition: cpp98/Core.hpp:46
helics_sequencing_mode_fast
@ helics_sequencing_mode_fast
Definition: helics_enums.h:335
helicscpp::Core::Core
Core(helics_core cr) HELICS_NOTHROW
Definition: cpp98/Core.hpp:35
helicscpp::Core::query
std::string query(const std::string &target, const std::string &queryStr, helics_sequencing_mode mode=helics_sequencing_mode_fast) const
Definition: cpp98/Core.hpp:141
helicscpp::Core::disconnect
void disconnect()
Definition: cpp98/Core.hpp:76
helicscpp::Filter
Definition: Filter.hpp:18
helicscpp
Definition: cpp98/Broker.hpp:18
helicsCreateQuery
helics_query helicsCreateQuery(const char *target, const char *query)
Definition: helicsExport.cpp:906
helicsCoreSetReadyToInit
void helicsCoreSetReadyToInit(helics_core core, helics_error *err)
Definition: helicsExport.cpp:719