private PackedFieldDeclType<IdentifierType, TType> checkTypeDeclPackedFieldValue( final PackedFieldDeclValue<IdentifierType, Untyped> r, final MutableList<PackedFieldDeclType<IdentifierType, TType>> fields_ordered, final MutableMap<FieldName, PackedFieldDeclValue<IdentifierType, TType>> fields_named, final TPackedBuilderType b) throws JPRACompilerCheckerException { final PackedFieldDeclValue<IdentifierType, TType> rv = this.checkPackedFieldValue(r); final TypeExprType<IdentifierType, TType> rvt = rv.getType(); final TType rvtt = rvt.getType(); if (!(rvtt instanceof TIntegerType)) { throw JPRACompilerCheckerException.packedNonIntegerType(r, rvt); } final TIntegerType rvti = (TIntegerType) rvtt; fields_ordered.add(rv); fields_named.put(rv.getName(), rv); b.addField(rv.getName(), rv.getIdentifier(), rvti); 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; }
k)); final BigInteger sv = b.getCurrentSize().getValue(); if (!this.caps.isPackedSizeBitsSupported(sv)) { throw JPRACompilerCheckerException.packedSizeNotSupported( final TPacked type = b.build(); Preconditions.checkPreconditionV( type.getFieldsInDeclarationOrder().size() == orig_ordered.size(),
final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); rb.addField( new FieldName(no_lex, "r8"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "g8"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "b8"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "a8"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(8L))); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r));
pc, gc.getFreshIdentifier(), new TypeName(no_lex, "T")); tpb.addField( new FieldName(no_lex, "f0"), 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)); final TPacked tp = tpb.build(); Assert.assertEquals(Size.valueOf(16L), tp.getSizeInBits());
@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)); }
@Test public void testLSBMSBRanges_0() throws Exception { final Optional<ImmutableLexicalPositionType<Path>> no_lex = Optional.empty(); 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 TPackedBuilderType tpb = TPacked.newBuilder( pc, gc.getFreshIdentifier(), new TypeName(no_lex, "T")); final TPacked tp = tpb.build(); Assert.assertEquals(Size.zero(), tp.getSizeInBits()); }
rb.addField( new FieldName(no_lex, "r2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "g2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "b2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "a2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "x2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "y2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "z2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L)));
@Test public final void testPackedEmpty() 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, "Empty"); final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r)); }
rb.addField( new FieldName(no_lex, "r2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "g2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "b2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "a2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "x2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "y2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "z2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L)));
k -> Assertive.require(orig_named.containsKey(k))); final BigInteger sv = b.getCurrentSize().getValue(); if (!this.caps.isPackedSizeBitsSupported(sv)) { throw JPRACompilerCheckerException.packedSizeNotSupported( final TPacked type = b.build(); Assertive.require( type.getFieldsInDeclarationOrder().size() == orig_ordered.size());
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> checkTypeDeclPackedFieldValue( final PackedFieldDeclValue<IdentifierType, Untyped> r, final MutableList<PackedFieldDeclType<IdentifierType, TType>> fields_ordered, final MutableMap<FieldName, PackedFieldDeclValue<IdentifierType, TType>> fields_named, final TPackedBuilderType b) throws JPRACompilerCheckerException { final PackedFieldDeclValue<IdentifierType, TType> rv = this.checkPackedFieldValue(r); final TypeExprType<IdentifierType, TType> rvt = rv.getType(); final TIntegerType rvti; final TType rvtt = rvt.getType(); if (!(rvtt instanceof TIntegerType)) { throw JPRACompilerCheckerException.packedNonIntegerType(r, rvt); } rvti = (TIntegerType) rvtt; fields_ordered.add(rv); fields_named.put(rv.getName(), rv); b.addField(rv.getName(), rv.getIdentifier(), rvti); return rv; }
rb.addField( new FieldName(no_lex, "r2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "g2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "b2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "a2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "x2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "y2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "z2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L)));
final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); rb.addField( new FieldName(no_lex, "r8"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "g8"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "b8"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "a8"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(8L))); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r));
rb.addField( new FieldName(no_lex, "r2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "g2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "b2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "a2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "x2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "y2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "z2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L)));
final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); rb.addField( new FieldName(no_lex, "r2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "g2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "b2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "a2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L))); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r));
final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); rb.addField( new FieldName(no_lex, "r4"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(4L))); rb.addField( new FieldName(no_lex, "g4"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(4L))); rb.addField( new FieldName(no_lex, "b4"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(4L))); rb.addField( new FieldName(no_lex, "a4"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(4L))); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r));
final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); rb.addField( new FieldName(no_lex, "r4"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(4L))); rb.addField( new FieldName(no_lex, "g4"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(4L))); rb.addField( new FieldName(no_lex, "b4"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(4L))); rb.addField( new FieldName(no_lex, "a4"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(4L))); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r));
final TPackedBuilderType rb = TPacked.newBuilder(pc, id, t_name); rb.addField( new FieldName(no_lex, "r2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "g2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "b2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); rb.addField( new FieldName(no_lex, "a2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L))); final TPacked r = rb.build(); JPRAJavaGeneratorContract.compilePackeds( JPRAJavaGeneratorContract.createTemporaryDir(), g, Lists.immutable.of(r));