CXXR (C++ R) API
|
Element of a singly linked list. More...
#include <ConsCell.h>
Classes | |
class | const_iterator |
const_iterator for iterating over a ConsCell list. More... | |
class | iterator |
iterator for iterating over a HeterogeneousList. More... |
Public Member Functions | |
iterator | begin () |
const_iterator | begin () const |
RObject * | car () const |
iterator | end () |
const_iterator | end () const |
void | setCar (RObject *cr) |
Set the 'car' value. | |
void | setTag (const RObject *tg) |
Set the 'tag' value. | |
void | setTail (PairList *tl) |
Set the 'tail' value. | |
const RObject * | tag () const |
const PairList * | tail () const |
PairList * | tail () |
void | visitReferents (const_visitor *v) const |
Conduct a visitor to the nodes referred to by this one. | |
Public Member Functions inherited from CXXR::RObject | |
virtual const PairList * | attributes () const |
Get object attributes. | |
virtual void | clearAttributes () |
Remove all attributes. | |
virtual RObject * | clone () const |
Return pointer to a copy of this object. | |
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. | |
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 T > | |
static T * | convert (ConsCell *cc) |
Convert a ConsCell to a (possibly) different ConsCell type. | |
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. |
Protected Member Functions | |
ConsCell (SEXPTYPE st, RObject *cr=0, PairList *tl=0, const RObject *tg=0) | |
ConsCell (const ConsCell &pattern) | |
Copy constructor. | |
ConsCell (const ConsCell &pattern, int dummy) | |
Tailless copy constructor. | |
~ConsCell () | |
void | detachReferents () |
Null out all references from this node to other nodes. | |
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 |
class | PairList |
Additional Inherited Members | |
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 |
Element of a singly linked list.
Element of a LISP-like singly-linked list, containing pointers to a 'car' object (this is LISP terminology, and has nothing to do with automobiles) and to a 'tag' object, as well as a pointer to the next element of the list, which must be of the derived type PairList. (Any of these pointers may be null.)
When the object is copied, the copy thus created will contain copies of the 'car' and of subsequent elements of the list. However, the tag is not copied: the copy object will simply contain a pointer to the tag of the original object. Despite this, the tag is considered to be part of the object.
|
inlineexplicitprotected |
st | The required SEXPTYPE of the ConsCell. Must be one of LISTSXP, LANGSXP, DOTSXP or BCODESXP (not normally checked). |
cr | Pointer to the 'car' of the element to be constructed. |
tl | Pointer to the 'tail' (LISP cdr) of the element to be constructed. |
tg | Pointer to the 'tag' of the element to be constructed. |
|
inlineprotected |
|
inlineprotected |
Tailless copy constructor.
Copies the node without copying its tail. Used in implementing the PairList copy constructor proper.
|
inlineprotected |
Declared protected to ensure that ConsCell objects are allocated only using 'new'.
|
inline |
|
inlinestatic |
Convert a ConsCell to a (possibly) different ConsCell type.
T | A (non-abstract) class derived from ConsCell. |
cc | Pointer to a ConsCell (possibly null). The effect of the method on cc is undefined; consequently cc should not be used subsequently to the method call. |
|
protectedvirtual |
Null out all references from this node to other nodes.
The referents of this node are those objects (derived from GCNode) designated by a GCEdge within this object. This function changes all GCEdges within this object to encapsulate a null pointer. It is used during the sweep phase of a mark-sweep garbage collection to break up unreachable subgraphs, and in particular to remove reference loops from them. After the application of this method, the GCNode should be regarded as a 'zombie', kept in existence only so other nodes can detach their references to it cleanly (using decRefCount()).
Reimplemented from CXXR::RObject.
|
inline |
Set the 'car' value.
cr | Pointer to the new car object (or a null pointer). |
|
inline |
Set the 'tag' value.
tg | Pointer to the new tag object (or a null pointer). |
|
inline |
Set the 'tail' value.
tl | Pointer to the new tail list (or a null pointer). |
|
inlinestatic |
The name by which this type is known in R.
Reimplemented in CXXR::PairList, and CXXR::Expression.
|
inline |
|
inline |
|
virtual |
Conduct a visitor to the nodes referred to by this one.
The referents of this node are those objects (derived from GCNode) designated by a GCEdge within this object.
v | Pointer to the visitor object. |
Reimplemented from CXXR::RObject.