Class Parameter


public final class Parameter extends Declaration

Parameter Declaration.

A parameter models class and procedure parameters.

Link to GitHub: Source File.

Author:
Øystein Myhre Andersen
  • Field Details

    • mode

      public int mode
      Parameter transfer Mode.
    • kind

      public int kind
      Parameter Kind.
    • nDim

      public int nDim
      Parameter's number of dimension in case of array kind. Set during doChecking
  • Constructor Details

    • Parameter

      Parameter(String identifier)
      Create a new Parameter.
      Parameters:
      identifier - parameter identifier
    • Parameter

      Parameter(String identifier, Type type, int kind)
      Create a new Parameter.
      Parameters:
      identifier - parameter identifier
      type - parameter type
      kind - parameter kind
    • Parameter

      public Parameter(String identifier, Type type, int kind, int nDim)
      Create a new Parameter.
      Parameters:
      identifier - parameter identifier
      type - parameter type
      kind - parameter kind
      nDim - parameter's number of dimension in case of array kind.
    • Parameter

      private Parameter()
      Default constructor used by Attribute File I/O
  • Method Details

    • edMode

      public static String edMode(int mode)
      Utility: edMode
      Parameters:
      mode - a mode code
      Returns:
      the resulting String
    • edKind

      public static String edKind(int kind)
      Utility: edKind
      Parameters:
      kind - a kind code
      Returns:
      the resulting String
    • into

      void into(Vector<Parameter> parameterList)
      Add this parameter to the given parameter list.
      Parameters:
      parameterList - the given parameter list
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • setMode

      void setMode(int mode)
      Utility: Set new parameter mode.
      Parameters:
      mode - the new mode
    • setTypeAndKind

      void setTypeAndKind(Type type, int kind)
      Utility: Set new type and kind.
      Parameters:
      type - the new type
      kind - the new kind
    • setExternalIdentifier

      void setExternalIdentifier(int prefixLevel)
      Utility: Set new external identifier based on the given prefix level.
      Parameters:
      prefixLevel - the given prefix level
    • doChecking

      public void doChecking()
      Description copied from class: SyntaxClass

      Perform semantic checking.

      This must be redefined in every subclass.

      Overrides:
      doChecking in class SyntaxClass
    • legalTransmitionMode

      private boolean legalTransmitionMode()

      Check if the parameter has a legal transmission mode.

      The available transmission modes for the different kinds of parameters to procedures.

          --------------------------------------------------------------
         |                       |         Transmission modes           |
         |   Parameter           | - - - - - - - - - - - - - - - - - - -|
         |                       |  by value | by reference |  by name  |
         |--------------------------------------------------------------|
         |   value type          |     D     |       I      |     O     |
         |   object ref. type    |     I     |       D      |     O     |
         |   text                |     O     |       D      |     O     |
         |   value type array    |     O     |       D      |     O     |
         |   reference type array|     I     |       D      |     O     |
         |   procedure           |     I     |       D      |     O     |
         |   type procedure      |     I     |       D      |     O     |
         |   label               |     I     |       D      |     O     |
         |   switch              |     I     |       D      |     O     |
          --------------------------------------------------------------
      
             D:  default mode       O:  optional mode       I:  illegal
      
      Returns:
      true if the parameter has a legal transmission mode
    • toJavaType

      String toJavaType()
      Java coding utility: edit Java code version of this parameter's type.
      Returns:
      the resulting Java code
    • toJavaCode

      public String toJavaCode()
      Description copied from class: SyntaxClass
      Generate Java code for this Syntax Class.
      Overrides:
      toJavaCode in class SyntaxClass
      Returns:
      Java code
    • buildParamCode

      public void buildParamCode(CodeBuilder codeBuilder, Expression expr)
      ClassFile coding utility: buildParamCode
      Parameters:
      codeBuilder - the codeBuilder to use
      expr - parameter value expression
    • buildNameParam

      public static void buildNameParam(CodeBuilder codeBuilder, Expression expr)
      ClassFile coding utility: buildNameParam
      Parameters:
      codeBuilder - to use
      expr - the Thunk expression to be evaluated.
    • buildNameParam

      private static void buildNameParam(CodeBuilder codeBuilder, Parameter par, Expression expr)
      ClassFile coding utility: buildNameParam
      Parameters:
      codeBuilder - to use
      par - the parameter used decide parameter kind
      expr - the Thunk expression to be evaluated.
    • getFieldRefEntry

      public FieldRefEntry getFieldRefEntry(ConstantPoolBuilder pool)
      ClassFile coding utility: get FieldRefEntry of this Parameter.
      Parameters:
      pool - the ConstantPoolBuilder to use.
      Returns:
      the FieldRefEntry of this Parameter.
    • getFieldIdentifier

      public String getFieldIdentifier()
      ClassFile coding utility: get getFieldIdentifier of this Parameter.
      Overrides:
      getFieldIdentifier in class Declaration
      Returns:
      the resulting String.
    • buildDeclaration

      public void buildDeclaration(ClassBuilder classBuilder, BlockDeclaration encloser)
      ClassFile coding utility: buildDeclaration of this Parameter.
      Overrides:
      buildDeclaration in class Declaration
      Parameters:
      classBuilder - the classBuilder to use.
      encloser - the owning block.
    • type_toClassDesc

      public ClassDesc type_toClassDesc()
      ClassFile coding utility: Parameter type toClassDesc.
      Returns:
      the resulting CalssDesc
    • loadParameter

      public void loadParameter(CodeBuilder codeBuilder, int ofst)
      ClassFile coding utility: generate load instruction dependent of type.
      Parameters:
      codeBuilder - the codeBuilder to use
      ofst - the parameter offset.
    • editParameterList

      public static String editParameterList(Vector<Parameter> parameterList)
      Printing Utility: edit parameter list.
      Parameters:
      parameterList - the given parameter list
      Returns:
      the resulting string
    • printTree

      public void printTree(int indent, Object head)
      Description copied from class: SyntaxClass
      Utility print syntax tree method.
      Overrides:
      printTree in class SyntaxClass
      Parameters:
      indent - number of spaces leading the lines
      head - the head of the tree.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • writeObject

      public void writeObject(AttributeOutputStream oupt) throws IOException
      Description copied from class: SyntaxClass
      Write a SyntaxClass object to a AttributeOutputStream.
      Overrides:
      writeObject in class SyntaxClass
      Parameters:
      oupt - the AttributeOutputStream to write to.
      Throws:
      IOException - if something went wrong.
    • readObject

      public static SyntaxClass readObject(AttributeInputStream inpt) throws IOException
      Read and return an object.
      Parameters:
      inpt - the AttributeInputStream to read from
      Returns:
      the object read from the stream.
      Throws:
      IOException - if something went wrong.