Package org.eclipse.handly.buffer
Class ChildBuffer
java.lang.Object
org.eclipse.handly.buffer.Buffer
org.eclipse.handly.buffer.ChildBuffer
- All Implemented Interfaces:
AutoCloseable,IBuffer,ISnapshotProvider,IReferenceCountable
A child buffer is created on top of a parent
IBuffer and inherits
the parent's contents initially, but is modified independently. Saving the
child buffer propagates its contents to the parent buffer and also to the
parent buffer's underlying resource.
An instance of this class is safe for use by multiple threads.
-
Constructor Summary
ConstructorsConstructorDescriptionChildBuffer(IBuffer parent) Creates a new child buffer instance on top of the given parent buffer and initializes it with the parent's contents. -
Method Summary
Methods inherited from class org.eclipse.handly.buffer.Buffer
addListener, applyChange, createEmptyDocument, getDocument, getListeners, getSnapshot, getSupportedListenerMethods, isDirty, removeListener, saveMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.eclipse.handly.buffer.IBuffer
getAnnotationModelMethods inherited from interface org.eclipse.handly.util.IReferenceCountable
close
-
Constructor Details
-
ChildBuffer
Creates a new child buffer instance on top of the given parent buffer and initializes it with the parent's contents.The child buffer takes an independent ownership of the parent buffer to ensure that it is kept open as long as the child buffer is in use. The client still owns the parent buffer, but may release it immediately.
It is the client responsibility to
releasethe created buffer after it is no longer needed.- Parameters:
parent- the parent buffer (notnull)- Throws:
IllegalStateException- if the child buffer could not be created because of an inappropriate state of the parent buffer
-
-
Method Details
-
addRef
public void addRef()Description copied from interface:IReferenceCountableSpawns a new independent ownership of this object. Each successful call toaddRef()must ultimately be followed by exactly one call toIReferenceCountable.release().- Specified by:
addRefin interfaceIBuffer- Specified by:
addRefin interfaceIReferenceCountable- Specified by:
addRefin interfaceISnapshotProvider- Overrides:
addRefin classBuffer
-
release
public void release()Description copied from interface:IReferenceCountableRelinquishes an independent ownership of this object. Each independent ownership of the object must ultimately end with exactly one call to this method.- Specified by:
releasein interfaceIBuffer- Specified by:
releasein interfaceIReferenceCountable- Specified by:
releasein interfaceISnapshotProvider- Overrides:
releasein classBuffer- See Also:
-
doSave
protected void doSave(IContext context, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
-