001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jface.text.rules;
011:
012: import org.eclipse.core.runtime.Assert;
013:
014: /**
015: * Standard implementation of <code>IToken</code>.
016: */
017: public class Token implements IToken {
018:
019: /** Internal token type: Undefined */
020: private static final int T_UNDEFINED = 0;
021: /** Internal token type: EOF */
022: private static final int T_EOF = 1;
023: /** Internal token type: Whitespace */
024: private static final int T_WHITESPACE = 2;
025: /** Internal token type: Others */
026: private static final int T_OTHER = 3;
027:
028: /**
029: * Standard token: Undefined.
030: */
031: public static final IToken UNDEFINED = new Token(T_UNDEFINED);
032: /**
033: * Standard token: End Of File.
034: */
035: public static final IToken EOF = new Token(T_EOF);
036: /**
037: * Standard token: Whitespace.
038: */
039: public static final IToken WHITESPACE = new Token(T_WHITESPACE);
040:
041: /**
042: * Standard token: Neither {@link #UNDEFINED}, {@link #WHITESPACE}, nor {@link #EOF}.
043: * @deprecated will be removed
044: */
045: public static final IToken OTHER = new Token(T_OTHER);
046:
047: /** The type of this token */
048: private int fType;
049: /** The data associated with this token */
050: private Object fData;
051:
052: /**
053: * Creates a new token according to the given specification which does not
054: * have any data attached to it.
055: *
056: * @param type the type of the token
057: * @since 2.0
058: */
059: private Token(int type) {
060: fType = type;
061: fData = null;
062: }
063:
064: /**
065: * Creates a new token which represents neither undefined, whitespace, nor EOF.
066: * The newly created token has the given data attached to it.
067: *
068: * @param data the data attached to the newly created token
069: */
070: public Token(Object data) {
071: fType = T_OTHER;
072: fData = data;
073: }
074:
075: /**
076: * Re-initializes the data of this token. The token may not represent
077: * undefined, whitespace, or EOF.
078: *
079: * @param data to be attached to the token
080: * @since 2.0
081: */
082: public void setData(Object data) {
083: Assert.isTrue(isOther());
084: fData = data;
085: }
086:
087: /*
088: * @see IToken#getData()
089: */
090: public Object getData() {
091: return fData;
092: }
093:
094: /*
095: * @see IToken#isOther()
096: */
097: public boolean isOther() {
098: return (fType == T_OTHER);
099: }
100:
101: /*
102: * @see IToken#isEOF()
103: */
104: public boolean isEOF() {
105: return (fType == T_EOF);
106: }
107:
108: /*
109: * @see IToken#isWhitespace()
110: */
111: public boolean isWhitespace() {
112: return (fType == T_WHITESPACE);
113: }
114:
115: /*
116: * @see IToken#isUndefined()
117: */
118: public boolean isUndefined() {
119: return (fType == T_UNDEFINED);
120: }
121: }
|