public JsonPrinter(final Ir ir) { this.ir = ir; headerDecoder = new OtfHeaderDecoder(ir.headerStructure()); }
public void generateMessageHeaderStub() throws IOException { generateComposite(ir.headerStructure().tokens()); }
public void generateMessageHeaderStub() throws IOException { generateComposite(ir.headerStructure().tokens()); }
public void generateMessageHeaderStub() throws IOException { generateComposite(ir.headerStructure().tokens()); }
private void generateExtensibilityMethods( final StringBuilder sb, final String typeName, final Token token) { sb.append(String.format( "\nfunc (*%1$s) SbeBlockLength() (blockLength uint) {\n" + "\treturn %2$s\n" + "}\n" + "\nfunc (*%1$s) SbeSchemaVersion() (schemaVersion %3$s) {\n" + "\treturn %4$s\n" + "}\n", typeName, generateLiteral(ir.headerStructure().blockLengthType(), Integer.toString(token.encodedLength())), golangTypeName(ir.headerStructure().schemaVersionType()), generateLiteral(ir.headerStructure().schemaVersionType(), Integer.toString(ir.version())))); }
public void generateMessageHeaderStub() throws IOException { final String messageHeader = "MessageHeader"; try (Writer out = outputManager.createOutput(messageHeader)) { final StringBuilder sb = new StringBuilder(); final List<Token> tokens = ir.headerStructure().tokens(); imports = new TreeSet<>(); imports.add("io"); generateTypeDeclaration(sb, messageHeader); generateTypeBodyComposite(sb, messageHeader, tokens.subList(1, tokens.size() - 1)); generateEncodeDecode(sb, messageHeader, tokens.subList(1, tokens.size() - 1), false, false); generateCompositePropertyElements(sb, messageHeader, tokens.subList(1, tokens.size() - 1)); out.append(generateFileHeader(ir.namespaces())); out.append(sb); } }
final String blockLengthType = golangTypeName(ir.headerStructure().blockLengthType());
" .wrap(buffer, offset)"); for (final Token headerToken : ir.headerStructure().tokens()) className, mutableBuffer, formatClassName(ir.headerStructure().tokens().get(0).applicableTypeName() + "Encoder"));
public int encode() { Verify.notNull(ir, "ir"); write(buffer, encodeFrame()); encodeTokenList(ir.headerStructure().tokens()); ir.messages().forEach(this::encodeTokenList); return totalLength; }
private CharSequence generateFixedFlyweightCode( final String className, final int size, final String bufferImplementation) final String schemaIdType = javaTypeName(ir.headerStructure().schemaIdType()); final String schemaVersionType = javaTypeName(ir.headerStructure().schemaVersionType()); ir.byteOrder(), schemaIdType, generateLiteral(ir.headerStructure().schemaIdType(), Integer.toString(ir.id())), schemaVersionType, generateLiteral(ir.headerStructure().schemaVersionType(), Integer.toString(ir.version())));
final String blockLengthType = golangTypeName(ir.headerStructure().blockLengthType()); final String templateIdType = golangTypeName(ir.headerStructure().templateIdType()); final String schemaIdType = golangTypeName(ir.headerStructure().schemaIdType()); final String schemaVersionType = golangTypeName(ir.headerStructure().schemaVersionType()); typeName, blockLengthType, generateLiteral(ir.headerStructure().blockLengthType(), Integer.toString(token.encodedLength())), templateIdType, generateLiteral(ir.headerStructure().templateIdType(), Integer.toString(token.id())), schemaIdType, generateLiteral(ir.headerStructure().schemaIdType(), Integer.toString(ir.id())), schemaVersionType, generateLiteral(ir.headerStructure().schemaVersionType(), Integer.toString(ir.version())), semanticType));
private CharSequence generateFixedFlyweightCode(final String className, final int size) final String schemaIdType = cppTypeName(ir.headerStructure().schemaIdType()); final String schemaVersionType = cppTypeName(ir.headerStructure().schemaVersionType()); size, schemaIdType, generateLiteral(ir.headerStructure().schemaIdType(), Integer.toString(ir.id())), schemaVersionType, generateLiteral(ir.headerStructure().schemaVersionType(), Integer.toString(ir.version())));
private CharSequence generateMessageFlyweightCode(final String className, final Token token, final String indent) final String blockLengthType = cSharpTypeName(ir.headerStructure().blockLengthType()); final String templateIdType = cSharpTypeName(ir.headerStructure().templateIdType()); final String schemaIdType = cSharpTypeName(ir.headerStructure().schemaIdType()); final String schemaVersionType = cSharpTypeName(ir.headerStructure().schemaVersionType()); final String semanticType = token.encoding().semanticType() == null ? "" : token.encoding().semanticType(); indent + INDENT + "}\n\n", blockLengthType, generateLiteral(ir.headerStructure().blockLengthType(), Integer.toString(token.encodedLength())), templateIdType, generateLiteral(ir.headerStructure().templateIdType(), Integer.toString(token.id())), schemaIdType, generateLiteral(ir.headerStructure().schemaIdType(), Integer.toString(ir.id())), schemaVersionType, generateLiteral(ir.headerStructure().schemaVersionType(), Integer.toString(ir.version())), semanticType, className);
final OtfHeaderDecoder headerDecoder = new OtfHeaderDecoder(ir.headerStructure());
final OtfHeaderDecoder otfHeaderDecoder = new OtfHeaderDecoder(ir.headerStructure());
@Test public void shouldDecodeCorrectHeader() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "code-generation-schema.xml"), ParserOptions.DEFAULT); final IrGenerator irg = new IrGenerator(); final Ir ir = irg.generate(schema); final ByteBuffer buffer = ByteBuffer.allocateDirect(CAPACITY); final IrEncoder irEncoder = new IrEncoder(buffer, ir); irEncoder.encode(); buffer.flip(); final IrDecoder irDecoder = new IrDecoder(buffer); final Ir decodedIr = irDecoder.decode(); final List<Token> tokens = decodedIr.headerStructure().tokens(); assertThat(tokens.size(), is(ir.headerStructure().tokens().size())); for (int i = 0, size = tokens.size(); i < size; i++) { assertEqual(tokens.get(i), ir.headerStructure().tokens().get(i)); } }
throws IOException final HeaderStructure header = ir.headerStructure(); final String messageTypeName = formatTypeName(messageToken.name()); final String wrapperName = messageTypeName + "MessageHeader";
final List<Token> tokens = ir.headerStructure().tokens();
final String bufferImplementation) final HeaderStructure headerStructure = ir.headerStructure(); final String blockLengthType = javaTypeName(headerStructure.blockLengthType()); final String templateIdType = javaTypeName(headerStructure.templateIdType());
public void generate() throws IOException { generateSharedImports(ir, outputManager); generateResultEnums(outputManager); generateDecoderScratchStruct(outputManager); generateEncoderScratchStruct(ir, outputManager); generateEitherEnum(outputManager); generateEnums(ir, outputManager); generateComposites(ir, outputManager); generateBitSets(ir, outputManager); final int headerSize = totalByteSize(ir.headerStructure()); for (final List<Token> tokens : ir.messages()) { final MessageComponents components = MessageComponents.collectMessageComponents(tokens); final String messageTypeName = formatTypeName(components.messageToken.name()); final Optional<FieldsRepresentationSummary> fieldsRepresentation = generateFieldsRepresentation(messageTypeName, components, outputManager); generateMessageHeaderDefault(ir, outputManager, components.messageToken); // Avoid the work of recomputing the group tree twice per message final List<GroupTreeNode> groupTree = buildGroupTrees(messageTypeName, components.groups); generateGroupFieldRepresentations(outputManager, groupTree); generateMessageDecoder(outputManager, components, groupTree, fieldsRepresentation, headerSize); generateMessageEncoder(outputManager, components, groupTree, fieldsRepresentation, headerSize); } }