311312313314315316317318319320321
} } static final Type resolve(Class klass) { Type type = ENCODINGS.get(klass); if (type != null) { return type; }
357358359360361362363364365366367
{ for (Map.Entry<String,Object> entry : map.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); Type type = encoding(value); writeStr8(key); put(type.getCode()); write(type, value); } }
379380381382383384385386387388
protected void writeListEntries(List<Object> list) { for (Object value : list) { Type type = encoding(value); put(type.getCode()); write(type, value); } }
397398399400401402403404405406407408409410411412413414415416417418
endSize32(pos); } protected void writeArrayEntries(List<Object> array) { Type type; if (array.isEmpty()) { return; } else { type = encoding(array.get(0)); } put(type.getCode()); writeUint32(array.size()); for (Object value : array) {
282283284285286287288289290291292
Map<String,Object> result = new LinkedHashMap(); for (int i = 0; i < count; i++) { String key = readStr8(); byte code = get(); Type t = getType(code); Object value = read(t); result.put(key, value); } return result;
310311312313314315316317318319320
List<Object> result = new ArrayList(); for (int i = 0; i < count; i++) { byte code = get(); Type t = getType(code); Object value = read(t); result.add(value); } return result; }
327328329330331332333334335336337
{ return null; } byte code = get(); Type t = getType(code); long count = readUint32(); if (count == 0) { return Collections.EMPTY_LIST;
346347348349350351352353354355356
return result; } private Type getType(byte code) { Type type = Type.get(code); if (type == null) { throw new IllegalArgumentException("unknown code: " + code); } else
296297298299300301302303304305306
{ return Type.VOID; } Class klass = value.getClass(); Type type = resolve(klass); if (type == null) { throw new IllegalArgumentException ("unable to resolve type: " + klass + ", " + value);