Function vmode returns virtual storage modes of 'ram' or 'ff' objects, the generic vmode<- sets the vmode of ram objects (vmode of ff objects cannot be changed).

vmode(x, ...)
vmode(x) <- value
# Default S3 method
vmode(x, ...)
# S3 method for class 'ff'
vmode(x, ...)
# Default S3 method
vmode(x) <- value
# S3 method for class 'ff'
vmode(x) <- value
 regtest.vmode()

Arguments

x

any object

value

a vmode from .vmode

...

The ... don't have a function yet, they are only defined to keep the generic flexible.

Details

vmode is generic with default and ff methods. The following meta data vectors can be queried by .vmode or .ffmode:

.vmodevirtual mode
.vunsignedTRUE if unsigned vmode
.vvaluesnumber of possible values (incl. NA)
.vimplementedTRUE if this vmode is available in ff (initialized .onLoad and stored in globalenv )
.rammodestorage mode of this vmode
.ffmodeinteger used to code the vmode in C-code
.vvaluesnumber of possible integers incl. NA in this vmode (or NA for other vmodes)
.vminmin integer in this vmode (or NA for other vmodes)
.vmaxmax integer in this vmode (or NA for other vmodes)
.vNANA or 0 if no NA for this vmode
.rambytesbytes needed in ram
.ffbytesbytes needed by ff on disk
.vcoerceablelist of vectors with those vmodes that can absorb this vmode

the following functions relate to vmode:

vector.vmodecreating (ram) vector of some vmode
as.vmodegeneric for coercing to some vmode (dropping other attributes)
vmode<-generic for coercing to some vmode (keeping other attributes)
maxffmodedetermine lowest .ffmode that can absorb all input vmodes without information loss

some of those call the vmode-specific functions:

creationcoercionvmode description
booleanas.boolean1 bit logical without NA
logicalas.logical2 bit logical with NA
quadas.quad2 bit unsigned integer without NA
nibbleas.nibble4 bit unsigned integer without NA
byteas.byte8 bit signed integer with NA
ubyteas.ubyte8 bit unsigned integer without NA
shortas.short16 bit signed integer with NA
ushortas.ushort16 bit unsigned integer without NA
integeras.integer32 bit signed integer with NA
singleas.single32 bit float
doubleas.double64 bit float
complexas.complex2x64 bit float
rawas.raw8 bit unsigned char
characteras.charactercharacter

Value

vmode returns a character scalar from .vmode or "NULL" for NULL
rambytes returns a vector of byte counts required by each of the vmodes

Note

regtest.vmode checks correctness of some vmode features

Author

Jens Oehlschlägel

See also

Examples

 data.frame(.vmode=.vmode, .vimplemented=.vimplemented, .rammode=.rammode, .ffmode=.ffmode
, .vmin=.vmin, .vmax=.vmax, .vNA=.vNA, .rambytes=.rambytes, .ffbytes=.ffbytes)
#>              .vmode .vimplemented  .rammode .ffmode       .vmin      .vmax .vNA
#> boolean     boolean          TRUE   logical       1           0          1    0
#> logical     logical          TRUE   logical       2           0          1   NA
#> quad           quad          TRUE   integer       3           0          3    0
#> nibble       nibble          TRUE   integer       4           0         15    0
#> byte           byte          TRUE   integer       5        -127        127   NA
#> ubyte         ubyte          TRUE   integer       6           0        255    0
#> short         short          TRUE   integer       7      -32767      32767   NA
#> ushort       ushort          TRUE   integer       8           0      65535    0
#> integer     integer          TRUE   integer       9 -2147483647 2147483647   NA
#> single       single          TRUE    double      10          NA         NA   NA
#> double       double          TRUE    double      11          NA         NA   NA
#> complex     complex         FALSE   complex      12          NA         NA   NA
#> raw             raw          TRUE       raw      13           0        255    0
#> character character         FALSE character      14          NA         NA   NA
#>           .rambytes .ffbytes
#> boolean           4    0.125
#> logical           4    0.250
#> quad              4    0.250
#> nibble            4    0.500
#> byte              4    1.000
#> ubyte             4    1.000
#> short             4    2.000
#> ushort            4    2.000
#> integer           4    4.000
#> single            8    4.000
#> double            8    8.000
#> complex          16   16.000
#> raw               1    1.000
#> character         4       NA
  vmode(1)
#> [1] "double"
  vmode(1L)
#> [1] "integer"
  .vcoerceable[["byte"]]
#> [1]  5  7  9 10 11
  .vcoerceable[["ubyte"]]
#> [1]  6  7  8  9 10 11 13