org.abora.gold.wrapper
Class FeWrapperSpec

java.lang.Object
  |
  +--org.abora.gold.java.AboraHeaper
        |
        +--org.abora.gold.xpp.basic.Heaper
              |
              +--org.abora.gold.wrapper.FeWrapperSpec
Direct Known Subclasses:
FeAbstractWrapperSpec, FeConcreteWrapperSpec

public class FeWrapperSpec
extends Heaper

Handles wrapping, certification, and filtering for a wrapper type and its subtypes (if
there are any)


Field Summary
protected  FeWrapperDef myDef
           
protected  CrossRegion myEndorsements
           
protected  Filter myFilter
           
protected  FeAbstractWrapperSpec mySuperSpec
           
protected static MuTable TheWrapperDefs
           
protected static MuTable TheWrapperEndorsements
           
protected static MuTable TheWrappersFromEndorsements
           
protected static MuTable TheWrapperSpecs
           
 
Fields inherited from class org.abora.gold.xpp.basic.Heaper
AllBlasts, BecomeMap, GarbageCount, InGC, InitializedClasses, InitializingClasses, LastMemory, NextClientRequestNumber, NotOneElementSignal, PackageTable, PromiseNameTable, StringHashSBoxes
 
Fields inherited from class org.abora.gold.java.AboraHeaper
ActiveClubs, CurrentAuthor, CurrentBertCanopyCache, CurrentBertCrum, CurrentChunk, CurrentGrandMap, CurrentKeyMaster, CurrentPacker, CurrentSensorCanopyCache, CurrentServer, CurrentSession, CurrentSessions, CurrentTrace, InitialEditClub, InitialOwner, InitialReadClub, InitialSponsor, InsideTransactionFlag
 
Constructor Summary
FeWrapperSpec(FeWrapperDef def)
           
 
Method Summary
static void ABSTRACTWRAPPER(java.lang.String wrapperName, java.lang.String superName, Symbol className)
          From a dynamic initializer, register an abstract Wrapper type
 int actualHashForEqual()
           
 void addToFilter(CrossRegion endorsements)
          Add some more endorsements to filter for
 boolean certify(FeEdition edition)
          Whether the Edition passes the invariants of this type so that it could be certified.
Always checks the actual contents and endorses if they are acceptable.
 FeWrapperDef def()
           
static void DIRECTWRAPPER(java.lang.String wrapperName, java.lang.String superName, Symbol className)
          From a dynamic initializer, register an abstract Wrapper type
 void endorse(FeEdition edition)
          Endorse the Edition as being of this type.
 CrossRegion endorsements()
           
static FeWrapperSpec fetch(Sequence identifier)
          Get the local Wrapper spec with the given identifier, or NULL if there is none
 FeAbstractWrapperSpec fetchSuperSpec()
          The immediate supertype, or NULL if this is the generic Wrapper type
 FeWrapper fetchWrap(FeEdition edition)
           
 Filter filter()
          A filter which selects for Editions which have been endorsed as belonging to this type.
static FeWrapperSpec get(Sequence identifier)
          Get the local Wrapper spec with the given identifier, or blast if there is none
static CrossRegion getEndorsements(Sequence identifier)
          Get the endorsements for the named wrapper space
static FeWrapperSpec getFromEndorsement(Tuple endorsement)
          Get the wrapper spec corresponding to the given endorsement
static void INDIRECTWRAPPER(java.lang.String wrapperName, java.lang.String superName, java.lang.String innerName, Symbol className)
          From a dynamic initializer, register an abstract Wrapper type
static void info()
          {Filter CLIENT} filter
{Sequence CLIENT} name
{FeWrapper CLIENT} wrap: edition {FeEdition}
static void initTimeNonInherited()
           
 boolean isCertified(FeEdition edition)
          Whether an Edition is already endorsed as being of this type.
 boolean isEqual(java.lang.Object other)
           
 boolean isSubSpecOf(FeWrapperSpec other)
          Whether this is the same as or a kind of the other spec
static XnRegion knownWrappers()
          The names of all of the known wrappers
static void linkTimeNonInherited()
           
static void mustSetup()
           
 Sequence name()
          The name for this type
static void problems()
          A ProblemList for all X++ BLASTs
static void registerAbstract(java.lang.String wrapperName, java.lang.String superName, FeWrapperSpecHolder holder)
           
static void registerDirect(java.lang.String wrapperName, java.lang.String superName, FeDirectWrapperMaker maker, FeDirectWrapperChecker checker, FeWrapperSpecHolder holder)
           
static void registerIndirect(java.lang.String wrapperName, java.lang.String superName, java.lang.String innerName, FeIndirectWrapperMaker maker, FeIndirectWrapperChecker checker, FeWrapperSpecHolder holder)
           
 void setup()
          Do the required setup for this spec in the context of a table of all known specs
