home
wiki
classes/clusters list
class information
+
Point of view
INTERNALS_HANDLER
ANY
INTERNALS
INTERNALS_HANDLER
All features
class NATIVE_ARRAY_INTERNALS [E_]
Summary
top
Warning:
This interface is tentative and may change to a large extent from SmartEiffel 2.2 to SmartEiffel 2.3.
NATIVE_ARRAY_INTERNALS
plays the same role as
TYPED_INTERNALS
, except they describe
NATIVE_ARRAY
's.
Direct parents
inherit list:
TYPED_INTERNALS
Class invariant
top
type_generator
.is_equal("NATIVE_ARRAY")
Overview
top
creation features
make_blank
(capacity_:
INTEGER_32
)
Attach
Current
to a blank object: all items of the object have their default value (references are Void, INTEGERs are 0, BOOLEANs are False, etc)
exported features
Getting information about the described object's type
type_is_native_array
:
BOOLEAN
Is the type described by
Current
a
NATIVE_ARRAY
?
type_attribute_is_expanded
(i:
INTEGER_32
):
BOOLEAN
Is the type of the
i
th attribute expanded?
type_item_is_expanded
:
BOOLEAN
type_can_be_assigned_to_attribute
(other:
INTERNALS
, i:
INTEGER_32
):
BOOLEAN
Can the object attached to
other
be assigned to the
i
th attribute?
type_can_be_assigned_to_item
(other:
INTERNALS
):
BOOLEAN
for_object
(native_array:
NATIVE_ARRAY
[E_], capacity_:
INTEGER_32
)
Attach
Current
to
native_array
make_blank
(capacity_:
INTEGER_32
)
Attach
Current
to a blank object: all items of the object have their default value (references are Void, INTEGERs are 0, BOOLEANs are False, etc)
Getting information about the type's attributes
type_attribute_count
:
INTEGER_32
Number of attributes of the type described by
Current
capacity
:
INTEGER_32
type_attribute_name
(i:
INTEGER_32
):
STRING
Name of the
i
th attribute of the type described by
Current
.
type_attribute_generator
(i:
INTEGER_32
):
STRING
Name of the base class of the
i
th attribute of the type described by
Current
.
type_item_generator
:
STRING
type_attribute_generating_type
(i:
INTEGER_32
):
STRING
Name of the type of the
i
th attribute of the type described by
Current
.
type_item_generating_type
:
STRING
Accessing the object's attributes
object_attribute
(i:
INTEGER_32
):
INTERNALS
Read the
i
th attribute of the type described by
Current
(also see
type_attribute
).
set_object_attribute
(element:
INTERNALS
, i:
INTEGER_32
)
Write the
i
th attribute of the type described by
Current
Getting information about the described object's type
type_generator
:
STRING
Name of the base class of the type described by
Current
.
type_generating_type
:
STRING
Name of the type described by
Current
.
type_is_expanded
:
BOOLEAN
Is the type described by
Current
expanded?
object_as_pointer
:
POINTER
Pointer to the object currently attached to
Current
.
object
: E_
The object
Current
is attached to
is_equal
(other: NATIVE_ARRAY_INTERNALS [E_]):
BOOLEAN
Is
other
attached to an object considered equal to current object?
Accessing the object's attributes
object_can_be_retrieved
:
BOOLEAN
Can the object be retrieved by the rest of the system through
object
?
object_can_be_modified
:
BOOLEAN
Can the object be modified through
set_object_attribute
, i.e.
set_object_can_be_retrieved
Forbid further modification of the object through
set_object_attribute
, so that it can safely be released into the system
type_is_native_array
:
BOOLEAN
constant attribute
top
Is the type described by
Current
a
NATIVE_ARRAY
?
ensure
Result = type_generator.is_equal("NATIVE_ARRAY")
type_attribute_is_expanded
(i:
INTEGER_32
):
BOOLEAN
effective function
top
Is the type of the
i
th attribute expanded?
require
i.in_range(1, type_attribute_count)
type_item_is_expanded
:
BOOLEAN
top
type_can_be_assigned_to_attribute
(other:
INTERNALS
, i:
INTEGER_32
):
BOOLEAN
effective function
top
Can the object attached to
other
be assigned to the
i
th attribute?
require
i.in_range(1, type_attribute_count)
ensure
other = Void implies Result = not type_attribute_is_expanded(i)
type_can_be_assigned_to_item
(other:
INTERNALS
):
BOOLEAN
top
for_object
(native_array:
NATIVE_ARRAY
[E_], capacity_:
INTEGER_32
)
effective procedure
top
Attach
Current
to
native_array
require
native_array.is_null = capacity_ = 0
ensure
object_can_be_retrieved
object
= native_array
capacity
= capacity_
make_blank
(capacity_:
INTEGER_32
)
top
Attach
Current
to a blank object: all items of the object have their default value (references are Void, INTEGERs are 0, BOOLEANs are False, etc)
ensure
object_can_be_modified
capacity
= capacity_
type_attribute_count
:
INTEGER_32
top
Number of attributes of the type described by
Current
ensure
Result =
capacity
or Result = 0
capacity
:
INTEGER_32
writable attribute
top
type_attribute_name
(i:
INTEGER_32
):
STRING
effective function
top
Name of the
i
th attribute of the type described by
Current
.
require
i.in_range(1, type_attribute_count)
ensure
Result /= Void
type_attribute_generator
(i:
INTEGER_32
):
STRING
effective function
top
Name of the base class of the
i
th attribute of the type described by
Current
.
require
i.in_range(1, type_attribute_count)
ensure
Result /= Void
type_item_generator
:
STRING
top
type_attribute_generating_type
(i:
INTEGER_32
):
STRING
effective function
top
Name of the type of the
i
th attribute of the type described by
Current
.
require
i.in_range(1, type_attribute_count)
ensure
Result /= Void
type_item_generating_type
:
STRING
top
object_attribute
(i:
INTEGER_32
):
INTERNALS
top
Read the
i
th attribute of the type described by
Current
(also see
type_attribute
).
If this attribute is attached to an object, then
Result
is also attached to that object
require
i.in_range(1, type_attribute_count)
ensure
type_attribute_is_expanded(i) implies Result /= Void
set_object_attribute
(element:
INTERNALS
, i:
INTEGER_32
)
top
Write the
i
th attribute of the type described by
Current
require
i.in_range(1, type_attribute_count)
type_can_be_assigned_to_attribute(element, i)
object_can_be_modified
ensure
element = Void implies object_attribute(i) = Void
element /= Void implies object_attribute(i).is_equal(element)
type_generator
:
STRING
top
Name of the base class of the type described by
Current
.
For instance, if
Current
is a
TYPED_INTERNALS
[
ARRAY
[INTEGER]],
type_generator
is
"ARRAY"
.
type_generating_type
:
STRING
top
Name of the type described by
Current
.
For instance, if
Current
is a
TYPED_INTERNALS
[
ARRAY
[INTEGER]],
type_generating_type
is
"ARRAY[INTEGER]"
.
type_is_expanded
:
BOOLEAN
top
Is the type described by
Current
expanded?
object_as_pointer
:
POINTER
top
Pointer to the object currently attached to
Current
.
require
type_is_expanded implies type_generator.is_equal("NATIVE_ARRAY")
ensure
Result.is_not_null
object
: E_
effective function
top
The object
Current
is attached to
require
object_can_be_retrieved
ensure
Result.generating_type =
type_generating_type
is_equal
(other: NATIVE_ARRAY_INTERNALS [E_]):
BOOLEAN
top
Is
other
attached to an object considered equal to current object?
require
other /= Void
ensure
commutative:
generating_type = other.generating_type implies Result = other.is_equal(Current)
object_can_be_retrieved
:
BOOLEAN
writable attribute
top
Can the object be retrieved by the rest of the system through
object
?
object_can_be_modified
:
BOOLEAN
effective function
top
Can the object be modified through
set_object_attribute
, i.e.
is it safely isolated from the rest of the system?
ensure
Result = not
object_can_be_retrieved
set_object_can_be_retrieved
effective procedure
top
Forbid further modification of the object through
set_object_attribute
, so that it can safely be released into the system
ensure
object_can_be_retrieved