Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
d8638d30
Commit
d8638d30
authored
Dec 04, 1994
by
Richard M. Stallman
Browse files
(compare_string_intervals): New function.
parent
3fc86d4b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
0 deletions
+41
-0
src/intervals.c
src/intervals.c
+41
-0
No files found.
src/intervals.c
View file @
d8638d30
...
...
@@ -53,6 +53,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define TMEM(sym, set) (CONSP (set) ? ! NILP (Fmemq (sym, set)) : ! NILP (set))
#define min(x, y) ((x) < (y) ? (x) : (y))
Lisp_Object
merge_properties_sticky
();
/* Utility functions for intervals. */
...
...
@@ -2036,5 +2038,44 @@ copy_intervals_to_string (string, buffer, position, length)
interval_copy
->
parent
=
(
INTERVAL
)
string
;
XSTRING
(
string
)
->
intervals
=
interval_copy
;
}
/* Return 1 if string S1 and S2 have identical properties; 0 otherwise.
Assume they have identical characters. */
int
compare_string_intervals
(
s1
,
s2
)
Lisp_Object
s1
,
s2
;
{
INTERVAL
i1
,
i2
;
int
pos
=
1
;
int
end
=
XSTRING
(
s1
)
->
size
+
1
;
/* We specify 1 as position because the interval functions
always use positions starting at 1. */
i1
=
find_interval
(
XSTRING
(
s1
)
->
intervals
,
1
);
i2
=
find_interval
(
XSTRING
(
s2
)
->
intervals
,
1
);
while
(
pos
<
end
)
{
/* Determine how far we can go before we reach the end of I1 or I2. */
int
len1
=
(
i1
!=
0
?
INTERVAL_LAST_POS
(
i1
)
:
end
)
-
pos
;
int
len2
=
(
i2
!=
0
?
INTERVAL_LAST_POS
(
i2
)
:
end
)
-
pos
;
int
distance
=
min
(
len1
,
len2
);
/* If we ever find a mismatch between the strings,
they differ. */
if
(
!
intervals_equal
(
i1
,
i2
))
return
0
;
/* Advance POS till the end of the shorter interval,
and advance one or both interval pointers for the new position. */
pos
+=
distance
;
if
(
len1
==
distance
)
i1
=
next_interval
(
i1
);
if
(
len2
==
distance
)
i2
=
next_interval
(
i2
);
}
return
1
;
}
#endif
/* USE_TEXT_PROPERTIES */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment