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 int size() {
return helicsDataBufferSize(buff); }
55 int capacity() {
return helicsDataBufferCapacity(buff); }
57 void*
data() {
return helicsDataBufferData(buff); }
61 return helicsDataBufferReserve(buff, newCapacity) ==
HELICS_TRUE;
64 int stringSize() {
return helicsDataBufferStringSize(buff); }
66 int vectorSize() {
return helicsDataBufferVectorSize(buff); }
68 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 int64_t
toInt() {
return helicsDataBufferToInteger(buff); }
117 HelicsBool val = helicsDataBufferToBoolean(buff);
121 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:82
int HelicsBool
Definition: api-data.h:112
const HelicsBool HELICS_FALSE
Definition: api-data.h:115
const HelicsBool HELICS_TRUE
Definition: api-data.h:114
Definition: DataBuffer.hpp:18
void toNamedPoint(std::string &name, double *val)
Definition: DataBuffer.hpp:103
int64_t toInt()
Definition: DataBuffer.hpp:113
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
double toDouble()
Definition: DataBuffer.hpp:121
std::complex< double > toComplex()
Definition: DataBuffer.hpp:123
bool toBoolean()
Definition: DataBuffer.hpp:115
int stringSize()
Definition: DataBuffer.hpp:64
int capacity()
Definition: DataBuffer.hpp:55
DataBuffer clone()
Definition: DataBuffer.hpp:50
int vectorSize()
Definition: DataBuffer.hpp:66
int size()
Definition: DataBuffer.hpp:52
int type() const
Definition: DataBuffer.hpp:68
void toString(std::string &str)
Definition: DataBuffer.hpp:89
~DataBuffer()
Definition: DataBuffer.hpp:29
void * data()
Definition: DataBuffer.hpp:57
int toVector(double *data, int maxlen)
Definition: DataBuffer.hpp:133
HelicsDataBuffer getHelicsDataBuffer()
Definition: DataBuffer.hpp:165
std::string toString()
Definition: DataBuffer.hpp:72
bool convertToType(int newDataType)
Definition: DataBuffer.hpp:160
bool reserve(int32_t newCapacity)
Definition: DataBuffer.hpp:59
bool isValid() const
Definition: DataBuffer.hpp:70
Definition: cpp98/Broker.hpp:18
Definition: api-data.h:160