private PackedFieldDeclType<IdentifierType, TType> checkTypeDeclPackedFieldPaddingBits( final PackedFieldDeclPaddingBits<IdentifierType, Untyped> r, final MutableList<PackedFieldDeclType<IdentifierType, TType>> fields_ordered, final TPackedBuilderType b) throws JPRACompilerCheckerException { final PackedFieldDeclPaddingBits<IdentifierType, TType> rv = this.checkPackedFieldPaddingBits(r); final Size<SizeUnitBitsType> size = this.evaluateSize(rv.getSizeExpression()); if (size.getValue().compareTo(BigInteger.ZERO) <= 0) { throw JPRACompilerCheckerException.paddingSizeInvalid( r.getLexicalInformation(), size.getValue()); } fields_ordered.add(rv); b.addPaddingBits(r.getLexicalInformation(), size); return rv; }
private PackedFieldDeclType<IdentifierType, TType> checkTypeDeclPackedFieldPaddingBits( final PackedFieldDeclPaddingBits<IdentifierType, Untyped> r, final MutableList<PackedFieldDeclType<IdentifierType, TType>> fields_ordered, final TPackedBuilderType b) throws JPRACompilerCheckerException { final PackedFieldDeclPaddingBits<IdentifierType, TType> rv = this.checkPackedFieldPaddingBits(r); final Size<SizeUnitBitsType> size = JPRAChecker.evaluateSize(rv.getSizeExpression()); if (size.getValue().compareTo(BigInteger.ZERO) <= 0) { throw JPRACompilerCheckerException.paddingSizeInvalid( r.getLexicalInformation(), size.getValue()); } fields_ordered.add(rv); b.addPaddingBits(r.getLexicalInformation(), size); return rv; }
@Test public final void testPackedAllPadding() throws Exception { final JPRAJavaGeneratorType g = this.getJavaGenerator(); final GlobalContextType gc = GlobalContexts.newContext(new AlwaysEmptyLoader()); final PackageContextType pc = gc.loadPackage( new PackageNameQualified( Lists.immutable.of( PackageNameUnqualified.of("x"), PackageNameUnqualified.of("y"), PackageNameUnqualified.of("z")))); final IdentifierType id = gc.getFreshIdentifier(); final Optional<ImmutableLexicalPositionType<Path>> no_lex = Optional.empty(); final TypeName t_name = new TypeName(no_lex, "PackedAllPadding"); final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); rb.addPaddingBits(no_lex, Size.valueOf(64L)); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r)); }
gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(4L))); tpb.addPaddingBits(no_lex, Size.valueOf(4L)); tpb.addField( new FieldName(no_lex, "f2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(4L))); tpb.addPaddingBits(no_lex, Size.valueOf(4L));