[ library(vc_support) | Reference Manual | Alphabetic Index ]
viewable_element_execute(++ViewableName, ++ElementSpec, ?Goal)
Execute a goal for a viewable element inside a viewable.
- ViewableName
- Atom: name of an existent viewable.
- ElementSpec
- Currently, this should be element(IndexList), where IndexList is a list of integers: the coordinates of the viewable element within the viewable.
- Goal
- Goal to be executed, mentioning ElementSpec.
Description
Note that this predicate throws an error if there are no current visualisation clients. The purpose of this predicate is to allow visualisation clients to call arbitrary goals which take viewable elements as input, without the visualisation clients having to retrieve the viewable elements themselves. Goal is the goal to be executed, but Goal mentions ElementSpec wherever it wishes to use the viewable element as input. The element specified by ElementSpec is retrieved from the viewable. Then all occurences of ElementSpec within Goal are replaced by the element, to give NewGoal. Finally, NewGoal is executed, and the predicate succeeds if NewGoal succeeds.
Fail Conditions
Fails if NewGoal fails.
Resatisfiable
yes
Exceptions
- (1) general error
- There are no current visualisation clients
- (4) instantiation fault
- ViewableName is not an atom or string
- (5) type error
- IndexList is not a ground list of integers
- (6) out of range
- A co-ordinate in Index is out of range
- (8) bad argument list
- IndexList has the wrong number of elements
Examples
An example, assumng there are visualisation clients running, would be:
[eclipse 2]: viewable_create(v1, [[X]]),
viewable_element_execute(v1, element([1, 1]), var(element([1, 1]))).
X = X
Yes (0.00s cpu)
[eclipse 3]:
See Also
viewable : viewable_create / 3, viewable : viewable_size / 2, viewable_element_to_string / 2, viewable_element / 3