init
This commit is contained in:
145
java/org/apache/jasper/compiler/Mark.java
Normal file
145
java/org/apache/jasper/compiler/Mark.java
Normal file
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.jasper.compiler;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import org.apache.jasper.JspCompilationContext;
|
||||
|
||||
/**
|
||||
* Mark represents a point in the JSP input.
|
||||
*
|
||||
* @author Anil K. Vijendran
|
||||
*/
|
||||
final class Mark {
|
||||
|
||||
// position within current stream
|
||||
int cursor, line, col;
|
||||
|
||||
// current stream
|
||||
char[] stream = null;
|
||||
|
||||
// name of the current file
|
||||
private String fileName;
|
||||
|
||||
private JspCompilationContext ctxt;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param reader JspReader this mark belongs to
|
||||
* @param inStream current stream for this mark
|
||||
* @param name JSP file name
|
||||
*/
|
||||
Mark(JspReader reader, char[] inStream, String name) {
|
||||
this.ctxt = reader.getJspCompilationContext();
|
||||
this.stream = inStream;
|
||||
this.cursor = 0;
|
||||
this.line = 1;
|
||||
this.col = 1;
|
||||
this.fileName = name;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Mark(Mark other) {
|
||||
init(other, false);
|
||||
}
|
||||
|
||||
void update(int cursor, int line, int col) {
|
||||
this.cursor = cursor;
|
||||
this.line = line;
|
||||
this.col = col;
|
||||
}
|
||||
|
||||
void init(Mark other, boolean singleFile) {
|
||||
this.cursor = other.cursor;
|
||||
this.line = other.line;
|
||||
this.col = other.col;
|
||||
|
||||
if (!singleFile) {
|
||||
this.ctxt = other.ctxt;
|
||||
this.stream = other.stream;
|
||||
this.fileName = other.fileName;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Mark(JspCompilationContext ctxt, String filename, int line, int col) {
|
||||
this.ctxt = ctxt;
|
||||
this.stream = null;
|
||||
this.cursor = 0;
|
||||
this.line = line;
|
||||
this.col = col;
|
||||
this.fileName = filename;
|
||||
}
|
||||
|
||||
|
||||
public int getLineNumber() {
|
||||
return line;
|
||||
}
|
||||
|
||||
public int getColumnNumber() {
|
||||
return col;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getFile()+"("+line+","+col+")";
|
||||
}
|
||||
|
||||
public String getFile() {
|
||||
return this.fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the URL of the resource with which this Mark is associated
|
||||
*
|
||||
* @return URL of the resource with which this Mark is associated
|
||||
*
|
||||
* @exception MalformedURLException if the resource pathname is incorrect
|
||||
*/
|
||||
public URL getURL() throws MalformedURLException {
|
||||
return ctxt.getResource(getFile());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (other instanceof Mark) {
|
||||
Mark m = (Mark) other;
|
||||
return this.cursor == m.cursor && this.line == m.line && this.col == m.col;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + col;
|
||||
result = prime * result + cursor;
|
||||
result = prime * result + line;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user