DQCsim
|
Class wrapper for ArbData
handles.
More...
Public Member Functions | |
ArbData (HandleIndex handle) noexcept | |
Wraps the given ArbData handle. More... | |
ArbData () | |
Constructs an empty ArbData object. More... | |
ArbData (const Arb &src) | |
Copy-constructs an ArbData object from any object supporting the Arb interface. More... | |
ArbData (const ArbData &src) | |
Copy-constructs an ArbData object from another ArbData object. More... | |
void | operator= (const ArbData &src) |
Copy assignment operator for ArbData objects. More... | |
ArbData (ArbData &&)=default | |
Default move constructor. | |
ArbData & | operator= (ArbData &&)=default |
Default move assignment. | |
ArbData & | with_json_string (const std::string &json) |
Sets the arbitrary JSON data to the given serialized JSON string (builder pattern). More... | |
ArbData & | with_cbor_string (const std::string &cbor) |
Sets the arbitrary JSON data to the given serialized CBOR string (builder pattern). More... | |
template<class JSON > | |
ArbData & | with_json (const JSON &json) |
Sets the arbitrary JSON data to the given JSON object from nlohmann::json (builder pattern). More... | |
ArbData & | with_arg_string (const std::string &data) |
Pushes a (binary) string to the back of the arbitrary argument list (builder pattern). More... | |
template<typename T > | |
ArbData & | with_arg (const T &data) |
Pushes a value of type T to the back of the arbitrary argument list (builder pattern). 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... | |
Additional Inherited Members | |
Protected Attributes inherited from dqcsim::wrap::Handle | |
HandleIndex | handle |
The wrapped handle. | |
Class wrapper for ArbData
handles.
ArbData
objects can be used by simulations to communicate information that isn't specified by DQCsim between plugins. DQCsim only defines that such arbitrary data consists of a JSON-like object and zero or more binary-safe strings. This means that it is up to the plugins to agree on a common format!
ArbData
objects (as well as the attached ArbData
in ArbCmd
, Gate
, and Measurement
objects) can be be constructed in-line using the builder pattern. For example, an ArbData
object with the JSON data {"hello": "world"}
, an integer argument, and a string argument, can be created as follows:
When you receive an ArbData
, you can use the various getters to see what's inside. You can also use the various setters to modify them.
|
inlinenoexcept |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Sets the arbitrary JSON data to the given serialized JSON string (builder pattern).
json | A string representation of a JSON dictionary object to assign. |
&self
, to continue building. std::runtime_error | When the string representation is invalid, or when the current handle is invalid. |
|
inline |
Sets the arbitrary JSON data to the given serialized CBOR string (builder pattern).
cbor | A JSON object represented as a CBOR binary string. |
&self
, to continue building. std::runtime_error | When the CBOR string is invalid, or when the current handle is invalid. |
|
inline |
Sets the arbitrary JSON data to the given JSON object from nlohmann::json
(builder pattern).
Since that is a header-only library that isn't usually installed system-wide and be using a specific version in your project already, you need to specify the nlohmann::json
type as a generic to this function.
json | The C++ JSON object representation of the object to set. |
&self
, to continue building. std::runtime_error | When the current handle is invalid. |
|
inline |
Pushes a (binary) string to the back of the arbitrary argument list (builder pattern).
data | The data for the new argument, represented as a (binary) string. |
&self
, to continue building. std::runtime_error | When the current handle is invalid. |
|
inline |
Pushes a value of type T
to the back of the arbitrary argument list (builder pattern).
T
must be a primitive value (like an int
) or a struct thereof, without pointers or any other "complicated" constructs. DQCsim just copies the bytes over. It is up to you to ensure that that's what you want to happen; unfortunately C++11 does not provide a way to statically ensure that this is the case.data | The data for the new argument, represented as some C object. |
&self
, to continue building. std::runtime_error | When the current handle is invalid. |