| - Up - | Next >> |
Oz_ExtensionThe class OZ_Extension implements the methods defined below. The methods getIdV and gcV 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 Extension* gcV() // required Invoked when copying is request. Needed for garbage collection and in the case of OZ_SituatedExtension also for copying.
virtual void gcRecurseV() // default: do nothing Invoked on the copy obtained from gcV. The VM has marked the data such that recursive updates of fields, e.g. running OZ_gcHeapNode, do 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 Bool 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 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 Bool marshalV(MsgBuffer * bs) // default: return false This is the hook to serialization. It returns true if the extension is serializable and writes it external representation into the message buffer (see oz_registerExtension below).
OZ_Boolean isLocal() Returns true if a situated extensions is local to the current space.
| - Up - | Next >> |