CXXR (C++ R) API
|
Untemplated base class for R vectors. More...
#include <VectorBase.h>
Public Member Functions | |
VectorBase (SEXPTYPE stype, std::size_t sz) | |
VectorBase (const VectorBase &pattern) | |
Copy constructor. | |
const ListVector * | dimensionNames () const |
Names associated with the rows, columns or other dimensions of an R matrix or array. | |
const StringVector * | dimensionNames (unsigned int d) const |
Names associated with a particular dimension of an R matrix or array. | |
const IntVector * | dimensions () const |
Dimensions of R matrix or array. | |
const StringVector * | names () const |
Names of vector elements. | |
void | setDimensionNames (ListVector *names) |
Associate names with the rows, columns or other dimensions of an R matrix or array. | |
void | setDimensionNames (unsigned int d, StringVector *names) |
Associate names with a particular dimension of an R matrix or array. | |
void | setDimensions (IntVector *dims) |
Define the dimensions of R matrix or array. | |
void | setNames (StringVector *names) |
Associate names with the elements of a VectorBase. | |
virtual void | setSize (std::size_t new_size) |
Adjust the number of elements in the vector. | |
std::size_t | size () const |
Number of elements in the vector. | |
VectorBase * | clone () const |
Return pointer to a copy of this object. | |
Public Member Functions inherited from CXXR::RObject | |
virtual const PairList * | attributes () const |
Get object attributes. | |
virtual void | clearAttributes () |
Remove all attributes. | |
void | copyAttribute (const Symbol *name, const RObject *source) |
Copy an attribute from one RObject to another. | |
void | copyAttributes (const RObject *source, bool copyS4) |
Copy attributes from one RObject to another. | |
virtual RObject * | evaluate (Environment *env) |
Evaluate object in a specified Environment. | |
virtual RObject * | getAttribute (const Symbol *name) const |
Get the value a particular attribute. | |
virtual bool | hasAttributes () const |
Has this object any attributes? | |
bool | hasClass () const |
Has this object the class attribute? | |
bool | isS4Object () const |
Is this an S4 object? | |
void | maybeTraceMemory (const RObject *src) |
Carry out memory tracing. | |
void | maybeTraceMemory (const RObject *src1, const RObject *src2) |
Carry out memory tracing. | |
void | maybeTraceMemory (const RObject *src1, const RObject *src2, const RObject *src3) |
Carry out memory tracing. | |
bool | memoryTraced () const |
Is copying etc. of this object being traced? | |
virtual unsigned int | packGPBits () const |
Reproduce the gp bits field used in CR. | |
virtual void | setAttribute (const Symbol *name, RObject *value) |
Set or remove an attribute. | |
void | setAttributes (const PairList *new_attributes) |
Replace the attributes of an object. | |
void | setMemoryTracing (bool on) |
Enable/disable tracing of copying etc. | |
void | setS4Object (bool on) |
Set the status of this RObject as an S4 object. | |
SEXPTYPE | sexptype () const |
Get an object's SEXPTYPE. | |
virtual const char * | typeName () const |
Name within R of this type of object. | |
virtual void | unpackGPBits (unsigned int gpbits) |
Interpret the gp bits field used in CR. | |
void | detachReferents () |
Null out all references from this node to other nodes. | |
void | visitReferents (const_visitor *v) const |
Conduct a visitor to the nodes referred to by this one. | |
Public Member Functions inherited from CXXR::GCNode | |
void | expose () const |
Record that construction of a node is complete. | |
bool | isExposed () const |
Has this node been exposed to garbage collection? | |
Public Member Functions inherited from CXXR::HeterogeneousListBase::Link | |
Link () | |
Default constructor. | |
Link (HeterogeneousListBase *list) | |
Appending constructor. | |
void | freeLink () |
Detach Link from any list. |
Static Public Member Functions | |
template<class V > | |
static V * | resize (const V *pattern, std::size_t new_size) |
Create an extended or shrunken copy of an R vector. | |
static PairList * | resizeAttributes (const PairList *attributes, std::size_t new_size) |
Adjust attributes for a resized vector. | |
static const char * | staticTypeName () |
The name by which this type is known in R. | |
Static Public Member Functions inherited from CXXR::RObject | |
template<class T > | |
static T * | clone (const T *pattern) |
Return a pointer to a copy of an object. | |
Static Public Member Functions inherited from CXXR::GCNode | |
static void * | operator new (size_t bytes) |
Allocate memory. | |
static void * | operator new (size_t, void *where) |
Placement new for GCNode. | |
static void | operator delete (void *p, size_t bytes) |
Deallocate memory. | |
static bool | check () |
Integrity check. | |
template<class T > | |
static T * | expose (T *node) |
Record that construction of a node is complete. | |
static void | gc () |
Initiate a garbage collection. | |
static void | gclite () |
Lightweight garbage collection. | |
static void | maybeCheckExposed (const GCNode *node) |
Subject to configuration, check that a GCNode is exposed. | |
static size_t | numNodes () |
Number of GCNode objects in existence. |
Public Attributes | |
R_len_t | m_truelength |
Public Attributes inherited from CXXR::RObject | |
unsigned char | m_named |
unsigned | m_missing: 2 |
unsigned | m_argused: 2 |
bool | m_active_binding: 1 |
bool | m_binding_locked: 1 |
Protected Member Functions | |
void | adjustSize (std::size_t new_size) |
Adjust the number of elements in the vector. | |
Protected Member Functions inherited from CXXR::RObject | |
RObject (SEXPTYPE stype=CXXSXP) | |
RObject (const RObject &pattern) | |
Copy constructor. | |
Protected Member Functions inherited from CXXR::GCNode | |
virtual | ~GCNode () |
Protected Member Functions inherited from CXXR::HeterogeneousListBase::Link | |
virtual | ~Link () |
Friends | |
class | boost::serialization::access |
Untemplated base class for R vectors.
|
inline |
stype | The required SEXPTYPE. |
sz | The required number of elements in the vector. |
|
inline |
Copy constructor.
pattern | VectorBase to be copied. |
|
inlineprotected |
Adjust the number of elements in the vector.
Used by derived classes to modify the recorded size of the vector, and to adjust its attributes accordingly.
new_size | New size required. |
|
inlinevirtual |
Return pointer to a copy of this object.
This function creates a copy of this object, and returns a pointer to that copy.
Generally this function (and the copy constructors it utilises) will attempt to create a 'deep' copy of the object; this follows standard practice within C++, and it is intended to extend this practice as CXXR development continues.
However, if the pattern object contains unclonable subobjects, then the created copy will at the relevant places simply contain pointers to those subobjects, i.e. to that extent the copy is 'shallow'. This is managed using the smart pointers defined by nested class RObject::Handle.
Reimplemented from CXXR::RObject.
Reimplemented in CXXR::FixedVector< T, ST, Initializer >, and CXXR::DumbVector< T, ST >.
const ListVector* CXXR::VectorBase::dimensionNames | ( | ) | const |
Names associated with the rows, columns or other dimensions of an R matrix or array.
const StringVector* CXXR::VectorBase::dimensionNames | ( | unsigned int | d | ) | const |
Names associated with a particular dimension of an R matrix or array.
d | Dimension number (counting from 1) for which dimension names are required. Must be non-zero (not checked). |
const IntVector* CXXR::VectorBase::dimensions | ( | ) | const |
Dimensions of R matrix or array.
const StringVector* CXXR::VectorBase::names | ( | ) | const |
Names of vector elements.
|
static |
Create an extended or shrunken copy of an R vector.
V | A type inheriting from VectorBase. |
pattern | Non-null pointer to the vector to be copied. |
new_size | Required size of the copy, which may be smaller than, equal to or larger than the current size. Zero is permissible. |
names
attribute, then the result is given a names
attribute obtained by recursively applying this resize() function to the names of pattern . Other attributes are copied across by calling copyAttributesOnResize().
|
static |
Adjust attributes for a resized vector.
When a vector is resized (either by VectorBase::resize() or VectorBase::setSize() ), this function is used to determine the attributes of the resized vector. 'dim' and 'dimnames' attributes are discarded, and any 'names' attribute is itself resized. Other attributes are carried across unchanged.
attributes | Pointer, possibly null, to the attribute list of the original vector. |
new_size | Size of the resized vector. |
void CXXR::VectorBase::setDimensionNames | ( | ListVector * | names | ) |
Associate names with the rows, columns or other dimensions of an R matrix or array.
names | If this is a null pointer, any names currently associated with the dimensions of *this will be removed. Otherwise names must be a pointer to ListVector with as many elements as *this has dimensions. Each element of the ListVector must be either a null pointer, signifying that no names are to be associated with the corresponding dimension, or a pointer to a StringVector with as many elements as the size of the array along the corresponding dimension, giving the names to be given to the 'slices' along that dimension. For example the zeroth element of the ListVector, if non-null, will give the row names, and the following element will give the column names. *this will assume ownership of this ListVector (rather than duplicating it), so the calling code must not subsequently modify it. |
void CXXR::VectorBase::setDimensionNames | ( | unsigned int | d, |
StringVector * | names | ||
) |
Associate names with a particular dimension of an R matrix or array.
d | Dimension number (counting from 1) with which dimension names are to be associated. Must not be greater than the * number of dimensions of *this (checked). |
names | If this is a null pointer, any names currently associated with dimension d of *this are removed. Otherwise names must be a pointer to a StringVector with as many elements as the size of *this along the corresponding dimension, giving the names to be given to the 'slices' along that dimension. *this will assume ownership of this StringVector (rather than duplicating it), so the calling code must not subsequently modify it. |
void CXXR::VectorBase::setDimensions | ( | IntVector * | dims | ) |
Define the dimensions of R matrix or array.
As a side-effect, this function will remove any dimension names.
dims | If this is a null pointer, any existing dimensions associated will be removed, and *this will cease to be a R matrix/array. Otherwise dims must be a pointer to an IntVector with one or more elements, the product of the elements being equal to the number of elements in *this . The number of elements in dims is the required dimensionality of the array (e.g. 2 for a matrix), and each element gives the required size of the array along the respective dimension. *this will assume ownership of this IntVector (rather than duplicating it), so the calling code must not subsequently modify it. |
void CXXR::VectorBase::setNames | ( | StringVector * | names | ) |
Associate names with the elements of a VectorBase.
names | Either a null pointer, in which case any existing names will be removed, or a pointer to a StringVector with the same number of elements as *this . *this will assume ownership of this StringVector (rather than duplicating it), so the calling code must not subsequently modify it. |
|
virtual |
Adjust the number of elements in the vector.
The default implementation is simply to raise an error.
new_size | New size required. Zero is permissible. If the size is increased, the extra elements will be initialized with NA<T>() , where T is the element type. |
Reimplemented in CXXR::FixedVector< T, ST, Initializer >.
|
inline |
Number of elements in the vector.
|
inlinestatic |
The name by which this type is known in R.
Reimplemented in CXXR::FixedVector< T, ST, Initializer >, CXXR::String, CXXR::HandleVector< T, ST >, CXXR::DumbVector< T, ST >, CXXR::FixedVector< T, ST, Initializer >, CXXR::UncachedString, CXXR::CachedString, CXXR::FixedVector< T, ST, Initializer >, CXXR::FixedVector< T, ST, Initializer >, CXXR::FixedVector< T, ST, Initializer >, CXXR::FixedVector< T, ST, Initializer >, CXXR::FixedVector< T, ST, Initializer >, CXXR::FixedVector< T, ST, Initializer >, and CXXR::FixedVector< T, ST, Initializer >.