00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00030 function CPMakeRange(location, length)
00031 {
00032 return { location: location, length: length };
00033 }
00034
00041 function CPCopyRange(aRange)
00042 {
00043 return { location: aRange.location, length: aRange.length };
00044 }
00045
00052 function CPMakeRangeCopy(aRange)
00053 {
00054 return { location:aRange.location, length:aRange.length };
00055 }
00056
00063 function CPEmptyRange(aRange)
00064 {
00065 return aRange.length == 0;
00066 }
00067
00074 function CPMaxRange(aRange)
00075 {
00076 return aRange.location + aRange.length;
00077 }
00078
00085 function CPEqualRanges(lhsRange, rhsRange)
00086 {
00087 return ((lhsRange.location == rhsRange.location) && (lhsRange.length == rhsRange.length));
00088 }
00089
00097 function CPLocationInRange(aLocation, aRange)
00098 {
00099 return (aLocation >= aRange.location) && (aLocation < CPMaxRange(aRange));
00100 }
00101
00110 function CPUnionRange(lhsRange, rhsRange)
00111 {
00112 var location = Math.min(lhsRange.location, rhsRange.location);
00113 return CPMakeRange(location, Math.max(CPMaxRange(lhsRange), CPMaxRange(rhsRange)) - location);
00114 }
00115
00123 function CPIntersectionRange(lhsRange, rhsRange)
00124 {
00125 if(CPMaxRange(lhsRange) < rhsRange.location || CPMaxRange(rhsRange) < lhsRange.location)
00126 return CPMakeRange(0, 0);
00127
00128 var location = Math.max(lhsRange.location, rhsRange.location);
00129 return CPMakeRange(location, Math.min(CPMaxRange(lhsRange), CPMaxRange(rhsRange)) - location);
00130 }
00131
00139 function CPRangeInRange(lhsRange, rhsRange)
00140 {
00141 return (lhsRange.location <= rhsRange.location && CPMaxRange(lhsRange) >= CPMaxRange(rhsRange));
00142 }
00143
00150 function CPStringFromRange(aRange)
00151 {
00152 return "{" + aRange.location + ", " + aRange.length + "}";
00153 }
00154
00161 function CPRangeFromString(aString)
00162 {
00163 var comma = aString.indexOf(',');
00164
00165 return { location:parseInt(aString.substr(1, comma - 1)), length:parseInt(aString.substring(comma + 1, aString.length)) };
00166 }