APIdia Launch Partner
Top Description Fields Constructors Methods
java.lang.invoke

pack-priv final Class LambdaFormBuffer

extends Object
Class Inheritance
Imports
java.util.ArrayList, .Arrays, .List

Working storage for an LF that is being transformed. Similarly to a StringBuffer, the editing can take place in multiple steps.

Field Summary

Modifier and TypeField and Description
private int
private ArrayList<LambdaForm.Name>
private static final int
private static final int
private int
private byte
private int
private LambdaForm.Name[]
private LambdaForm.Name[]
private LambdaForm.Name

Constructor Summary

AccessConstructor and Description
pack-priv

Method Summary

Modifier and TypeMethod and Description
pack-priv void
changeName(int i, LambdaForm.Name name)

private void
clearDuplicatesAndNulls()

Replace duplicate names by nulls, and remove all nulls.

private LambdaForm.Name[]
pack-priv LambdaForm
endEdit()

Finish a transaction.

pack-priv void
growNames(int insertPos, int growLength)

private static int
private static int
pack-priv LambdaFormBuffer
insertExpression(int pos, LambdaForm.Name expr)

Insert a fresh expression.

private void
insertName(int pos, LambdaForm.Name expr, boolean isParameter)

pack-priv LambdaFormBuffer
insertParameter(int pos, LambdaForm.Name param)

Insert a fresh parameter.

pack-priv boolean
private LambdaForm
pack-priv int
pack-priv LambdaForm.Name
name(int i)

pack-priv LambdaForm.Name[]
private void
noteDuplicate(int pos1, int pos2)

We have just overwritten the name at pos1 with the name at pos2.

pack-priv int
pack-priv LambdaFormBuffer
renameParameter(int pos, LambdaForm.Name newParam)

Replace a parameter by a fresh parameter.

pack-priv LambdaFormBuffer
replaceFunctions(List<LambdaForm.NamedFunction> oldFns, List<LambdaForm.NamedFunction> newFns, Object... forArguments)

Replace any Name whose function is in oldFns with a copy whose function is in the corresponding position in newFns.

private void
replaceName(int pos, LambdaForm.Name binding)

pack-priv LambdaFormBuffer
replaceParameterByCopy(int pos, int valuePos)

Replace a parameter by another parameter or expression already in the form.

pack-priv LambdaFormBuffer
replaceParameterByNewExpression(int pos, LambdaForm.Name binding)

Replace a parameter by a fresh expression.

pack-priv int
pack-priv void
pack-priv void
setResult(LambdaForm.Name name)

Change the result name.

pack-priv void
startEdit()

Create a private, writable copy of names.

private boolean
private boolean
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

arityback to summary
private int arity
dupsback to summary
private ArrayList<LambdaForm.Name> dups
F_OWNEDback to summary
private static final int F_OWNED
F_TRANSback to summary
private static final int F_TRANS
firstChangeback to summary
private int firstChange
flagsback to summary
private byte flags
lengthback to summary
private int length
namesback to summary
private LambdaForm.Name[] names
originalNamesback to summary
private LambdaForm.Name[] originalNames
resultNameback to summary
private LambdaForm.Name resultName

Constructor Detail

LambdaFormBufferback to summary
pack-priv LambdaFormBuffer(LambdaForm lf)

Method Detail

changeNameback to summary
pack-priv void changeName(int i, LambdaForm.Name name)
clearDuplicatesAndNullsback to summary
private void clearDuplicatesAndNulls()

Replace duplicate names by nulls, and remove all nulls.

copyNamesIntoback to summary
private LambdaForm.Name[] copyNamesInto(LambdaForm.Name[] buffer)
endEditback to summary
pack-priv LambdaForm endEdit()

Finish a transaction.

growNamesback to summary
pack-priv void growNames(int insertPos, int growLength)
indexOfback to summary
private static int indexOf(LambdaForm.NamedFunction fn, List<LambdaForm.NamedFunction> fns)
indexOfback to summary
private static int indexOf(LambdaForm.Name n, LambdaForm.Name[] ns)
insertExpressionback to summary
pack-priv LambdaFormBuffer insertExpression(int pos, LambdaForm.Name expr)

Insert a fresh expression.

insertNameback to summary
private void insertName(int pos, LambdaForm.Name expr, boolean isParameter)
insertParameterback to summary
pack-priv LambdaFormBuffer insertParameter(int pos, LambdaForm.Name param)

Insert a fresh parameter.

inTransback to summary
pack-priv boolean inTrans()
lambdaFormback to summary
private LambdaForm lambdaForm()
lastIndexOfback to summary
pack-priv int lastIndexOf(LambdaForm.Name n)
nameback to summary
pack-priv LambdaForm.Name name(int i)
nameArrayback to summary
pack-priv LambdaForm.Name[] nameArray()
noteDuplicateback to summary
private void noteDuplicate(int pos1, int pos2)

We have just overwritten the name at pos1 with the name at pos2. This means that there are two copies of the name, which we will have to fix later.

ownedCountback to summary
pack-priv int ownedCount()
renameParameterback to summary
pack-priv LambdaFormBuffer renameParameter(int pos, LambdaForm.Name newParam)

Replace a parameter by a fresh parameter.

replaceFunctionsback to summary
pack-priv LambdaFormBuffer replaceFunctions(List<LambdaForm.NamedFunction> oldFns, List<LambdaForm.NamedFunction> newFns, Object... forArguments)

Replace any Name whose function is in oldFns with a copy whose function is in the corresponding position in newFns. Only do this if the arguments are exactly equal to the given.

replaceNameback to summary
private void replaceName(int pos, LambdaForm.Name binding)
replaceParameterByCopyback to summary
pack-priv LambdaFormBuffer replaceParameterByCopy(int pos, int valuePos)

Replace a parameter by another parameter or expression already in the form.

replaceParameterByNewExpressionback to summary
pack-priv LambdaFormBuffer replaceParameterByNewExpression(int pos, LambdaForm.Name binding)

Replace a parameter by a fresh expression.

resultIndexback to summary
pack-priv int resultIndex()
setNamesback to summary
pack-priv void setNames(LambdaForm.Name[] names2)
setResultback to summary
pack-priv void setResult(LambdaForm.Name name)

Change the result name. Null means a void result.

startEditback to summary
pack-priv void startEdit()

Create a private, writable copy of names. Preserve the original copy, for reference.

verifyArityback to summary
private boolean verifyArity()
verifyFirstChangeback to summary
private boolean verifyFirstChange()