//Transmogrify License // //Copyright (c) 2001, ThoughtWorks, Inc. //All rights reserved. //Redistribution and use in source and binary forms, with or without //modification, are permitted provided that the following conditions //are met: //- Redistributions of source code must retain the above copyright notice, //this list of conditions and the following disclaimer. //- Redistributions in binary form must reproduce the above copyright //notice, this list of conditions and the following disclaimer in the //documentation and/or other materials provided with the distribution. //Neither the name of the ThoughtWorks, Inc. nor the names of its //contributors may be used to endorse or promote products derived from this //software without specific prior written permission. //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS //"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR //PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR //CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, //EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, //PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; //OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, //WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR //OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF //ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package com.puppycrawl.tools.checkstyle.checks.usage.transmogrify; public class Span { private int _startLine; private int _startColumn; private int _endLine; private int _endColumn; public Span() {} public Span(int startLine, int startColumn, int endLine, int endColumn) { setStart(startLine, startColumn); setEnd(endLine, endColumn); } public Span( Span span ) { this( span.getStartLine(), span.getStartColumn(), span.getEndLine(), span.getEndColumn() ); } public void setStart(int startLine, int startColumn) { _startLine = startLine; _startColumn = startColumn; } public void setEnd(int endLine, int endColumn) { _endLine = endLine; _endColumn = endColumn; } public int getStartLine() { return _startLine; } public int getStartColumn() { return _startColumn; } public int getEndLine() { return _endLine; } public int getEndColumn() { return _endColumn; } public boolean contains( Span span ) { return ( contains(span.getStartLine(), span.getStartColumn()) && contains( span.getEndLine(), span.getEndColumn()) ); } public boolean contains(int line, int column) { boolean afterStart = false; boolean beforeEnd = false; if ( getStartLine() < line ) { afterStart = true; } else if ( getStartLine() == line && getStartColumn() <= column ) { afterStart = true; } if ( getEndLine() > line ) { beforeEnd = true; } else if ( getEndLine() == line && getEndColumn() >= column ) { beforeEnd = true; } return ( afterStart && beforeEnd ); } protected boolean startsBefore( Span span ) { boolean result = false; if ( getStartLine() < span.getStartLine() ) { result = true; } else if ( getStartLine() == span.getStartLine() && getStartColumn() <= span.getStartColumn() ) { result = true; } return result; } protected boolean endsAfter( Span span ) { boolean result = false; if ( getEndLine() > span.getEndLine() ) { result = true; } else if ( getEndLine() == span.getEndLine() && getEndColumn() >= span.getEndColumn() ) { result = true; } return result; } public void compose( Span span ) { if ( span.startsBefore( this ) ) { setStart( span.getStartLine(), span.getStartColumn() ); } if ( span.endsAfter( this ) ) { setEnd( span.getEndLine(), span.getEndColumn() ); } } public boolean equals(Object o) { boolean result = false; if ( o instanceof Span ) { Span span = (Span)o; result = ( span.getStartLine() == getStartLine() && span.getStartColumn() == getStartColumn() && span.getEndLine() == getEndLine() && span.getEndColumn() == getEndColumn() ); } return result; } public String toString() { return "[" + getStartLine() + "," + getStartColumn() + ":" + getEndLine() + "," + getEndColumn() + "]"; } }