Information Technology Reference
In-Depth Information
[
”separate”
][
explicit processor specification
]
class name
[
actual generics
];
detachable tag
=
”attached”
”detachable”
;
explicit processor specification
=
qualified explicit processor specification
|
|
unqualified explicit processor specification
;
qualified explicit processor specification
=
”
”
;
unqualified explicit processor specification
=
”
<
”
entity name
”.” ”handler” ”
>
<
”
entity name
”
>
”
;
class name
=
name
;
feature name
=
routine name
|
entity name
;
routine name
=
name
;
entity name
=
name
|
”Result”
|
”Current”
;
name
=(
”a”
| ... |
”z”
|
”A”
| ... |
”Z”
)
{
”a”
| ... |
”z”
|
”A”
| ... |
”Z”
}
;
A
class
consists of a number of features. A
feature
is either a
routine
- a sequence of
instructions - or an
attribute
- a data storage. If a routine returns a result, then it is
called a
function
; otherwise, it is called a
procedure
. If a routine is marked as a once
routine (
once
keyword), then the routine gets executed only once in a given context.
Functions and attributes are also called
queries
; routines are also called
commands
.A
routine can define a
precondition
(
require
keyword) and a
postcondition
(
ensure
key-
word). The enclosing class can define an
invariant
(
invariant
keyword). Each feature
can be exported to a list of classes, so that only these classes can use the feature. A
number of procedures are dedicated
creation procedures
. These procedures can be used
in creation expression (
create
keyword) to create new objects. A class can be marked as
an
expanded class
(
expanded
keyword). Objects of expanded classes get copied when
they get passed around; objects of non-expanded classes get aliased.
Formally, a type
t
is a triple
(
,
,
)
. The component
d
is the
detachable tag
,
p
is
the
processor tag
,and
c
is the
class type
. The detachable tag
d
captures detachability.
An entity of attached type (
attached
keyword), i.e.,
d
d
p
c
!, is statically guaranteed to
store a value, i.e., to be non-void. An entity of detachable type (
detachable
keyword),
i.e.,
d
=
?, can be void. As discussed later, the detachable tag is also used for the selec-
tive locking mechanism to prevent a request queue from being locked. The processor
tag
p
captures the locality of objects accessed by an entity of the type
t
. The processor
tag
p
can be separate (
separate
keyword without explicit processor specification), i.e.,
p
=
. The object attached to the entity of the type
t
is potentially handled by a differ-
ent processor than the current processor. The processor tag
p
can be explicit (
separate
keyword with explicit processor specification), i.e.,
p
=
. The object attached to the
entity of the type
t
is handled by the processor specified by
=
α
α
. The processor tag
p
can
be non-separate (no
separate
keyword), i.e.
p
. The object attached to the entity of
the type
t
is handled by the current processor. The processor tag
p
can denote no pro-
cessor, i.e.,
p
=
•
=
⊥
. It is used in the type of the void reference. The explicit processor tag
Search WWH ::
Custom Search