static void setupWrapperSpecs()
          Get the local Wrapper spec with the given identifier, or NULL if there is none
static void setWrapperEndorsements(ScruTable endorsements)
          A table mapping from wrapper names to endorsements
 FeWrapper wrap(FeEdition edition)
          The Edition wrapped with my type of Wrapper.
 
Methods inherited from class org.abora.gold.xpp.basic.Heaper
abstractDeclarationFor, abstractTypeFor, addMethodAttributeToInOf, addPackage, addPackageCategory, allClientProtocolOn, argumentTypesFor, arrow, blast, blast, BLAST, cachePromiseNameTable, cachePromiseNameTableIn, canYouBecome, cast, cleanPromiseClasses, cleanupGarbage, clientClassesDo, clientFunctionsOn, clientMethodsOn, clientProtocol, clientProtocolDo, clientProtocolOn, clientProtocolOn, collectibleClasses, compare, compileClientSubclasses, compileConstantPromiseMethods, compileCreateFromRcvr, compileEQ, compileGeneratedClassMethod, compileGeneratedMethod, compileHook, compilePromise, compilePromiseDefaultMethods, compilePromiseFluidDeclarations, compilePromiseHandlers, compilePromiseMethods, compileRequestCreateMsgInArguments, compileRequestEvaluateMsgInReturningArguments, compileRPCSpecialistEvaluateMsgForReturningArguments, compileSendSelfTo, compileSendSelfToSendHook, compileStubbleMethods, compileSubclassStubbleMethods, computeMangle, computePreorder, constantTypeValue, convert, convertCopyDeclarations, convertDeferredDeclarations, convertProxyDeclarations, convertSubclassCopyDeclarations, convertSubclassDeferredDeclarations, convertSubclassProxyDeclarations, copyReferencesToType, create, create, create, create, create, create, create, create, create, create, createRequestClassArguments, definesProxyMethods, delete, deref, destroy, destruct, destructor, enum, enumFlags, equals, exportName, fetchAttribute, fetchPackage, fetchSuperCategory, fileOutClientProtocol, findCategory, findSenderAndReceiverMethods, findTailInto, flushPromiseNameTable, foo, freezeClientClasses, freezeClientProtocol, freezeStProtocol, frozenClasses, garbageCollect, garbageCollectFrom, gcOpportunity, gcOpportunity, generatedCategory, generatePromiseNames, getCategory, getOrMakePackage, getSuperCategory, handlerSignaturesFrom, hash, hashForEqual, hasProxyMethods, info_clientClasses, info_clientSideClasses, info_promiseClasses, info_stProtocol, inGC, initializedClasses, initializingClasses, initPackages, initStringHashSBoxes, inspectPieces, instanceSize, IntegerVar, isByProxy, isConstructed, isDestructed, isEqual, isEqualOrSubclassOf, isGenerated, isIntType, isKindOf, isRawType, isUnlocked, make, makeClassTable, makeFillTable, makeRequestTable, mangle, markChildren, markCount, markInstances, mayBecome, mayBecomeAnySubclassOf, new1, newX, nonCopyVariables, notWorking, pack, packageClasses, packagingCategory, parseExportName, passe, pointerToStaticMember, pointerToStaticMember, pointerToVirtualMember, preorderMax, preorderNumber, printOn, PROBLEM, promiseClass, promiseDefaultValue, promiseName, promiseNameTable, promiseToAbstract, registerPackageCategory, removeGeneratedCode, removeStubbleMethods, removeSubclassGeneratedCode, removeSubclassStubbleMethods, requestProcedure, requestProceduresFrom, returnTypeFor, rootName, scheduleTermination, sendProxyTo, sendSelfTo, serverNameFor, setGC, signal, signals, smalltalkSelector, stClientProtocol, stubbleSelectorTokenReturnsArguments, subclassNonCopyVariables, takeOop, togglePromiseName, togglePromiseOfParse, unimplemented, unmangle, verifyFreeze, wipeStubble
 
Methods inherited from class org.abora.gold.java.AboraHeaper
asOop, basicInspect, displayString, error, hack, halt, inspect, knownBug, mightNotImplement, REQUIRES, shouldImplement, shouldNotImplement, stubbleForSubclassResponsibility, thingToDo, willNotImplement
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

myDef

protected FeWrapperDef myDef

myEndorsements

protected CrossRegion myEndorsements

myFilter

protected Filter myFilter

mySuperSpec

protected FeAbstractWrapperSpec mySuperSpec

TheWrapperDefs

protected static MuTable TheWrapperDefs

TheWrapperEndorsements

protected static MuTable TheWrapperEndorsements

TheWrappersFromEndorsements

