jltools.ext.jif.types
Interface Label

All Superinterfaces:
java.lang.Cloneable, Copy, Param, java.io.Serializable, TypeObject
All Known Subinterfaces:
ArgLabel, CovariantLabel, DynamicArgLabel, DynamicLabel, DynrecLabel, JoinLabel, LabelOfVar, NotTaken, ParamLabel, PolicyLabel, RuntimeLabel, TopLabel, UnknownLabel, VarLabel
All Known Implementing Classes:
Label_c

public interface Label
extends Param

This class represents the Jif security label.


Method Summary
 Label bound(VarMap ub, java.util.Set visited)
          Gets the upper bound of this label.
 java.util.Collection components()
           
 java.lang.String componentString()
           
 java.lang.String description()
           
 Label description(java.lang.String d)
           
 Label fold(UID uid)
          Substitutes any occurences of for .
 boolean hasVariables()
           
 boolean isBottom()
           
 boolean isComparable()
           
 boolean isCovariant()
           
 boolean isEnumerable()
           
 boolean isEquiv(Label L, PrincipalHierarchy ph)
           
 boolean isInvariant()
           
 boolean isMeetable()
           
 boolean isSingleton()
           
 boolean isTop()
           
 Label join(Label L)
          Returns the join of this label and L.
 Label labelOf()
          Gets labelOf this label.
 boolean leq_(Label L, PrincipalHierarchy ph)
           
 boolean leq(Label L, PrincipalHierarchy ph)
           
 Label meet_(Label L, PrincipalHierarchy ph)
          These should only be called by JifTypeSystem
 Label meet(Label L, PrincipalHierarchy ph)
           
 Label minus(Label L)
           
 Label simplify(PrincipalHierarchy ph)
           
 Label singletonComponent()
           
 Label subst(UID uid, Label L)
          Substitutes any occurences of for L.
 Label substArg(int index, UID uid, Label label)
          Substitutes the occurences of or for label, and substitutes for .
 void translate(Context c, CodeWriter w)
           
 java.util.Collection variables()
           
 
Methods inherited from interface jltools.ext.jif.types.Param
isCanonical, isRuntimeRepresentable
 
Methods inherited from interface jltools.types.TypeObject
position, restore, typeSystem
 
Methods inherited from interface jltools.util.Copy
copy
 

Method Detail

bound

public Label bound(VarMap ub,
                   java.util.Set visited)
Gets the upper bound of this label.
Parameters:
ub - the upper bound map for variable labels
visited - the set of UIDs visited. if the upper bound is ,
  • if uid is contained in visited, will be returned;
  • otherwise, uid is added into visited.

isBottom

public boolean isBottom()

isTop

public boolean isTop()

isEnumerable

public boolean isEnumerable()

components

public java.util.Collection components()

isSingleton

public boolean isSingleton()

singletonComponent

public Label singletonComponent()

isInvariant

public boolean isInvariant()

isCovariant

public boolean isCovariant()

hasVariables

public boolean hasVariables()

variables

public java.util.Collection variables()

substArg

public Label substArg(int index,
                      UID uid,
                      Label label)
Substitutes the occurences of or for label, and substitutes for .

labelOf

public Label labelOf()
Gets labelOf this label. Refer to Andrew's thesis, Figure 5.4

subst

public Label subst(UID uid,
                   Label L)
Substitutes any occurences of for L. Refer to Andrew's thesis, Figure 5.5

fold

public Label fold(UID uid)
Substitutes any occurences of for .

join

public Label join(Label L)
Returns the join of this label and L.

isMeetable

public boolean isMeetable()

meet

public Label meet(Label L,
                  PrincipalHierarchy ph)

minus

public Label minus(Label L)

simplify

public Label simplify(PrincipalHierarchy ph)

isComparable

public boolean isComparable()

leq

public boolean leq(Label L,
                   PrincipalHierarchy ph)

isEquiv

public boolean isEquiv(Label L,
                       PrincipalHierarchy ph)

translate

public void translate(Context c,
                      CodeWriter w)

meet_

public Label meet_(Label L,
                   PrincipalHierarchy ph)
These should only be called by JifTypeSystem

leq_

public boolean leq_(Label L,
                    PrincipalHierarchy ph)

componentString

public java.lang.String componentString()

description

public java.lang.String description()

description

public Label description(java.lang.String d)