edu.byu.ece.edif.util.export.serialize
Class NameReferenceObjectOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by java.io.ObjectOutputStream
          extended by edu.byu.ece.edif.util.export.serialize.NameReferenceObjectOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.DataOutput, java.io.Flushable, java.io.ObjectOutput, java.io.ObjectStreamConstants

public class NameReferenceObjectOutputStream
extends java.io.ObjectOutputStream

This is a customized version of ObjectOutputStream used for converting EDIF objects to corresponding name reference objects during serialization. The intended use is to serialize EDIF objects that are part of a reference EdifEnvironment with this class and then deserialize them with NameReferenceObjectInputStream which resolves the name references to the real EDIF objects in the reference EdifEnvironment. An example application would be to serialize an entire EDIF design using regular serialization (i.e. a .jedif file) and then serialize references to particular objects in the design using this class. When the references are deserialized they can be matched up to the original objects automatically. The supported EDIF object classes that can be replaced with name references automatically are: EdifCell, EdifCellInstance, EdifLibrary, EdifNet, EdifPort, EdifPortRef, and EdifSingleBitPort.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.io.ObjectOutputStream
java.io.ObjectOutputStream.PutField
 
Field Summary
protected  EdifEnvironment _referenceEnvironment
           
 
Fields inherited from interface java.io.ObjectStreamConstants
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
 
Constructor Summary
NameReferenceObjectOutputStream(java.io.OutputStream out, EdifEnvironment referenceEnvironment)
          Construct a NameReferenceObjectOutputStream with the given OutputStream and reference EdifEnvironment
 
Method Summary
protected  java.lang.Object replaceObject(java.lang.Object obj)
          Replace supported EDIF objects as they go into the stream with appropriate reference objects.
 
Methods inherited from class java.io.ObjectOutputStream
annotateClass, annotateProxyClass, close, defaultWriteObject, drain, enableReplaceObject, flush, putFields, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeClassDescriptor, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeObjectOverride, writeShort, writeStreamHeader, writeUnshared, writeUTF
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_referenceEnvironment

protected EdifEnvironment _referenceEnvironment
Constructor Detail

NameReferenceObjectOutputStream

public NameReferenceObjectOutputStream(java.io.OutputStream out,
                                       EdifEnvironment referenceEnvironment)
                                throws java.io.IOException
Construct a NameReferenceObjectOutputStream with the given OutputStream and reference EdifEnvironment

Parameters:
out -
referenceEnvironment -
Throws:
java.io.IOException
Method Detail

replaceObject

protected java.lang.Object replaceObject(java.lang.Object obj)
                                  throws java.io.IOException
Replace supported EDIF objects as they go into the stream with appropriate reference objects.

Overrides:
replaceObject in class java.io.ObjectOutputStream
Throws:
java.io.IOException