- note-1
-
Normal applications use almost exclusively XPCE
generated references. Many of the examples in this manual are typed from
the terminal and Prolog specified references are easier to type.
- note-2
-
The attributes of an object state are called slots. In other languages
they may be called instance variables or fields.
- note-3
-
Prolog would normally print `@display'.
The
library(pce_portray)
defines a clause for the Prolog
predicate portray/1 that prints
object references as `@Reference/Class'.
This library is used throughout all the examples of this manual.
- note-4
-
Initial versions of XPCE lacked the obtainer. In
this case the browser B would be passed to the predicate view/1,
which would extract the current filename from the browser. Obtainers
improve the readability and avoid the need to mix UI related code with
application code.
- note-5
-
This conversion is implemented with class dict_item.
In fact, the browser just specifies the desired type and the message
passing kernel invokes the conversion method of class dict_item.
- note-6
-
Given the dynamic nature of delegation, the system cannot possibly
determine all methods available through delegation. Consider a slot
specified with type graphical.
The system can infer it will surely be able to use behaviour defined at
class graphical. If at
runtime, the slot is filled with a box,
all methods defined at class box will be available too.
- note-7
-
This example uses XPCE user-defined classes. The
details of this mechanism do not matter for the argument in this
section. User-defined classes are described in chapter
7.
- note-8
-
XPCE defines four implementation techniques for
methods. C-function pointers are used for almost all the
built-in behaviour. C++-function pointers are used when classes
are defined in C++ (Wielemaker &
Anjewierden, 1994) . Instances of c_pointer
are left to the host object for interpretation and finally, code
objects are executed.
- note-9
-
Value must be an int, name or constant
in the current implementation.
- note-10
-
To facilitate the translation of old code, the construct :- send(@class,
... is treated automatically as if it was embedded using pce_class_directive/1
- note-11
-
On Windows systems,
~
expands to \%HOME\%
, \%USERPROFILE\%
, \%HOMEDRIVE\%/\%HOMEPATH\%
or the root of the current drive. See expand_file_name/2
of the SWI-Prolog manual.
- note-12
-
See section 8 for the default syntax.
- note-13
-
Attach a drag_and_drop_dict_item_gesture to a list_browser
to enable dragging the items in the dictionary
- note-14
-
Using the Unix/X11 version XPCE can manage windows
on multiple desktops. For MS-Windows users this is not supported.
- note-15
-
To remember this sequence: V for Visual and all defined modifiers
to avoid a conflict with application defined key-bindings.
- note-16
-
We will mix the terms instance and object freely in
this document. They are considered synonyms.
- note-17
-
Class class is an instance of itself. In other systems (SmallTalk, Goldberg &
Robson, 1983), classes are instances of a meta-class.
Yet in other systems, classes have a completely different status (for
example widgets in the X11 Intrinsics)
- note-18
-
Multiple inheritance introduces various technical and conceptual
problems. XPCE uses delegation and templates to
achieve similar results. This is explained in section
C.4 and section 7.5.2.1.
- note-19
-
PCE assumes the object has become a support object. This is
generally not correct for code objects. Class code
therefore has `class
<-
un_answer: @off',
which implies that objects that fill a slot of a code object will not
loose their `answer' status.
- note-20
-
A `ground' term is a Prolog term that has no unbound variables.
- note-21
-
Colour screens create their colour by mixing the `primary' colours
`red', `green' and `blue'. With an `RBG' triple, we refer to a triple of
three numeric values representing the intensities of the three primary
colours