DQCsim
|
Class wrapper for queues (lists) of ArbCmd
s.
More...
Public Member Functions | |
ArbCmdQueue (HandleIndex handle) noexcept | |
Wraps the given ArbCmdQueue handle. More... | |
ArbCmdQueue () | |
Constructs an empty ArbCmd queue object. More... | |
void | push (ArbCmd &&cmd) |
Pushes an ArbCmd into the queue by moving. More... | |
void | push (const Cmd &cmd) |
Pushes an ArbCmd into the queue by copying. More... | |
ArbCmdQueue && | with (ArbCmd &&cmd) |
Pushes an ArbCmd into the queue by moving (builder pattern). More... | |
ArbCmdQueue && | with (const Cmd &cmd) |
Pushes an ArbCmd into the queue by copying (builder pattern). More... | |
void | next () |
Pops the first ArbCmd from the queue, allowing the next one to be accessed. More... | |
size_t | size () const |
Returns the number of ArbCmd s in the queue. More... | |
std::vector< ArbCmd > | drain_into_vector () |
Drains the queue into a vector of ArbCmd s. More... | |
std::vector< ArbCmd > | copy_into_vector () |
Copies the queue into a vector of ArbCmd s. More... | |
ArbCmdQueue (ArbCmdQueue &src) | |
Copy-constructs a queue of ArbCmd s. More... | |
ArbCmdQueue & | operator= (ArbCmdQueue &src) |
Copy-assigns a queue of ArbCmd s. More... | |
ArbCmdQueue (ArbCmdQueue &&)=default | |
Default move constructor. | |
ArbCmdQueue & | operator= (ArbCmdQueue &&)=default |
Default move assignment. | |
Public Member Functions inherited from dqcsim::wrap::Cmd | |
Cmd (HandleIndex handle) noexcept | |
Wraps the given cmd handle. More... | |
std::string | get_iface () const |
Returns the interface identifier of this command. More... | |
bool | is_iface (const std::string &iface) const |
Returns whether this command has the given interface identifier. More... | |
std::string | get_oper () const |
Returns the operation identifier of this command. More... | |
bool | is_oper (const std::string &oper) const |
Returns whether this command has the given operation identifier. More... | |
Public Member Functions inherited from dqcsim::wrap::Arb | |
Arb (HandleIndex handle) noexcept | |
Wraps the given arb handle. More... | |
std::string | get_arb_json_string () const |
Returns the current arbitrary JSON data as a serialized JSON string. More... | |
void | set_arb_json_string (const std::string &json) |
Sets the arbitrary JSON data to the given serialized JSON string. More... | |
std::string | get_arb_cbor_string () const |
Returns the current arbitrary JSON data as a serialized CBOR string. More... | |
void | set_arb_cbor_string (const std::string &cbor) |
Sets the arbitrary JSON data to the given serialized CBOR string. More... | |
template<class JSON > | |
JSON | get_arb_json () const |
Returns the current arbitrary JSON data as a JSON object from nlohmann::json . More... | |
template<class JSON > | |
void | set_arb_json (const JSON &json) |
Sets the arbitrary JSON data to the given JSON object from nlohmann::json . More... | |
std::string | get_arb_arg_string (ssize_t index) const |
Returns the arbitrary argument at the given index as a (binary) string. More... | |
template<typename T > | |
T | get_arb_arg_as (ssize_t index) const |
Returns the arbitrary argument at the given index as the given type. More... | |
template<typename T > | |
void | set_arb_arg_strings (const T &strings) |
Sets the arbitrary argument list to the given iterable of std::string s. More... | |
void | set_arb_arg_string (ssize_t index, const std::string &data) |
Sets the arbitrary argument at the given index to a (binary) string. More... | |
template<typename T > | |
void | set_arb_arg (ssize_t index, const T &data) |
Sets the arbitrary argument at the given index to a value of type T . More... | |
void | push_arb_arg_string (const std::string &data) |
Pushes a (binary) string to the back of the arbitrary argument list. More... | |
template<typename T > | |
void | push_arb_arg (const T &data) |
Pushes a value of type T to the back of the arbitrary argument list. More... | |
std::string | pop_arb_arg_string () |
Pops from the back of the arbitrary argument list as a (binary) string. More... | |
template<typename T > | |
T | pop_arb_arg_as () const |
Pops from the back of the arbitrary argument list as a value of type T . More... | |
void | insert_arb_arg_string (ssize_t index, const std::string &data) |
Inserts an arbitrary argument at the given index using a (binary) string. More... | |
template<typename T > | |
void | insert_arb_arg (ssize_t index, const T &data) |
Inserts an arbitrary argument at the given index using a value of type T . More... | |
void | remove_arb_arg (ssize_t index) |
Removes the arbitrary argument at the given index. More... | |
size_t | get_arb_arg_count () const |
Returns the number of arbitrary arguments. More... | |
void | clear_arb_args () |
Clears the arbitrary argument list. More... | |
void | set_arb (const Arb &src) |
Assigns all arb data from the given arb to this one. More... | |
Public Member Functions inherited from dqcsim::wrap::Handle | |
Handle () noexcept | |
Constructs an empty wrapper. More... | |
Handle (HandleIndex handle) noexcept | |
Wraps the given raw handle. More... | |
virtual | ~Handle () noexcept |
Delete the handle and its wrapper. | |
void | free () |
Explicitly delete the handle, allowing errors to be caught. More... | |
bool | is_valid () const noexcept |
Returns whether this wrapper (still) contains a valid handle. More... | |
HandleIndex | get_handle () const noexcept |
Returns the raw handle without relinquishing ownership. More... | |
HandleIndex | take_handle () noexcept |
Returns the raw handle and relinquishes ownership. More... | |
Handle (const Handle &)=delete | |
void | operator= (const Handle &)=delete |
Handle (Handle &&src) | |
Move constructor; simply moves ownership of the handle from the source object to the constructed object. More... | |
Handle & | operator= (Handle &&src) |
Move constructor; simply moves ownership of the handle from the source object to the assignment target. More... | |
std::string | dump () const |
Returns a string containing a debug dump of the handle. More... | |
HandleType | type () const |
Returns the type of this handle. More... | |
Static Public Member Functions | |
template<class T > | |
static ArbCmdQueue | from_iter (T &&cmds) |
Constructs an ArbCmd queue object from an iterable of ArbCmd s by moving. More... | |
template<class T > | |
static ArbCmdQueue | from_iter (const T &cmds) |
Constructs an ArbCmd queue object from an iterable of ArbCmd s by copying. More... | |
Additional Inherited Members | |
Protected Attributes inherited from dqcsim::wrap::Handle | |
HandleIndex | handle |
The wrapped handle. | |
Class wrapper for queues (lists) of ArbCmd
s.
To construct an ArbCmd
queue iteratively, create a new queue using the default constructor and push ArbCmd
s into it using push()
. For instance:
To iterate over an existing ArbCmd
queue (destructively!) in the most efficient way, you can use the following code:
You can also drain it into a std::vector
of ArbCmd
s (drain_into_vector
), or, if you must, copy it into one (copy_into_vector
).
|
inlinenoexcept |
Wraps the given ArbCmdQueue
handle.
handle | The raw handle to wrap. |
|
inline |
|
inline |
Copy-constructs a queue of ArbCmd
s.
src | The queue to copy from. |
std::runtime_error | When the source handle is invalid or construction of the new object fails. |
|
inline |
|
inline |
|
inlinestatic |
Constructs an ArbCmd
queue object from an iterable of ArbCmd
s by moving.
cmds | The iterable of ArbCmd& s to push. Consumed by this function. |
ArbCmdQueue
. std::runtime_error | When any of the handles are invalid, or construction of the queue handle fails. |
|
inlinestatic |
Constructs an ArbCmd
queue object from an iterable of ArbCmd
s by copying.
cmds | The iterable of const ArbCmd& s to push. |
ArbCmdQueue
. std::runtime_error | When any of the handles are invalid, copying those handles fails, or construction of the queue handle fails. |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Copies the queue into a vector of ArbCmd
s.
This is less performant than iterating over the queue manually or using drain_into_vector()
, because it requires (additional) copies.
const
, because exceptions during the copy operation can change its value, and the underlying handle is changed. However, under normal conditions, the contents appear to be unchanged.std::vector<ArbCmd>
representation of the queue. std::runtime_error | When the handle is invalid. |
|
inline |
Copy-assigns a queue of ArbCmd
s.
src | The queue to copy from. |
std::runtime_error | When the source handle is invalid, freeing any existing handle in the destination fails, or construction of the new object fails. |