001/*
002 * Copyright (c) 1999 World Wide Web Consortium
003 * (Massachusetts Institute of Technology, Institut National de Recherche
004 *  en Informatique et en Automatique, Keio University).
005 * All Rights Reserved. http://www.w3.org/Consortium/Legal/
006 *
007 * $Id: LocatorImpl.java,v 1.1.1.1 2006/04/23 14:51:25 taqua Exp $
008 */
009package org.w3c.flute.parser;
010
011import org.w3c.css.sac.Locator;
012
013/**
014 * @version $Revision: 1.1.1.1 $
015 * @author  Philippe Le Hegaret
016 */
017public class LocatorImpl implements Locator {
018
019    // W3C DEBUG mode
020    private static boolean W3CDebug;
021    static {
022        try {
023            W3CDebug = (Boolean.getBoolean("debug")
024                        || Boolean.getBoolean("org.w3c.flute.parser.LocatorImpl.debug")
025                        || Boolean.getBoolean("org.w3c.flute.parser.debug")
026                        || Boolean.getBoolean("org.w3c.flute.debug")
027                        || Boolean.getBoolean("org.w3c.debug")
028                        || Boolean.getBoolean("org.debug"));
029        } catch (Exception e) {
030            // nothing
031        }
032    }
033    
034    String uri;
035    int    line;
036    int    column;
037
038    public String getURI() {
039        return uri;
040    }
041
042    public int getLineNumber() {
043        return line;
044    }
045
046    public int getColumnNumber() {
047        return column;
048    }
049
050    /**
051     * Creates a new LocatorImpl
052     */
053    public LocatorImpl(Parser p) {
054        if (W3CDebug) {
055            System.err.println( "LocatorImpl::newLocator(" + p + ");");
056        }
057        uri = p.source.getURI();
058        line = p.token.beginLine;
059        column = p.token.beginColumn;
060    }
061    
062    /**
063     * Reinitializes a LocatorImpl
064     */
065    public LocatorImpl(Parser p, Token tok) {
066        if (W3CDebug) {
067            System.err.println( "LocatorImpl::newLocator(" + p 
068                                + ", " + tok + ");");
069        }
070        uri = p.source.getURI();
071        line = tok.beginLine;
072        column = tok.beginColumn;
073    }
074    
075    /**
076     * Reinitializes a LocatorImpl
077     */
078    public LocatorImpl(Parser p, int line, int column) {
079        if (W3CDebug) {
080            System.err.println( "LocatorImpl::newLocator(" + p 
081                                + ", " + line 
082                                 + ", " + column + ");");
083        }
084        uri = p.source.getURI();
085        this.line = line;
086        this.column = column;
087    }
088    
089    /**
090     * Reinitializes a LocatorImpl
091     */
092    public LocatorImpl reInit(Parser p) {
093        if (W3CDebug) {
094            System.err.println( "LocatorImpl::reInit(" + p + ");" );
095        }
096        uri = p.source.getURI();
097        line = p.token.beginLine;
098        column = p.token.beginColumn;
099        return this;
100    }
101    
102    /**
103     * Reinitializes a LocatorImpl
104     */
105    public LocatorImpl reInit(Parser p, Token tok) {
106        if (W3CDebug) {
107            System.err.println( "LocatorImpl::reInit(" + p 
108                                + ", " + tok + ");");
109        }
110        uri = p.source.getURI();
111        line = tok.beginLine;
112        column = tok.beginColumn;
113        return this;
114    }
115    
116    /**
117     * Reinitializes a LocatorImpl
118     */
119    public LocatorImpl reInit(Parser p, int line, int column) {
120        if (W3CDebug) {
121            System.err.println("LocatorImpl::reInit(" + p 
122                               + ", " + line 
123                               + ", " + column + ");");
124        }
125        uri = p.source.getURI();
126        this.line = line;
127        this.column = column;
128        return this;
129    }
130}