gnu.expr
Class ClassExp

java.lang.Object
  extended by gnu.mapping.PropertySet
      extended by gnu.mapping.Procedure
          extended by gnu.mapping.Procedure0
              extended by gnu.expr.Expression
                  extended by gnu.expr.ScopeExp
                      extended by gnu.expr.LambdaExp
                          extended by gnu.expr.ClassExp
All Implemented Interfaces:
Named, Printable, javax.xml.transform.SourceLocator, org.xml.sax.Locator
Direct Known Subclasses:
ObjectExp

public class ClassExp
extends LambdaExp


Field Summary
static int CLASS_SPECIFIED
           
 java.lang.String classNameSpecifier
           
 LambdaExp clinitMethod
          An artificial method named "$clinit$" for evaluating static initializations.
static int HAS_SUBCLASS
           
 LambdaExp initMethod
          An artificial method named "$finit$" for evaluating non-static initializations.
static int INTERFACE_SPECIFIED
           
static int IS_ABSTRACT
           
 int superClassIndex
          Index in supers array of class we extend, or -1.
 Expression[] supers
          List of base classes and implemented interfaces.
 
Fields inherited from class gnu.expr.LambdaExp
ATTEMPT_INLINE, body, closureEnvField, defaultArgs, firstChild, inlineHome, keywords, max_args, min_args, nameDecl, NEXT_AVAIL_FLAG, nextSibling, NO_FIELD, OVERLOADABLE_FIELD, returnContinuation, returnType, SEQUENCE_RESULT, staticLinkField
 
Fields inherited from class gnu.expr.ScopeExp
frameSize, id, outer
 
Fields inherited from class gnu.expr.Expression
flags, noExpressions, VALIDATED
 
Fields inherited from class gnu.mapping.Procedure
compilerKey, validateApplyKey
 
Fields inherited from class gnu.mapping.PropertySet
nameKey
 
Constructor Summary
ClassExp()
           
ClassExp(boolean simple)
           
 
Method Summary
 Declaration addMethod(LambdaExp lexp, java.lang.Object mname)
           
 void compile(Compilation comp, Target target)
           
 ClassType compileMembers(Compilation comp)
           
 void compilePushClass(Compilation comp, Target target)
           
 Field compileSetField(Compilation comp)
           
 void declareParts(Compilation comp)
           
 ClassType getClassType()
          The ClassType generated for this class.
protected  ClassType getCompiledClassType(Compilation comp)
          Return the ClassType of the Procedure this is being compiled into.
 Type getType()
          The ClassType generated for this class.
 boolean isAbstract()
           
 boolean isMakingClassPair()
          True if we should make a pair of an interface and a class.
 boolean isSimple()
           
protected  boolean mustCompile()
           
 void print(OutPort out)
           
 void setSimple(boolean value)
           
 void setTypes(Compilation comp)
           
static java.lang.String slotToMethodName(java.lang.String prefix, java.lang.String sname)
          Mangle a "slot" name to a get- or set- method name.
protected
<R,D> R
visit(ExpVisitor<R,D> visitor, D d)
           
protected
<R,D> void
visitChildren(ExpVisitor<R,D> visitor, D d)
           
 
Methods inherited from class gnu.expr.LambdaExp
allocChildClasses, allocFrame, apply, capture, compileBody, compileEnd, declareClosureEnv, declareThis, generateApplyMethods, getCallConvention, getCaller, getCanCall, getCanRead, getExpClassName, getHeapFrameType, getImportsLexVars, getInlineOnly, getMainMethod, getMethod, getNeedsClosureEnv, getNeedsStaticLink, getOwningLambda, getProperty, getReturnType, incomingArgs, isClassGenerated, isClassMethod, isHandlingTailCalls, isModuleBody, loadHeapFrame, outerLambda, outerLambdaNotInline, restArgType, setCanCall, setCanRead, setClassMethod, setCoercedReturnType, setCoercedReturnValue, setExceptions, setImportsLexVars, setImportsLexVars, setInlineOnly, setNeedsStaticLink, setNeedsStaticLink, setProperty, setReturnType, setType, side_effects, toString, validateApply, variable_args, visitChildrenOnly, visitProperties
 
Methods inherited from class gnu.expr.ScopeExp
add, add, addDeclaration, addDeclaration, addDeclaration, countDecls, countNonDynamicDecls, currentLambda, currentModule, duplicateDeclarationError, firstDecl, getDefine, getNoDefine, getVarScope, lookup, lookup, nestedIn, nesting, popScope, remove, remove, replaceFollowing, setIndexes, topLevel
 
