Named Lists, Lists of Items, and Atomic Vectors

Description

The classes “named.list” and “item.list” are merely some ‘helper classes’ for the construction of the classes “data.set” and “importer”.

Class “named.list” extends the basic class “list” by an additional slot “names”. Its initialize method assures that the names of the list are unique.

Class “item.list” extends the class “named.list”, but does not add any slots. From “named.list” it differs only by the initialize method, which calls that for “named.list” and makes sure that all elements of the list belong to class “item”.

Classes “atomic” and “double” are merely used for method selection.

Examples

new("named.list",a=1,b=2)
$a
[1] 1

$b
[1] 2
# This should generate an error, since the names
# are not unique.
new("named.list",a=1,a=2)
Error in validObject(.Object) :
  invalid class "named.list" object: list has duplicate names: "a"
# Another error, one name is missing.
new("named.list",a=1,2)
Error in validObject(.Object) :
  invalid class "named.list" object: element 2 is unnamed
# Also an error, the resulting list would be unnamed.
new("named.list",1,2)
Error in validObject(.Object) :
  invalid class "named.list" object: list is unnamed
new("item.list",a=1,b=2)
$a

Item (measurement: interval, type: double, length = 1)

 [1:1] 1

$b

Item (measurement: interval, type: double, length = 1)

 [1:1] 2
# Also an error: "item.list"s are "named.lists",
# and here the names would be non-unique.
new("item.list",a=1,a=2)
Error in validObject(.Object) :
  invalid class "item.list" object: list has duplicate names: "a"