////////////////////////////////////////////////////////////////////////// // Read ////////////////////////////////////////////////////////////////////////// public static FAttrs read(FStore.Input input) { int n = input.u2(); if (n == 0) return none; FAttrs attrs = new FAttrs(); for (int i=0; i<n; ++i) { string name = input.name(); switch (name[0]) { case 'E': if (name == FConst.ErrTableAttr) { attrs.errTable(input); continue; } break; case 'F': if (name == FConst.FacetsAttr) { attrs.facets(input); continue; } break; case 'L': if (name == FConst.LineNumberAttr) { attrs.lineNumber(input); continue; } if (name == FConst.LineNumbersAttr) { attrs.lineNumbers(input); continue; } break; case 'S': if (name == FConst.SourceFileAttr) { attrs.sourceFile(input); continue; } break; } int skip = input.u2(); if (input.skip(skip) != skip) throw new System.IO.IOException("Can't skip over attr " + name); } return attrs; }
////////////////////////////////////////////////////////////////////////// // Read ////////////////////////////////////////////////////////////////////////// public static FAttrs read(FStore.Input input) { int n = input.u2(); if (n == 0) { return(none); } FAttrs attrs = new FAttrs(); for (int i = 0; i < n; ++i) { string name = input.name(); switch (name[0]) { case 'E': if (name == FConst.ErrTableAttr) { attrs.errTable(input); continue; } break; case 'F': if (name == FConst.FacetsAttr) { attrs.facets(input); continue; } break; case 'L': if (name == FConst.LineNumberAttr) { attrs.lineNumber(input); continue; } if (name == FConst.LineNumbersAttr) { attrs.lineNumbers(input); continue; } break; case 'S': if (name == FConst.SourceFileAttr) { attrs.sourceFile(input); continue; } break; } int skip = input.u2(); if (input.skip(skip) != skip) { throw new System.IO.IOException("Can't skip over attr " + name); } } return(attrs); }