00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00035 function CPMakeRange(location, length)
00036 {
00037 return { location: location, length: length };
00038 }
00039
00046 function CPCopyRange(aRange)
00047 {
00048 return { location: aRange.location, length: aRange.length };
00049 }
00050
00057 function CPMakeRangeCopy(aRange)
00058 {
00059 return { location:aRange.location, length:aRange.length };
00060 }
00061
00068 function CPEmptyRange(aRange)
00069 {
00070 return aRange.length === 0;
00071 }
00072
00079 function CPMaxRange(aRange)
00080 {
00081 return aRange.location + aRange.length;
00082 }
00083
00090 function CPEqualRanges(lhsRange, rhsRange)
00091 {
00092 return ((lhsRange.location === rhsRange.location) && (lhsRange.length === rhsRange.length));
00093 }
00094
00102 function CPLocationInRange(aLocation, aRange)
00103 {
00104 return (aLocation >= aRange.location) && (aLocation < CPMaxRange(aRange));
00105 }
00106
00115 function CPUnionRange(lhsRange, rhsRange)
00116 {
00117 var location = MIN(lhsRange.location, rhsRange.location);
00118 return CPMakeRange(location, MAX(CPMaxRange(lhsRange), CPMaxRange(rhsRange)) - location);
00119 }
00120
00128 function CPIntersectionRange(lhsRange, rhsRange)
00129 {
00130 if(CPMaxRange(lhsRange) < rhsRange.location || CPMaxRange(rhsRange) < lhsRange.location)
00131 return CPMakeRange(0, 0);
00132
00133 var location = MAX(lhsRange.location, rhsRange.location);
00134 return CPMakeRange(location, MIN(CPMaxRange(lhsRange), CPMaxRange(rhsRange)) - location);
00135 }
00136
00144 function CPRangeInRange(lhsRange, rhsRange)
00145 {
00146 return (lhsRange.location <= rhsRange.location && CPMaxRange(lhsRange) >= CPMaxRange(rhsRange));
00147 }
00148
00155 function CPStringFromRange(aRange)
00156 {
00157 return "{" + aRange.location + ", " + aRange.length + "}";
00158 }
00159
00166 function CPRangeFromString(aString)
00167 {
00168 var comma = aString.indexOf(',');
00169
00170 return { location:parseInt(aString.substr(1, comma - 1)), length:parseInt(aString.substring(comma + 1, aString.length)) };
00171 }
00172