private void tryWriteTypeCode(TypeCode typeCode, CDROutputStream out, Map recursiveTCMap, Map repeatedTCMap) throws BadKind, Bounds { final int kind = typeCode.kind().value(); out.write_long( kind ); // remember tc start pos before we start writing it // out final Integer startPosition = Integer.valueOf(out.get_pos()); recursiveTCMap.put( typeCode.id(), startPosition ); out.beginEncapsulation(); doWriteTypeCodeParameters(typeCode, out, recursiveTCMap, repeatedTCMap); out.endEncapsulation(); recursiveTCMap.remove(typeCode.id()); // add typecode to cache not until here to account for // recursive TCs repeatedTCMap.put(typeCode, startPosition); }
public void writeTypeCode(TypeCode typeCode, CDROutputStream out, Map recursiveTCMap, Map repeatedTCMap) { final int kind = typeCode.kind().value(); out.write_long(kind); out.beginEncapsulation(); try { out.write_TypeCode( typeCode.content_type(), recursiveTCMap, repeatedTCMap); out.write_long(typeCode.length()); out.endEncapsulation(); } catch (BadKind e) { assert false; throw new RuntimeException(e); } } }