protected final void resizeStructureStrings() { _structureStringsPtr = 0; if (_currentStructureStringFragment.getNext() != null) { _currentStructureStringFragment = _currentStructureStringFragment.getNext(); _structureStrings = _currentStructureStringFragment.getArray(); } else { _structureStrings = new String[_structureStrings.length]; _currentStructureStringFragment = new FragmentedArray(_structureStrings, _currentStructureStringFragment); } }
FragmentedArray(T item, FragmentedArray<T> previous) { setArray(item); if (previous != null) { previous._next = this; _previous = previous; } }
protected final String readStructureString() { if (_structureStringsPtr < _structureStrings.length) { return _structureStrings[_structureStringsPtr++]; } _structureStringsPtr = 1; _currentStructureStringFragment = _currentStructureStringFragment.getNext(); _structureStrings = _currentStructureStringFragment.getArray(); return _structureStrings[0]; }
/** * Create a new MutableXMLStreamBuffer. * * @param size * The size of the arrays used in the internal representation * of the XML infoset. * @throws NegativeArraySizeException * If the <code>size</code> argument is less than <code>0</code>. */ public MutableXMLStreamBuffer(int size) { _structure = new FragmentedArray<byte[]>(new byte[size]); _structureStrings = new FragmentedArray<String[]>(new String[size]); _contentCharactersBuffer = new FragmentedArray<char[]>(new char[4096]); _contentObjects = new FragmentedArray<Object[]>(new Object[size]); // Set the first element of structure array to indicate an empty buffer // that has not been created _structure.getArray()[0] = (byte) AbstractCreatorProcessor.T_END; }
/** * Is the buffer created by creator. * * @return * <code>true</code> if the buffer has been created. */ public final boolean isCreated() { return _structure.getArray()[0] != AbstractCreatorProcessor.T_END; }
protected final Object readContentObject() { if (_contentObjectsPtr < _contentObjects.length) { return _contentObjects[_contentObjectsPtr++]; } _contentObjectsPtr = 1; _currentContentObjectFragment = _currentContentObjectFragment.getNext(); _contentObjects = _currentContentObjectFragment.getArray(); return _contentObjects[0]; }
/** * Is the buffer a representation of a fragment of an XML infoset. * * @return * <code>true</code> if the buffer is a representation of a fragment * of an XML infoset. */ public final boolean isFragment() { return (isCreated() && (_structure.getArray()[_structurePtr] & AbstractCreatorProcessor.TYPE_MASK) != AbstractCreatorProcessor.T_DOCUMENT); }
protected final void resizeContentCharacters() { _contentCharactersBufferPtr = 0; if (_currentContentCharactersBufferFragment.getNext() != null) { _currentContentCharactersBufferFragment = _currentContentCharactersBufferFragment.getNext(); _contentCharactersBuffer = _currentContentCharactersBufferFragment.getArray(); } else { _contentCharactersBuffer = new char[_contentCharactersBuffer.length]; _currentContentCharactersBufferFragment = new FragmentedArray(_contentCharactersBuffer, _currentContentCharactersBufferFragment); } }
/** * Is the buffer a representation of a fragment of an XML infoset * that is an element (and its contents). * * @return * <code>true</code> if the buffer a representation * of a fragment of an XML infoset that is an element (and its contents). */ public final boolean isElementFragment() { return (isCreated() && (_structure.getArray()[_structurePtr] & AbstractCreatorProcessor.TYPE_MASK) == AbstractCreatorProcessor.T_ELEMENT); }
protected final void resizeContentObjects() { _contentObjectsPtr = 0; if (_currentContentObjectFragment.getNext() != null) { _currentContentObjectFragment = _currentContentObjectFragment.getNext(); _contentObjects = _currentContentObjectFragment.getArray(); } else { _contentObjects = new Object[_contentObjects.length]; _currentContentObjectFragment = new FragmentedArray(_contentObjects, _currentContentObjectFragment); } } }
protected final int readContentCharactersBuffer(int length) { if (_contentCharactersBufferPtr + length < _contentCharactersBuffer.length) { final int start = _contentCharactersBufferPtr; _contentCharactersBufferPtr += length; return start; } _contentCharactersBufferPtr = length; _currentContentCharactersBufferFragment = _currentContentCharactersBufferFragment.getNext(); _contentCharactersBuffer = _currentContentCharactersBufferFragment.getArray(); return 0; }
protected final void setBuffer(MutableXMLStreamBuffer buffer) { _buffer = buffer; _currentStructureFragment = _buffer.getStructure(); _structure = _currentStructureFragment.getArray(); _structurePtr = 0; _currentStructureStringFragment = _buffer.getStructureStrings(); _structureStrings = _currentStructureStringFragment.getArray(); _structureStringsPtr = 0; _currentContentCharactersBufferFragment = _buffer.getContentCharactersBuffer(); _contentCharactersBuffer = _currentContentCharactersBufferFragment.getArray(); _contentCharactersBufferPtr = 0; _currentContentObjectFragment = _buffer.getContentObjects(); _contentObjects = _currentContentObjectFragment.getArray(); _contentObjectsPtr = 0; }
protected final void resizeStructure() { _structurePtr = 0; if (_currentStructureFragment.getNext() != null) { _currentStructureFragment = _currentStructureFragment.getNext(); _structure = _currentStructureFragment.getArray(); } else { _structure = new byte[_structure.length]; _currentStructureFragment = new FragmentedArray(_structure, _currentStructureFragment); } }
protected final void setBuffer(XMLStreamBuffer buffer, boolean fragmentMode) { _buffer = buffer; _fragmentMode = fragmentMode; _currentStructureFragment = _buffer.getStructure(); _structure = _currentStructureFragment.getArray(); _structurePtr = _buffer.getStructurePtr(); _currentStructureStringFragment = _buffer.getStructureStrings(); _structureStrings = _currentStructureStringFragment.getArray(); _structureStringsPtr = _buffer.getStructureStringsPtr(); _currentContentCharactersBufferFragment = _buffer.getContentCharactersBuffer(); _contentCharactersBuffer = _currentContentCharactersBufferFragment.getArray(); _contentCharactersBufferPtr = _buffer.getContentCharactersBufferPtr(); _currentContentObjectFragment = _buffer.getContentObjects(); _contentObjects = _currentContentObjectFragment.getArray(); _contentObjectsPtr = _buffer.getContentObjectsPtr(); _stringInterningFeature = _buffer.hasInternedStrings(); _treeCount = _buffer.treeCount; }