//
// Copyright (c) 2006, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 26 Dec 05 Brian Frank Creation
// 19 Aug 06 Brian Frank Ported from Java to Fan
//
**
** FField is the read/write fcode representation of sys::Field.
**
class FField : FSlot, CField
{
//////////////////////////////////////////////////////////////////////////
// Constructor
//////////////////////////////////////////////////////////////////////////
new make(FType fparent)
: super(fparent)
{
}
//////////////////////////////////////////////////////////////////////////
// IO
//////////////////////////////////////////////////////////////////////////
Void write(OutStream out)
{
super.writeCommon(out)
out.writeI2(typeRef)
FUtil.writeAttrs(out, fattrs)
}
This read(InStream in)
{
super.readCommon(in)
typeRef = in.readU2
fattrs = FUtil.readAttrs(in)
return this
}
//////////////////////////////////////////////////////////////////////////
// CField
//////////////////////////////////////////////////////////////////////////
override Str signature()
{
return "$fieldType $name"
}
override CType fieldType()
{
return fparent.fpod.toType(typeRef)
}
override CType inheritedReturnType()
{
if (!isOverride || getter == null) return fieldType
else return getter.inheritedReturnType
}
//////////////////////////////////////////////////////////////////////////
// Fields
//////////////////////////////////////////////////////////////////////////
Int typeRef // typeRef index
override CMethod? getter
override CMethod? setter
}