|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object polyglot.types.TypeObject_c jif.types.label.Label_c jif.types.label.DynamicLabel_c
public class DynamicLabel_c
An implementation of the DynamicLabel
interface.
Field Summary |
---|
Fields inherited from class jif.types.label.Label_c |
---|
description, toJava, variables |
Fields inherited from class polyglot.types.TypeObject_c |
---|
position, ts |
Constructor Summary | |
---|---|
DynamicLabel_c(AccessPath path,
JifTypeSystem ts,
polyglot.util.Position pos,
LabelToJavaExpr trans)
|
Method Summary | |
---|---|
java.lang.String |
componentString(java.util.Set printedLabels)
|
boolean |
equalsImpl(polyglot.types.TypeObject o)
|
int |
hashCode()
|
boolean |
isCanonical()
|
boolean |
isComparable()
Is this label comparable to other labels? |
boolean |
isCovariant()
Is this label covariant? |
protected boolean |
isDisambiguatedImpl()
Check if the label is disambiguated, without recursing into child labels. |
boolean |
isEnumerable()
Are the components of this label enumerable? |
boolean |
isRuntimeRepresentable()
|
PathMap |
labelCheck(JifContext A,
LabelChecker lc)
Label check the label, which will determine how much information may be gained if the label is evaluated at runtime. |
boolean |
leq_(Label L,
LabelEnv env,
LabelEnv.SearchState state)
Implementation of leq, should only be called by JifTypeSystem |
AccessPath |
path()
|
Label |
subst(LabelSubstitution substitution)
|
java.util.List |
throwTypes(polyglot.types.TypeSystem ts)
If the label is runtime representable, when it is evaluated at runtime it may throw exceptions. |
Methods inherited from class jif.types.label.Label_c |
---|
componentString, confProjection, copy, description, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, normalize, setDescription, simplify, simplifyImpl, toJava, toString, toString, variableComponents, variables |
Methods inherited from class polyglot.types.TypeObject_c |
---|
equals, position, typeSystem |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface jif.types.label.Label |
---|
componentString, confProjection, description, hasVariableComponents, hasVariables, hasWritersToReaders, integProjection, isBottom, isDisambiguated, isInvariant, isTop, normalize, setDescription, simplify, toJava, toString, variableComponents, variables |
Methods inherited from interface polyglot.types.TypeObject |
---|
position, typeSystem |
Methods inherited from interface polyglot.util.Copy |
---|
copy |
Constructor Detail |
---|
public DynamicLabel_c(AccessPath path, JifTypeSystem ts, polyglot.util.Position pos, LabelToJavaExpr trans)
Method Detail |
---|
public AccessPath path()
path
in interface DynamicLabel
public boolean isRuntimeRepresentable()
isRuntimeRepresentable
in interface Label
isRuntimeRepresentable
in interface Param
public boolean isCovariant()
Label
isCovariant
in interface Label
public boolean isComparable()
Label
For example, an UnknownLabel is not comparable to others, neither is a VarLabel. Most other labels are.
isComparable
in interface Label
public boolean isCanonical()
isCanonical
in interface Param
isCanonical
in interface polyglot.types.TypeObject
protected boolean isDisambiguatedImpl()
Label_c
isDisambiguatedImpl
in class Label_c
public boolean isEnumerable()
Label
For example, Singletons are enumerable, JoinLabels are enumerable, RuntimeLabel (the label of all runtime representable components) is not enumerable. NOTE: The components of a label are not neccessarily stuck together with a join operation. For example, the MeetLabel uses the meet operation between its components.
isEnumerable
in interface Label
public boolean equalsImpl(polyglot.types.TypeObject o)
equalsImpl
in interface polyglot.types.TypeObject
equalsImpl
in class Label_c
public int hashCode()
hashCode
in class polyglot.types.TypeObject_c
public java.lang.String componentString(java.util.Set printedLabels)
componentString
in interface Label
componentString
in class Label_c
public boolean leq_(Label L, LabelEnv env, LabelEnv.SearchState state)
Label
leq_
in interface Label
L
- the label to determine if this label is leq to. This label
always satisfies !this.equals(L)env
- the label environment (including principal hierarchy). Will
always be non-null.public java.util.List throwTypes(polyglot.types.TypeSystem ts)
Label
throwTypes
in interface Label
throwTypes
in class Label_c
public Label subst(LabelSubstitution substitution) throws polyglot.types.SemanticException
subst
in interface Label
subst
in class Label_c
substitution
- The LabelSubstitution
to apply to this
label
polyglot.types.SemanticException
public PathMap labelCheck(JifContext A, LabelChecker lc)
Label
boolean{Alice:} secret = ...; final label{Alice:} lb = secret?new label{}:new label{Bob:}; boolean{} leak = false; if ((*lb} <= new label{}) { // evaluation of lb reveals // information at level {Alice:} leak = true; }
labelCheck
in interface Label
labelCheck
in class Label_c
Jif.labelCheck(LabelChecker)
,
Principal.labelCheck(JifContext, LabelChecker)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |