Latest revision as of 04:40, 1 August 2011
- Signature: __optUncall() :Portrayal
__optUncall is typically used by serialization systems for the default portrayal in the absence of other knowledge about the object.
Note: The terminology and taxonomy of this text may be outdated. XXX Update this text and integrate it into the wiki
This should return either
null or a triple describing a call
that, if performed, will create an object resembling this one.
Scalars (ints, float64s, chars, boolean, null) and bare Strings are atomic. __optUncall on an atomic objects return null, but atomic objects are still considered transparent. Objects which return non-null are non-atomic and transparent. Non-atomic objects that return null are opaque. Opaque objects may be selectively transparent to certain clients by implementing __optSealedDispatch as described there.
When a transparent non-atomic object is Selfless, then the result of __optUncall is guaranteed to be accurate: It describes a call that, when performed, must result in this very same object, according to E's "==" operation. The Selfless auditor ensures that all Selfless objects are accurately self-describing in this way.
The uncall of a Selfless object is canonical, so if x and y are both Selfless, then
x == y iff x.__optUncall() == y.__optUncall()
Performing the call described by the uncall of a non-Selfless object generally creates whatever that object wished to create as its representative, but because it had to provide the ingredients, its representative could only be something it could have created. Therefore, the representative cannot convey any more authority than the original object itself has.