001package Torello.CSS;
002
003import java.util.Vector;
004
005/**
006 * CSS-Tokenizer Class for the <B>Comment-Delimiter Open</B> Token.
007 */
008@Torello.JavaDoc.JDHeaderBackgroundImg(EmbedTagFileID="CSS_TOK")
009public class CDO extends CSSToken
010    implements CharSequence, java.io.Serializable, Comparable<CharSequence>
011{
012    /** <EMBED CLASS='external-html' DATA-FILE-ID=SVUID> */
013    protected static final long serialVersionUID = 1;
014
015
016    // ********************************************************************************************
017    // ********************************************************************************************
018    // Private Constructor, API "is" and "if" Methods
019    // ********************************************************************************************
020    // ********************************************************************************************
021
022
023    static final CDO SINGLETON = new CDO();
024
025    private CDO() { super("<!--"); }
026
027    @Override 
028    public final boolean isCDO() { return true; }
029
030    @Override
031    public final CDO ifCDO() { return this; }
032
033
034    // ********************************************************************************************
035    // ********************************************************************************************
036    // Tokenizer's "is" Method(s)
037    // ********************************************************************************************
038    // ********************************************************************************************
039
040
041    /**
042     * Checks whether or not the next four code-point / characters are {@code '<', '!', '-'} and
043     * {@code '-'}
044     * 
045     * <EMBED CLASS=defs DATA-TOK="Comment-Delimiter Open" DATA-URL=CDO-token-diagram
046     *      DATA-OP=Consume>
047     * <EMBED CLASS=external-html DATA-FILE-ID=COPIED_CSS_WG_RR>
048     * <EMBED CLASS=external-html DATA-FILE-ID=CDO_TOK_SVG>
049     * @param css CSS-{@code String} as an array of code-points.
050     * @param sPos The array-index where the tokenizer is to consume its next token
051     * @return {@code TRUE} if and only if the next token in the array  is a CDO
052     */
053    public static boolean is(int[] css, int sPos)
054    {
055        final int c1 = ((sPos + 0) < css.length) ? css[sPos + 0] : 0;
056        final int c2 = ((sPos + 1) < css.length) ? css[sPos + 1] : 0;
057        final int c3 = ((sPos + 2) < css.length) ? css[sPos + 2] : 0;
058        final int c4 = ((sPos + 3) < css.length) ? css[sPos + 3] : 0;
059
060        return (c1 == '<') && (c2 == '!') && (c3 == '-') && (c4 == '-');
061    }
062}