public static MessageComponents collectMessageComponents(final List<Token> tokens) { final Token msgToken = tokens.get(0); final List<Token> messageBody = GenerationUtil.getMessageBody(tokens); int i = 0; final List<Token> fields = new ArrayList<>(); i = GenerationUtil.collectFields(messageBody, i, fields); final List<Token> groups = new ArrayList<>(); i = GenerationUtil.collectGroups(messageBody, i, groups); final List<Token> varData = new ArrayList<>(); GenerationUtil.collectVarData(messageBody, i, varData); return new MessageComponents(msgToken, fields, groups, varData); } }
private void generateEnum(final List<Token> tokens) throws IOException { final Token enumToken = tokens.get(0); final String enumName = formatClassName(enumToken.applicableTypeName()); try (Writer out = outputManager.createOutput(enumName)) { out.append(generateEnumFileHeader(ir.applicableNamespace())); out.append(generateEnumDeclaration(enumName, enumToken)); out.append(generateEnumValues(getMessageBody(tokens))); out.append(generateEnumBody(enumToken, enumName)); out.append(generateEnumLookupMethod(getMessageBody(tokens), enumName)); out.append("}\n"); } }
private static void generateEnum(final List<Token> enumTokens, final OutputManager outputManager) throws IOException { final String originalEnumName = enumTokens.get(0).applicableTypeName(); final String enumRustName = formatTypeName(originalEnumName); try (Writer writer = outputManager.createOutput("Enum " + enumRustName)) { final List<Token> messageBody = getMessageBody(enumTokens); if (messageBody.isEmpty()) { throw new IllegalArgumentException("No valid values provided for enum " + originalEnumName); } writer.append("#[derive(Clone,Copy,Debug,PartialEq,Eq,PartialOrd,Ord,Hash)]").append("\n"); final String rustReprTypeName = rustTypeName(messageBody.get(0).encoding().primitiveType()); writer.append(format("#[repr(%s)]", rustReprTypeName)).append("\n"); writer.append("pub enum ").append(enumRustName).append(" {\n"); for (final Token token : messageBody) { final Encoding encoding = token.encoding(); final String literal = generateRustLiteral(encoding.primitiveType(), encoding.constValue().toString()); indent(writer, 1).append(token.name()) .append(" = ") .append(literal) .append(",\n"); } writer.append("}\n"); } }
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); } }
private static void generateSingleComposite(final List<Token> tokens, final OutputManager outputManager) throws IOException { final Token beginToken = tokens.get(0); final String originalTypeName = beginToken.applicableTypeName(); final String formattedTypeName = formatTypeName(originalTypeName); final SplitCompositeTokens splitTokens = SplitCompositeTokens.splitInnerTokens(tokens); try (Writer writer = outputManager.createOutput(formattedTypeName)) { appendStructHeader(writer, formattedTypeName, true); appendStructFields(writer, splitTokens.nonConstantEncodingTokens()); writer.append("}\n"); generateConstantAccessorImpl(writer, formattedTypeName, getMessageBody(tokens)); } }
private void generateBitSet(final List<Token> tokens) throws IOException { final Token token = tokens.get(0); final String bitSetName = formatClassName(token.applicableTypeName()); final String decoderName = decoderName(bitSetName); final String encoderName = encoderName(bitSetName); final List<Token> messageBody = getMessageBody(tokens); final String implementsString = implementsInterface(FLYWEIGHT); try (Writer out = outputManager.createOutput(decoderName)) { generateFixedFlyweightHeader(token, decoderName, implementsString, out, readOnlyBuffer, fqReadOnlyBuffer); out.append(generateChoiceIsEmpty(token.encoding().primitiveType())); out.append(generateChoiceDecoders(messageBody)); out.append(generateChoiceDisplay(messageBody)); out.append("}\n"); } try (Writer out = outputManager.createOutput(encoderName)) { generateFixedFlyweightHeader(token, encoderName, implementsString, out, mutableBuffer, fqMutableBuffer); out.append(generateChoiceClear(encoderName, token)); out.append(generateChoiceEncoders(encoderName, messageBody)); out.append("}\n"); } }
public static MessageComponents collectMessageComponents(final List<Token> tokens) { final Token msgToken = tokens.get(0); final List<Token> messageBody = GenerationUtil.getMessageBody(tokens); int i = 0; final List<Token> fields = new ArrayList<>(); i = GenerationUtil.collectFields(messageBody, i, fields); final List<Token> groups = new ArrayList<>(); i = GenerationUtil.collectGroups(messageBody, i, groups); final List<Token> varData = new ArrayList<>(); GenerationUtil.collectVarData(messageBody, i, varData); return new MessageComponents(msgToken, fields, groups, varData); } }
public static MessageComponents collectMessageComponents(final List<Token> tokens) { final Token msgToken = tokens.get(0); final List<Token> messageBody = GenerationUtil.getMessageBody(tokens); int i = 0; final List<Token> fields = new ArrayList<>(); i = GenerationUtil.collectFields(messageBody, i, fields); final List<Token> groups = new ArrayList<>(); i = GenerationUtil.collectGroups(messageBody, i, groups); final List<Token> varData = new ArrayList<>(); GenerationUtil.collectVarData(messageBody, i, varData); return new MessageComponents(msgToken, fields, groups, varData); } }
private void generateEnum(final List<Token> tokens) throws IOException { final String enumName = formatClassName(tokens.get(0).name()); try (final Writer out = outputManager.createOutput(enumName)) { out.append(generateEnumFileHeader(ir.applicableNamespace())); out.append(generateEnumDeclaration(enumName)); out.append(generateEnumValues(getMessageBody(tokens))); out.append(generateEnumBody(tokens.get(0), enumName)); out.append(generateEnumLookupMethod(getMessageBody(tokens), enumName)); out.append("}\n"); } }
private void generateEnum(final List<Token> tokens) throws IOException { final Token enumToken = tokens.get(0); final String enumName = formatClassName(enumToken.applicableTypeName()); try (Writer out = outputManager.createOutput(enumName)) { out.append(generateEnumFileHeader(ir.applicableNamespace())); out.append(generateEnumDeclaration(enumName, enumToken)); out.append(generateEnumValues(getMessageBody(tokens))); out.append(generateEnumBody(enumToken, enumName)); out.append(generateEnumLookupMethod(getMessageBody(tokens), enumName)); out.append("}\n"); } }
private void generateEnum(final List<Token> tokens) throws IOException { final Token enumToken = tokens.get(0); final String enumName = formatClassName(enumToken.applicableTypeName()); try (Writer out = outputManager.createOutput(enumName)) { out.append(generateEnumFileHeader(ir.applicableNamespace())); out.append(generateEnumDeclaration(enumName, enumToken)); out.append(generateEnumValues(getMessageBody(tokens))); out.append(generateEnumBody(enumToken, enumName)); out.append(generateEnumLookupMethod(getMessageBody(tokens), enumName)); out.append("}\n"); } }
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 { 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); } }
private void generateBitSet(final List<Token> tokens) throws IOException { final Token token = tokens.get(0); final String bitSetName = formatClassName(token.name()); final String decoderName = decoderName(bitSetName); final String encoderName = encoderName(bitSetName); final List<Token> messageBody = getMessageBody(tokens); try (final Writer out = outputManager.createOutput(decoderName)) { generateFixedFlyweightHeader(token, decoderName, out, readOnlyBuffer, fullReadOnlyBuffer); out.append(generateChoiceDecoders(messageBody)); out.append("}\n"); } try (final Writer out = outputManager.createOutput(encoderName)) { generateFixedFlyweightHeader(token, encoderName, out, mutableBuffer, fullMutableBuffer); out.append(generateChoiceClear(encoderName, token)); out.append(generateChoiceEncoders(encoderName, messageBody)); out.append("}\n"); } }
private static void generateSingleComposite(final List<Token> tokens, final OutputManager outputManager) throws IOException { final Token beginToken = tokens.get(0); final String originalTypeName = beginToken.applicableTypeName(); final String formattedTypeName = formatTypeName(originalTypeName); final SplitCompositeTokens splitTokens = SplitCompositeTokens.splitInnerTokens(tokens); try (Writer writer = outputManager.createOutput(formattedTypeName)) { appendStructHeader(writer, formattedTypeName, true); appendStructFields(writer, splitTokens.nonConstantEncodingTokens()); writer.append("}\n"); generateConstantAccessorImpl(writer, formattedTypeName, getMessageBody(tokens)); } }
private static void generateSingleComposite(final List<Token> tokens, final OutputManager outputManager) throws IOException { final Token beginToken = tokens.get(0); final String originalTypeName = beginToken.applicableTypeName(); final String formattedTypeName = formatTypeName(originalTypeName); final SplitCompositeTokens splitTokens = SplitCompositeTokens.splitInnerTokens(tokens); try (Writer writer = outputManager.createOutput(formattedTypeName)) { appendStructHeader(writer, formattedTypeName, true); appendStructFields(writer, splitTokens.nonConstantEncodingTokens()); writer.append("}\n"); generateConstantAccessorImpl(writer, formattedTypeName, getMessageBody(tokens)); } }
private void generateBitSet(final List<Token> tokens) throws IOException { final Token token = tokens.get(0); final String bitSetName = formatClassName(token.applicableTypeName()); final String decoderName = decoderName(bitSetName); final String encoderName = encoderName(bitSetName); final List<Token> messageBody = getMessageBody(tokens); final String implementsString = implementsInterface(FLYWEIGHT); try (Writer out = outputManager.createOutput(decoderName)) { generateFixedFlyweightHeader(token, decoderName, implementsString, out, readOnlyBuffer, fqReadOnlyBuffer); out.append(generateChoiceIsEmpty(token.encoding().primitiveType())); out.append(generateChoiceDecoders(messageBody)); out.append(generateChoiceDisplay(messageBody)); out.append("}\n"); } try (Writer out = outputManager.createOutput(encoderName)) { generateFixedFlyweightHeader(token, encoderName, implementsString, out, mutableBuffer, fqMutableBuffer); out.append(generateChoiceClear(encoderName, token)); out.append(generateChoiceEncoders(encoderName, messageBody)); out.append("}\n"); } }
private void generateBitSet(final List<Token> tokens) throws IOException { final Token token = tokens.get(0); final String bitSetName = formatClassName(token.applicableTypeName()); final String decoderName = decoderName(bitSetName); final String encoderName = encoderName(bitSetName); final List<Token> messageBody = getMessageBody(tokens); final String implementsString = implementsInterface(FLYWEIGHT); try (Writer out = outputManager.createOutput(decoderName)) { generateFixedFlyweightHeader(token, decoderName, implementsString, out, readOnlyBuffer, fqReadOnlyBuffer); out.append(generateChoiceIsEmpty(token.encoding().primitiveType())); out.append(generateChoiceDecoders(messageBody)); out.append(generateChoiceDisplay(messageBody)); out.append("}\n"); } try (Writer out = outputManager.createOutput(encoderName)) { generateFixedFlyweightHeader(token, encoderName, implementsString, out, mutableBuffer, fqMutableBuffer); out.append(generateChoiceClear(encoderName, token)); out.append(generateChoiceEncoders(encoderName, messageBody)); out.append("}\n"); } }
private void generateComposite(final List<Token> tokens) throws IOException { final Token token = tokens.get(0); final String compositeName = formatClassName(token.name()); final String decoderName = decoderName(compositeName); final String encoderName = encoderName(compositeName); final List<Token> messageBody = getMessageBody(tokens); try (final Writer out = outputManager.createOutput(decoderName)) { generateFixedFlyweightHeader(token, decoderName, out, readOnlyBuffer, fullReadOnlyBuffer); out.append(concatEncodingTokens(messageBody, (tok) -> generatePrimitiveDecoder(tok.name(), tok, BASE_INDENT))); out.append("}\n"); } try (final Writer out = outputManager.createOutput(encoderName)) { generateFixedFlyweightHeader(token, encoderName, out, mutableBuffer, fullMutableBuffer); out.append(concatEncodingTokens(messageBody, (tok) -> generatePrimitiveEncoder(encoderName, tok.name(), tok, BASE_INDENT))); out.append("}\n"); } }