Lines 121-152
Link Here
|
121 |
return false; |
121 |
return false; |
122 |
return true; |
122 |
return true; |
123 |
} |
123 |
} |
|
|
124 |
|
125 |
inline gint stardict_strcmp(const gchar *s1, const gchar *s2) |
126 |
{ |
124 |
#ifndef NEW_CMP |
127 |
#ifndef NEW_CMP |
125 |
inline gint stardict_strcmp(const gchar *s1, const gchar *s2) { |
|
|
126 |
gint a=g_ascii_strcasecmp(s1, s2); |
128 |
gint a=g_ascii_strcasecmp(s1, s2); |
127 |
if (a == 0) |
129 |
if (a == 0) |
128 |
return strcmp(s1, s2); |
130 |
return strcmp(s1, s2); |
129 |
else |
131 |
else |
130 |
return a; |
132 |
return a; |
131 |
} |
|
|
132 |
#else |
133 |
#else |
133 |
inline gint stardict_strcmp2(const gchar *s1, const gchar *s2) { |
134 |
gint res=0; |
134 |
gint res=0; |
135 |
while (*s1 && *s2) { |
135 |
while (*s1 && *s2) { |
136 |
res=g_unichar_tolower(g_utf8_get_char(s1))-g_unichar_tolower(g_utf8_get_char(s2)); |
136 |
res=g_unichar_tolower(g_utf8_get_char(s1))-g_unichar_tolower(g_utf8_get_char(s2)); |
137 |
if (res!=0) |
137 |
if (res!=0) |
138 |
return res; |
138 |
return res; |
139 |
s1=g_utf8_next_char(s1); |
139 |
s1=g_utf8_next_char(s1); |
140 |
s2=g_utf8_next_char(s2); |
140 |
s2=g_utf8_next_char(s2); |
141 |
} |
141 |
} |
142 |
|
142 |
|
143 |
if (*s1 && !*s2) |
143 |
if (*s1 && !*s2) |
144 |
return 1; |
144 |
return 1; |
145 |
if (!*s1 && *s2) |
145 |
if (!*s1 && *s2) |
146 |
return -1; |
146 |
return -1; |
147 |
return 0; |
147 |
return 0; |
|
|
148 |
} |
149 |
#endif |
148 |
#endif |
|
|
149 |
} |
150 |
|
150 |
bool DictInfo::load_from_ifo_file(const gchar *ifofilename, |
151 |
bool DictInfo::load_from_ifo_file(const gchar *ifofilename, |
151 |
bool istreedict) |
152 |
bool istreedict) |
152 |
{ |
153 |
{ |
Lines 284-392
Link Here
|
284 |
{ |
285 |
{ |
285 |
for (int i=0; i<WORDDATA_CACHE_NUM; i++) |
286 |
for (int i=0; i<WORDDATA_CACHE_NUM; i++) |
286 |
if (cache[i].data && cache[i].offset == idxitem_offset) |
287 |
if (cache[i].data && cache[i].offset == idxitem_offset) |
287 |
return cache[i].data; |
288 |
return cache[i].data; |
288 |
|
289 |
|
289 |
if (dictfile) |
290 |
if (dictfile) |
290 |
fseek(dictfile, idxitem_offset, SEEK_SET); |
291 |
fseek(dictfile, idxitem_offset, SEEK_SET); |
291 |
|
292 |
|
292 |
gchar *data; |
293 |
gchar *data; |
293 |
if (sametypesequence) { |
294 |
if (sametypesequence) { |
294 |
gchar *origin_data = (gchar *)g_malloc(idxitem_size); |
295 |
gchar *origin_data = (gchar *)g_malloc(idxitem_size); |
295 |
|
296 |
|
296 |
if (dictfile) |
297 |
if (dictfile) |
297 |
fread(origin_data, idxitem_size, 1, dictfile); |
298 |
fread(origin_data, idxitem_size, 1, dictfile); |
298 |
else |
299 |
else |
299 |
dict_data_read(dictdzfile, origin_data, idxitem_offset, idxitem_size); |
300 |
dict_data_read(dictdzfile, origin_data, idxitem_offset, idxitem_size); |
300 |
|
301 |
|
301 |
guint32 data_size; |
302 |
guint32 data_size; |
302 |
gint sametypesequence_len; |
303 |
gint sametypesequence_len; |
303 |
sametypesequence_len = strlen(sametypesequence); |
304 |
sametypesequence_len = strlen(sametypesequence); |
304 |
//there have sametypesequence_len char being omitted. |
305 |
//there have sametypesequence_len char being omitted. |
305 |
data_size = idxitem_size + sizeof(guint32) + sametypesequence_len; |
306 |
data_size = idxitem_size + sizeof(guint32) + sametypesequence_len; |
306 |
//if the last item's size is determined by the end up '\0',then +=sizeof(gchar); |
307 |
//if the last item's size is determined by the end up '\0',then +=sizeof(gchar); |
307 |
//if the last item's size is determined by the head guint32 type data,then +=sizeof(guint32); |
308 |
//if the last item's size is determined by the head guint32 type data,then +=sizeof(guint32); |
308 |
switch (sametypesequence[sametypesequence_len-1]) { |
309 |
switch (sametypesequence[sametypesequence_len-1]) { |
309 |
case 'm': |
310 |
case 'm': |
310 |
case 't': |
311 |
case 't': |
311 |
case 'y': |
312 |
case 'y': |
312 |
case 'l': |
313 |
case 'l': |
313 |
case 'g': |
314 |
case 'g': |
314 |
data_size += sizeof(gchar); |
315 |
data_size += sizeof(gchar); |
315 |
break; |
316 |
break; |
316 |
case 'W': |
317 |
case 'W': |
317 |
case 'P': |
318 |
case 'P': |
318 |
data_size += sizeof(guint32); |
319 |
data_size += sizeof(guint32); |
319 |
break; |
320 |
break; |
320 |
} |
321 |
} |
321 |
data = (gchar *)g_malloc(data_size); |
322 |
data = (gchar *)g_malloc(data_size); |
322 |
gchar *p1,*p2; |
323 |
gchar *p1,*p2; |
323 |
p1 = data + sizeof(guint32); |
324 |
p1 = data + sizeof(guint32); |
324 |
p2 = origin_data; |
325 |
p2 = origin_data; |
325 |
guint32 sec_size; |
326 |
guint32 sec_size; |
326 |
//copy the head items. |
327 |
//copy the head items. |
327 |
for (int i=0; i<sametypesequence_len-1; i++) { |
328 |
for (int i=0; i<sametypesequence_len-1; i++) { |
328 |
*p1=sametypesequence[i]; |
329 |
*p1=sametypesequence[i]; |
329 |
p1+=sizeof(gchar); |
330 |
p1+=sizeof(gchar); |
330 |
switch (sametypesequence[i]) { |
331 |
switch (sametypesequence[i]) { |
331 |
case 'm': |
332 |
case 'm': |
332 |
case 't': |
333 |
case 't': |
333 |
case 'y': |
334 |
case 'y': |
334 |
case 'l': |
335 |
case 'l': |
335 |
case 'g': |
336 |
case 'g': |
336 |
sec_size = strlen(p2)+1; |
337 |
sec_size = strlen(p2)+1; |
337 |
memcpy(p1, p2, sec_size); |
338 |
memcpy(p1, p2, sec_size); |
338 |
p1+=sec_size; |
339 |
p1+=sec_size; |
339 |
p2+=sec_size; |
340 |
p2+=sec_size; |
340 |
break; |
341 |
break; |
341 |
case 'W': |
342 |
case 'W': |
342 |
case 'P': |
343 |
case 'P': |
343 |
sec_size = *reinterpret_cast<guint32 *>(p2); |
344 |
sec_size = *reinterpret_cast<guint32 *>(p2); |
344 |
sec_size += sizeof(guint32); |
345 |
sec_size += sizeof(guint32); |
345 |
memcpy(p1, p2, sec_size); |
346 |
memcpy(p1, p2, sec_size); |
346 |
p1+=sec_size; |
347 |
p1+=sec_size; |
347 |
p2+=sec_size; |
348 |
p2+=sec_size; |
348 |
break; |
349 |
break; |
349 |
} |
350 |
} |
350 |
} |
351 |
} |
351 |
//calculate the last item 's size. |
352 |
//calculate the last item 's size. |
352 |
sec_size = idxitem_size - (p2-origin_data); |
353 |
sec_size = idxitem_size - (p2-origin_data); |
353 |
*p1=sametypesequence[sametypesequence_len-1]; |
354 |
*p1=sametypesequence[sametypesequence_len-1]; |
354 |
p1+=sizeof(gchar); |
355 |
p1+=sizeof(gchar); |
355 |
switch (sametypesequence[sametypesequence_len-1]) { |
356 |
switch (sametypesequence[sametypesequence_len-1]) { |
356 |
case 'm': |
357 |
case 'm': |
357 |
case 't': |
358 |
case 't': |
358 |
case 'y': |
359 |
case 'y': |
359 |
case 'l': |
360 |
case 'l': |
360 |
case 'g': |
361 |
case 'g': |
361 |
memcpy(p1, p2, sec_size); |
362 |
memcpy(p1, p2, sec_size); |
362 |
p1 += sec_size; |
363 |
p1 += sec_size; |
363 |
*p1='\0';//add the end up '\0'; |
364 |
*p1='\0';//add the end up '\0'; |
364 |
break; |
365 |
break; |
365 |
case 'W': |
366 |
case 'W': |
366 |
case 'P': |
367 |
case 'P': |
367 |
*reinterpret_cast<guint32 *>(p1)=sec_size; |
368 |
*reinterpret_cast<guint32 *>(p1)=sec_size; |
368 |
p1 += sizeof(guint32); |
369 |
p1 += sizeof(guint32); |
369 |
memcpy(p1, p2, sec_size); |
370 |
memcpy(p1, p2, sec_size); |
370 |
break; |
371 |
break; |
371 |
} |
372 |
} |
372 |
g_free(origin_data); |
373 |
g_free(origin_data); |
373 |
*reinterpret_cast<guint32 *>(data)=data_size; |
374 |
*reinterpret_cast<guint32 *>(data)=data_size; |
374 |
} else { |
375 |
} else { |
375 |
data = (gchar *)g_malloc(idxitem_size + sizeof(guint32)); |
376 |
data = (gchar *)g_malloc(idxitem_size + sizeof(guint32)); |
376 |
if (dictfile) |
377 |
if (dictfile) |
377 |
fread(data+sizeof(guint32), idxitem_size, 1, dictfile); |
378 |
fread(data+sizeof(guint32), idxitem_size, 1, dictfile); |
378 |
else |
379 |
else |
379 |
dict_data_read(dictdzfile, data+sizeof(guint32), idxitem_offset, idxitem_size); |
380 |
dict_data_read(dictdzfile, data+sizeof(guint32), idxitem_offset, idxitem_size); |
380 |
*reinterpret_cast<guint32 *>(data)=idxitem_size; |
381 |
*reinterpret_cast<guint32 *>(data)=idxitem_size+sizeof(guint32); |
381 |
} |
382 |
} |
382 |
g_free(cache[cache_cur].data); |
383 |
g_free(cache[cache_cur].data); |
383 |
|
384 |
|
384 |
cache[cache_cur].data = data; |
385 |
cache[cache_cur].data = data; |
385 |
cache[cache_cur].offset = idxitem_offset; |
386 |
cache[cache_cur].offset = idxitem_offset; |
386 |
cache_cur++; |
387 |
cache_cur++; |
387 |
if (cache_cur==WORDDATA_CACHE_NUM) |
388 |
if (cache_cur==WORDDATA_CACHE_NUM) |
388 |
cache_cur = 0; |
389 |
cache_cur = 0; |
389 |
return data; |
390 |
return data; |
390 |
} |
391 |
} |
391 |
|
392 |
|
392 |
|
393 |
|
Lines 507-517
Link Here
|
507 |
} |
508 |
} |
508 |
|
509 |
|
509 |
inline bool less_for_compare(const char *lh, const char *rh) { |
510 |
inline bool less_for_compare(const char *lh, const char *rh) { |
510 |
#ifndef NEW_CMP |
|
|
511 |
return stardict_strcmp(lh, rh)<0; |
511 |
return stardict_strcmp(lh, rh)<0; |
512 |
#else |
|
|
513 |
return stardict_strcmp2(lh, rh)<0; |
514 |
#endif |
515 |
} |
512 |
} |
516 |
#ifdef NEW_CMP |
513 |
#ifdef NEW_CMP |
517 |
struct CharacterArea1 { |
514 |
struct CharacterArea1 { |
Lines 588-598
Link Here
|
588 |
#endif |
585 |
#endif |
589 |
} |
586 |
} |
590 |
#ifdef NEW_CMP |
587 |
#ifdef NEW_CMP |
591 |
class StarDictCompare2 { |
588 |
class StarDictCompare { |
592 |
public: |
589 |
public: |
593 |
explicit StarDictCompare2(const gchar *data_value) : data(data_value) {} |
590 |
explicit StarDictCompare(const gchar *data_value) : data(data_value) {} |
594 |
bool operator()(const Lib::WordCoord & lh, const Lib::WordCoord & rh) { |
591 |
bool operator()(const Lib::WordCoord & lh, const Lib::WordCoord & rh) { |
595 |
return stardict_strcmp2(data+lh.offset, data+rh.offset)<0; |
592 |
return stardict_strcmp(data+lh.offset, data+rh.offset)<0; |
596 |
} |
593 |
} |
597 |
private: |
594 |
private: |
598 |
const gchar *data; |
595 |
const gchar *data; |
Lines 663-670
Link Here
|
663 |
++ptr; |
660 |
++ptr; |
664 |
} |
661 |
} |
665 |
|
662 |
|
666 |
StarDictCompare2 stardict_compare2(idxdatabuffer); |
663 |
StarDictCompare stardict_compare(idxdatabuffer); |
667 |
std::sort(wordoffset, wordoffset+wordcount, stardict_compare2); |
664 |
std::sort(wordoffset, wordoffset+wordcount, stardict_compare); |
668 |
#endif |
665 |
#endif |
669 |
} |
666 |
} |
670 |
|
667 |
|
Lines 675-695
Link Here
|
675 |
#endif |
672 |
#endif |
676 |
bool bFound=false; |
673 |
bool bFound=false; |
677 |
glong iTo=wordcount-1; |
674 |
glong iTo=wordcount-1; |
678 |
#ifndef NEW_CMP |
675 |
|
679 |
if (stardict_strcmp(sWord, GetWord(0))<0) { |
676 |
if (stardict_strcmp(sWord, GetWord(0))<0) { |
680 |
#else |
677 |
*pIndex = 0; |
681 |
if (stardict_strcmp2(sWord, GetWord(0))<0) { |
678 |
|
682 |
#endif |
|
|
683 |
*pIndex = 0; |
684 |
#ifndef NEW_CMP |
685 |
} else if (stardict_strcmp(sWord, GetWord(iTo)) >0) { |
679 |
} else if (stardict_strcmp(sWord, GetWord(iTo)) >0) { |
686 |
#else |
680 |
*pIndex = INVALID_INDEX; |
687 |
} else if (stardict_strcmp2(sWord, GetWord(iTo)) >0) { |
|
|
688 |
#endif |
689 |
*pIndex = INVALID_INDEX; |
690 |
} else { |
681 |
} else { |
691 |
glong iThisIndex=0; |
682 |
glong iThisIndex=0; |
692 |
glong iFrom=0; |
683 |
glong iFrom=0; |
693 |
#ifdef NEW_CMP |
684 |
#ifdef NEW_CMP |
694 |
#if 1 |
685 |
#if 1 |
695 |
Character first; |
686 |
Character first; |
Lines 708-745
Link Here
|
708 |
#endif |
699 |
#endif |
709 |
gint cmpint; |
700 |
gint cmpint; |
710 |
while (iFrom<=iTo) { |
701 |
while (iFrom<=iTo) { |
711 |
iThisIndex=(iFrom+iTo)/2; |
702 |
iThisIndex=(iFrom+iTo)/2; |
712 |
#ifndef NEW_CMP |
703 |
|
713 |
cmpint = stardict_strcmp(sWord, GetWord(iThisIndex)); |
704 |
cmpint = stardict_strcmp(sWord, GetWord(iThisIndex)); |
714 |
#else |
705 |
|
715 |
cmpint = stardict_strcmp2(sWord, GetWord(iThisIndex)); |
|
|
716 |
#endif |
717 |
|
718 |
if (cmpint>0) |
706 |
if (cmpint>0) |
719 |
iFrom=iThisIndex+1; |
707 |
iFrom=iThisIndex+1; |
720 |
else if (cmpint<0) |
708 |
else if (cmpint<0) |
721 |
iTo=iThisIndex-1; |
709 |
iTo=iThisIndex-1; |
722 |
else { |
710 |
else { |
723 |
bFound=true; |
711 |
bFound=true; |
724 |
break; |
712 |
break; |
725 |
} |
713 |
} |
726 |
} |
714 |
} |
727 |
|
715 |
|
728 |
if (!bFound) { |
716 |
if (!bFound) { |
729 |
/*glong len = g_utf8_strlen(sWord, -1); |
717 |
/*glong len = g_utf8_strlen(sWord, -1); |
730 |
gchar *last_str = g_utf8_offset_to_pointer(sWord, len-1); |
718 |
gchar *last_str = g_utf8_offset_to_pointer(sWord, len-1); |
731 |
gunichar last = g_utf8_get_char(last_str); |
719 |
gunichar last = g_utf8_get_char(last_str); |
732 |
if (((g_unichar_isspace(last) || g_unichar_ispunct(last)) || g_unichar_isdigit(last)) |
720 |
if (((g_unichar_isspace(last) || g_unichar_ispunct(last)) || g_unichar_isdigit(last)) |
733 |
&& (g_ascii_strncasecmp(sWord, GetWord(iTo), (last_str - sWord))==0)) |
721 |
&& (g_ascii_strncasecmp(sWord, GetWord(iTo), (last_str - sWord))==0)) |
734 |
*pIndex = iTo; //previous |
722 |
*pIndex = iTo; //previous |
735 |
else |
723 |
else |
736 |
*pIndex = iFrom; //next |
724 |
*pIndex = iFrom; //next |
737 |
*/ |
725 |
*/ |
738 |
*pIndex = iFrom; //next |
726 |
*pIndex = iFrom; //next |
739 |
} else |
727 |
} else |
740 |
*pIndex = iThisIndex; |
728 |
*pIndex = iThisIndex; |
741 |
} |
729 |
} |
742 |
|
730 |
|
743 |
#ifdef MEASURE_TIME |
731 |
#ifdef MEASURE_TIME |
744 |
t=clock()-t; |
732 |
t=clock()-t; |
745 |
middle_lookup_time*=measure_time; |
733 |
middle_lookup_time*=measure_time; |
Lines 937-964
Link Here
|
937 |
|
925 |
|
938 |
gchar *Libs::poGetCurrentWord(glong * iCurrent) |
926 |
gchar *Libs::poGetCurrentWord(glong * iCurrent) |
939 |
{ |
927 |
{ |
940 |
gchar * poCurrentWord = NULL; |
928 |
gchar * poCurrentWord = NULL; |
941 |
gchar *word; |
929 |
gchar *word; |
942 |
for (int iLib=0;iLib<libcount;iLib++) { |
930 |
for (int iLib=0;iLib<libcount;iLib++) { |
943 |
if (iCurrent[iLib]==INVALID_INDEX) |
931 |
if (iCurrent[iLib]==INVALID_INDEX) |
944 |
continue; |
932 |
continue; |
945 |
if ( iCurrent[iLib]>=iLength(iLib) || iCurrent[iLib]<0) |
933 |
if ( iCurrent[iLib]>=iLength(iLib) || iCurrent[iLib]<0) |
946 |
continue; |
934 |
continue; |
947 |
if ( poCurrentWord == NULL ) { |
935 |
if ( poCurrentWord == NULL ) { |
948 |
poCurrentWord = poGetWord(iCurrent[iLib],iLib); |
936 |
poCurrentWord = poGetWord(iCurrent[iLib],iLib); |
949 |
} |
937 |
} else { |
950 |
else { |
938 |
word = poGetWord(iCurrent[iLib],iLib); |
951 |
word = poGetWord(iCurrent[iLib],iLib); |
939 |
|
952 |
#ifndef NEW_CMP |
940 |
if (stardict_strcmp(poCurrentWord, word) > 0 ) |
953 |
if (stardict_strcmp(poCurrentWord, word) > 0 ) |
941 |
poCurrentWord = word; |
954 |
#else |
942 |
} |
955 |
if (stardict_strcmp2(poCurrentWord, word) > 0 ) |
943 |
} |
956 |
#endif |
944 |
return poCurrentWord; |
957 |
poCurrentWord = word; |
945 |
} |
958 |
} |
|
|
959 |
} |
960 |
return poCurrentWord; |
961 |
} |
962 |
|
946 |
|
963 |
gchar * |
947 |
gchar * |
964 |
Libs::poGetNextWord(const gchar *sWord, glong * iCurrent) |
948 |
Libs::poGetNextWord(const gchar *sWord, glong * iCurrent) |
Lines 983-993
Link Here
|
983 |
} |
967 |
} |
984 |
else { |
968 |
else { |
985 |
word = poGetWord(iCurrent[iLib],iLib); |
969 |
word = poGetWord(iCurrent[iLib],iLib); |
986 |
#ifndef NEW_CMP |
970 |
|
987 |
if ( stardict_strcmp(poCurrentWord, word) > 0 ) { |
971 |
if ( stardict_strcmp(poCurrentWord, word) > 0 ) { |
988 |
#else |
|
|
989 |
if ( stardict_strcmp2(poCurrentWord, word) > 0 ) { |
990 |
#endif |
991 |
poCurrentWord = word; |
972 |
poCurrentWord = word; |
992 |
iCurrentLib = iLib; |
973 |
iCurrentLib = iLib; |
993 |
} |
974 |
} |
Lines 1030-1040
Link Here
|
1030 |
} |
1011 |
} |
1031 |
else { |
1012 |
else { |
1032 |
word = poGetWord(iCurrent[iLib]-1,iLib); |
1013 |
word = poGetWord(iCurrent[iLib]-1,iLib); |
1033 |
#ifndef NEW_CMP |
|
|
1034 |
if (stardict_strcmp(poCurrentWord, word) < 0 ) { |
1014 |
if (stardict_strcmp(poCurrentWord, word) < 0 ) { |
1035 |
#else |
|
|
1036 |
if (stardict_strcmp2(poCurrentWord, word) < 0 ) { |
1037 |
#endif |
1038 |
poCurrentWord = word; |
1015 |
poCurrentWord = word; |
1039 |
iCurrentLib = iLib; |
1016 |
iCurrentLib = iLib; |
1040 |
} |
1017 |
} |
Lines 1399-1409
Link Here
|
1399 |
return lh.iMatchWordDistance<rh.iMatchWordDistance; |
1376 |
return lh.iMatchWordDistance<rh.iMatchWordDistance; |
1400 |
|
1377 |
|
1401 |
if (lh.pMatchWord && rh.pMatchWord) |
1378 |
if (lh.pMatchWord && rh.pMatchWord) |
1402 |
#ifndef NEW_CMP |
|
|
1403 |
return stardict_strcmp(lh.pMatchWord, rh.pMatchWord)<0; |
1379 |
return stardict_strcmp(lh.pMatchWord, rh.pMatchWord)<0; |
1404 |
#else |
|
|
1405 |
return stardict_strcmp2(lh.pMatchWord, rh.pMatchWord)<0; |
1406 |
#endif |
1407 |
|
1380 |
|
1408 |
return false; |
1381 |
return false; |
1409 |
} |
1382 |
} |
Lines 1434-1446
Link Here
|
1434 |
for (int iLib=0; iLib<libcount; iLib++) { |
1407 |
for (int iLib=0; iLib<libcount; iLib++) { |
1435 |
if (ProgressFunc) |
1408 |
if (ProgressFunc) |
1436 |
ProgressFunc(); |
1409 |
ProgressFunc(); |
1437 |
#ifndef NEW_CMP |
1410 |
|
1438 |
if (stardict_strcmp(sWord, poGetWord(0,iLib))>=0 && |
1411 |
if (stardict_strcmp(sWord, poGetWord(0,iLib))>=0 && |
1439 |
stardict_strcmp(sWord, poGetWord(iLength(iLib)-1,iLib))<=0) { |
1412 |
stardict_strcmp(sWord, poGetWord(iLength(iLib)-1,iLib))<=0) { |
1440 |
#else |
|
|
1441 |
if (stardict_strcmp2(sWord, poGetWord(0,iLib))>=0 && |
1442 |
stardict_strcmp2(sWord, poGetWord(iLength(iLib)-1,iLib))<=0) { |
1443 |
#endif |
1444 |
//there are Chinese dicts and English dicts... |
1413 |
//there are Chinese dicts and English dicts... |
1445 |
const int iwords = iLength(iLib); |
1414 |
const int iwords = iLength(iLib); |
1446 |
for (int index=0; index<iwords; index++) { |
1415 |
for (int index=0; index<iwords; index++) { |