Member variable property sheet

Name

The name of a function parameter may contain only letters, digits, and "_". The first character must not be a digit.

Enable renaming

You may change the names of functions, member variables and virtual types when you override them in a derived class or pattern (for instance in order to resolve name collisions in cases of multiple inheritance). They inherit the names of the base versions by default (and their name is changed accordingly if the inherited base name is changed). Check this check-box if you would like to assign a different name (which will not be changed then if the base name is changed).

Substitutable type

Indicates whether the type of this member variable shall be substitutable, i.e., whether the type of a corresponding actual parameter may also be p-derived (rather than c-derived) from this formal parameter type. (Cf. the ModelManyViews and CarMeeting samples.)

Remove overrides

Transforms an overridden member variable into a non-overridden one, as if it had been newly declared in the containing class.

Select type of member variable

The type of the member variable may be selected from the combo-boxes "Basic types" and "Other types". "Basic types" lists all classes whose declaration is contained in the basic include file I>std.lava. If you don't explicitly select a type for a new member variable then its type will be String.

Kind of reference

This attribute enables us to distinguish three kinds of references to other objects: Constituents, acquaintances, and reverse (back or up) links. Constituents belong to the current object, acquaintances are pointers to independent objects, and reverse links are auxiliary back or up pointers that are required to facilitate automatic storage management by reference counts.

Category

Here you can determine whether this member shall be treated as a variable state object or as an immutable value object. In the latter case its direct and nested constituents cannot be modified after the object has been completely created/initialized. If you would like to admit both categories then select "Any category" here. (You may use the copy statement or the clone expression to produce an object of a fixed, known category from such an "Any category" variable.

Protected

A protected member variable can be accessed only by functions contained in the implementation of the present or a derived class.

Read-only

A read-only member variable xy of some object can be assigned a value only "from inside the object" via the path self.xy, i.e., from within functions belonging to the current class or its implementation. It is write-protected against access "from outside".

Abstract

This attribute is enabled only if the member variable is accessed via set/get functions (see next paragraph). It allows you to defer the implementation of the set/get functions to a derived class: So actually the set/get functions are abstract.

Access via set/get functions

If a member variable xy has this property then set/get functions are generated for it in the implementation of the containing class. Every read or write access to the variable is redirected implicitly through these get/set functions. Only these set/get functions themselves may directly access the variable. In this way you can supervise every access attempt to the variable and, by properly modifying the default set/get functions, achieve additional side effects or perform access permission checks.

Consumable

Consumable member variables are used for producer/consumer synchronization in Lava (not yet implemented).

Mode

The mode of a member variable may be mandatory (default), optional, or placeholder. If optional, the parameter may assume the special null value Ø ("undefined"). Placeholder members cannot be accessed at all. They are used in forms to describe fields that are to be filled in only in a later step by some other person, although they are visible from the beginning.

See also

Lava classes/interfaces/implementations

Lava variables