PublicShow sourcepce_meta.pl -- Reflection support for XPCE

This module defines utilities to simplify reflexion support of XPCE, notably implementing non-deterministic logical relations on top of the deterministic XPCE methods.

Source pce_to_method(+Spec, -Object) is semidet
Object is the XPCE object described by Spec. Spec is one of
send(Receiver, Selector)
Receiver -> Selector
Find a send-method on Receiver
get(Receiver, Selector)
<-(Receiver, Selector)
Find a get-method on Receiver
Receiver - Selector
Find an instance variable (slot) on Receiver
ClassName
Find a class from its name
Source isa_class(?Sub, ?Super)
Succeeds if Sub is Super or below Super. Can be used with any instantiation. If class is instantiated the super-chain is followed.
Source current_class(?Name, ?Class)
Convert between name and class object. Insufficient instantation enumerates the classes.
Source to_class_name(+AtomOrClass, -ClassName)
Convert a name or class-object into a class name
Source pce_library_class(?Name, ?Super, ?Comment, ?File)
Examine the library index for defined classes.
Source implements(?Class:atom, ?Method:atom) is nondet
Source implements(?Class:atom, ?Method:atom, -MethodObj:object) is nondet
True if Class implements the method. If class is a variable, backtracking yields all classes

`What' may be wrapped in self(What) or root(What). Using self(What) returns only those classes that have a non-inherited implementation of the method, while using root(What) returns only those classes for which there is no super-class implementing the requested method.

Arguments:
Class- Name of XPCE class
Method- One of send(Name) or get(Name)
MethodObj- XPCE Object representing the method
Source pce_to_pl_type(+PceType, -PrologType)
Convert an XPCE Type object to our type-checkers type-logic.
Source type_accepts_function(+Type)
Succeeds if Type accepts function arguments
Source classify_class(+ClassName, -Classification) is det
Classify an XPCE class. Defined classes are:

Re-exported predicates

The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.

Source implements(?Class:atom, ?Method:atom) is nondet
Source implements(?Class:atom, ?Method:atom, -MethodObj:object) is nondet
True if Class implements the method. If class is a variable, backtracking yields all classes

`What' may be wrapped in self(What) or root(What). Using self(What) returns only those classes that have a non-inherited implementation of the method, while using root(What) returns only those classes for which there is no super-class implementing the requested method.

Arguments:
Class- Name of XPCE class
Method- One of send(Name) or get(Name)
MethodObj- XPCE Object representing the method