private void updateModifier(ProtoParser.FieldModifierContext modifierContext, Field field) { if (modifierContext != null) { if (modifierContext.OPTIONAL() != null) { field.setModifier(OPTIONAL); } else if (modifierContext.REQUIRED() != null) { field.setModifier(REQUIRED); } else if (modifierContext.REPEATED() != null) { field.setModifier(REPEATED); } else { throw new IllegalStateException("not implemented"); } } } }
private void updateModifier(ProtoParser.FieldModifierContext modifierContext, Field field) { if (modifierContext != null) { if (modifierContext.OPTIONAL() != null) { field.setModifier(OPTIONAL); } else if (modifierContext.REQUIRED() != null) { field.setModifier(REQUIRED); } else if (modifierContext.REPEATED() != null) { field.setModifier(REPEATED); } else { throw new IllegalStateException("not implemented"); } } } }
private Field createMapKeyField(Message map, String keyTypeName, SourceCodeLocation codeLocation) { Field keyField = new Field(map); keyField.setName(MAP_ENTRY_KEY); keyField.setTag(1); keyField.setIndex(1); keyField.setTypeName(keyTypeName); keyField.setModifier(OPTIONAL); keyField.setSourceCodeLocation(codeLocation); return keyField; }
private Field createMapValueField(Message map, String valueTypeName, SourceCodeLocation codeLocation) { Field valueField = new Field(map); valueField.setName(MAP_ENTRY_VALUE); valueField.setTag(2); valueField.setIndex(2); valueField.setModifier(OPTIONAL); valueField.setTypeName(valueTypeName); valueField.setSourceCodeLocation(codeLocation); return valueField; }
private Field createMapValueField(Message map, String valueTypeName, SourceCodeLocation codeLocation) { Field valueField = new Field(map); valueField.setName(MAP_ENTRY_VALUE); valueField.setTag(2); valueField.setIndex(2); valueField.setModifier(OPTIONAL); valueField.setTypeName(valueTypeName); valueField.setSourceCodeLocation(codeLocation); return valueField; }
private Field createMapKeyField(Message map, String keyTypeName, SourceCodeLocation codeLocation) { Field keyField = new Field(map); keyField.setName(MAP_ENTRY_KEY); keyField.setTag(1); keyField.setIndex(1); keyField.setTypeName(keyTypeName); keyField.setModifier(OPTIONAL); keyField.setSourceCodeLocation(codeLocation); return keyField; }
@Override public void exitMap(ProtoParser.MapContext ctx) { final Field field = context.pop(Field.class); final Message message = context.peek(Message.class); String name = ctx.fieldName().getText(); SourceCodeLocation codeLocation = getSourceCodeLocation(ctx); Message map = new Message(message); String mapEntryTypeName = name + "_entry"; map.setName(mapEntryTypeName); map.setSourceCodeLocation(codeLocation); map.getOptions().set(codeLocation, OPTION_MAP_ENTRY, Value.createBoolean(true)); String keyTypeName = ctx.mapKey().getText(); Field keyField = createMapKeyField(map, keyTypeName, codeLocation); map.addField(keyField); String valueTypeName = ctx.mapValue().getText(); Field valueField = createMapValueField(map, valueTypeName, codeLocation); map.addField(valueField); Integer tag = Integer.decode(ctx.tag().getText()); field.setName(name); field.setTag(tag); field.setIndex(message.getFieldCount() + 1); field.setModifier(REPEATED); field.setTypeName(mapEntryTypeName); field.setType(map); field.setSourceCodeLocation(codeLocation); message.addField(field); message.addMessage(map); attachComments(ctx, field, true); }
@Override public void exitMap(ProtoParser.MapContext ctx) { final Field field = context.pop(Field.class); final Message message = context.peek(Message.class); String name = ctx.fieldName().getText(); SourceCodeLocation codeLocation = getSourceCodeLocation(ctx); Message map = new Message(message); String mapEntryTypeName = name + "_entry"; map.setName(mapEntryTypeName); map.setSourceCodeLocation(codeLocation); map.getOptions().set(codeLocation, OPTION_MAP_ENTRY, Value.createBoolean(true)); String keyTypeName = ctx.mapKey().getText(); Field keyField = createMapKeyField(map, keyTypeName, codeLocation); map.addField(keyField); String valueTypeName = ctx.mapValue().getText(); Field valueField = createMapValueField(map, valueTypeName, codeLocation); map.addField(valueField); Integer tag = Integer.decode(ctx.tag().getText()); field.setName(name); field.setTag(tag); field.setIndex(message.getFieldCount() + 1); field.setModifier(REPEATED); field.setTypeName(mapEntryTypeName); field.setType(map); field.setSourceCodeLocation(codeLocation); message.addField(field); message.addMessage(map); attachComments(ctx, field, true); }