externalAllocator-class {externalVector} | R Documentation |
Class "externalAllocator"
is a virtual class with no
slots. It represents memory allocators that allocate raw memory to be
held in an object of class "externalptr"
. Instead of returning the
"externalptr"
object directly, the allocators deal with
subclasses of "externalResource"
that hold an object of
class "externalptr"
.
A virtual Class: No objects may be created from it.
Attempt to execute these methods would result in an error unless they
have been redefined for a subclass of "externalAllocator"
.
Signature components for implementation of the methods:
resource | The class "externalResource" |
alloc | A subclass of "externalAllocator" |
size | The class "ANY" |
type | The class "ANY" |
copy | The class "logical" |
value | The class "ANY" |
Description of the virtual methods:
resource
using the allocator
alloc
. If type
is a basic vector object, then
allocate an object of same mode with length
size
. Otherwise allocate size
bytes of raw
memory. This method should end with a call to
initializeResource
to initialize the resource
object. alloc
should try to dealloacte the raw memory in resource
. It
should not modify the resource
object in any way other
than modifying the object of class "externalptr"
in
resource
to reflect the deallocation. resource
. value
is same as external.size(resource)
, then no
action is taken. Otherwise, reallocate the memory in
resource
using the allocator alloc
with new size
value
. If copy
is TRUE
(the
default), then the new memory is initialized to the content of
the old memory for the minimum of old and new sizes. Content of
any uninitialized memory is undefined. resource
was saved as an R image (by serialization
code, by saving the R workspace, or by an explicit call to
save
) then the raw memory pointer in any
"externalptr"
object in it would be set to 0
. This
method tries to reinitialize the raw memory pointer. The exact
result is allocator dependant. Saikat DebRoy <saikat@stat.wisc.edu>
externalResource-class
for more on how to
use an allocator with objects from subclasses of
"externalResource"
.
gcAllocator-class
for an example of a
subclass of "externalAllocator"
.
setVirtualMethod
for more on virtual methods.