Mercurial > emacs
comparison src/marker.c @ 109126:aec1143e8d85
Convert (most) functions in src to standard C.
* src/alloc.c: Convert function definitions to standard C.
* src/atimer.c:
* src/bidi.c:
* src/bytecode.c:
* src/callint.c:
* src/callproc.c:
* src/casefiddle.c:
* src/casetab.c:
* src/category.c:
* src/ccl.c:
* src/character.c:
* src/charset.c:
* src/chartab.c:
* src/cmds.c:
* src/coding.c:
* src/composite.c:
* src/data.c:
* src/dbusbind.c:
* src/dired.c:
* src/dispnew.c:
* src/doc.c:
* src/doprnt.c:
* src/ecrt0.c:
* src/editfns.c:
* src/fileio.c:
* src/filelock.c:
* src/filemode.c:
* src/fns.c:
* src/font.c:
* src/fontset.c:
* src/frame.c:
* src/fringe.c:
* src/ftfont.c:
* src/ftxfont.c:
* src/gtkutil.c:
* src/indent.c:
* src/insdel.c:
* src/intervals.c:
* src/keymap.c:
* src/lread.c:
* src/macros.c:
* src/marker.c:
* src/md5.c:
* src/menu.c:
* src/minibuf.c:
* src/prefix-args.c:
* src/print.c:
* src/ralloc.c:
* src/regex.c:
* src/region-cache.c:
* src/scroll.c:
* src/search.c:
* src/sound.c:
* src/strftime.c:
* src/syntax.c:
* src/sysdep.c:
* src/termcap.c:
* src/terminal.c:
* src/terminfo.c:
* src/textprop.c:
* src/tparam.c:
* src/undo.c:
* src/unexelf.c:
* src/window.c:
* src/xfaces.c:
* src/xfns.c:
* src/xfont.c:
* src/xftfont.c:
* src/xgselect.c:
* src/xmenu.c:
* src/xrdb.c:
* src/xselect.c:
* src/xsettings.c:
* src/xsmfns.c:
* src/xterm.c: Likewise.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Sun, 04 Jul 2010 00:50:25 -0700 |
parents | 2bc9a0c04c87 |
children | 8cfee7d2955f |
comparison
equal
deleted
inserted
replaced
109125:12b02558bf51 | 109126:aec1143e8d85 |
---|---|
37 /* Nonzero means enable debugging checks on byte/char correspondences. */ | 37 /* Nonzero means enable debugging checks on byte/char correspondences. */ |
38 | 38 |
39 static int byte_debug_flag; | 39 static int byte_debug_flag; |
40 | 40 |
41 void | 41 void |
42 clear_charpos_cache (b) | 42 clear_charpos_cache (struct buffer *b) |
43 struct buffer *b; | |
44 { | 43 { |
45 if (cached_buffer == b) | 44 if (cached_buffer == b) |
46 cached_buffer = 0; | 45 cached_buffer = 0; |
47 } | 46 } |
48 | 47 |
98 } \ | 97 } \ |
99 } \ | 98 } \ |
100 } | 99 } |
101 | 100 |
102 static void | 101 static void |
103 byte_char_debug_check (b, charpos, bytepos) | 102 byte_char_debug_check (struct buffer *b, int charpos, int bytepos) |
104 struct buffer *b; | |
105 int charpos, bytepos; | |
106 { | 103 { |
107 int nchars = 0; | 104 int nchars = 0; |
108 | 105 |
109 if (bytepos > BUF_GPT_BYTE (b)) | 106 if (bytepos > BUF_GPT_BYTE (b)) |
110 { | 107 { |
120 if (charpos - 1 != nchars) | 117 if (charpos - 1 != nchars) |
121 abort (); | 118 abort (); |
122 } | 119 } |
123 | 120 |
124 int | 121 int |
125 charpos_to_bytepos (charpos) | 122 charpos_to_bytepos (int charpos) |
126 int charpos; | |
127 { | 123 { |
128 return buf_charpos_to_bytepos (current_buffer, charpos); | 124 return buf_charpos_to_bytepos (current_buffer, charpos); |
129 } | 125 } |
130 | 126 |
131 int | 127 int |
132 buf_charpos_to_bytepos (b, charpos) | 128 buf_charpos_to_bytepos (struct buffer *b, int charpos) |
133 struct buffer *b; | |
134 int charpos; | |
135 { | 129 { |
136 struct Lisp_Marker *tail; | 130 struct Lisp_Marker *tail; |
137 int best_above, best_above_byte; | 131 int best_above, best_above_byte; |
138 int best_below, best_below_byte; | 132 int best_below, best_below_byte; |
139 | 133 |
252 | 246 |
253 /* Used for debugging: recompute the bytepos corresponding to CHARPOS | 247 /* Used for debugging: recompute the bytepos corresponding to CHARPOS |
254 in the simplest, most reliable way. */ | 248 in the simplest, most reliable way. */ |
255 | 249 |
256 int | 250 int |
257 verify_bytepos (charpos) | 251 verify_bytepos (int charpos) |
258 int charpos; | |
259 { | 252 { |
260 int below = 1; | 253 int below = 1; |
261 int below_byte = 1; | 254 int below_byte = 1; |
262 | 255 |
263 while (below != charpos) | 256 while (below != charpos) |
313 } \ | 306 } \ |
314 } \ | 307 } \ |
315 } | 308 } |
316 | 309 |
317 int | 310 int |
318 bytepos_to_charpos (bytepos) | 311 bytepos_to_charpos (int bytepos) |
319 int bytepos; | |
320 { | 312 { |
321 return buf_bytepos_to_charpos (current_buffer, bytepos); | 313 return buf_bytepos_to_charpos (current_buffer, bytepos); |
322 } | 314 } |
323 | 315 |
324 int | 316 int |
325 buf_bytepos_to_charpos (b, bytepos) | 317 buf_bytepos_to_charpos (struct buffer *b, int bytepos) |
326 struct buffer *b; | |
327 int bytepos; | |
328 { | 318 { |
329 struct Lisp_Marker *tail; | 319 struct Lisp_Marker *tail; |
330 int best_above, best_above_byte; | 320 int best_above, best_above_byte; |
331 int best_below, best_below_byte; | 321 int best_below, best_below_byte; |
332 | 322 |
554 | 544 |
555 /* This version of Fset_marker won't let the position | 545 /* This version of Fset_marker won't let the position |
556 be outside the visible part. */ | 546 be outside the visible part. */ |
557 | 547 |
558 Lisp_Object | 548 Lisp_Object |
559 set_marker_restricted (marker, pos, buffer) | 549 set_marker_restricted (Lisp_Object marker, Lisp_Object pos, Lisp_Object buffer) |
560 Lisp_Object marker, pos, buffer; | |
561 { | 550 { |
562 register int charno, bytepos; | 551 register int charno, bytepos; |
563 register struct buffer *b; | 552 register struct buffer *b; |
564 register struct Lisp_Marker *m; | 553 register struct Lisp_Marker *m; |
565 | 554 |
630 | 619 |
631 /* Set the position of MARKER, specifying both the | 620 /* Set the position of MARKER, specifying both the |
632 character position and the corresponding byte position. */ | 621 character position and the corresponding byte position. */ |
633 | 622 |
634 Lisp_Object | 623 Lisp_Object |
635 set_marker_both (marker, buffer, charpos, bytepos) | 624 set_marker_both (Lisp_Object marker, Lisp_Object buffer, int charpos, int bytepos) |
636 Lisp_Object marker, buffer; | |
637 int charpos, bytepos; | |
638 { | 625 { |
639 register struct buffer *b; | 626 register struct buffer *b; |
640 register struct Lisp_Marker *m; | 627 register struct Lisp_Marker *m; |
641 | 628 |
642 CHECK_MARKER (marker); | 629 CHECK_MARKER (marker); |
680 | 667 |
681 /* This version of set_marker_both won't let the position | 668 /* This version of set_marker_both won't let the position |
682 be outside the visible part. */ | 669 be outside the visible part. */ |
683 | 670 |
684 Lisp_Object | 671 Lisp_Object |
685 set_marker_restricted_both (marker, buffer, charpos, bytepos) | 672 set_marker_restricted_both (Lisp_Object marker, Lisp_Object buffer, int charpos, int bytepos) |
686 Lisp_Object marker, buffer; | |
687 int charpos, bytepos; | |
688 { | 673 { |
689 register struct buffer *b; | 674 register struct buffer *b; |
690 register struct Lisp_Marker *m; | 675 register struct Lisp_Marker *m; |
691 | 676 |
692 CHECK_MARKER (marker); | 677 CHECK_MARKER (marker); |
743 This is called during garbage collection, | 728 This is called during garbage collection, |
744 so we must be careful to ignore and preserve mark bits, | 729 so we must be careful to ignore and preserve mark bits, |
745 including those in chain fields of markers. */ | 730 including those in chain fields of markers. */ |
746 | 731 |
747 void | 732 void |
748 unchain_marker (marker) | 733 unchain_marker (register struct Lisp_Marker *marker) |
749 register struct Lisp_Marker *marker; | |
750 { | 734 { |
751 register struct Lisp_Marker *tail, *prev, *next; | 735 register struct Lisp_Marker *tail, *prev, *next; |
752 register struct buffer *b; | 736 register struct buffer *b; |
753 | 737 |
754 b = marker->buffer; | 738 b = marker->buffer; |
794 } | 778 } |
795 | 779 |
796 /* Return the char position of marker MARKER, as a C integer. */ | 780 /* Return the char position of marker MARKER, as a C integer. */ |
797 | 781 |
798 int | 782 int |
799 marker_position (marker) | 783 marker_position (Lisp_Object marker) |
800 Lisp_Object marker; | |
801 { | 784 { |
802 register struct Lisp_Marker *m = XMARKER (marker); | 785 register struct Lisp_Marker *m = XMARKER (marker); |
803 register struct buffer *buf = m->buffer; | 786 register struct buffer *buf = m->buffer; |
804 | 787 |
805 if (!buf) | 788 if (!buf) |
809 } | 792 } |
810 | 793 |
811 /* Return the byte position of marker MARKER, as a C integer. */ | 794 /* Return the byte position of marker MARKER, as a C integer. */ |
812 | 795 |
813 int | 796 int |
814 marker_byte_position (marker) | 797 marker_byte_position (Lisp_Object marker) |
815 Lisp_Object marker; | |
816 { | 798 { |
817 register struct Lisp_Marker *m = XMARKER (marker); | 799 register struct Lisp_Marker *m = XMARKER (marker); |
818 register struct buffer *buf = m->buffer; | 800 register struct buffer *buf = m->buffer; |
819 register int i = m->bytepos; | 801 register int i = m->bytepos; |
820 | 802 |
896 } | 878 } |
897 | 879 |
898 /* For debugging -- count the markers in buffer BUF. */ | 880 /* For debugging -- count the markers in buffer BUF. */ |
899 | 881 |
900 int | 882 int |
901 count_markers (buf) | 883 count_markers (struct buffer *buf) |
902 struct buffer *buf; | |
903 { | 884 { |
904 int total = 0; | 885 int total = 0; |
905 struct Lisp_Marker *tail; | 886 struct Lisp_Marker *tail; |
906 | 887 |
907 for (tail = BUF_MARKERS (buf); tail; tail = tail->next) | 888 for (tail = BUF_MARKERS (buf); tail; tail = tail->next) |
909 | 890 |
910 return total; | 891 return total; |
911 } | 892 } |
912 | 893 |
913 void | 894 void |
914 syms_of_marker () | 895 syms_of_marker (void) |
915 { | 896 { |
916 defsubr (&Smarker_position); | 897 defsubr (&Smarker_position); |
917 defsubr (&Smarker_buffer); | 898 defsubr (&Smarker_buffer); |
918 defsubr (&Sset_marker); | 899 defsubr (&Sset_marker); |
919 defsubr (&Scopy_marker); | 900 defsubr (&Scopy_marker); |