Home | History | Annotate | Download | only in i18n

Lines Matching refs:length

44 getWeightTrail(uint32_t weight, int32_t length) {
45 return (uint32_t)(weight>>(8*(4-length)))&0xff;
49 setWeightTrail(uint32_t weight, int32_t length, uint32_t trail) {
50 length=8*(4-length);
51 return (uint32_t)((weight&(0xffffff00<<length))|(trail<<length));
84 truncateWeight(uint32_t weight, int32_t length) {
85 return (uint32_t)(weight&(0xffffffff<<(8*(4-length))));
89 incWeightTrail(uint32_t weight, int32_t length) {
90 return (uint32_t)(weight+(1UL<<(8*(4-length))));
94 decWeightTrail(uint32_t weight, int32_t length) {
95 return (uint32_t)(weight-(1UL<<(8*(4-length))));
154 CollationWeights::incWeight(uint32_t weight, int32_t length) const {
156 uint32_t byte=getWeightByte(weight, length);
157 if(byte<maxBytes[length]) {
158 return setWeightByte(weight, length, byte+1);
161 weight=setWeightByte(weight, length, minBytes[length]);
162 --length;
163 U_ASSERT(length > 0);
169 CollationWeights::incWeightByOffset(uint32_t weight, int32_t length, int32_t offset) const {
171 offset += getWeightByte(weight, length);
172 if((uint32_t)offset <= maxBytes[length]) {
173 return setWeightByte(weight, length, offset);
176 offset -= minBytes[length];
177 weight = setWeightByte(weight, length, minBytes[length] + offset % countBytes(length));
178 offset /= countBytes(length);
179 --length;
180 U_ASSERT(length > 0);
187 int32_t length=range.length+1;
188 range.start=setWeightTrail(range.start, length, minBytes[length]);
189 range.end=setWeightTrail(range.end, length, maxBytes[length]);
190 range.count*=countBytes(length);
191 range.length=length;
220 printf("length of lower limit 0x%08lx is %ld\n", lowerLimit, lowerLength);
221 printf("length of upper limit 0x%08lx is %ld\n", upperLimit, upperLength);
251 * range minimum length
264 for(int32_t length=lowerLength; length>middleLength; --length) {
265 uint32_t trail=getWeightTrail(weight, length);
266 if(trail<maxBytes[length]) {
267 lower[length].start=incWeightTrail(weight, length);
268 lower[length].end=setWeightTrail(weight, length, maxBytes[length]);
269 lower[length].length=length;
270 lower[length].count=maxBytes[length]-trail;
272 weight=truncateWeight(weight, length-1);
283 for(int32_t length=upperLength; length>middleLength; --length) {
284 uint32_t trail=getWeightTrail(weight, length);
285 if(trail>minBytes[length]) {
286 upper[length].start=setWeightTrail(weight, length, minBytes[length]);
287 upper[length].end=decWeightTrail(weight, length);
288 upper[length].length=length;
289 upper[length].count=trail-minBytes[length];
291 weight=truncateWeight(weight, length-1);
296 middle.length=middleLength;
301 for(int32_t length=4; length>middleLength; --length) {
302 if(lower[length].count>0 && upper[length].count>0) {
308 const uint32_t lowerEnd=lower[length].end;
309 const uint32_t upperStart=upper[length].start;
320 U_ASSERT(truncateWeight(lowerEnd, length-1)==
321 truncateWeight(upperStart, length-1));
323 lower[length].end=upper[length].end;
324 lower[length].count=
325 (int32_t)getWeightTrail(lower[length].end, length)-
326 (int32_t)getWeightTrail(lower[length].start, length)+1;
332 U_ASSERT(minBytes[length]<maxBytes[length]);
334 if(incWeight(lowerEnd, length)==upperStart) {
336 lower[length].end=upper[length].end;
337 lower[length].count+=upper[length].count; // might be >countBytes
344 upper[length].count=0;
345 while(--length>middleLength) {
346 lower[length].count=upper[length].count=0;
356 for(int32_t length=4; length>=2; --length) {
357 if(lower[length].count>0) {
358 printf("lower[%ld] .start=0x%08lx .end=0x%08lx .count=%ld\n", length, lower[length].start, lower[length].end, lower[length].count);
364 for(int32_t length=2; length<=4; ++length) {
365 if(upper[length].count>0) {
366 printf("upper[%ld] .start=0x%08lx .end=0x%08lx .count=%ld\n", length, upper[length].start, upper[length].end, upper[length].count);
377 for(int32_t length=middleLength+1; length<=4; ++length) {
379 if(upper[length].count>0) {
380 uprv_memcpy(ranges+rangeCount, upper+length, sizeof(WeightRange));
383 if(lower[length].count>0) {
384 uprv_memcpy(ranges+rangeCount, lower+length, sizeof(WeightRange));
394 for(int32_t i = 0; i < rangeCount && ranges[i].length <= (minLength + 1); ++i) {
397 if(ranges[i].length > minLength) {
430 ranges[minLengthRangeCount].length == minLength;
483 ranges[1].length = minLength; // +1 when lengthened
512 int32_t minLength=ranges[0].length;
530 for(int32_t i=0; i<rangeCount && ranges[i].length==minLength; ++i) {
538 printf("ranges[%ld] .start=0x%08lx .end=0x%08lx .length=%ld .count=%ld\n",
539 i, ranges[i].start, ranges[i].end, ranges[i].length, ranges[i].count);
560 range.start = incWeight(weight, range.length);