/** * Deserialializes a real. */ private void touchReal() { final double value = readDouble(); final ATermConstruct ac = _stack[_stackPosition]; final ATerm term = _factory.makeReal(value); _sharedTerms[ac.termIndex] = term; linkTerm(term); }
readData(); final int index = readInt(); final ATerm term = _sharedTerms[index]; _stackPosition++; linkTerm(term); ensureSharedTermsCapacity(); touchAppl(header); break TYPECHECK; case ATerm.LIST: touchList(); break TYPECHECK; case ATerm.INT: touchInt(); break TYPECHECK; case ATerm.REAL: touchReal(); break TYPECHECK; case ATerm.LONG: touchLong(); break TYPECHECK; case ATerm.BLOB: touchBlob(); break TYPECHECK; case ATerm.PLACEHOLDER: touchPlaceholder();
final BinaryReader binaryReader = new BinaryReader(pureFactory); byteBuffer.flip(); binaryReader.deserialize(byteBuffer); } while (position < length); if (!binaryReader.isDone()) throw new OpenError("Term incomplete, missing data.\n"); return binaryReader.getRoot();
public void read(final byte[] input, final ATerm expectedResult) { final ByteBuffer buffer = ByteBuffer.allocate(input.length); buffer.put(input); buffer.flip(); final BinaryReader binaryReader = new BinaryReader(_pureFactory); binaryReader.deserialize(buffer); final ATerm result = binaryReader.getRoot(); if (result != expectedResult) { log("The result didn't match the _expected result."); /*log("Was: "+result+", _expected: "+expectedResult);*/ return; } log("Reading OK for: " + expectedResult); }
/** * Links the given term with it's parent. * * @param aTerm * The term that needs to be linked. */ private void linkTerm(final ATerm aTerm) { ATerm term = aTerm; while (_stackPosition != 0) { final ATermConstruct parent = _stack[--_stackPosition]; final ATerm[] subTerms = parent.subTerms; if (subTerms != null && subTerms.length > parent.subTermIndex) { subTerms[parent.subTermIndex++] = term; if (parent.subTerms.length != parent.subTermIndex) return; } else throw new OpenError("Encountered a term that didn't fit anywhere. Type: " + term.getType()); term = buildTerm(parent); _sharedTerms[parent.termIndex] = term; } if (_stackPosition == 0) _isDone = true; }
final BinaryReader binaryReader = new BinaryReader(pureFactory); throw new IOException("Unable to read bytes from file " + bytesRead + " vs " + blockSize + "."); binaryReader.deserialize(byteBuffer); } while (bytesRead > 0); if (!binaryReader.isDone()) throw new OpenError("Term incomplete, missing data.\n"); return binaryReader.getRoot();
@Test public void testChunkification() throws VisitFailure { final ATerm in = makeBigDummyTerm(2500); final ByteBuffer buffer = ByteBuffer.allocate(1000); final BinaryWriter bw = new BinaryWriter(in); final BinaryReader binaryReader = new BinaryReader(_pureFactory); while (!binaryReader.isDone()) { buffer.clear(); bw.serialize(buffer); binaryReader.deserialize(buffer); } final ATerm result = binaryReader.getRoot(); if (result == in) log("Chunkification OK"); else log("Chunkification FAILED"); }