aboutsummaryrefslogtreecommitdiffstats
path: root/src/intervals.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/intervals.c')
-rw-r--r--src/intervals.c192
1 files changed, 110 insertions, 82 deletions
diff --git a/src/intervals.c b/src/intervals.c
index b0ef7c8d3b9..2dcf208a676 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -62,6 +62,38 @@ static INTERVAL reproduce_tree (INTERVAL, INTERVAL);
62 62
63/* Utility functions for intervals. */ 63/* Utility functions for intervals. */
64 64
65/* Use these functions to set Lisp_Object
66 or pointer slots of struct interval. */
67
68static inline void
69set_interval_object (INTERVAL i, Lisp_Object obj)
70{
71 eassert (BUFFERP (obj) || STRINGP (obj));
72 i->up_obj = 1;
73 i->up.obj = obj;
74}
75
76static inline void
77set_interval_left (INTERVAL i, INTERVAL left)
78{
79 i->left = left;
80}
81
82static inline void
83set_interval_right (INTERVAL i, INTERVAL right)
84{
85 i->right = right;
86}
87
88/* Make the parent of D be whatever the parent of S is, regardless
89 of the type. This is used when balancing an interval tree. */
90
91static inline void
92copy_interval_parent (INTERVAL d, INTERVAL s)
93{
94 d->up = s->up;
95 d->up_obj = s->up_obj;
96}
65 97
66/* Create the root interval of some object, a buffer or string. */ 98/* Create the root interval of some object, a buffer or string. */
67 99
@@ -79,18 +111,18 @@ create_root_interval (Lisp_Object parent)
79 new->total_length = (BUF_Z (XBUFFER (parent)) 111 new->total_length = (BUF_Z (XBUFFER (parent))
80 - BUF_BEG (XBUFFER (parent))); 112 - BUF_BEG (XBUFFER (parent)));
81 eassert (0 <= TOTAL_LENGTH (new)); 113 eassert (0 <= TOTAL_LENGTH (new));
82 buffer_set_intervals (XBUFFER (parent), new); 114 set_buffer_intervals (XBUFFER (parent), new);
83 new->position = BEG; 115 new->position = BEG;
84 } 116 }
85 else if (STRINGP (parent)) 117 else if (STRINGP (parent))
86 { 118 {
87 new->total_length = SCHARS (parent); 119 new->total_length = SCHARS (parent);
88 eassert (0 <= TOTAL_LENGTH (new)); 120 eassert (0 <= TOTAL_LENGTH (new));
89 string_set_intervals (parent, new); 121 set_string_intervals (parent, new);
90 new->position = 0; 122 new->position = 0;
91 } 123 }
92 124
93 interval_set_object (new, parent); 125 set_interval_object (new, parent);
94 126
95 return new; 127 return new;
96} 128}
@@ -104,7 +136,7 @@ copy_properties (register INTERVAL source, register INTERVAL target)
104 return; 136 return;
105 137
106 COPY_INTERVAL_CACHE (source, target); 138 COPY_INTERVAL_CACHE (source, target);
107 interval_set_plist (target, Fcopy_sequence (source->plist)); 139 set_interval_plist (target, Fcopy_sequence (source->plist));
108} 140}
109 141
110/* Merge the properties of interval SOURCE into the properties 142/* Merge the properties of interval SOURCE into the properties
@@ -140,7 +172,7 @@ merge_properties (register INTERVAL source, register INTERVAL target)
140 if (NILP (val)) 172 if (NILP (val))
141 { 173 {
142 val = XCAR (o); 174 val = XCAR (o);
143 interval_set_plist (target, Fcons (sym, Fcons (val, target->plist))); 175 set_interval_plist (target, Fcons (sym, Fcons (val, target->plist)));
144 } 176 }
145 o = XCDR (o); 177 o = XCDR (o);
146 } 178 }
@@ -322,21 +354,21 @@ rotate_right (INTERVAL interval)
322 if (! ROOT_INTERVAL_P (interval)) 354 if (! ROOT_INTERVAL_P (interval))
323 { 355 {
324 if (AM_LEFT_CHILD (interval)) 356 if (AM_LEFT_CHILD (interval))
325 interval_set_left (INTERVAL_PARENT (interval), B); 357 set_interval_left (INTERVAL_PARENT (interval), B);
326 else 358 else
327 interval_set_right (INTERVAL_PARENT (interval), B); 359 set_interval_right (INTERVAL_PARENT (interval), B);
328 } 360 }
329 interval_copy_parent (B, interval); 361 copy_interval_parent (B, interval);
330 362
331 /* Make B the parent of A */ 363 /* Make B the parent of A */
332 i = B->right; 364 i = B->right;
333 interval_set_right (B, interval); 365 set_interval_right (B, interval);
334 interval_set_parent (interval, B); 366 set_interval_parent (interval, B);
335 367
336 /* Make A point to c */ 368 /* Make A point to c */
337 interval_set_left (interval, i); 369 set_interval_left (interval, i);
338 if (i) 370 if (i)
339 interval_set_parent (i, interval); 371 set_interval_parent (i, interval);
340 372
341 /* A's total length is decreased by the length of B and its left child. */ 373 /* A's total length is decreased by the length of B and its left child. */
342 interval->total_length -= B->total_length - LEFT_TOTAL_LENGTH (interval); 374 interval->total_length -= B->total_length - LEFT_TOTAL_LENGTH (interval);
@@ -369,21 +401,21 @@ rotate_left (INTERVAL interval)
369 if (! ROOT_INTERVAL_P (interval)) 401 if (! ROOT_INTERVAL_P (interval))
370 { 402 {
371 if (AM_LEFT_CHILD (interval)) 403 if (AM_LEFT_CHILD (interval))
372 interval_set_left (INTERVAL_PARENT (interval), B); 404 set_interval_left (INTERVAL_PARENT (interval), B);
373 else 405 else
374 interval_set_right (INTERVAL_PARENT (interval), B); 406 set_interval_right (INTERVAL_PARENT (interval), B);
375 } 407 }
376 interval_copy_parent (B, interval); 408 copy_interval_parent (B, interval);
377 409
378 /* Make B the parent of A */ 410 /* Make B the parent of A */
379 i = B->left; 411 i = B->left;
380 interval_set_left (B, interval); 412 set_interval_left (B, interval);
381 interval_set_parent (interval, B); 413 set_interval_parent (interval, B);
382 414
383 /* Make A point to c */ 415 /* Make A point to c */
384 interval_set_right (interval, i); 416 set_interval_right (interval, i);
385 if (i) 417 if (i)
386 interval_set_parent (i, interval); 418 set_interval_parent (i, interval);
387 419
388 /* A's total length is decreased by the length of B and its right child. */ 420 /* A's total length is decreased by the length of B and its right child. */
389 interval->total_length -= B->total_length - RIGHT_TOTAL_LENGTH (interval); 421 interval->total_length -= B->total_length - RIGHT_TOTAL_LENGTH (interval);
@@ -455,9 +487,9 @@ balance_possible_root_interval (register INTERVAL interval)
455 if (have_parent) 487 if (have_parent)
456 { 488 {
457 if (BUFFERP (parent)) 489 if (BUFFERP (parent))
458 buffer_set_intervals (XBUFFER (parent), interval); 490 set_buffer_intervals (XBUFFER (parent), interval);
459 else if (STRINGP (parent)) 491 else if (STRINGP (parent))
460 string_set_intervals (parent, interval); 492 set_string_intervals (parent, interval);
461 } 493 }
462 494
463 return interval; 495 return interval;
@@ -493,9 +525,9 @@ buffer_balance_intervals (struct buffer *b)
493 INTERVAL i; 525 INTERVAL i;
494 526
495 eassert (b != NULL); 527 eassert (b != NULL);
496 i = buffer_get_intervals (b); 528 i = buffer_intervals (b);
497 if (i) 529 if (i)
498 buffer_set_intervals (b, balance_an_interval (i)); 530 set_buffer_intervals (b, balance_an_interval (i));
499} 531}
500 532
501/* Split INTERVAL into two pieces, starting the second piece at 533/* Split INTERVAL into two pieces, starting the second piece at
@@ -519,20 +551,20 @@ split_interval_right (INTERVAL interval, ptrdiff_t offset)
519 ptrdiff_t new_length = LENGTH (interval) - offset; 551 ptrdiff_t new_length = LENGTH (interval) - offset;
520 552
521 new->position = position + offset; 553 new->position = position + offset;
522 interval_set_parent (new, interval); 554 set_interval_parent (new, interval);
523 555
524 if (NULL_RIGHT_CHILD (interval)) 556 if (NULL_RIGHT_CHILD (interval))
525 { 557 {
526 interval_set_right (interval, new); 558 set_interval_right (interval, new);
527 new->total_length = new_length; 559 new->total_length = new_length;
528 eassert (0 <= TOTAL_LENGTH (new)); 560 eassert (0 <= TOTAL_LENGTH (new));
529 } 561 }
530 else 562 else
531 { 563 {
532 /* Insert the new node between INTERVAL and its right child. */ 564 /* Insert the new node between INTERVAL and its right child. */
533 interval_set_right (new, interval->right); 565 set_interval_right (new, interval->right);
534 interval_set_parent (interval->right, new); 566 set_interval_parent (interval->right, new);
535 interval_set_right (interval, new); 567 set_interval_right (interval, new);
536 new->total_length = new_length + new->right->total_length; 568 new->total_length = new_length + new->right->total_length;
537 eassert (0 <= TOTAL_LENGTH (new)); 569 eassert (0 <= TOTAL_LENGTH (new));
538 balance_an_interval (new); 570 balance_an_interval (new);
@@ -564,20 +596,20 @@ split_interval_left (INTERVAL interval, ptrdiff_t offset)
564 596
565 new->position = interval->position; 597 new->position = interval->position;
566 interval->position = interval->position + offset; 598 interval->position = interval->position + offset;
567 interval_set_parent (new, interval); 599 set_interval_parent (new, interval);
568 600
569 if (NULL_LEFT_CHILD (interval)) 601 if (NULL_LEFT_CHILD (interval))
570 { 602 {
571 interval_set_left (interval, new); 603 set_interval_left (interval, new);
572 new->total_length = new_length; 604 new->total_length = new_length;
573 eassert (0 <= TOTAL_LENGTH (new)); 605 eassert (0 <= TOTAL_LENGTH (new));
574 } 606 }
575 else 607 else
576 { 608 {
577 /* Insert the new node between INTERVAL and its left child. */ 609 /* Insert the new node between INTERVAL and its left child. */
578 interval_set_left (new, interval->left); 610 set_interval_left (new, interval->left);
579 interval_set_parent (new->left, new); 611 set_interval_parent (new->left, new);
580 interval_set_left (interval, new); 612 set_interval_left (interval, new);
581 new->total_length = new_length + new->left->total_length; 613 new->total_length = new_length + new->left->total_length;
582 eassert (0 <= TOTAL_LENGTH (new)); 614 eassert (0 <= TOTAL_LENGTH (new));
583 balance_an_interval (new); 615 balance_an_interval (new);
@@ -952,20 +984,20 @@ adjust_intervals_for_insertion (INTERVAL tree,
952 RESET_INTERVAL (&newi); 984 RESET_INTERVAL (&newi);
953 pleft = prev ? prev->plist : Qnil; 985 pleft = prev ? prev->plist : Qnil;
954 pright = i ? i->plist : Qnil; 986 pright = i ? i->plist : Qnil;
955 interval_set_plist (&newi, merge_properties_sticky (pleft, pright)); 987 set_interval_plist (&newi, merge_properties_sticky (pleft, pright));
956 988
957 if (! prev) /* i.e. position == BEG */ 989 if (! prev) /* i.e. position == BEG */
958 { 990 {
959 if (! intervals_equal (i, &newi)) 991 if (! intervals_equal (i, &newi))
960 { 992 {
961 i = split_interval_left (i, length); 993 i = split_interval_left (i, length);
962 interval_set_plist (i, newi.plist); 994 set_interval_plist (i, newi.plist);
963 } 995 }
964 } 996 }
965 else if (! intervals_equal (prev, &newi)) 997 else if (! intervals_equal (prev, &newi))
966 { 998 {
967 prev = split_interval_right (prev, position - prev->position); 999 prev = split_interval_right (prev, position - prev->position);
968 interval_set_plist (prev, newi.plist); 1000 set_interval_plist (prev, newi.plist);
969 if (i && intervals_equal (prev, i)) 1001 if (i && intervals_equal (prev, i))
970 merge_interval_right (prev); 1002 merge_interval_right (prev);
971 } 1003 }
@@ -1190,8 +1222,8 @@ delete_node (register INTERVAL i)
1190 this->total_length += migrate_amt; 1222 this->total_length += migrate_amt;
1191 } 1223 }
1192 eassert (0 <= TOTAL_LENGTH (this)); 1224 eassert (0 <= TOTAL_LENGTH (this));
1193 interval_set_left (this, migrate); 1225 set_interval_left (this, migrate);
1194 interval_set_parent (migrate, this); 1226 set_interval_parent (migrate, this);
1195 1227
1196 return i->right; 1228 return i->right;
1197} 1229}
@@ -1216,12 +1248,12 @@ delete_interval (register INTERVAL i)
1216 GET_INTERVAL_OBJECT (owner, i); 1248 GET_INTERVAL_OBJECT (owner, i);
1217 parent = delete_node (i); 1249 parent = delete_node (i);
1218 if (parent) 1250 if (parent)
1219 interval_set_object (parent, owner); 1251 set_interval_object (parent, owner);
1220 1252
1221 if (BUFFERP (owner)) 1253 if (BUFFERP (owner))
1222 buffer_set_intervals (XBUFFER (owner), parent); 1254 set_buffer_intervals (XBUFFER (owner), parent);
1223 else if (STRINGP (owner)) 1255 else if (STRINGP (owner))
1224 string_set_intervals (owner, parent); 1256 set_string_intervals (owner, parent);
1225 else 1257 else
1226 abort (); 1258 abort ();
1227 1259
@@ -1231,15 +1263,15 @@ delete_interval (register INTERVAL i)
1231 parent = INTERVAL_PARENT (i); 1263 parent = INTERVAL_PARENT (i);
1232 if (AM_LEFT_CHILD (i)) 1264 if (AM_LEFT_CHILD (i))
1233 { 1265 {
1234 interval_set_left (parent, delete_node (i)); 1266 set_interval_left (parent, delete_node (i));
1235 if (parent->left) 1267 if (parent->left)
1236 interval_set_parent (parent->left, parent); 1268 set_interval_parent (parent->left, parent);
1237 } 1269 }
1238 else 1270 else
1239 { 1271 {
1240 interval_set_right (parent, delete_node (i)); 1272 set_interval_right (parent, delete_node (i));
1241 if (parent->right) 1273 if (parent->right)
1242 interval_set_parent (parent->right, parent); 1274 set_interval_parent (parent->right, parent);
1243 } 1275 }
1244} 1276}
1245 1277
@@ -1320,8 +1352,8 @@ static void
1320adjust_intervals_for_deletion (struct buffer *buffer, 1352adjust_intervals_for_deletion (struct buffer *buffer,
1321 ptrdiff_t start, ptrdiff_t length) 1353 ptrdiff_t start, ptrdiff_t length)
1322{ 1354{
1323 register ptrdiff_t left_to_delete = length; 1355 ptrdiff_t left_to_delete = length;
1324 register INTERVAL tree = buffer_get_intervals (buffer); 1356 INTERVAL tree = buffer_intervals (buffer);
1325 Lisp_Object parent; 1357 Lisp_Object parent;
1326 ptrdiff_t offset; 1358 ptrdiff_t offset;
1327 1359
@@ -1336,7 +1368,7 @@ adjust_intervals_for_deletion (struct buffer *buffer,
1336 1368
1337 if (length == TOTAL_LENGTH (tree)) 1369 if (length == TOTAL_LENGTH (tree))
1338 { 1370 {
1339 buffer_set_intervals (buffer, NULL); 1371 set_buffer_intervals (buffer, NULL);
1340 return; 1372 return;
1341 } 1373 }
1342 1374
@@ -1353,10 +1385,10 @@ adjust_intervals_for_deletion (struct buffer *buffer,
1353 { 1385 {
1354 left_to_delete -= interval_deletion_adjustment (tree, start - offset, 1386 left_to_delete -= interval_deletion_adjustment (tree, start - offset,
1355 left_to_delete); 1387 left_to_delete);
1356 tree = buffer_get_intervals (buffer); 1388 tree = buffer_intervals (buffer);
1357 if (left_to_delete == tree->total_length) 1389 if (left_to_delete == tree->total_length)
1358 { 1390 {
1359 buffer_set_intervals (buffer, NULL); 1391 set_buffer_intervals (buffer, NULL);
1360 return; 1392 return;
1361 } 1393 }
1362 } 1394 }
@@ -1370,11 +1402,11 @@ adjust_intervals_for_deletion (struct buffer *buffer,
1370void 1402void
1371offset_intervals (struct buffer *buffer, ptrdiff_t start, ptrdiff_t length) 1403offset_intervals (struct buffer *buffer, ptrdiff_t start, ptrdiff_t length)
1372{ 1404{
1373 if (!buffer_get_intervals (buffer) || length == 0) 1405 if (!buffer_intervals (buffer) || length == 0)
1374 return; 1406 return;
1375 1407
1376 if (length > 0) 1408 if (length > 0)
1377 adjust_intervals_for_insertion (buffer_get_intervals (buffer), 1409 adjust_intervals_for_insertion (buffer_intervals (buffer),
1378 start, length); 1410 start, length);
1379 else 1411 else
1380 { 1412 {
@@ -1510,9 +1542,9 @@ reproduce_interval (INTERVAL source)
1510 copy_properties (source, target); 1542 copy_properties (source, target);
1511 1543
1512 if (! NULL_LEFT_CHILD (source)) 1544 if (! NULL_LEFT_CHILD (source))
1513 interval_set_left (target, reproduce_tree (source->left, target)); 1545 set_interval_left (target, reproduce_tree (source->left, target));
1514 if (! NULL_RIGHT_CHILD (source)) 1546 if (! NULL_RIGHT_CHILD (source))
1515 interval_set_right (target, reproduce_tree (source->right, target)); 1547 set_interval_right (target, reproduce_tree (source->right, target));
1516 1548
1517 return target; 1549 return target;
1518} 1550}
@@ -1525,18 +1557,16 @@ reproduce_interval (INTERVAL source)
1525static INTERVAL 1557static INTERVAL
1526reproduce_tree (INTERVAL source, INTERVAL parent) 1558reproduce_tree (INTERVAL source, INTERVAL parent)
1527{ 1559{
1528 register INTERVAL target = reproduce_interval (source); 1560 INTERVAL target = reproduce_interval (source);
1529 1561 set_interval_parent (target, parent);
1530 interval_set_parent (target, parent);
1531 return target; 1562 return target;
1532} 1563}
1533 1564
1534static INTERVAL 1565static INTERVAL
1535reproduce_tree_obj (INTERVAL source, Lisp_Object parent) 1566reproduce_tree_obj (INTERVAL source, Lisp_Object parent)
1536{ 1567{
1537 register INTERVAL target = reproduce_interval (source); 1568 INTERVAL target = reproduce_interval (source);
1538 1569 set_interval_object (target, parent);
1539 interval_set_object (target, parent);
1540 return target; 1570 return target;
1541} 1571}
1542 1572
@@ -1582,12 +1612,10 @@ graft_intervals_into_buffer (INTERVAL source, ptrdiff_t position,
1582 ptrdiff_t length, struct buffer *buffer, 1612 ptrdiff_t length, struct buffer *buffer,
1583 int inherit) 1613 int inherit)
1584{ 1614{
1585 register INTERVAL under, over, this; 1615 INTERVAL tree = buffer_intervals (buffer);
1586 register INTERVAL tree; 1616 INTERVAL under, over, this;
1587 ptrdiff_t over_used; 1617 ptrdiff_t over_used;
1588 1618
1589 tree = buffer_get_intervals (buffer);
1590
1591 /* If the new text has no properties, then with inheritance it 1619 /* If the new text has no properties, then with inheritance it
1592 becomes part of whatever interval it was inserted into. 1620 becomes part of whatever interval it was inserted into.
1593 To prevent inheritance, we must clear out the properties 1621 To prevent inheritance, we must clear out the properties
@@ -1616,9 +1644,9 @@ graft_intervals_into_buffer (INTERVAL source, ptrdiff_t position,
1616 Lisp_Object buf; 1644 Lisp_Object buf;
1617 1645
1618 XSETBUFFER (buf, buffer); 1646 XSETBUFFER (buf, buffer);
1619 buffer_set_intervals (buffer, reproduce_tree_obj (source, buf)); 1647 set_buffer_intervals (buffer, reproduce_tree_obj (source, buf));
1620 buffer_get_intervals (buffer)->position = BUF_BEG (buffer); 1648 buffer_intervals (buffer)->position = BUF_BEG (buffer);
1621 eassert (buffer_get_intervals (buffer)->up_obj == 1); 1649 eassert (buffer_intervals (buffer)->up_obj == 1);
1622 return; 1650 return;
1623 } 1651 }
1624 else if (!tree) 1652 else if (!tree)
@@ -1876,7 +1904,7 @@ set_point_both (ptrdiff_t charpos, ptrdiff_t bytepos)
1876 1904
1877 /* If we have no text properties and overlays, 1905 /* If we have no text properties and overlays,
1878 then we can do it quickly. */ 1906 then we can do it quickly. */
1879 if (!buffer_get_intervals (current_buffer) && ! have_overlays) 1907 if (!buffer_intervals (current_buffer) && ! have_overlays)
1880 { 1908 {
1881 temp_set_point_both (current_buffer, charpos, bytepos); 1909 temp_set_point_both (current_buffer, charpos, bytepos);
1882 return; 1910 return;
@@ -1885,7 +1913,7 @@ set_point_both (ptrdiff_t charpos, ptrdiff_t bytepos)
1885 /* Set TO to the interval containing the char after CHARPOS, 1913 /* Set TO to the interval containing the char after CHARPOS,
1886 and TOPREV to the interval containing the char before CHARPOS. 1914 and TOPREV to the interval containing the char before CHARPOS.
1887 Either one may be null. They may be equal. */ 1915 Either one may be null. They may be equal. */
1888 to = find_interval (buffer_get_intervals (current_buffer), charpos); 1916 to = find_interval (buffer_intervals (current_buffer), charpos);
1889 if (charpos == BEGV) 1917 if (charpos == BEGV)
1890 toprev = 0; 1918 toprev = 0;
1891 else if (to && to->position == charpos) 1919 else if (to && to->position == charpos)
@@ -1899,7 +1927,7 @@ set_point_both (ptrdiff_t charpos, ptrdiff_t bytepos)
1899 and FROMPREV to the interval containing the char before PT. 1927 and FROMPREV to the interval containing the char before PT.
1900 Either one may be null. They may be equal. */ 1928 Either one may be null. They may be equal. */
1901 /* We could cache this and save time. */ 1929 /* We could cache this and save time. */
1902 from = find_interval (buffer_get_intervals (current_buffer), buffer_point); 1930 from = find_interval (buffer_intervals (current_buffer), buffer_point);
1903 if (buffer_point == BEGV) 1931 if (buffer_point == BEGV)
1904 fromprev = 0; 1932 fromprev = 0;
1905 else if (from && from->position == PT) 1933 else if (from && from->position == PT)
@@ -2005,7 +2033,7 @@ set_point_both (ptrdiff_t charpos, ptrdiff_t bytepos)
2005 /* Set TO to the interval containing the char after CHARPOS, 2033 /* Set TO to the interval containing the char after CHARPOS,
2006 and TOPREV to the interval containing the char before CHARPOS. 2034 and TOPREV to the interval containing the char before CHARPOS.
2007 Either one may be null. They may be equal. */ 2035 Either one may be null. They may be equal. */
2008 to = find_interval (buffer_get_intervals (current_buffer), charpos); 2036 to = find_interval (buffer_intervals (current_buffer), charpos);
2009 if (charpos == BEGV) 2037 if (charpos == BEGV)
2010 toprev = 0; 2038 toprev = 0;
2011 else if (to && to->position == charpos) 2039 else if (to && to->position == charpos)
@@ -2138,11 +2166,11 @@ get_property_and_range (ptrdiff_t pos, Lisp_Object prop, Lisp_Object *val,
2138 INTERVAL i, prev, next; 2166 INTERVAL i, prev, next;
2139 2167
2140 if (NILP (object)) 2168 if (NILP (object))
2141 i = find_interval (buffer_get_intervals (current_buffer), pos); 2169 i = find_interval (buffer_intervals (current_buffer), pos);
2142 else if (BUFFERP (object)) 2170 else if (BUFFERP (object))
2143 i = find_interval (buffer_get_intervals (XBUFFER (object)), pos); 2171 i = find_interval (buffer_intervals (XBUFFER (object)), pos);
2144 else if (STRINGP (object)) 2172 else if (STRINGP (object))
2145 i = find_interval (string_get_intervals (object), pos); 2173 i = find_interval (string_intervals (object), pos);
2146 else 2174 else
2147 abort (); 2175 abort ();
2148 2176
@@ -2269,13 +2297,13 @@ void
2269copy_intervals_to_string (Lisp_Object string, struct buffer *buffer, 2297copy_intervals_to_string (Lisp_Object string, struct buffer *buffer,
2270 ptrdiff_t position, ptrdiff_t length) 2298 ptrdiff_t position, ptrdiff_t length)
2271{ 2299{
2272 INTERVAL interval_copy = copy_intervals (buffer_get_intervals (buffer), 2300 INTERVAL interval_copy = copy_intervals (buffer_intervals (buffer),
2273 position, length); 2301 position, length);
2274 if (!interval_copy) 2302 if (!interval_copy)
2275 return; 2303 return;
2276 2304
2277 interval_set_object (interval_copy, string); 2305 set_interval_object (interval_copy, string);
2278 string_set_intervals (string, interval_copy); 2306 set_string_intervals (string, interval_copy);
2279} 2307}
2280 2308
2281/* Return 1 if strings S1 and S2 have identical properties; 0 otherwise. 2309/* Return 1 if strings S1 and S2 have identical properties; 0 otherwise.
@@ -2288,8 +2316,8 @@ compare_string_intervals (Lisp_Object s1, Lisp_Object s2)
2288 ptrdiff_t pos = 0; 2316 ptrdiff_t pos = 0;
2289 ptrdiff_t end = SCHARS (s1); 2317 ptrdiff_t end = SCHARS (s1);
2290 2318
2291 i1 = find_interval (string_get_intervals (s1), 0); 2319 i1 = find_interval (string_intervals (s1), 0);
2292 i2 = find_interval (string_get_intervals (s2), 0); 2320 i2 = find_interval (string_intervals (s2), 0);
2293 2321
2294 while (pos < end) 2322 while (pos < end)
2295 { 2323 {
@@ -2414,13 +2442,13 @@ set_intervals_multibyte_1 (INTERVAL i, int multi_flag,
2414 { 2442 {
2415 if ((i)->left) 2443 if ((i)->left)
2416 { 2444 {
2417 interval_set_plist (i, i->left->plist); 2445 set_interval_plist (i, i->left->plist);
2418 (i)->left->total_length = 0; 2446 (i)->left->total_length = 0;
2419 delete_interval ((i)->left); 2447 delete_interval ((i)->left);
2420 } 2448 }
2421 else 2449 else
2422 { 2450 {
2423 interval_set_plist (i, i->right->plist); 2451 set_interval_plist (i, i->right->plist);
2424 (i)->right->total_length = 0; 2452 (i)->right->total_length = 0;
2425 delete_interval ((i)->right); 2453 delete_interval ((i)->right);
2426 } 2454 }
@@ -2434,7 +2462,7 @@ set_intervals_multibyte_1 (INTERVAL i, int multi_flag,
2434void 2462void
2435set_intervals_multibyte (int multi_flag) 2463set_intervals_multibyte (int multi_flag)
2436{ 2464{
2437 INTERVAL i = buffer_get_intervals (current_buffer); 2465 INTERVAL i = buffer_intervals (current_buffer);
2438 2466
2439 if (i) 2467 if (i)
2440 set_intervals_multibyte_1 (i, multi_flag, BEG, BEG_BYTE, Z, Z_BYTE); 2468 set_intervals_multibyte_1 (i, multi_flag, BEG, BEG_BYTE, Z, Z_BYTE);