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 generateGroups( final StringBuilder sb, final String parentMessageClassName, final List<Token> tokens, final String indent) { for (int i = 0, size = tokens.size(); i < size; i++) { final Token groupToken = tokens.get(i); if (groupToken.signal() != Signal.BEGIN_GROUP) { throw new IllegalStateException("tokens must begin with BEGIN_GROUP: token=" + groupToken); } final String groupName = groupToken.name(); sb.append(generateGroupProperty(groupName, groupToken, indent + INDENT)); generateGroupClassHeader(sb, groupName, parentMessageClassName, tokens, i, indent + INDENT); i++; i += tokens.get(i).componentTokenCount(); final List<Token> fields = new ArrayList<>(); i = collectFields(tokens, i, fields); sb.append(generateFields(fields, indent + INDENT)); final List<Token> groups = new ArrayList<>(); i = collectGroups(tokens, i, groups); generateGroups(sb, parentMessageClassName, groups, indent + INDENT); final List<Token> varData = new ArrayList<>(); i = collectVarData(tokens, i, varData); sb.append(generateVarData(varData, indent + INDENT + INDENT)); sb.append(indent).append(INDENT + "}\n"); } }
private void generateGroups(final StringBuilder sb, final List<Token> tokens, final String prefix) { for (int i = 0, size = tokens.size(); i < size; i++) { final Token groupToken = tokens.get(i); if (groupToken.signal() != Signal.BEGIN_GROUP) { throw new IllegalStateException("tokens must begin with BEGIN_GROUP: token=" + groupToken); } // Make a unique Group name by adding our parent final String groupName = prefix + formatTypeName(groupToken.name()); ++i; final int groupHeaderTokenCount = tokens.get(i).componentTokenCount(); i += groupHeaderTokenCount; final List<Token> fields = new ArrayList<>(); i = collectFields(tokens, i, fields); generateFields(sb, groupName, fields); final List<Token> groups = new ArrayList<>(); i = collectGroups(tokens, i, groups); generateGroups(sb, groups, groupName); final List<Token> varData = new ArrayList<>(); i = collectVarData(tokens, i, varData); generateVarData(sb, formatTypeName(groupName), varData); } }
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); } }
collectVarData(messageBody, offset, varData); out.append(generateVarData(varData, BASE_INDENT + INDENT));
i = collectVarData(tokens, i, varData);
collectVarData(messageBody, i, varData);
i = collectVarData(tokens, i, varData);
private void generateGroups(final StringBuilder sb, final List<Token> tokens, final String indent) { for (int i = 0, size = tokens.size(); i < size; i++) { final Token groupToken = tokens.get(i); if (groupToken.signal() != Signal.BEGIN_GROUP) { throw new IllegalStateException("tokens must begin with BEGIN_GROUP: token=" + groupToken); } final String groupName = groupToken.name(); final Token numInGroupToken = Generators.findFirst("numInGroup", tokens, i); final String cppTypeForNumInGroup = cppTypeName(numInGroupToken.encoding().primitiveType()); generateGroupClassHeader(sb, groupName, tokens, i, indent + INDENT); ++i; final int groupHeaderTokenCount = tokens.get(i).componentTokenCount(); i += groupHeaderTokenCount; final List<Token> fields = new ArrayList<>(); i = collectFields(tokens, i, fields); sb.append(generateFields(formatClassName(groupName), fields, indent + INDENT)); final List<Token> groups = new ArrayList<>(); i = collectGroups(tokens, i, groups); generateGroups(sb, groups, indent + INDENT); final List<Token> varData = new ArrayList<>(); i = collectVarData(tokens, i, varData); sb.append(generateVarData(formatClassName(groupName), varData, indent + INDENT)); sb.append(indent).append(" };\n"); sb.append(generateGroupProperty(groupName, groupToken, cppTypeForNumInGroup, indent)); } }
i = collectVarData(groupsTokens, i, varData); final List<VarDataSummary> varDataSummaries = VarDataSummary.gatherVarDataSummaries(varData);
collectVarData(messageBody, i, 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); } }
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 generateGroups( final StringBuilder sb, final String parentMessageClassName, final List<Token> tokens, final String indent) { for (int i = 0, size = tokens.size(); i < size; i++) { final Token groupToken = tokens.get(i); if (groupToken.signal() != Signal.BEGIN_GROUP) { throw new IllegalStateException("tokens must begin with BEGIN_GROUP: token=" + groupToken); } final String groupName = groupToken.name(); sb.append(generateGroupProperty(groupName, groupToken, indent + INDENT)); generateGroupClassHeader(sb, groupName, parentMessageClassName, tokens, i, indent + INDENT); i++; i += tokens.get(i).componentTokenCount(); final List<Token> fields = new ArrayList<>(); i = collectFields(tokens, i, fields); sb.append(generateFields(fields, indent + INDENT)); final List<Token> groups = new ArrayList<>(); i = collectGroups(tokens, i, groups); generateGroups(sb, parentMessageClassName, groups, indent + INDENT); final List<Token> varData = new ArrayList<>(); i = collectVarData(tokens, i, varData); sb.append(generateVarData(varData, indent + INDENT + INDENT)); sb.append(indent).append(INDENT + "}\n"); } }
collectVarData(messageBody, offset, varData); out.append(generateVarData(varData, BASE_INDENT + INDENT));
private void generateGroups(final StringBuilder sb, final List<Token> tokens, final String prefix) { for (int i = 0, size = tokens.size(); i < size; i++) { final Token groupToken = tokens.get(i); if (groupToken.signal() != Signal.BEGIN_GROUP) { throw new IllegalStateException("tokens must begin with BEGIN_GROUP: token=" + groupToken); } // Make a unique Group name by adding our parent final String groupName = prefix + formatTypeName(groupToken.name()); ++i; final int groupHeaderTokenCount = tokens.get(i).componentTokenCount(); i += groupHeaderTokenCount; final List<Token> fields = new ArrayList<>(); i = collectFields(tokens, i, fields); generateFields(sb, groupName, fields); final List<Token> groups = new ArrayList<>(); i = collectGroups(tokens, i, groups); generateGroups(sb, groups, groupName); final List<Token> varData = new ArrayList<>(); i = collectVarData(tokens, i, varData); generateVarData(sb, formatTypeName(groupName), varData); } }
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); } }
collectVarData(messageBody, i, varData);
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 generateGroups(final StringBuilder sb, final List<Token> tokens, final String indent) { for (int i = 0, size = tokens.size(); i < size; i++) { final Token groupToken = tokens.get(i); if (groupToken.signal() != Signal.BEGIN_GROUP) { throw new IllegalStateException("tokens must begin with BEGIN_GROUP: token=" + groupToken); } final String groupName = groupToken.name(); final Token numInGroupToken = Generators.findFirst("numInGroup", tokens, i); final String cppTypeForNumInGroup = cppTypeName(numInGroupToken.encoding().primitiveType()); generateGroupClassHeader(sb, groupName, tokens, i, indent + INDENT); ++i; final int groupHeaderTokenCount = tokens.get(i).componentTokenCount(); i += groupHeaderTokenCount; final List<Token> fields = new ArrayList<>(); i = collectFields(tokens, i, fields); sb.append(generateFields(formatClassName(groupName), fields, indent + INDENT, false)); final List<Token> groups = new ArrayList<>(); i = collectGroups(tokens, i, groups); generateGroups(sb, groups, indent + INDENT); final List<Token> varData = new ArrayList<>(); i = collectVarData(tokens, i, varData); sb.append(generateVarData(formatClassName(groupName), varData, indent + INDENT)); sb.append(indent).append(" };\n"); sb.append(generateGroupProperty(groupName, groupToken, cppTypeForNumInGroup, indent)); } }