
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 }