com.sun.org.apache.xml.internal.utils.FastStringBuffer

Here are the examples of the java api class com.sun.org.apache.xml.internal.utils.FastStringBuffer taken from open source projects.

1. XStringForFSB#getChars()

Project: openjdk
Source File: XStringForFSB.java
View license
/**
   * Copies characters from this string into the destination character
   * array.
   *
   * @param      srcBegin   index of the first character in the string
   *                        to copy.
   * @param      srcEnd     index after the last character in the string
   *                        to copy.
   * @param      dst        the destination array.
   * @param      dstBegin   the start offset in the destination array.
   * @exception IndexOutOfBoundsException If any of the following
   *            is true:
   *            <ul><li><code>srcBegin</code> is negative.
   *            <li><code>srcBegin</code> is greater than <code>srcEnd</code>
   *            <li><code>srcEnd</code> is greater than the length of this
   *                string
   *            <li><code>dstBegin</code> is negative
   *            <li><code>dstBegin+(srcEnd-srcBegin)</code> is larger than
   *                <code>dst.length</code></ul>
   * @exception NullPointerException if <code>dst</code> is <code>null</code>
   */
public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
    // %OPT% Need to call this on FSB when it is implemented.
    // %UNTESTED% (I don't think anyone calls this yet?)
    int n = srcEnd - srcBegin;
    if (n > m_length)
        n = m_length;
    if (n > (dst.length - dstBegin))
        n = (dst.length - dstBegin);
    int end = srcBegin + m_start + n;
    int d = dstBegin;
    FastStringBuffer fsb = fsb();
    for (int i = srcBegin + m_start; i < end; i++) {
        dst[d++] = fsb.charAt(i);
    }
}

2. DOM2DTM#getNodeValue()

Project: openjdk
Source File: DOM2DTM.java
View license
/**
   * Given a node handle, return its node value. This is mostly
   * as defined by the DOM, but may ignore some conveniences.
   * <p>
   *
   * @param nodeHandle The node id.
   * @return String Value of this node, or null if not
   * meaningful for this node type.
   */
public String getNodeValue(int nodeHandle) {
    // The _type(nodeHandle) call was taking the lion's share of our
    // time, and was wrong anyway since it wasn't coverting handle to
    // identity. Inlined it.
    int type = _exptype(makeNodeIdentity(nodeHandle));
    type = (NULL != type) ? getNodeType(nodeHandle) : NULL;
    if (TEXT_NODE != type && CDATA_SECTION_NODE != type)
        return getNode(nodeHandle).getNodeValue();
    // If this is a DTM text node, it may be made of multiple DOM text
    // nodes -- including navigating into Entity References. DOM2DTM
    // records the first node in the sequence and requires that we
    // pick up the others when we retrieve the DTM node's value.
    //
    // %REVIEW% DOM Level 3 is expected to add a "whole text"
    // retrieval method which performs this function for us.
    Node node = getNode(nodeHandle);
    Node n = logicalNextDOMTextNode(node);
    if (n == null)
        return node.getNodeValue();
    FastStringBuffer buf = StringBufferPool.get();
    buf.append(node.getNodeValue());
    while (n != null) {
        buf.append(n.getNodeValue());
        n = logicalNextDOMTextNode(n);
    }
    String s = (buf.length() > 0) ? buf.toString() : "";
    StringBufferPool.free(buf);
    return s;
}

3. XStringForFSB#compareTo()

Project: openjdk
Source File: XStringForFSB.java
View license
/**
   * Compares two strings lexicographically.
   *
   * @param   xstr   the <code>String</code> to be compared.
   *
   * @return  the value <code>0</code> if the argument string is equal to
   *          this string; a value less than <code>0</code> if this string
   *          is lexicographically less than the string argument; and a
   *          value greater than <code>0</code> if this string is
   *          lexicographically greater than the string argument.
   * @exception java.lang.NullPointerException if <code>anotherString</code>
   *          is <code>null</code>.
   */
public int compareTo(XMLString xstr) {
    int len1 = m_length;
    int len2 = xstr.length();
    int n = Math.min(len1, len2);
    FastStringBuffer fsb = fsb();
    int i = m_start;
    int j = 0;
    while (n-- != 0) {
        char c1 = fsb.charAt(i);
        char c2 = xstr.charAt(j);
        if (c1 != c2) {
            return c1 - c2;
        }
        i++;
        j++;
    }
    return len1 - len2;
}

4. XStringForFSB#compareToIgnoreCase()

Project: openjdk
Source File: XStringForFSB.java
View license
/**
   * Compares two strings lexicographically, ignoring case considerations.
   * This method returns an integer whose sign is that of
   * <code>this.toUpperCase().toLowerCase().compareTo(
   * str.toUpperCase().toLowerCase())</code>.
   * <p>
   * Note that this method does <em>not</em> take locale into account,
   * and will result in an unsatisfactory ordering for certain locales.
   * The java.text package provides <em>collators</em> to allow
   * locale-sensitive ordering.
   *
   * @param   xstr   the <code>String</code> to be compared.
   *
   * @return  a negative integer, zero, or a positive integer as the
   *          the specified String is greater than, equal to, or less
   *          than this String, ignoring case considerations.
   * @see     java.text.Collator#compare(String, String)
   * @since   1.2
   */
