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);