| 1433 | } |
| 1434 | |
| 1435 | private Object readTagged(Object o, Symbol tag, Object opts, Object pendingForms){ |
| 1436 | |
| 1437 | ILookup data_readers = (ILookup)RT.DATA_READERS.deref(); |
| 1438 | IFn data_reader = (IFn)RT.get(data_readers, tag); |
| 1439 | if(data_reader == null){ |
| 1440 | data_readers = (ILookup)RT.DEFAULT_DATA_READERS.deref(); |
| 1441 | data_reader = (IFn)RT.get(data_readers, tag); |
| 1442 | if(data_reader == null){ |
| 1443 | IFn default_reader = (IFn)RT.DEFAULT_DATA_READER_FN.deref(); |
| 1444 | if(default_reader != null) |
| 1445 | return default_reader.invoke(tag, o); |
| 1446 | else |
| 1447 | throw new RuntimeException("No reader function for tag " + tag.toString()); |
| 1448 | } |
| 1449 | } |
| 1450 | |
| 1451 | return data_reader.invoke(o); |
| 1452 | } |
| 1453 | |
| 1454 | private Object readRecord(Object form, Symbol recordName, Object opts, Object pendingForms){ |
| 1455 | boolean readeval = RT.booleanCast(RT.READEVAL.deref()); |