package com.intellij.flex.uiDesigner.mxml;
import com.intellij.flex.uiDesigner.io.PrimitiveAmfOutputStream;
class StaticObjectContext extends Context {
private int referencePosition;
private final PrimitiveAmfOutputStream out;
public StaticObjectContext(int referencePosition, PrimitiveAmfOutputStream out, int suggestedId, Scope parentScope) {
this(referencePosition, out, parentScope);
if (suggestedId != -1) {
id = suggestedId;
referenceInitialized();
}
}
public StaticObjectContext(int referencePosition, PrimitiveAmfOutputStream out, Scope parentScope) {
super(parentScope);
this.referencePosition = referencePosition;
this.out = out;
}
@Override
protected void referenceInitialized() {
assert referencePosition != -1;
initializeReference(id, out, referencePosition);
}
@Override
Scope getScope() {
return parentScope;
}
static void initializeReference(int id, PrimitiveAmfOutputStream out, int referencePosition) {
out.putShort(id + 1, referencePosition);
}
public StaticObjectContext reinitialize(int referencePosition, int id) {
childrenType = null;
cssRulesetDefined = false;
mxmlObjectReference = null;
this.referencePosition = referencePosition;
staticInstanceReferenceInDeferredParentInstance = null;
this.id = id;
if (id != -1) {
referenceInitialized();
}
return this;
}
}