7#ifndef HELICS_CPP98_DATABUFFER_HPP_
8#define HELICS_CPP98_DATABUFFER_HPP_
10#include "helics/helics.h"
11#include "helicsExceptions.hpp"
20 DataBuffer() HELICS_NOTHROW: buff(helicsCreateDataBuffer(0)) {}
25 buff(helicsWrapDataInBuffer(buffer, datasize,
capacity))
30 void fill(
double val) { helicsDataBufferFillFromDouble(buff, val); }
31 void fill(int64_t val) { helicsDataBufferFillFromInteger(buff, val); }
32 void fill(
const std::string& val) { helicsDataBufferFillFromString(buff, val.c_str()); }
33 void fill(
const char* val) { helicsDataBufferFillFromString(buff, val); }
34 void fill(
const std::vector<double>& val)
36 helicsDataBufferFillFromVector(buff, val.data(),
static_cast<int>(val.size()));
38 void fill(
const std::complex<double> val)
40 helicsDataBufferFillFromComplex(buff, val.real(), val.imag());
42 void fill(
const double* vals,
int size) { helicsDataBufferFillFromVector(buff, vals,
size); }
43 void fill(
const std::string& name,
double val)
45 helicsDataBufferFillFromNamedPoint(buff, name.c_str(), val);
48 void fill(
char val) { helicsDataBufferFillFromChar(buff, val); }
52 HELICS_NODISCARD
int size() {
return helicsDataBufferSize(buff); }
55 HELICS_NODISCARD
int capacity() {
return helicsDataBufferCapacity(buff); }
57 HELICS_NODISCARD
void*
data() {
return helicsDataBufferData(buff); }
61 return helicsDataBufferReserve(buff, newCapacity) ==
HELICS_TRUE;
64 HELICS_NODISCARD
int stringSize() {
return helicsDataBufferStringSize(buff); }
66 HELICS_NODISCARD
int vectorSize() {
return helicsDataBufferVectorSize(buff); }
68 HELICS_NODISCARD
int type()
const {
return helicsDataBufferType(buff); }
77 result.resize(
static_cast<size_t>(
size) + 1);
79 helicsDataBufferToString(buff, &result[0],
size + 1, &
size);
80 if (!(result.empty()) && (result[
static_cast<size_t>(
size) - 1] ==
'\0')) {
81 result.resize(
static_cast<size_t>(
size) - 1);
92 str.resize(
static_cast<size_t>(
size) + 1);
94 helicsDataBufferToString(buff, &str[0],
size + 1, &
size);
95 if (!(str.empty()) && (str[
static_cast<size_t>(
size) - 1] ==
'\0')) {
96 str.resize(
static_cast<size_t>(
size) - 1);
105 int size = helicsDataBufferStringSize(buff);
107 name.resize(
static_cast<size_t>(
size) + 1);
109 helicsDataBufferToNamedPoint(buff, &name[0],
size + 1, &
size, val);
113 HELICS_NODISCARD int64_t
toInt() {
return helicsDataBufferToInteger(buff); }
117 HelicsBool val = helicsDataBufferToBoolean(buff);
121 HELICS_NODISCARD
double toDouble() {
return helicsDataBufferToDouble(buff); }
126 std::complex<double> result(hc.real, hc.imag);
135 helicsDataBufferToVector(buff,
data, maxlen, &maxlen);
142 int actualSize = helicsDataBufferVectorSize(buff);
143 data.resize(actualSize);
144 helicsDataBufferToVector(buff,
data.data(), actualSize, HELICS_NULL_POINTER);
153 helicsDataBufferToComplexVector(buff,
data, maxlen, &maxlen);
162 return (helicsDataBufferConvertToType(buff, newDataType) ==
HELICS_TRUE);
void * HelicsDataBuffer
Definition api-data.h:88
int HelicsBool
Definition api-data.h:120
const HelicsBool HELICS_FALSE
Definition api-data.h:123
const HelicsBool HELICS_TRUE
Definition api-data.h:122
Definition DataBuffer.hpp:18
void toNamedPoint(std::string &name, double *val)
Definition DataBuffer.hpp:103
int toComplexVector(double *data, int maxlen)
Definition DataBuffer.hpp:151
void toVector(std::vector< double > &data)
Definition DataBuffer.hpp:140
DataBuffer(HelicsDataBuffer buffer)
Definition DataBuffer.hpp:23
HELICS_NODISCARD int type() const
Definition DataBuffer.hpp:68
HELICS_NODISCARD std::complex< double > toComplex()
Definition DataBuffer.hpp:123
HELICS_NODISCARD std::string toString()
Definition DataBuffer.hpp:72
HELICS_NODISCARD DataBuffer clone()
Definition DataBuffer.hpp:50
HELICS_NODISCARD int vectorSize()
Definition DataBuffer.hpp:66
HELICS_NODISCARD int stringSize()
Definition DataBuffer.hpp:64
HELICS_NODISCARD bool isValid() const
Definition DataBuffer.hpp:70
void toString(std::string &str)
Definition DataBuffer.hpp:89
~DataBuffer()
Definition DataBuffer.hpp:29
HELICS_NODISCARD void * data()
Definition DataBuffer.hpp:57
HELICS_NODISCARD bool toBoolean()
Definition DataBuffer.hpp:115
HELICS_NODISCARD int size()
Definition DataBuffer.hpp:52
int toVector(double *data, int maxlen)
Definition DataBuffer.hpp:133
HELICS_NODISCARD int64_t toInt()
Definition DataBuffer.hpp:113
HELICS_NODISCARD HelicsDataBuffer getHelicsDataBuffer()
Definition DataBuffer.hpp:165
HELICS_NODISCARD double toDouble()
Definition DataBuffer.hpp:121
HELICS_NODISCARD int capacity()
Definition DataBuffer.hpp:55
bool convertToType(int newDataType)
Definition DataBuffer.hpp:160
bool reserve(int32_t newCapacity)
Definition DataBuffer.hpp:59
Definition cpp98/Broker.hpp:18
Definition api-data.h:168