- Up - | Next >> |
OZ_Extension
The class OZ_Extension
implements the methods defined below. The methods getIdV
, gCollectV
, and sCloneV
which are marked as required are pure virtual and have to be implemented in every subclass.
virtual int getIdV()
// required Allows to discriminate the different kinds of extensions. It should return a unique number. Unique numbers can be obtained using int OZ_getUniqueId()
.
Ids can be statically assigned by extending the enumeration OZ_Registered_Extension_Id
.
virtual OZ_Extension* gCollectV()
// required Needed for garbage collection.
virtual OZ_Extension* sCloneV()
// required Needed for cloning of computation spaces (for OZ_SituatedExtension
).
virtual void gCollectRecurseV()
// required Invoked on the copy obtained from gCollectV
. The VM has marked the data such that recursive updates of fields, e.g. running OZ_gCollect
, does not run into cycles.
virtual void sCloneRecurseV()
// required Invoked on the copy obtained from sCloneV
. The VM has marked the data such that recursive updates of fields, e.g. running OZ_sClone
, does not run into cycles.
virtual OZ_Term printV(int depth = 10)
// default: return extension
printV should return a virtual string and is used for printing, e.g. System.show.
virtual OZ_Term printLongV(int depth = 10, int offset = 0)
// default: call printV This may help debugging, but is currently not used.
virtual OZ_Term typeV()
// default: return extension
typeV should return an atom describing the type of the extension. This value is also return in Value.status and Value.type. It should not conflict with the built-in types.
virtual OZ_Term inspectV()
// default: call typeV Not used. Idea: hook for debugging tools to get information.
virtual Oz_Boolean isChunkV()
// default: return true Define this to return false is the extension in not a subtype of chunk.
virtual OZ_Term getFeatureV(OZ_Term fea)
// default: return 0 If the operator .
(dot) is applied to an extension this function is called. If getFeatureV
returns 0 an exception is raised that the feature is not available.
virtual OZ_Return getFeatureV(OZ_Term,OZ_Term&)
// default: return OZ_FAILED
The is the more basic version of the above, where a reference to the return value is passed as the 2nd argument.
virtual OZ_Return putFeatureV(OZ_Term,OZ_Term)
// default: return OZ_FAILED
Feature is 1st argument, new value is 2nd argument. This is used e. g. for :=
support.
virtual OZ_Return eqV(OZ_Term t)
// default: return false This function is called during unification and equality test (==), if both values are extensions. Implement it if you need structural equality. Note that in this case isChunkV
should return false.
virtual OZ_Boolean toBePickledV()
// default: return false return true if pickling is defined.
virtual OZ_Boolean pickleV(MarshalerBuffer *)
// default: return false This is the hook to pickling. It is only called when toBePickledV
returned true, and must return true by itself. It writes the extension's external representation into the given buffer (see oz_registerExtension
below).
virtual OZ_Boolean marshalSuspV(OZ_Term te, ByteBuffer *, GenTraverser *)
// default: return false This is the hook to serialization for Oz distribution. It returns true if the extension has been serialized, and writes its external representation/a fragment of into the given buffer (see oz_registerExtension
below). It returns false if the extension cannot be serialized.
virtual int minNeededSpace()
// default: return 0 This method is used by the Oz distribution's serialization routine. It must return the minimal possible size of the next fragment of the extension's external representation. This number must be consistent with the marshalSuspV
method described above.
OZ_Boolean isLocal()
Returns true if a situated extensions is local to the current space.
- Up - | Next >> |