protected static MuTable TheWrappersFromEndorsements

TheWrapperSpecs

protected static MuTable TheWrapperSpecs
Constructor Detail

FeWrapperSpec

public FeWrapperSpec(FeWrapperDef def)
Method Detail

certify

public boolean certify(FeEdition edition)
Whether the Edition passes the invariants of this type so that it could be certified.
Always checks the actual contents and endorses if they are acceptable.


filter

public Filter filter()
A filter which selects for Editions which have been endorsed as belonging to this type.


isCertified

public boolean isCertified(FeEdition edition)
Whether an Edition is already endorsed as being of this type. Equivalent to
this->filter ()->match (edition->endorsements ())


name

public Sequence name()
The name for this type


wrap

public FeWrapper wrap(FeEdition edition)
The Edition wrapped with my type of Wrapper. If it does not have endorsements, will
attempt to certify. Blasts if there is more than one valid wrapping.


fetchWrap

public FeWrapper fetchWrap(FeEdition edition)

isSubSpecOf

public boolean isSubSpecOf(FeWrapperSpec other)
Whether this is the same as or a kind of the other spec


addToFilter

public void addToFilter(CrossRegion endorsements)
Add some more endorsements to filter for


def

public FeWrapperDef def()

fetchSuperSpec

public FeAbstractWrapperSpec fetchSuperSpec()
The immediate supertype, or NULL if this is the generic Wrapper type


setup

public void setup()
Do the required setup for this spec in the context of a table of all known specs


endorse

public void endorse(FeEdition edition)
Endorse the Edition as being of this type. Blasts if this is an abstract type.
Should only be called from the code implementing the type, or code which it trusts. We may
eventually add a system to enforce this.


endorsements

public CrossRegion endorsements()

actualHashForEqual

public int actualHashForEqual()
Overrides:
actualHashForEqual in class Heaper

isEqual

public boolean isEqual(java.lang.Object other)

ABSTRACTWRAPPER

public static void ABSTRACTWRAPPER(java.lang.String wrapperName,
                                   java.lang.String superName,
                                   Symbol className)
From a dynamic initializer, register an abstract Wrapper type


DIRECTWRAPPER

public static void DIRECTWRAPPER(java.lang.String wrapperName,
                                 java.lang.String superName,
                                 Symbol className)
From a dynamic initializer, register an abstract Wrapper type


INDIRECTWRAPPER

public static void INDIRECTWRAPPER(java.lang.String wrapperName,
                                   java.lang.String superName,
                                   java.lang.String innerName,
                                   Symbol className)
From a dynamic initializer, register an abstract Wrapper type


registerAbstract

public static void registerAbstract(java.lang.String wrapperName,
                                    java.lang.String superName,
                                    FeWrapperSpecHolder holder)

registerDirect

public static void registerDirect(java.lang.String wrapperName,
                                  java.lang.String superName,
                                  FeDirectWrapperMaker maker,
                                  FeDirectWrapperChecker checker,
                                  FeWrapperSpecHolder holder)

registerIndirect

public static void registerIndirect(java.lang.String wrapperName,
                                    java.lang.String superName,
                                    java.lang.String innerName,
                                    FeIndirectWrapperMaker maker,
                                    FeIndirectWrapperChecker checker,
                                    FeWrapperSpecHolder holder)

problems

public static void problems()
Description copied from class: Heaper
A ProblemList for all X++ BLASTs


initTimeNonInherited

public static void initTimeNonInherited()

linkTimeNonInherited

public static void linkTimeNonInherited()

mustSetup

public static void mustSetup()

fetch

public static FeWrapperSpec fetch(Sequence identifier)
Get the local Wrapper spec with the given identifier, or NULL if there is none


get

public static FeWrapperSpec get(Sequence identifier)
Get the local Wrapper spec with the given identifier, or blast if there is none


getEndorsements

public static CrossRegion getEndorsements(Sequence identifier)
Get the endorsements for the named wrapper space


getFromEndorsement

public static FeWrapperSpec getFromEndorsement(Tuple endorsement)
Get the wrapper spec corresponding to the given endorsement


knownWrappers

public static XnRegion knownWrappers()
The names of all of the known wrappers


setupWrapperSpecs

public static void setupWrapperSpecs()
Get the local Wrapper spec with the given identifier, or NULL if there is none


setWrapperEndorsements

public static void setWrapperEndorsements(ScruTable endorsements)
A table mapping from wrapper names to endorsements


info

public static void info()
{Filter CLIENT} filter
{Sequence CLIENT} name
{FeWrapper CLIENT} wrap: edition {FeEdition}



Translation - Copyright © 2003 David G Jones. All Rights Reserved.
Original Udanax-Gold - Copyright © 1979-1999 Udanax.com. All rights reserved.