1 package org.simantics.scl.compiler.errors;
\r
3 public class Locations {
\r
5 public static final long NO_LOCATION = 0x7fffffff80000000L;
\r
7 public static long location(int begin, int end) {
\r
8 return (((long)begin) << 32) | (((long)end) );
\r
11 public static int beginOf(long location) {
\r
12 return (int)(location >>> 32);
\r
15 public static int endOf(long location) {
\r
16 return (int)location;
\r
19 public static int length(long location) {
\r
20 return endOf(location) - beginOf(location);
\r
24 public static long combine(long a, long b) {
\r
25 return location(Math.min(beginOf(a), beginOf(b)), Math.max(endOf(a), endOf(b)));
\r
28 public static int compare(long a, long b) {
\r
36 public static String annotatate(String annotationBegin, String annotationEnd, String formula, long location) {
\r
37 if(location == NO_LOCATION)
\r
38 return annotationBegin + formula + annotationEnd;
\r
39 int begin = beginOf(location);
\r
40 int end = endOf(location);
\r
41 return formula.substring(0, begin) + annotationBegin + formula.substring(begin, end) + annotationEnd + formula.substring(end);
\r