@Override public Unit matchIntegerSigned( final TIntegerSigned t) { return this.onInteger(t.getSizeInBits().getValue()); }
@Override public Size<T> matchConstant( final SizeExprConstant<IdentifierType, TType> s) { return new Size<>(s.getValue()); }
private TypeExprBooleanSet<IdentifierType, TType> checkTypeExprBooleanSet( final TypeExprBooleanSet<IdentifierType, Untyped> e) throws JPRACompilerCheckerException { final SizeExprType<IdentifierType, TType> size_expr = this.checkSizeExpr(e.getSizeExpression()); final Size<SizeUnitOctetsType> size_octets = this.evaluateSize(size_expr); if (!JPRAChecker.BOOLEAN_SET_SIZES.includesValue(size_octets.getValue())) { throw JPRACompilerCheckerException.booleanSetSizeInvalid( e, JPRAChecker.BOOLEAN_SET_SIZES, size_octets.getValue()); } final BigInteger required = BigInteger.valueOf((long) e.getFieldsInDeclarationOrder().size()); final Size<SizeUnitBitsType> bits = Size.toBits(size_octets); if (bits.getValue().compareTo(required) < 0) { throw JPRACompilerCheckerException.booleanSetSizeLessThanRequired( e, required, bits.getValue()); } final TBooleanSet type = new TBooleanSet( e.getLexicalInformation(), e.getFieldsInDeclarationOrder(), size_octets); return new TypeExprBooleanSet<>( type, e.getLexicalInformation(), e.getFieldsInDeclarationOrder(), size_expr); }
new TIntegerSigned(no_lex, Size.valueOf(32L)); final TIntegerSigned t_long = new TIntegerSigned(no_lex, Size.valueOf(64L)); final TFloat t_float = new TFloat(no_lex, Size.valueOf(32L)); final TFloat t_double = new TFloat(no_lex, Size.valueOf(64L)); new TVector(no_lex, Size.valueOf(2L), t_int)); rb.addField( new FieldName(no_lex, "v3i"), gc.getFreshIdentifier(), new TVector(no_lex, Size.valueOf(3L), t_int)); rb.addField( new FieldName(no_lex, "v4i"), gc.getFreshIdentifier(), new TVector(no_lex, Size.valueOf(4L), t_int)); new TVector(no_lex, Size.valueOf(2L), t_long)); rb.addField( new FieldName(no_lex, "v3l"), gc.getFreshIdentifier(), new TVector(no_lex, Size.valueOf(3L), t_long)); rb.addField( new FieldName(no_lex, "v4l"), gc.getFreshIdentifier(), new TVector(no_lex, Size.valueOf(4L), t_long)); new TVector(no_lex, Size.valueOf(2L), t_float)); rb.addField( new FieldName(no_lex, "v3f"), gc.getFreshIdentifier(), new TVector(no_lex, Size.valueOf(3L), t_float)); rb.addField(
@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()); }
new FieldName(no_lex, "isn8"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "isn16"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(16L))); rb.addField( new FieldName(no_lex, "isn32"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(32L))); rb.addField( new FieldName(no_lex, "isn64"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(64L))); new TIntegerUnsignedNormalized(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "usn16"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(16L))); rb.addField( new FieldName(no_lex, "usn32"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(32L))); rb.addField( new FieldName(no_lex, "usn64"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(64L)));
@Override public Unit matchIntegerSignedNormalized( final TIntegerSignedNormalized t) { return this.onIntegerNormalized(t.getSizeInBits().getValue()); }
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))); 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))); rb.addField( new FieldName(no_lex, "w2"), gc.getFreshIdentifier(), new TIntegerUnsignedNormalized(no_lex, Size.valueOf(2L)));
private TypeExprBooleanSet<IdentifierType, TType> checkTypeExprBooleanSet( final TypeExprBooleanSet<IdentifierType, Untyped> e) throws JPRACompilerCheckerException { final SizeExprType<IdentifierType, TType> size_expr = this.checkSizeExpr(e.getSizeExpression()); final Size<SizeUnitOctetsType> size_octets = JPRAChecker.evaluateSize( size_expr); if (!BOOLEAN_SET_SIZES.includesValue(size_octets.getValue())) { throw JPRACompilerCheckerException.booleanSetSizeInvalid( e, BOOLEAN_SET_SIZES, size_octets.getValue()); } final BigInteger required = BigInteger.valueOf((long) e.getFieldsInDeclarationOrder().size()); final Size<SizeUnitBitsType> bits = Size.toBits(size_octets); if (bits.getValue().compareTo(required) < 0) { throw JPRACompilerCheckerException.booleanSetSizeLessThanRequired( e, required, bits.getValue()); } final TBooleanSet type = new TBooleanSet( e.getLexicalInformation(), e.getFieldsInDeclarationOrder(), size_octets); return new TypeExprBooleanSet<>( type, e.getLexicalInformation(), e.getFieldsInDeclarationOrder(), size_expr); }
@Override public Size<T> matchConstant( final SizeExprConstant<IdentifierType, TType> s) { return new Size<>(s.getValue()); }
@Override public Unit matchIntegerUnsignedNormalized( final TIntegerUnsignedNormalized t) { return this.onIntegerNormalized(t.getSizeInBits().getValue()); }
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))); 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))); rb.addField( new FieldName(no_lex, "w2"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(2L)));
@Override public Unit matchIntegerUnsignedNormalized( final TIntegerUnsignedNormalized t) { return this.onIntegerNormalized(t.getSizeInBits().getValue(), false); }
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))); 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))); rb.addField( new FieldName(no_lex, "w2"), gc.getFreshIdentifier(), new TIntegerSignedNormalized(no_lex, Size.valueOf(2L)));
private static void bufferReadStatement( final TPacked t, final MethodSpec.Builder setb) { setb.beginControlFlow(""); setb.addStatement("final int off = this.getByteOffset()"); final int bytes = t.getSizeInOctets().getValue().intValue(); for (int index = 0; index < bytes; ++index) { setb.addStatement( "this.$N.put($L, this.$N.get(off + $L))", "pack_buffer", Integer.valueOf(index), "buffer", Integer.valueOf(index)); } setb.endControlFlow(); }
new FieldName(no_lex, "i8"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "i16"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(16L))); rb.addField( new FieldName(no_lex, "i32"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(32L))); rb.addField( new FieldName(no_lex, "i64"), gc.getFreshIdentifier(), new TIntegerSigned(no_lex, Size.valueOf(64L))); new TIntegerUnsigned(no_lex, Size.valueOf(8L))); rb.addField( new FieldName(no_lex, "u16"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(16L))); rb.addField( new FieldName(no_lex, "u32"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(32L))); rb.addField( new FieldName(no_lex, "u64"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(64L)));
@Override public Unit matchIntegerUnsigned( final TIntegerUnsigned t) { return this.onInteger(t.getSizeInBits().getValue()); }
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))); 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))); rb.addField( new FieldName(no_lex, "w2"), gc.getFreshIdentifier(), new TIntegerUnsigned(no_lex, Size.valueOf(2L)));
@Override public Unit matchIntegerSignedNormalized( final TIntegerSignedNormalized t) { return this.onIntegerNormalized(t.getSizeInBits().getValue(), true); }
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)); Assert.assertEquals(Size.valueOf(16L), tp.getSizeInBits());