jif.types.principal
Class ParamPrincipal_c

java.lang.Object
  extended by polyglot.types.TypeObject_c
      extended by jif.types.principal.Principal_c
          extended by jif.types.principal.ParamPrincipal_c
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Param, ParamPrincipal, Principal, polyglot.types.TypeObject, polyglot.util.Copy

public class ParamPrincipal_c
extends Principal_c
implements ParamPrincipal

An implementation of the ParamPrincipal interface.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class jif.types.principal.Principal_c
variables
 
Fields inherited from class polyglot.types.TypeObject_c
position, ts
 
Constructor Summary
ParamPrincipal_c(ParamInstance paramInstance, JifTypeSystem ts, polyglot.util.Position pos)
           
 
Method Summary
 boolean equalsImpl(polyglot.types.TypeObject o)
           
 int hashCode()
           
 boolean isCanonical()
           
 boolean isRuntimeRepresentable()
           
 PathMap labelCheck(JifContext A, LabelChecker lc)
          Label check the principal, which will determine how much information may be gained if the principal is evaluated at runtime.
 ParamInstance paramInstance()
           
 java.lang.String toString()
           
 
Methods inherited from class jif.types.principal.Principal_c
hasVariables, isBottomPrincipal, isTopPrincipal, simplify, subst, throwTypes, toJava, variables
 
Methods inherited from class polyglot.types.TypeObject_c
copy, equals, position, typeSystem
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface jif.types.principal.Principal
hasVariables, isBottomPrincipal, isTopPrincipal, simplify, subst, throwTypes, toJava, variables
 
Methods inherited from interface polyglot.types.TypeObject
position, typeSystem
 
Methods inherited from interface polyglot.util.Copy
copy
 

Constructor Detail

ParamPrincipal_c

public ParamPrincipal_c(ParamInstance paramInstance,
                        JifTypeSystem ts,
                        polyglot.util.Position pos)
Method Detail

paramInstance

public ParamInstance paramInstance()
Specified by:
paramInstance in interface ParamPrincipal

isRuntimeRepresentable

public boolean isRuntimeRepresentable()
Specified by:
isRuntimeRepresentable in interface Param
Specified by:
isRuntimeRepresentable in class Principal_c

isCanonical

public boolean isCanonical()
Specified by:
isCanonical in interface Param
Specified by:
isCanonical in interface polyglot.types.TypeObject
Specified by:
isCanonical in class Principal_c

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

equalsImpl

public boolean equalsImpl(polyglot.types.TypeObject o)
Specified by:
equalsImpl in interface polyglot.types.TypeObject
Specified by:
equalsImpl in class Principal_c

hashCode

public int hashCode()
Specified by:
hashCode in class Principal_c

labelCheck

public PathMap labelCheck(JifContext A,
                          LabelChecker lc)
Description copied from interface: Principal
Label check the principal, which will determine how much information may be gained if the principal is evaluated at runtime. For example, given the dynamic principal p, where p is a local variable, evaluation of this label at runtime will reveal as much information as the label of p. For example, the following code is illegal, as the runtime evaluation of the principal reveals too much information
 boolean{Alice:} secret = ...;
 final principal{Alice:} p = secret?Bob:Chuck;
 boolean{} leak = false;
 if (p actsfor Bob) { // evaluation of p reveals
                      // information at level {Alice:}
     leak = true;
        } 
 

Specified by:
labelCheck in interface Principal
Overrides:
labelCheck in class Principal_c
See Also:
Jif.labelCheck(LabelChecker), Label.labelCheck(JifContext, LabelChecker)