aboutsummaryrefslogtreecommitdiffstats
path: root/src/intervals.c
diff options
context:
space:
mode:
authorEli Zaretskii2010-09-23 11:46:54 -0400
committerEli Zaretskii2010-09-23 11:46:54 -0400
commite79123aa347e2d9fe33b357965d93ad1ebb89b4c (patch)
tree958d781660085e7f702b6cad75cdf559258c39a2 /src/intervals.c
parent579c18d04a042e78bc85c1aef081e612acd6e757 (diff)
downloademacs-e79123aa347e2d9fe33b357965d93ad1ebb89b4c.tar.gz
emacs-e79123aa347e2d9fe33b357965d93ad1ebb89b4c.zip
Fix uses of int instead of EMACS_INT in intervals.c.
intervals.c (traverse_intervals, rotate_right, rotate_left) (balance_an_interval, split_interval_right, split_interval_left) (find_interval, next_interval, update_interval) (adjust_intervals_for_insertion, delete_node, delete_interval) (interval_deletion_adjustment, adjust_intervals_for_deletion) (offset_intervals, merge_interval_right, merge_interval_left) (graft_intervals_into_buffer, adjust_for_invis_intang) (move_if_not_intangible, get_local_map, copy_intervals) (copy_intervals_to_string, compare_string_intervals) (set_intervals_multibyte_1): Use EMACS_INT for buffer positions and EMACS_UINT for interval tree size. intervals.h (traverse_intervals, split_interval_right) (split_interval_left, find_interval, offset_intervals) (graft_intervals_into_buffer, copy_intervals) (copy_intervals_to_string, move_if_not_intangible, get_local_map) (update_interval): Adjust prototypes.
Diffstat (limited to 'src/intervals.c')
-rw-r--r--src/intervals.c117
1 files changed, 64 insertions, 53 deletions
diff --git a/src/intervals.c b/src/intervals.c
index 4d7d92fb70a..e1f4861538a 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -222,7 +222,8 @@ traverse_intervals_noorder (INTERVAL tree, void (*function) (INTERVAL, Lisp_Obje
222 Pass FUNCTION two args: an interval, and ARG. */ 222 Pass FUNCTION two args: an interval, and ARG. */
223 223
224void 224void
225traverse_intervals (INTERVAL tree, int position, void (*function) (INTERVAL, Lisp_Object), Lisp_Object arg) 225traverse_intervals (INTERVAL tree, EMACS_UINT position,
226 void (*function) (INTERVAL, Lisp_Object), Lisp_Object arg)
226{ 227{
227 while (!NULL_INTERVAL_P (tree)) 228 while (!NULL_INTERVAL_P (tree))
228 { 229 {
@@ -316,7 +317,7 @@ rotate_right (INTERVAL interval)
316{ 317{
317 INTERVAL i; 318 INTERVAL i;
318 INTERVAL B = interval->left; 319 INTERVAL B = interval->left;
319 int old_total = interval->total_length; 320 EMACS_UINT old_total = interval->total_length;
320 321
321 /* Deal with any Parent of A; make it point to B. */ 322 /* Deal with any Parent of A; make it point to B. */
322 if (! ROOT_INTERVAL_P (interval)) 323 if (! ROOT_INTERVAL_P (interval))
@@ -363,7 +364,7 @@ rotate_left (INTERVAL interval)
363{ 364{
364 INTERVAL i; 365 INTERVAL i;
365 INTERVAL B = interval->right; 366 INTERVAL B = interval->right;
366 int old_total = interval->total_length; 367 EMACS_UINT old_total = interval->total_length;
367 368
368 /* Deal with any parent of A; make it point to B. */ 369 /* Deal with any parent of A; make it point to B. */
369 if (! ROOT_INTERVAL_P (interval)) 370 if (! ROOT_INTERVAL_P (interval))
@@ -402,7 +403,7 @@ rotate_left (INTERVAL interval)
402static INTERVAL 403static INTERVAL
403balance_an_interval (INTERVAL i) 404balance_an_interval (INTERVAL i)
404{ 405{
405 register int old_diff, new_diff; 406 register EMACS_INT old_diff, new_diff;
406 407
407 while (1) 408 while (1)
408 { 409 {
@@ -502,11 +503,11 @@ balance_intervals (INTERVAL tree)
502 it is still a root after this operation. */ 503 it is still a root after this operation. */
503 504
504INTERVAL 505INTERVAL
505split_interval_right (INTERVAL interval, int offset) 506split_interval_right (INTERVAL interval, EMACS_INT offset)
506{ 507{
507 INTERVAL new = make_interval (); 508 INTERVAL new = make_interval ();
508 int position = interval->position; 509 EMACS_UINT position = interval->position;
509 int new_length = LENGTH (interval) - offset; 510 EMACS_UINT new_length = LENGTH (interval) - offset;
510 511
511 new->position = position + offset; 512 new->position = position + offset;
512 SET_INTERVAL_PARENT (new, interval); 513 SET_INTERVAL_PARENT (new, interval);
@@ -547,10 +548,10 @@ split_interval_right (INTERVAL interval, int offset)
547 it is still a root after this operation. */ 548 it is still a root after this operation. */
548 549
549INTERVAL 550INTERVAL
550split_interval_left (INTERVAL interval, int offset) 551split_interval_left (INTERVAL interval, EMACS_INT offset)
551{ 552{
552 INTERVAL new = make_interval (); 553 INTERVAL new = make_interval ();
553 int new_length = offset; 554 EMACS_INT new_length = offset;
554 555
555 new->position = interval->position; 556 new->position = interval->position;
556 interval->position = interval->position + offset; 557 interval->position = interval->position + offset;
@@ -613,11 +614,11 @@ interval_start_pos (INTERVAL source)
613 will update this cache based on the result of find_interval. */ 614 will update this cache based on the result of find_interval. */
614 615
615INTERVAL 616INTERVAL
616find_interval (register INTERVAL tree, register int position) 617find_interval (register INTERVAL tree, register EMACS_INT position)
617{ 618{
618 /* The distance from the left edge of the subtree at TREE 619 /* The distance from the left edge of the subtree at TREE
619 to POSITION. */ 620 to POSITION. */
620 register int relative_position; 621 register EMACS_UINT relative_position;
621 622
622 if (NULL_INTERVAL_P (tree)) 623 if (NULL_INTERVAL_P (tree))
623 return NULL_INTERVAL; 624 return NULL_INTERVAL;
@@ -670,7 +671,7 @@ INTERVAL
670next_interval (register INTERVAL interval) 671next_interval (register INTERVAL interval)
671{ 672{
672 register INTERVAL i = interval; 673 register INTERVAL i = interval;
673 register int next_position; 674 register EMACS_UINT next_position;
674 675
675 if (NULL_INTERVAL_P (i)) 676 if (NULL_INTERVAL_P (i))
676 return NULL_INTERVAL; 677 return NULL_INTERVAL;
@@ -745,7 +746,7 @@ previous_interval (register INTERVAL interval)
745 To speed up the process, we assume that the ->position of 746 To speed up the process, we assume that the ->position of
746 I and all its parents is already uptodate. */ 747 I and all its parents is already uptodate. */
747INTERVAL 748INTERVAL
748update_interval (register INTERVAL i, int pos) 749update_interval (register INTERVAL i, EMACS_INT pos)
749{ 750{
750 if (NULL_INTERVAL_P (i)) 751 if (NULL_INTERVAL_P (i))
751 return NULL_INTERVAL; 752 return NULL_INTERVAL;
@@ -864,13 +865,14 @@ adjust_intervals_for_insertion (tree, position, length)
864 this text, and make it have the merged properties of both ends. */ 865 this text, and make it have the merged properties of both ends. */
865 866
866static INTERVAL 867static INTERVAL
867adjust_intervals_for_insertion (INTERVAL tree, int position, int length) 868adjust_intervals_for_insertion (INTERVAL tree,
869 EMACS_INT position, EMACS_INT length)
868{ 870{
869 register INTERVAL i; 871 register INTERVAL i;
870 register INTERVAL temp; 872 register INTERVAL temp;
871 int eobp = 0; 873 int eobp = 0;
872 Lisp_Object parent; 874 Lisp_Object parent;
873 int offset; 875 EMACS_INT offset;
874 876
875 if (TOTAL_LENGTH (tree) == 0) /* Paranoia */ 877 if (TOTAL_LENGTH (tree) == 0) /* Paranoia */
876 abort (); 878 abort ();
@@ -1228,7 +1230,7 @@ static INTERVAL
1228delete_node (register INTERVAL i) 1230delete_node (register INTERVAL i)
1229{ 1231{
1230 register INTERVAL migrate, this; 1232 register INTERVAL migrate, this;
1231 register int migrate_amt; 1233 register EMACS_UINT migrate_amt;
1232 1234
1233 if (NULL_INTERVAL_P (i->left)) 1235 if (NULL_INTERVAL_P (i->left))
1234 return i->right; 1236 return i->right;
@@ -1261,7 +1263,7 @@ void
1261delete_interval (register INTERVAL i) 1263delete_interval (register INTERVAL i)
1262{ 1264{
1263 register INTERVAL parent; 1265 register INTERVAL parent;
1264 int amt = LENGTH (i); 1266 EMACS_UINT amt = LENGTH (i);
1265 1267
1266 if (amt > 0) /* Only used on zero-length intervals now. */ 1268 if (amt > 0) /* Only used on zero-length intervals now. */
1267 abort (); 1269 abort ();
@@ -1311,10 +1313,11 @@ delete_interval (register INTERVAL i)
1311 Do this by recursing down TREE to the interval in question, and 1313 Do this by recursing down TREE to the interval in question, and
1312 deleting the appropriate amount of text. */ 1314 deleting the appropriate amount of text. */
1313 1315
1314static int 1316static EMACS_UINT
1315interval_deletion_adjustment (register INTERVAL tree, register int from, register int amount) 1317interval_deletion_adjustment (register INTERVAL tree, register EMACS_UINT from,
1318 register EMACS_UINT amount)
1316{ 1319{
1317 register int relative_position = from; 1320 register EMACS_UINT relative_position = from;
1318 1321
1319 if (NULL_INTERVAL_P (tree)) 1322 if (NULL_INTERVAL_P (tree))
1320 return 0; 1323 return 0;
@@ -1322,9 +1325,9 @@ interval_deletion_adjustment (register INTERVAL tree, register int from, registe
1322 /* Left branch */ 1325 /* Left branch */
1323 if (relative_position < LEFT_TOTAL_LENGTH (tree)) 1326 if (relative_position < LEFT_TOTAL_LENGTH (tree))
1324 { 1327 {
1325 int subtract = interval_deletion_adjustment (tree->left, 1328 EMACS_UINT subtract = interval_deletion_adjustment (tree->left,
1326 relative_position, 1329 relative_position,
1327 amount); 1330 amount);
1328 tree->total_length -= subtract; 1331 tree->total_length -= subtract;
1329 CHECK_TOTAL_LENGTH (tree); 1332 CHECK_TOTAL_LENGTH (tree);
1330 return subtract; 1333 return subtract;
@@ -1333,7 +1336,7 @@ interval_deletion_adjustment (register INTERVAL tree, register int from, registe
1333 else if (relative_position >= (TOTAL_LENGTH (tree) 1336 else if (relative_position >= (TOTAL_LENGTH (tree)
1334 - RIGHT_TOTAL_LENGTH (tree))) 1337 - RIGHT_TOTAL_LENGTH (tree)))
1335 { 1338 {
1336 int subtract; 1339 EMACS_UINT subtract;
1337 1340
1338 relative_position -= (tree->total_length 1341 relative_position -= (tree->total_length
1339 - RIGHT_TOTAL_LENGTH (tree)); 1342 - RIGHT_TOTAL_LENGTH (tree));
@@ -1348,9 +1351,9 @@ interval_deletion_adjustment (register INTERVAL tree, register int from, registe
1348 else 1351 else
1349 { 1352 {
1350 /* How much can we delete from this interval? */ 1353 /* How much can we delete from this interval? */
1351 int my_amount = ((tree->total_length 1354 EMACS_UINT my_amount = ((tree->total_length
1352 - RIGHT_TOTAL_LENGTH (tree)) 1355 - RIGHT_TOTAL_LENGTH (tree))
1353 - relative_position); 1356 - relative_position);
1354 1357
1355 if (amount > my_amount) 1358 if (amount > my_amount)
1356 amount = my_amount; 1359 amount = my_amount;
@@ -1372,12 +1375,13 @@ interval_deletion_adjustment (register INTERVAL tree, register int from, registe
1372 buffer position, i.e. origin 1). */ 1375 buffer position, i.e. origin 1). */
1373 1376
1374static void 1377static void
1375adjust_intervals_for_deletion (struct buffer *buffer, int start, int length) 1378adjust_intervals_for_deletion (struct buffer *buffer,
1379 EMACS_INT start, EMACS_INT length)
1376{ 1380{
1377 register int left_to_delete = length; 1381 register EMACS_INT left_to_delete = length;
1378 register INTERVAL tree = BUF_INTERVALS (buffer); 1382 register INTERVAL tree = BUF_INTERVALS (buffer);
1379 Lisp_Object parent; 1383 Lisp_Object parent;
1380 int offset; 1384 EMACS_UINT offset;
1381 1385
1382 GET_INTERVAL_OBJECT (parent, tree); 1386 GET_INTERVAL_OBJECT (parent, tree);
1383 offset = (BUFFERP (parent) ? BUF_BEG (XBUFFER (parent)) : 0); 1387 offset = (BUFFERP (parent) ? BUF_BEG (XBUFFER (parent)) : 0);
@@ -1423,7 +1427,7 @@ adjust_intervals_for_deletion (struct buffer *buffer, int start, int length)
1423 of LENGTH. */ 1427 of LENGTH. */
1424 1428
1425INLINE void 1429INLINE void
1426offset_intervals (struct buffer *buffer, int start, int length) 1430offset_intervals (struct buffer *buffer, EMACS_INT start, EMACS_INT length)
1427{ 1431{
1428 if (NULL_INTERVAL_P (BUF_INTERVALS (buffer)) || length == 0) 1432 if (NULL_INTERVAL_P (BUF_INTERVALS (buffer)) || length == 0)
1429 return; 1433 return;
@@ -1446,7 +1450,7 @@ offset_intervals (struct buffer *buffer, int start, int length)
1446INTERVAL 1450INTERVAL
1447merge_interval_right (register INTERVAL i) 1451merge_interval_right (register INTERVAL i)
1448{ 1452{
1449 register int absorb = LENGTH (i); 1453 register EMACS_UINT absorb = LENGTH (i);
1450 register INTERVAL successor; 1454 register INTERVAL successor;
1451 1455
1452 /* Zero out this interval. */ 1456 /* Zero out this interval. */
@@ -1502,7 +1506,7 @@ merge_interval_right (register INTERVAL i)
1502INTERVAL 1506INTERVAL
1503merge_interval_left (register INTERVAL i) 1507merge_interval_left (register INTERVAL i)
1504{ 1508{
1505 register int absorb = LENGTH (i); 1509 register EMACS_UINT absorb = LENGTH (i);
1506 register INTERVAL predecessor; 1510 register INTERVAL predecessor;
1507 1511
1508 /* Zero out this interval. */ 1512 /* Zero out this interval. */
@@ -1598,7 +1602,7 @@ reproduce_tree_obj (INTERVAL source, Lisp_Object parent)
1598static INTERVAL 1602static INTERVAL
1599make_new_interval (intervals, start, length) 1603make_new_interval (intervals, start, length)
1600 INTERVAL intervals; 1604 INTERVAL intervals;
1601 int start, length; 1605 EMACS_INT start, length;
1602{ 1606{
1603 INTERVAL slot; 1607 INTERVAL slot;
1604 1608
@@ -1670,11 +1674,13 @@ make_new_interval (intervals, start, length)
1670 text... */ 1674 text... */
1671 1675
1672void 1676void
1673graft_intervals_into_buffer (INTERVAL source, int position, int length, struct buffer *buffer, int inherit) 1677graft_intervals_into_buffer (INTERVAL source, EMACS_INT position,
1678 EMACS_INT length, struct buffer *buffer,
1679 int inherit)
1674{ 1680{
1675 register INTERVAL under, over, this, prev; 1681 register INTERVAL under, over, this, prev;
1676 register INTERVAL tree; 1682 register INTERVAL tree;
1677 int over_used; 1683 EMACS_UINT over_used;
1678 1684
1679 tree = BUF_INTERVALS (buffer); 1685 tree = BUF_INTERVALS (buffer);
1680 1686
@@ -1921,7 +1927,8 @@ set_point (EMACS_INT charpos)
1921 if the invisible property comes from an overlay. */ 1927 if the invisible property comes from an overlay. */
1922 1928
1923static int 1929static int
1924adjust_for_invis_intang (int pos, int test_offs, int adj, int test_intang) 1930adjust_for_invis_intang (EMACS_INT pos, EMACS_INT test_offs, EMACS_INT adj,
1931 int test_intang)
1925{ 1932{
1926 Lisp_Object invis_propval, invis_overlay; 1933 Lisp_Object invis_propval, invis_overlay;
1927 Lisp_Object test_pos; 1934 Lisp_Object test_pos;
@@ -2183,7 +2190,7 @@ set_point_both (EMACS_INT charpos, EMACS_INT bytepos)
2183 segment that reaches all the way to point. */ 2190 segment that reaches all the way to point. */
2184 2191
2185void 2192void
2186move_if_not_intangible (int position) 2193move_if_not_intangible (EMACS_INT position)
2187{ 2194{
2188 Lisp_Object pos; 2195 Lisp_Object pos;
2189 Lisp_Object intangible_propval; 2196 Lisp_Object intangible_propval;
@@ -2290,10 +2297,11 @@ get_property_and_range (EMACS_INT pos, Lisp_Object prop, Lisp_Object *val,
2290 POSITION must be in the accessible part of BUFFER. */ 2297 POSITION must be in the accessible part of BUFFER. */
2291 2298
2292Lisp_Object 2299Lisp_Object
2293get_local_map (register int position, register struct buffer *buffer, Lisp_Object type) 2300get_local_map (register EMACS_INT position, register struct buffer *buffer,
2301 Lisp_Object type)
2294{ 2302{
2295 Lisp_Object prop, lispy_position, lispy_buffer; 2303 Lisp_Object prop, lispy_position, lispy_buffer;
2296 int old_begv, old_zv, old_begv_byte, old_zv_byte; 2304 EMACS_INT old_begv, old_zv, old_begv_byte, old_zv_byte;
2297 2305
2298 /* Perhaps we should just change `position' to the limit. */ 2306 /* Perhaps we should just change `position' to the limit. */
2299 if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer)) 2307 if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer))
@@ -2343,10 +2351,10 @@ get_local_map (register int position, register struct buffer *buffer, Lisp_Objec
2343 The new interval tree has no parent and has a starting-position of 0. */ 2351 The new interval tree has no parent and has a starting-position of 0. */
2344 2352
2345INTERVAL 2353INTERVAL
2346copy_intervals (INTERVAL tree, int start, int length) 2354copy_intervals (INTERVAL tree, EMACS_INT start, EMACS_INT length)
2347{ 2355{
2348 register INTERVAL i, new, t; 2356 register INTERVAL i, new, t;
2349 register int got, prevlen; 2357 register EMACS_UINT got, prevlen;
2350 2358
2351 if (NULL_INTERVAL_P (tree) || length <= 0) 2359 if (NULL_INTERVAL_P (tree) || length <= 0)
2352 return NULL_INTERVAL; 2360 return NULL_INTERVAL;
@@ -2384,7 +2392,8 @@ copy_intervals (INTERVAL tree, int start, int length)
2384/* Give STRING the properties of BUFFER from POSITION to LENGTH. */ 2392/* Give STRING the properties of BUFFER from POSITION to LENGTH. */
2385 2393
2386INLINE void 2394INLINE void
2387copy_intervals_to_string (Lisp_Object string, struct buffer *buffer, int position, int length) 2395copy_intervals_to_string (Lisp_Object string, struct buffer *buffer,
2396 EMACS_INT position, EMACS_INT length)
2388{ 2397{
2389 INTERVAL interval_copy = copy_intervals (BUF_INTERVALS (buffer), 2398 INTERVAL interval_copy = copy_intervals (BUF_INTERVALS (buffer),
2390 position, length); 2399 position, length);
@@ -2402,8 +2411,8 @@ int
2402compare_string_intervals (Lisp_Object s1, Lisp_Object s2) 2411compare_string_intervals (Lisp_Object s1, Lisp_Object s2)
2403{ 2412{
2404 INTERVAL i1, i2; 2413 INTERVAL i1, i2;
2405 int pos = 0; 2414 EMACS_INT pos = 0;
2406 int end = SCHARS (s1); 2415 EMACS_INT end = SCHARS (s1);
2407 2416
2408 i1 = find_interval (STRING_INTERVALS (s1), 0); 2417 i1 = find_interval (STRING_INTERVALS (s1), 0);
2409 i2 = find_interval (STRING_INTERVALS (s2), 0); 2418 i2 = find_interval (STRING_INTERVALS (s2), 0);
@@ -2411,9 +2420,9 @@ compare_string_intervals (Lisp_Object s1, Lisp_Object s2)
2411 while (pos < end) 2420 while (pos < end)
2412 { 2421 {
2413 /* Determine how far we can go before we reach the end of I1 or I2. */ 2422 /* Determine how far we can go before we reach the end of I1 or I2. */
2414 int len1 = (i1 != 0 ? INTERVAL_LAST_POS (i1) : end) - pos; 2423 EMACS_INT len1 = (i1 != 0 ? INTERVAL_LAST_POS (i1) : end) - pos;
2415 int len2 = (i2 != 0 ? INTERVAL_LAST_POS (i2) : end) - pos; 2424 EMACS_INT len2 = (i2 != 0 ? INTERVAL_LAST_POS (i2) : end) - pos;
2416 int distance = min (len1, len2); 2425 EMACS_INT distance = min (len1, len2);
2417 2426
2418 /* If we ever find a mismatch between the strings, 2427 /* If we ever find a mismatch between the strings,
2419 they differ. */ 2428 they differ. */
@@ -2437,7 +2446,9 @@ compare_string_intervals (Lisp_Object s1, Lisp_Object s2)
2437 START_BYTE ... END_BYTE in bytes. */ 2446 START_BYTE ... END_BYTE in bytes. */
2438 2447
2439static void 2448static void
2440set_intervals_multibyte_1 (INTERVAL i, int multi_flag, int start, int start_byte, int end, int end_byte) 2449set_intervals_multibyte_1 (INTERVAL i, int multi_flag,
2450 EMACS_INT start, EMACS_INT start_byte,
2451 EMACS_INT end, EMACS_INT end_byte)
2441{ 2452{
2442 /* Fix the length of this interval. */ 2453 /* Fix the length of this interval. */
2443 if (multi_flag) 2454 if (multi_flag)
@@ -2455,11 +2466,11 @@ set_intervals_multibyte_1 (INTERVAL i, int multi_flag, int start, int start_byte
2455 /* Recursively fix the length of the subintervals. */ 2466 /* Recursively fix the length of the subintervals. */
2456 if (i->left) 2467 if (i->left)
2457 { 2468 {
2458 int left_end, left_end_byte; 2469 EMACS_INT left_end, left_end_byte;
2459 2470
2460 if (multi_flag) 2471 if (multi_flag)
2461 { 2472 {
2462 int temp; 2473 EMACS_INT temp;
2463 left_end_byte = start_byte + LEFT_TOTAL_LENGTH (i); 2474 left_end_byte = start_byte + LEFT_TOTAL_LENGTH (i);
2464 left_end = BYTE_TO_CHAR (left_end_byte); 2475 left_end = BYTE_TO_CHAR (left_end_byte);
2465 2476
@@ -2488,11 +2499,11 @@ set_intervals_multibyte_1 (INTERVAL i, int multi_flag, int start, int start_byte
2488 } 2499 }
2489 if (i->right) 2500 if (i->right)
2490 { 2501 {
2491 int right_start_byte, right_start; 2502 EMACS_INT right_start_byte, right_start;
2492 2503
2493 if (multi_flag) 2504 if (multi_flag)
2494 { 2505 {
2495 int temp; 2506 EMACS_INT temp;
2496 2507
2497 right_start_byte = end_byte - RIGHT_TOTAL_LENGTH (i); 2508 right_start_byte = end_byte - RIGHT_TOTAL_LENGTH (i);
2498 right_start = BYTE_TO_CHAR (right_start_byte); 2509 right_start = BYTE_TO_CHAR (right_start_byte);