logo

class

compiler::FField

sys::Obj
  compiler::FSlot
    compiler::FField : compiler::CField
  1  //
  2  // Copyright (c) 2006, Brian Frank and Andy Frank
  3  // Licensed under the Academic Free License version 3.0
  4  //
  5  // History:
  6  //   26 Dec 05  Brian Frank  Creation
  7  //   19 Aug 06  Brian Frank  Ported from Java to Fan
  8  //
  9  
 10  **
 11  ** FField is the read/write fcode representation of sys::Field.
 12  **
 13  class FField : FSlot, CField
 14  {
 15  
 16  //////////////////////////////////////////////////////////////////////////
 17  // Constructor
 18  //////////////////////////////////////////////////////////////////////////
 19  
 20    new make(FType fparent)
 21      : super(fparent)
 22    {
 23    }
 24  
 25  //////////////////////////////////////////////////////////////////////////
 26  // IO
 27  //////////////////////////////////////////////////////////////////////////
 28  
 29    Void write(OutStream out)
 30    {
 31      super.writeCommon(out)
 32      out.writeI2(typeRef)
 33      super.writeAttrs(out)
 34    }
 35  
 36    FField read(InStream in)
 37    {
 38      super.readCommon(in)
 39      typeRef = in.readU2
 40      super.readAttrs(in)
 41      return this
 42    }
 43  
 44  //////////////////////////////////////////////////////////////////////////
 45  // CField
 46  //////////////////////////////////////////////////////////////////////////
 47  
 48    override Str signature()
 49    {
 50      return "$fieldType $name"
 51    }
 52  
 53    override CType fieldType()
 54    {
 55      return fparent.fpod.toType(typeRef)
 56    }
 57  
 58    override CType inheritedReturnType()
 59    {
 60      if (!isOverride || getter == null) return fieldType
 61      else return getter.inheritedReturnType
 62    }
 63  
 64  //////////////////////////////////////////////////////////////////////////
 65  // Fields
 66  //////////////////////////////////////////////////////////////////////////
 67  
 68    Int typeRef     // typeRef index
 69    override CMethod getter
 70    override CMethod setter
 71  
 72  }