public int compareToIgnoreCase(XMLString xstr) {
    int len1 = m_length;
    int len2 = xstr.length();
    int n = Math.min(len1, len2);
    FastStringBuffer fsb = fsb();
    int i = m_start;
    int j = 0;
    while (n-- != 0) {
        char c1 = Character.toLowerCase(fsb.charAt(i));
        char c2 = Character.toLowerCase(xstr.charAt(j));
        if (c1 != c2) {
            return c1 - c2;
        }
        i++;
        j++;
    }
    return len1 - len2;
}

5. XStringForFSB#startsWith()

Project: openjdk
Source File: XStringForFSB.java
View license
/**
   * Tests if this string starts with the specified prefix beginning
   * a specified index.
   *
   * @param   prefix    the prefix.
   * @param   toffset   where to begin looking in the string.
   * @return  <code>true</code> if the character sequence represented by the
   *          argument is a prefix of the substring of this object starting
   *          at index <code>toffset</code>; <code>false</code> otherwise.
   *          The result is <code>false</code> if <code>toffset</code> is
   *          negative or greater than the length of this
   *          <code>String</code> object; otherwise the result is the same
   *          as the result of the expression
   *          <pre>
   *          this.subString(toffset).startsWith(prefix)
   *          </pre>
   * @exception java.lang.NullPointerException if <code>prefix</code> is
   *          <code>null</code>.
   */
public boolean startsWith(XMLString prefix, int toffset) {
    FastStringBuffer fsb = fsb();
    int to = m_start + toffset;
    int tlim = m_start + m_length;
    int po = 0;
    int pc = prefix.length();
    // Note: toffset might be near -1>>>1.
    if ((toffset < 0) || (toffset > m_length - pc)) {
        return false;
    }
    while (--pc >= 0) {
        if (fsb.charAt(to) != prefix.charAt(po)) {
            return false;
        }
        to++;
        po++;
    }
    return true;
}

6. XStringForFSB#indexOf()

Project: openjdk
Source File: XStringForFSB.java
View license
/**
   * Returns the index within this string of the first occurrence of the
   * specified character, starting the search at the specified index.
   * <p>
   * If a character with value <code>ch</code> occurs in the character
   * sequence represented by this <code>String</code> object at an index
   * no smaller than <code>fromIndex</code>, then the index of the first
   * such occurrence is returned--that is, the smallest value <i>k</i>
   * such that:
   * <blockquote><pre>
   * (this.charAt(<i>k</i>) == ch) && (<i>k</i> >= fromIndex)
   * </pre></blockquote>
   * is true. If no such character occurs in this string at or after
   * position <code>fromIndex</code>, then <code>-1</code> is returned.
   * <p>
   * There is no restriction on the value of <code>fromIndex</code>. If it
   * is negative, it has the same effect as if it were zero: this entire
   * string may be searched. If it is greater than the length of this
   * string, it has the same effect as if it were equal to the length of
   * this string: <code>-1</code> is returned.
   *
   * @param   ch          a character.
   * @param   fromIndex   the index to start the search from.
   * @return  the index of the first occurrence of the character in the
   *          character sequence represented by this object that is greater
   *          than or equal to <code>fromIndex</code>, or <code>-1</code>
   *          if the character does not occur.
   */
public int indexOf(int ch, int fromIndex) {
    int max = m_start + m_length;
    FastStringBuffer fsb = fsb();
    if (fromIndex < 0) {
        fromIndex = 0;
    } else if (fromIndex >= m_length) {
        // Note: fromIndex might be near -1>>>1.
        return -1;
    }
    for (int i = m_start + fromIndex; i < max; i++) {
        if (fsb.charAt(i) == ch) {
            return i - m_start;
        }
    }
    return -1;
}

7. XStringForFSB#fixWhiteSpace()

Project: openjdk
Source File: XStringForFSB.java
View license
/**
   * Conditionally trim all leading and trailing whitespace in the specified String.
   * All strings of white space are
   * replaced by a single space character (#x20), except spaces after punctuation which
   * receive double spaces if doublePunctuationSpaces is true.
   * This function may be useful to a formatter, but to get first class
   * results, the formatter should probably do it's own white space handling
   * based on the semantics of the formatting object.
   *
   * @param   trimHead    Trim leading whitespace?
   * @param   trimTail    Trim trailing whitespace?
   * @param   doublePunctuationSpaces    Use double spaces for punctuation?
   * @return              The trimmed string.
   */
public XMLString fixWhiteSpace(boolean trimHead, boolean trimTail, boolean doublePunctuationSpaces) {
    int end = m_length + m_start;
    char[] buf = new char[m_length];
    FastStringBuffer fsb = fsb();
    boolean edit = false;
    /* replace S to ' '. and ' '+ -> single ' '. */
    int d = 0;
    boolean pres = false;
    for (int s = m_start; s < end; s++) {
        char c = fsb.charAt(s);
        if (isSpace(c)) {
            if (!pres) {
                if (' ' != c) {
                    edit = true;
                }
                buf[d++] = ' ';
                if (doublePunctuationSpaces && (d != 0)) {
                    char prevChar = buf[d - 1];
                    if (!((prevChar == '.') || (prevChar == '!') || (prevChar == '?'))) {
                        pres = true;
                    }
                } else {
                    pres = true;
                }
            } else {
                edit = true;
                pres = true;
            }
        } else {
            buf[d++] = c;
            pres = false;
        }
    }
    if (trimTail && 1 <= d && ' ' == buf[d - 1]) {
        edit = true;
        d--;
    }
    int start = 0;
    if (trimHead && 0 < d && ' ' == buf[0]) {
        edit = true;
        start++;
    }
    XMLStringFactory xsf = XMLStringFactoryImpl.getFactory();
    return edit ? xsf.newstr(buf, start, d - start) : this;
}