generateTypeStubs(); for (final List<Token> tokens : ir.messages())
public void generate() throws IOException { generateTypeStubs(); generateMessageHeaderStub(); for (final List<Token> tokens : ir.messages()) { final Token msgToken = tokens.get(0); final List<Token> messageBody = getMessageBody(tokens); int i = 0; final List<Token> fields = new ArrayList<>(); i = collectFields(messageBody, i, fields); final List<Token> groups = new ArrayList<>(); i = collectGroups(messageBody, i, groups); final List<Token> varData = new ArrayList<>(); collectVarData(messageBody, i, varData); generateDecoder(BASE_INDENT, fields, groups, varData, msgToken); generateEncoder(BASE_INDENT, fields, groups, varData, msgToken); } }
public int encode() { Verify.notNull(ir, "ir"); write(buffer, encodeFrame()); encodeTokenList(ir.headerStructure().tokens()); ir.messages().forEach(this::encodeTokenList); return totalLength; }
final List<String> typesToInclude = generateTypeStubs(); for (final List<Token> tokens : ir.messages())
generateTypeStubs(); for (final List<Token> tokens : ir.messages())
@Test public void shouldGenerateAndEncodeIr() throws Exception { System.setProperty(SbeTool.KEYWORD_APPEND_TOKEN, "_"); final ParserOptions options = ParserOptions.builder().stopOnError(true).build(); final MessageSchema schema = parse(TestUtil.getLocalResource("FixBinary.xml"), options); final IrGenerator irg = new IrGenerator(); final Ir ir = irg.generate(schema); final ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024); final IrEncoder irEncoder = new IrEncoder(buffer, ir); irEncoder.encode(); buffer.flip(); final IrDecoder irDecoder = new IrDecoder(buffer); final Ir decodedIr = irDecoder.decode(); assertEquals(ir.id(), decodedIr.id()); assertEquals(ir.version(), decodedIr.version()); assertEquals(ir.byteOrder(), decodedIr.byteOrder()); assertEquals(ir.applicableNamespace(), decodedIr.applicableNamespace()); assertEquals(ir.packageName(), decodedIr.packageName()); assertEquals(ir.types().size(), decodedIr.types().size()); assertEquals(ir.messages().size(), decodedIr.messages().size()); } }
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); } }
public void generate() throws IOException { generateMessageHeaderStub(); generateTypeStubs(); for (final List<Token> tokens : ir.messages()) { final Token msgToken = tokens.get(0); final List<Token> messageBody = getMessageBody(tokens); int offset = 0; final List<Token> rootFields = new ArrayList<>(); offset = collectRootFields(messageBody, offset, rootFields); final List<Token> groups = new ArrayList<>(); offset = collectGroups(messageBody, offset, groups); final List<Token> varData = messageBody.subList(offset, messageBody.size()); generateDecoder(groups, rootFields, varData, msgToken); generateEncoder(groups, rootFields, varData, msgToken); } }
public void generate() throws IOException { generateMessageHeaderStub(); final List<String> typesToInclude = generateTypeStubs(); for (final List<Token> tokens : ir.messages()) { final Token msgToken = tokens.get(0); final String className = formatClassName(msgToken.name()); try (final Writer out = outputManager.createOutput(className)) { out.append(generateFileHeader(ir.applicableNamespace().replace('.', '_'), typesToInclude)); out.append(generateClassDeclaration(className)); out.append(generateMessageFlyweightCode(msgToken)); final List<Token> messageBody = tokens.subList(1, tokens.size() - 1); int offset = 0; final List<Token> rootFields = new ArrayList<>(); offset = collectRootFields(messageBody, offset, rootFields); out.append(generateFields(className, rootFields, BASE_INDENT)); final List<Token> groups = new ArrayList<>(); offset = collectGroups(messageBody, offset, groups); final StringBuilder sb = new StringBuilder(); generateGroups(sb, groups, 0, BASE_INDENT); out.append(sb); final List<Token> varData = messageBody.subList(offset, messageBody.size()); out.append(generateVarData(varData)); } } }
generateTypeStubs(); for (final List<Token> tokens : ir.messages())
public void generate() throws IOException { generateMessageHeaderStub(); generateTypeStubs(); for (final List<Token> tokens : ir.messages()) { final Token msgToken = tokens.get(0); final String className = formatClassName(msgToken.name()); try (final Writer out = outputManager.createOutput(className + MOCK)) { out.append(generateFileHeader(ir.applicableNamespace())); out.append(generateClassDeclaration(className)); final List<Token> messageBody = tokens.subList(1, tokens.size() - 1); final int offset = 0; final List<Token> rootFields = new ArrayList<>(); collectRootFields(messageBody, offset, rootFields); out.append(generateFields(className, rootFields, BASE_INDENT)); final List<Token> groups = new ArrayList<>(); collectGroups(messageBody, offset, groups); final StringBuilder sb = new StringBuilder(); generateGroups(sb, className, groups, 0, BASE_INDENT); out.append(sb); out.append("}\n"); } } }
public int encode() { Verify.notNull(ir, "ir"); write(buffer, encodeFrame()); encodeTokenList(ir.headerStructure().tokens()); ir.messages().forEach(this::encodeTokenList); return totalLength; }
public int encode() { Verify.notNull(ir, "ir"); write(buffer, encodeFrame()); encodeTokenList(ir.headerStructure().tokens()); ir.messages().forEach(this::encodeTokenList); return totalLength; }
public int encode() { Verify.notNull(ir, "ir"); write(buffer, encodeFrame()); encodeTokenList(ir.headerStructure().tokens()); ir.messages().forEach(this::encodeTokenList); return totalLength; }
final List<String> typesToInclude = generateTypeStubs(); for (final List<Token> tokens : ir.messages())
public void generate() throws IOException { generateTypeStubs(); generateMessageHeaderStub(); for (final List<Token> tokens : ir.messages()) { final Token msgToken = tokens.get(0); final List<Token> messageBody = getMessageBody(tokens); int i = 0; final List<Token> fields = new ArrayList<>(); i = collectFields(messageBody, i, fields); final List<Token> groups = new ArrayList<>(); i = collectGroups(messageBody, i, groups); final List<Token> varData = new ArrayList<>(); collectVarData(messageBody, i, varData); generateDecoder(BASE_INDENT, fields, groups, varData, msgToken); generateEncoder(BASE_INDENT, fields, groups, varData, msgToken); } }
public void generate() throws IOException { generateTypeStubs(); generateMessageHeaderStub(); for (final List<Token> tokens : ir.messages()) { final Token msgToken = tokens.get(0); final List<Token> messageBody = getMessageBody(tokens); int i = 0; final List<Token> fields = new ArrayList<>(); i = collectFields(messageBody, i, fields); final List<Token> groups = new ArrayList<>(); i = collectGroups(messageBody, i, groups); final List<Token> varData = new ArrayList<>(); collectVarData(messageBody, i, varData); generateDecoder(BASE_INDENT, fields, groups, varData, msgToken); generateEncoder(BASE_INDENT, fields, groups, varData, msgToken); } }
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); } }
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); } }