helics 3.7.0
Loading...
Searching...
No Matches
flagOperations.hpp
Go to the documentation of this file.
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#pragma once
12#include <cstdint>
13
14namespace helics {
16enum GeneralFlags : uint16_t {
19};
20
37
63
76
86
116
132
134enum OperationFlags : uint16_t {
136 cancel_flag = 13
138
139// extra_flag1 = 7, //!< extra flag
140
141// extra_flag2 = 10, //!< extra flag
142
143// extra_flag3 = 13, //!< extra flag
144// extra_flag4 = 14, //!< extra flag
145
152template<class FlagContainer, class FlagIndex>
153inline void setActionFlag(FlagContainer& M, FlagIndex flag)
154{
155 M.flags |= (static_cast<decltype(M.flags)>((1U) << (static_cast<uint16_t>((flag)))));
156}
157
160template<class FlagIndex>
161inline bool checkActionFlag(uint16_t flags, FlagIndex flag)
162{
163 return ((flags & (static_cast<uint16_t>((1U) << (static_cast<uint16_t>((flag)))))) != 0U);
164}
165
167template<class FlagContainer, class FlagIndex>
168inline bool checkActionFlag(const FlagContainer& M, FlagIndex flag)
169{
170 return ((M.flags & (static_cast<decltype(M.flags)>((1U) << (static_cast<uint16_t>((flag)))))) !=
171 0U);
172}
173
175template<class FlagContainer, class FlagIndex>
176inline void clearActionFlag(FlagContainer& M, FlagIndex flag)
177{
178 M.flags &= static_cast<decltype(M.flags)>(~((1U) << (static_cast<uint16_t>((flag)))));
179}
180
182template<class FlagContainer, class FlagIndex>
183inline void toggleActionFlag(FlagContainer& M, FlagIndex flag)
184{
185 if (checkActionFlag(M, flag)) {
186 clearActionFlag(M, flag);
187 } else {
188 setActionFlag(M, flag);
189 }
190}
191
193inline constexpr uint16_t make_flags(unsigned int flag)
194{
195 return static_cast<uint16_t>(1U << (flag));
196}
197
199inline constexpr uint16_t make_flags(unsigned int flag1, unsigned int flag2)
200{
201 return make_flags(flag1) | make_flags(flag2);
202}
203
205inline constexpr uint16_t make_flags(unsigned int flag1, unsigned int flag2, unsigned int flag3)
206{
207 return make_flags(flag1, flag2) | make_flags(flag3);
208}
209
211inline constexpr uint16_t toggle_flag(uint16_t base, unsigned int flag)
212{
213 return base ^ make_flags(flag);
214}
215} // namespace helics
the main namespace for the helics co-simulation library User functions will be in the helics namespac...
Definition AsyncFedCallInfo.hpp:14
constexpr uint16_t toggle_flag(uint16_t base, unsigned int flag)
Definition flagOperations.hpp:211
OperationFlags
general flags used for other operations
Definition flagOperations.hpp:134
@ cancel_flag
flag indicating an operation is canceled
Definition flagOperations.hpp:136
void toggleActionFlag(FlagContainer &M, FlagIndex flag)
Definition flagOperations.hpp:183
void setActionFlag(FlagContainer &M, FlagIndex flag)
Definition flagOperations.hpp:153
constexpr uint16_t make_flags(unsigned int flag)
Definition flagOperations.hpp:193
ConnectionFlags
flags used when connecting a federate/core/broker to a federation
Definition flagOperations.hpp:88
@ disconnected_flag
flag indicating that a broker/federate is disconnected
Definition flagOperations.hpp:107
@ global_disconnect_flag
flag indicating that global disconnect synchronize is in use
Definition flagOperations.hpp:105
@ dynamic_join_flag
flag indicating that the connection allows joining dynamically
Definition flagOperations.hpp:101
@ global_timing_flag
flag indicating to use global timing (overload of indicator flag)
Definition flagOperations.hpp:92
@ core_flag
flag indicating that message comes from a core vs a broker
Definition flagOperations.hpp:90
@ async_timing_flag
flag indicating use of asynchronous timing on a global level
Definition flagOperations.hpp:97
@ observer_flag
flag indicating that the connection is an observer only
Definition flagOperations.hpp:99
@ test_connection_flag
flag indicating this is a test connection
Definition flagOperations.hpp:109
@ non_counting_flag
flag indicating that a federate should not count in any totals
Definition flagOperations.hpp:113
@ reentrant_flag
flag indicating that the connection may be reentrant
Definition flagOperations.hpp:103
@ slow_responding_flag
flag indicating a federate, core or broker is slow responding
Definition flagOperations.hpp:111
@ use_json_serialization_flag
flag to indicate it should use the json packetization
Definition flagOperations.hpp:95
MessageFlags
flags used for messages
Definition flagOperations.hpp:118
@ filter_processing_required_flag
flag indicating that the message requires processing for filters yet
Definition flagOperations.hpp:120
@ user_custom_message_flag2
Definition flagOperations.hpp:127
@ user_custom_message_flag1
custom message flag 1
Definition flagOperations.hpp:122
@ user_custom_message_flag3
custom message flag 3
Definition flagOperations.hpp:129
@ destination_processing_flag
flag indicating the message is for destination processing
Definition flagOperations.hpp:124
bool checkActionFlag(uint16_t flags, FlagIndex flag)
Definition flagOperations.hpp:161
void clearActionFlag(FlagContainer &M, FlagIndex flag)
Definition flagOperations.hpp:176
TimingFlags
flags used in timing messages
Definition flagOperations.hpp:22
@ iteration_requested_flag
Definition flagOperations.hpp:23
@ non_granting_flag
flag to indicate the request is from a non-granting federate
Definition flagOperations.hpp:25
@ delayed_timing_flag
flag to indicate the request is from federate with delayed timing
Definition flagOperations.hpp:30
@ parent_flag
flag indicating the message is from a parent object
Definition flagOperations.hpp:32
@ child_flag
flag indicating a message is from a child object
Definition flagOperations.hpp:35
@ interrupted_flag
flag to mark an interrupted event
Definition flagOperations.hpp:28
InterfaceFlags
flags used on handles
Definition flagOperations.hpp:39
@ nameless_interface_flag
flag to indicate an interface is nameless
Definition flagOperations.hpp:61
@ only_transmit_on_change_flag
indicator that the interface should only transmit on change
Definition flagOperations.hpp:58
@ only_update_on_change_flag
flag indicating that the values should only be updated on change
Definition flagOperations.hpp:49
@ buffer_data_flag
indicator that the interface should buffer data
Definition flagOperations.hpp:41
@ destination_target
indicator that the target is a destination target
Definition flagOperations.hpp:43
@ single_connection_flag
flag indicating that the interface accepts only a single connection
Definition flagOperations.hpp:47
@ reconnectable_flag
flag indicating that the target is mapped
Definition flagOperations.hpp:51
@ optional_flag
flag indicating that a connection is optional and may not be matched
Definition flagOperations.hpp:53
@ required_flag
flag indicating that an action or match is required
Definition flagOperations.hpp:45
EndpointFlags
enumeration of endpoint specific flags
Definition flagOperations.hpp:65
@ receive_only_flag
indicator that an endpoint is receive only
Definition flagOperations.hpp:74
@ targeted_flag
flag indicating an endpoint is targeted
Definition flagOperations.hpp:67
@ source_only_flag
indicator that an endpoint is source only
Definition flagOperations.hpp:72
@ has_source_filter_flag
indicator that an endpoint or message has a source filter
Definition flagOperations.hpp:70
FilterFlags
enumeration of filter specific flags
Definition flagOperations.hpp:78
@ has_non_cloning_dest_filter_flag
indicator that the endpoint or filter has a destination filter that alters the message
Definition flagOperations.hpp:84
@ clone_flag
flag indicating the filter is a clone filter or the data needs to be cloned
Definition flagOperations.hpp:80
@ has_dest_filter_flag
indicator that an endpoint or message has a destination filter
Definition flagOperations.hpp:82
GeneralFlags
Definition flagOperations.hpp:16
@ indicator_flag
flag used for setting values
Definition flagOperations.hpp:18
@ error_flag
flag indicating an error condition associated with the command
Definition flagOperations.hpp:17