All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unlaxer.Cursor Maven / Gradle / Ivy

package org.unlaxer;

import org.unlaxer.Source.SourceKind;

public interface Cursor> {
  
  public enum CursorKind{
    startInclusive,
    endExclusive
  }

  PositionResolver positionResolver();
  
//	NameSpecifier nameSpace();
//
//	T setNameSpace(NameSpecifier nameSpace);

	LineNumber lineNumber();
	
//	SubLineNumber getLineNumberOnThisSequence();

//	T setLineNumber(LineNumber lineNumber);
	
//  T incrementLineNumber();

	CodePointIndex position();
	
	CodePointIndex positionInSub();
	
  CodePointIndex positionInRoot();

	
//	SubCodePointIndex getPositionOnThisSequence();

	T setPosition(CodePointIndex position);
	
  T incrementPosition(); 

	T addPosition(CodePointOffset adding);

	CodePointIndexInLine positionInLine();

//	T setPositionInLine(CodePointIndexInLine positionInLine);
	
//	T resolveLineNumber(RootPositionResolver rootPositionResolver);
	
	CodePointOffset offsetFromRoot();
	
	T newWithAddPosition(CodePointOffset adding);
	
	T copy();
	
	CursorKind cursorKind();
	
	SourceKind sourceKind();
	
	public interface EndExclusiveCursor extends Cursor{
	  
	  default CursorKind cursorKind() {
	    return CursorKind.endExclusive;
	  }
	}
	
	public interface StartInclusiveCursor extends Cursor{
    
    default CursorKind cursorKind() {
      return CursorKind.startInclusive;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy