protected <T extends Asn1Type> T getFieldAs(EnumType index, Class<T> t) { return tagged.getFieldAs(index, t); }
protected Integer getFieldAsInteger(EnumType index) { return tagged.getFieldAsInteger(index); }
protected byte[] getFieldAsOctets(EnumType index) { return tagged.getFieldAsOctets(index); }
@Override protected void decodeBody(Asn1ParseResult parseResult) throws IOException { useDefinitiveLength(parseResult.isDefinitiveLength()); Asn1Container container = (Asn1Container) parseResult; List<Asn1ParseResult> parseResults = container.getChildren(); int lastPos = -1, foundPos = -1; for (Asn1ParseResult parseItem : parseResults) { if (parseItem.isEOC()) { continue; } foundPos = match(lastPos, parseItem); if (foundPos == -1) { throw new IOException("Unexpected item: " + parseItem.simpleInfo()); } lastPos = foundPos; attemptBinding(parseItem, foundPos); } }
protected void setFieldAs(EnumType index, Asn1Type value) { tagged.setFieldAs(index, value); }
protected void setAnyFieldValueType(EnumType index, Class<? extends Asn1Type> valueType) { if (valueType != null) { checkAndInitField(index.getValue()); Asn1Type value = fields[index.getValue()]; if (value != null && value instanceof Asn1Any) { Asn1Any any = (Asn1Any) value; any.setValueType(valueType); } } }
protected void setFieldAs(EnumType index, Asn1Type value) { resetBodyLength(); // Reset the pre-computed body length if (value instanceof Asn1Encodeable) { ((Asn1Encodeable) value).outerEncodeable = this; } fields[index.getValue()] = value; }
protected String getFieldAsString(EnumType index) { return tagged.getFieldAsString(index); }
protected void setFieldAsInt(EnumType index, int value) { tagged.setFieldAsInt(index, value); }
@Override protected void decodeBody(Asn1ParseResult parseResult) throws IOException { useDefinitiveLength(parseResult.isDefinitiveLength()); Asn1Container container = (Asn1Container) parseResult; List<Asn1ParseResult> parseResults = container.getChildren(); int lastPos = -1, foundPos = -1; for (Asn1ParseResult parseItem : parseResults) { if (parseItem.isEOC()) { continue; } foundPos = match(lastPos, parseItem); if (foundPos == -1) { throw new IOException("Unexpected item: " + parseItem.simpleInfo()); } lastPos = foundPos; attemptBinding(parseItem, foundPos); } }
protected void setFieldAs(EnumType index, Asn1Type value) { tagged.setFieldAs(index, value); }
protected void setAnyFieldValueType(EnumType index, Class<? extends Asn1Type> valueType) { if (valueType != null) { checkAndInitField(index.getValue()); Asn1Type value = fields[index.getValue()]; if (value != null && value instanceof Asn1Any) { Asn1Any any = (Asn1Any) value; any.setValueType(valueType); } } }
protected void setFieldAs(EnumType index, Asn1Type value) { resetBodyLength(); // Reset the pre-computed body length if (value instanceof Asn1Encodeable) { ((Asn1Encodeable) value).outerEncodeable = this; } fields[index.getValue()] = value; }
protected String getFieldAsString(EnumType index) { return tagged.getFieldAsString(index); }
protected void setFieldAsInt(EnumType index, int value) { tagged.setFieldAsInt(index, value); }
protected void setFieldAsOctets(EnumType index, byte[] bytes) { Asn1OctetString value = new Asn1OctetString(bytes); setFieldAs(index, value); }
protected <T extends Asn1Type> T getFieldAs(EnumType index, Class<T> t) { return tagged.getFieldAs(index, t); }
private void attemptBinding(Asn1ParseResult parseItem, int foundPos) throws IOException { Asn1FieldInfo fieldInfo = fieldInfos[foundPos]; checkAndInitField(foundPos); Asn1Type fieldValue = fields[foundPos]; if (fieldValue instanceof Asn1Any) { Asn1Any any = (Asn1Any) fieldValue; any.setDecodeInfo(fieldInfo); Asn1Binder.bind(parseItem, any); } else { if (parseItem.isContextSpecific()) { Asn1Binder.bindWithTagging(parseItem, fieldValue, fieldInfo.getTaggingOption()); } else { Asn1Binder.bind(parseItem, fieldValue); } } }
protected byte[] getFieldAsOctets(EnumType index) { return tagged.getFieldAsOctets(index); }
protected Integer getFieldAsInteger(EnumType index) { return tagged.getFieldAsInteger(index); }