|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectpolyglot.types.TypeObject_c
jif.types.label.Label_c
jif.types.label.JoinLabel_c
public class JoinLabel_c
An implementation of the JoinLabel 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 | |
|---|---|
JoinLabel_c(java.util.Set components,
JifTypeSystem ts,
polyglot.util.Position pos,
LabelToJavaExpr trans)
|
|
| Method Summary | |
|---|---|
java.lang.String |
componentString(java.util.Set printedLabels)
|
ConfPolicy |
confProjection()
|
java.lang.Object |
copy()
|
boolean |
equalsImpl(polyglot.types.TypeObject o)
|
int |
hashCode()
|
boolean |
hasWritersToReaders()
Does the label contain any writersToReaders constructs? |
IntegPolicy |
integProjection()
|
boolean |
isBottom()
By default, a label is not Bottom |
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()
|
boolean |
isTop()
Is this label equivalent to top? |
java.util.Collection |
joinComponents()
|
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 |
Label |
normalize()
Normalize the label. |
protected Label |
simplifyImpl()
|
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. |
java.lang.String |
toString()
|
java.util.Set |
variableComponents()
The set of variables that this label contains as components. |
| Methods inherited from class jif.types.label.Label_c |
|---|
componentString, description, hasVariableComponents, hasVariables, isDisambiguated, isInvariant, setDescription, simplify, toJava, toString, 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, description, hasVariableComponents, hasVariables, isDisambiguated, isInvariant, setDescription, simplify, toJava, toString, variables |
| Methods inherited from interface polyglot.types.TypeObject |
|---|
position, typeSystem |
| Constructor Detail |
|---|
public JoinLabel_c(java.util.Set components,
JifTypeSystem ts,
polyglot.util.Position pos,
LabelToJavaExpr trans)
| Method Detail |
|---|
public boolean isRuntimeRepresentable()
isRuntimeRepresentable in interface LabelisRuntimeRepresentable in interface Parampublic boolean isCanonical()
isCanonical in interface ParamisCanonical in interface polyglot.types.TypeObjectprotected boolean isDisambiguatedImpl()
Label_c
isDisambiguatedImpl in class Label_cpublic boolean isCovariant()
Label
isCovariant in interface Labelpublic boolean isComparable()
LabelFor example, an UnknownLabel is not comparable to others, neither is a VarLabel. Most other labels are.
isComparable in interface Labelpublic boolean isEnumerable()
LabelFor 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 Labelpublic boolean isBottom()
Label_c
isBottom in interface LabelisBottom in class Label_cpublic boolean isTop()
LabelFor example, a JoinLabel with two components, one of which is Top, would return true for this method.
isTop in interface LabelisTop in class Label_cpublic boolean equalsImpl(polyglot.types.TypeObject o)
equalsImpl in interface polyglot.types.TypeObjectequalsImpl in class Label_cpublic int hashCode()
hashCode in class polyglot.types.TypeObject_cpublic java.lang.String toString()
toString in class Label_cpublic java.lang.String componentString(java.util.Set printedLabels)
componentString in interface LabelcomponentString in class Label_c
public boolean leq_(Label L,
LabelEnv env,
LabelEnv.SearchState state)
Label
leq_ in interface LabelL - 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.Collection joinComponents()
joinComponents in interface JoinLabelpublic java.lang.Object copy()
copy in interface polyglot.util.Copycopy in class Label_cpublic Label normalize()
Label
normalize in interface Labelnormalize in class Label_cprotected Label simplifyImpl()
simplifyImpl in class Label_cpublic ConfPolicy confProjection()
confProjection in interface LabelconfProjection in class Label_cpublic IntegPolicy integProjection()
integProjection in interface LabelintegProjection in class Label_cpublic java.util.List throwTypes(polyglot.types.TypeSystem ts)
Label
throwTypes in interface LabelthrowTypes in class Label_c
public Label subst(LabelSubstitution substitution)
throws polyglot.types.SemanticException
subst in interface Labelsubst in class Label_csubstitution - The LabelSubstitution to apply to this
label
polyglot.types.SemanticExceptionpublic java.util.Set variableComponents()
Label
variableComponents in interface LabelvariableComponents in class Label_cpublic boolean hasWritersToReaders()
Label
hasWritersToReaders in interface LabelhasWritersToReaders in class Label_c
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 LabellabelCheck in class Label_cJif.labelCheck(LabelChecker),
Principal.labelCheck(JifContext, LabelChecker)
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||