1#ifndef RDS2CPP_ROBJECT_HPP
2#define RDS2CPP_ROBJECT_HPP
11#include "utils_other.hpp"
13#include "sanisizer/sanisizer.hpp"
145 std::vector<std::unique_ptr<RObject> >
values;
156 names.emplace_back(std::move(n));
168 void add(std::string n, std::unique_ptr<RObject> v,
StringEncoding enc = StringEncoding::UTF8) {
169 names.emplace_back(std::move(n));
171 values.emplace_back(std::move(v));
181template<
typename ElementType, SEXPType stype>
187 data(sanisizer::cast<I<
decltype(
data.size())> >(n))
190 static constexpr SEXPType vector_sexp_type = stype;
241 data(sanisizer::cast<I<
decltype(
data.size())> >(n)),
274 data.push_back(std::move(d));
284 encodings.push_back(StringEncoding::NONE);
302 data(sanisizer::cast<I<
decltype(
data.size())> >(n))
313 std::vector<std::unique_ptr<RObject> >
data;
330 std::vector<std::unique_ptr<RObject> >
data;
356 void add(std::string t, std::unique_ptr<RObject> d,
StringEncoding enc = StringEncoding::UTF8) {
357 data.push_back(std::move(d));
372 data.emplace_back(d);
383 void add(std::unique_ptr<RObject> d) {
384 data.push_back(std::move(d));
397 data.emplace_back(d);
563 data(sanisizer::cast<I<
decltype(
data.size())> >(n))
575 std::vector<std::unique_ptr<RObject> >
data;
Parse an RDS file in C++.
Definition StringEncoding.hpp:12
AtomicVector< unsigned char, SEXPType::RAW > RawVector
Raw vector.
Definition RObject.hpp:226
AtomicVector< double, SEXPType::REAL > DoubleVector
Double-precision vector.
Definition RObject.hpp:221
StringEncoding
Definition StringEncoding.hpp:17
AtomicVector< std::int32_t, SEXPType::INT > IntegerVector
Integer vector.
Definition RObject.hpp:211
AtomicVector< std::int32_t, SEXPType::LGL > LogicalVector
Logical vector.
Definition RObject.hpp:216
SEXPType
Definition SEXPType.hpp:31
AtomicVector< std::complex< double >, SEXPType::CPLX > ComplexVector
Complex vector.
Definition RObject.hpp:231
Vector of some atomic type.
Definition RObject.hpp:182
Attributes attributes
Definition RObject.hpp:205
SEXPType type() const
Definition RObject.hpp:195
std::vector< ElementType > data
Definition RObject.hpp:200
Attribute names and values.
Definition RObject.hpp:131
std::vector< std::string > names
Definition RObject.hpp:135
std::vector< std::unique_ptr< RObject > > values
Definition RObject.hpp:145
void add(std::string n, RObject *v, StringEncoding enc=StringEncoding::UTF8)
Definition RObject.hpp:155
void add(std::string n, std::unique_ptr< RObject > v, StringEncoding enc=StringEncoding::UTF8)
Definition RObject.hpp:168
std::vector< StringEncoding > encodings
Definition RObject.hpp:140
Built-in function.
Definition RObject.hpp:445
SEXPType type() const
Definition RObject.hpp:446
std::string name
Definition RObject.hpp:451
Reference to an environment.
Definition RObject.hpp:76
std::size_t index
Definition RObject.hpp:101
SEXPType env_type
Definition RObject.hpp:107
SEXPType type() const
Definition RObject.hpp:95
EnvironmentIndex(SEXPType e=SEXPType::GLOBALENV_)
Definition RObject.hpp:82
EnvironmentIndex(std::size_t i)
Definition RObject.hpp:89
Expression vector.
Definition RObject.hpp:558
std::vector< std::unique_ptr< RObject > > data
Definition RObject.hpp:575
Attributes attributes
Definition RObject.hpp:580
SEXPType type() const
Definition RObject.hpp:569
Reference to an external pointer.
Definition RObject.hpp:113
ExternalPointerIndex(std::size_t i=-1)
Definition RObject.hpp:117
SEXPType type() const
Definition RObject.hpp:120
std::size_t index
Definition RObject.hpp:125
Generic vector, i.e., an ordinary R list.
Definition RObject.hpp:297
SEXPType type() const
Definition RObject.hpp:308
Attributes attributes
Definition RObject.hpp:318
std::vector< std::unique_ptr< RObject > > data
Definition RObject.hpp:313
Language object, i.e., a function call.
Definition RObject.hpp:457
std::vector< std::string > argument_names
Definition RObject.hpp:481
std::vector< StringEncoding > argument_encodings
Definition RObject.hpp:493
void add_argument(std::string n, RObject *d, StringEncoding enc=StringEncoding::UTF8)
Definition RObject.hpp:503
void add_argument(std::string n, std::unique_ptr< RObject > d, StringEncoding enc=StringEncoding::UTF8)
Definition RObject.hpp:517
StringEncoding function_encoding
Definition RObject.hpp:469
std::vector< std::unique_ptr< RObject > > argument_values
Definition RObject.hpp:475
Attributes attributes
Definition RObject.hpp:552
std::string function_name
Definition RObject.hpp:464
void add_argument(RObject *d)
Definition RObject.hpp:530
SEXPType type() const
Definition RObject.hpp:459
void add_argument(std::unique_ptr< RObject > d)
Definition RObject.hpp:542
std::vector< unsigned char > argument_has_name
Definition RObject.hpp:487
R's NULL value.
Definition RObject.hpp:51
SEXPType type() const
Definition RObject.hpp:52
Pairlist, i.e., a linked list.
Definition RObject.hpp:324
Attributes attributes
Definition RObject.hpp:406
std::vector< std::unique_ptr< RObject > > data
Definition RObject.hpp:330
std::vector< std::string > tag_names
Definition RObject.hpp:342
void add(RObject *d)
Definition RObject.hpp:396
SEXPType type() const
Definition RObject.hpp:325
std::vector< StringEncoding > tag_encodings
Definition RObject.hpp:347
void add(std::unique_ptr< RObject > d)
Definition RObject.hpp:383
void add(std::string t, std::unique_ptr< RObject > d, StringEncoding enc=StringEncoding::UTF8)
Definition RObject.hpp:356
void add(std::string t, RObject *d, StringEncoding enc=StringEncoding::UTF8)
Definition RObject.hpp:371
std::vector< unsigned char > has_tag
Definition RObject.hpp:336
Virtual class for all unserialized R objects.
Definition RObject.hpp:26
virtual SEXPType type() const =0
S4 object.
Definition RObject.hpp:412
StringEncoding package_encoding
Definition RObject.hpp:433
std::string class_name
Definition RObject.hpp:418
StringEncoding class_encoding
Definition RObject.hpp:423
std::string package_name
Definition RObject.hpp:428
SEXPType type() const
Definition RObject.hpp:413
Attributes attributes
Definition RObject.hpp:439
String vector.
Definition RObject.hpp:236
void add(std::string d, StringEncoding enc=StringEncoding::UTF8)
Definition RObject.hpp:273
std::vector< StringEncoding > encodings
Definition RObject.hpp:259
std::vector< char > missing
Definition RObject.hpp:265
std::vector< std::string > data
Definition RObject.hpp:254
SEXPType type() const
Definition RObject.hpp:249
void add()
Definition RObject.hpp:282
Attributes attributes
Definition RObject.hpp:291
Reference to a language symbol.
Definition RObject.hpp:58
SymbolIndex(std::size_t i=-1)
Definition RObject.hpp:62
SEXPType type() const
Definition RObject.hpp:65
std::size_t index
Definition RObject.hpp:70