Methods inherited from class gnu.expr.Expression
apply0, compile, compile, compileButFirst, compileNotePosition, compileWithPosition, compileWithPosition, deepCopy, deepCopy, deepCopy, deepCopy, eval, eval, getColumnNumber, getFileName, getFlag, getFlags, getLineNumber, getPublicId, getSystemId, isSingleValue, isStableSourceLocation, makeWhile, match0, print, printLineColumn, setFile, setFlag, setFlag, setLine, setLine, setLine, setLine, setLocation, valueIfConstant
 
Methods inherited from class gnu.mapping.Procedure0
apply1, apply2, apply3, apply4, applyN, numArgs
 
Methods inherited from class gnu.mapping.Procedure
apply, check0, check1, check2, check3, check4, checkArgCount, checkN, getReturnType, getSetter, getSourceLocation, isSideEffectFree, match1, match2, match3, match4, matchN, maxArgs, maxArgs, minArgs, minArgs, set0, set1, setN, setSetter, setSourceLocation
 
Methods inherited from class gnu.mapping.PropertySet
getName, getSymbol, removeProperty, setName, setProperty, setSymbol
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

IS_ABSTRACT

public static final int IS_ABSTRACT
See Also:
Constant Field Values

INTERFACE_SPECIFIED

public static final int INTERFACE_SPECIFIED
See Also:
Constant Field Values

CLASS_SPECIFIED

public static final int CLASS_SPECIFIED
See Also:
Constant Field Values

HAS_SUBCLASS

public static final int HAS_SUBCLASS
See Also:
Constant Field Values

classNameSpecifier

public java.lang.String classNameSpecifier

supers

public Expression[] supers
List of base classes and implemented interfaces.


superClassIndex

public int superClassIndex
Index in supers array of class we extend, or -1.


initMethod

public LambdaExp initMethod
An artificial method named "$finit$" for evaluating non-static initializations. All constructors need to call this.


clinitMethod

public LambdaExp clinitMethod
An artificial method named "$clinit$" for evaluating static initializations.

Constructor Detail

ClassExp

public ClassExp()

ClassExp

public ClassExp(boolean simple)
Method Detail

isSimple

public boolean isSimple()

setSimple

public void setSimple(boolean value)

isAbstract

public final boolean isAbstract()
Overrides:
isAbstract in class LambdaExp

isMakingClassPair

public boolean isMakingClassPair()
True if we should make a pair of an interface and a class.


getType

public Type getType()
The ClassType generated for this class. Note difference from getClassType: The value of a ClassExp (viewed as an expression) is a class/type object, so getType returns the type of a type.

Overrides:
getType in class LambdaExp

getClassType

public ClassType getClassType()
The ClassType generated for this class.

Overrides:
getClassType in class LambdaExp

mustCompile

protected boolean mustCompile()
Overrides:
mustCompile in class LambdaExp

compile

public void compile(Compilation comp,
                    Target target)
Overrides:
compile in class LambdaExp

compilePushClass

public void compilePushClass(Compilation comp,
                             Target target)

getCompiledClassType

protected ClassType getCompiledClassType(Compilation comp)
Description copied from class: LambdaExp
Return the ClassType of the Procedure this is being compiled into.

Overrides:
getCompiledClassType in class LambdaExp

setTypes

public void setTypes(Compilation comp)

declareParts

public void declareParts(Compilation comp)

compileMembers

public ClassType compileMembers(Compilation comp)

visit

protected <R,D> R visit(ExpVisitor<R,D> visitor,
                        D d)
Overrides:
visit in class LambdaExp

visitChildren

protected <R,D> void visitChildren(ExpVisitor<R,D> visitor,
                                   D d)
Overrides:
visitChildren in class LambdaExp

print

public void print(OutPort out)
Overrides:
print in class LambdaExp

compileSetField

public Field compileSetField(Compilation comp)
Overrides:
compileSetField in class LambdaExp

slotToMethodName

public static java.lang.String slotToMethodName(java.lang.String prefix,
                                                java.lang.String sname)
Mangle a "slot" name to a get- or set- method name.

Parameters:
prefix - either "get" or "set" or "add"
sname - a "slot" (property) name. This is mangled if needed.

addMethod

public Declaration addMethod(LambdaExp lexp,
                             java.lang.Object mname)