comparison src/extents.h @ 412:697ef44129c6 r21-2-14

Import from CVS: tag r21-2-14
author cvs
date Mon, 13 Aug 2007 11:20:41 +0200
parents b8cc9ab3f761
children 11054d720c21
comparison
equal deleted inserted replaced
411:12e008d41344 412:697ef44129c6
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */ 19 Boston, MA 02111-1307, USA. */
20 20
21 /* Synched up with: Not in FSF. */ 21 /* Synched up with: Not in FSF. */
22 22
23 #ifndef INCLUDED_extents_h_ 23 #ifndef _XEMACS_EXTENTS_H_
24 #define INCLUDED_extents_h_ 24 #define _XEMACS_EXTENTS_H_
25 25
26 DECLARE_LRECORD (extent, struct extent); 26 DECLARE_LRECORD (extent, struct extent);
27 #define XEXTENT(x) XRECORD (x, extent, struct extent) 27 #define XEXTENT(x) XRECORD (x, extent, struct extent)
28 #define XSETEXTENT(x, p) XSETRECORD (x, p, extent) 28 #define XSETEXTENT(x, p) XSETRECORD (x, p, extent)
29 #define EXTENTP(x) RECORDP (x, extent) 29 #define EXTENTP(x) RECORDP (x, extent)
30 #define GC_EXTENTP(x) GC_RECORDP (x, extent)
30 #define CHECK_EXTENT(x) CHECK_RECORD (x, extent) 31 #define CHECK_EXTENT(x) CHECK_RECORD (x, extent)
31 #define CONCHECK_EXTENT(x) CONCHECK_RECORD (x, extent) 32 #define CONCHECK_EXTENT(x) CONCHECK_RECORD (x, extent)
32 33
33 /* the layouts for glyphs (extent->flags.glyph_layout). Must fit in 2 bits. */ 34 /* the layouts for glyphs (extent->flags.glyph_layout). Must fit in 2 bits. */
34 typedef enum glyph_layout 35 typedef enum glyph_layout
144 DECLARE_LRECORD (extent_auxiliary, struct extent_auxiliary); 145 DECLARE_LRECORD (extent_auxiliary, struct extent_auxiliary);
145 #define XEXTENT_AUXILIARY(x) \ 146 #define XEXTENT_AUXILIARY(x) \
146 XRECORD (x, extent_auxiliary, struct extent_auxiliary) 147 XRECORD (x, extent_auxiliary, struct extent_auxiliary)
147 #define XSETEXTENT_AUXILIARY(x, p) XSETRECORD (x, p, extent_auxiliary) 148 #define XSETEXTENT_AUXILIARY(x, p) XSETRECORD (x, p, extent_auxiliary)
148 #define EXTENT_AUXILIARYP(x) RECORDP (x, extent_auxiliary) 149 #define EXTENT_AUXILIARYP(x) RECORDP (x, extent_auxiliary)
150 #define GC_EXTENT_AUXILIARYP(x) GC_RECORDP (x, extent_auxiliary)
149 #define CHECK_EXTENT_AUXILIARY(x) CHECK_RECORD (x, extent_auxiliary) 151 #define CHECK_EXTENT_AUXILIARY(x) CHECK_RECORD (x, extent_auxiliary)
150 #define CONCHECK_EXTENT_AUXILIARY(x) CONCHECK_RECORD (x, extent_auxiliary) 152 #define CONCHECK_EXTENT_AUXILIARY(x) CONCHECK_RECORD (x, extent_auxiliary)
151 153
152 struct extent_info 154 struct extent_info
153 { 155 {
159 161
160 DECLARE_LRECORD (extent_info, struct extent_info); 162 DECLARE_LRECORD (extent_info, struct extent_info);
161 #define XEXTENT_INFO(x) XRECORD (x, extent_info, struct extent_info) 163 #define XEXTENT_INFO(x) XRECORD (x, extent_info, struct extent_info)
162 #define XSETEXTENT_INFO(x, p) XSETRECORD (x, p, extent_info) 164 #define XSETEXTENT_INFO(x, p) XSETRECORD (x, p, extent_info)
163 #define EXTENT_INFOP(x) RECORDP (x, extent_info) 165 #define EXTENT_INFOP(x) RECORDP (x, extent_info)
166 #define GC_EXTENT_INFOP(x) GC_RECORDP (x, extent_info)
164 #define CHECK_EXTENT_INFO(x) CHECK_RECORD (x, extent_info) 167 #define CHECK_EXTENT_INFO(x) CHECK_RECORD (x, extent_info)
165 #define CONCHECK_EXTENT_INFO(x) CONCHECK_RECORD (x, extent_info) 168 #define CONCHECK_EXTENT_INFO(x) CONCHECK_RECORD (x, extent_info)
166 169
167 void flush_cached_extent_info (Lisp_Object extent_info); 170 void flush_cached_extent_info (Lisp_Object extent_info);
168 171
175 only be used on extents known not to have a parent. The other 178 only be used on extents known not to have a parent. The other
176 versions chase down any parent links. */ 179 versions chase down any parent links. */
177 180
178 #define extent_no_chase_normal_field(e, field) ((e)->flags.field) 181 #define extent_no_chase_normal_field(e, field) ((e)->flags.field)
179 182
180 INLINE_HEADER struct extent_auxiliary *extent_aux_or_default (EXTENT e); 183 INLINE struct extent_auxiliary *extent_aux_or_default (EXTENT e);
181 INLINE_HEADER struct extent_auxiliary * 184 INLINE struct extent_auxiliary *
182 extent_aux_or_default (EXTENT e) 185 extent_aux_or_default (EXTENT e)
183 { 186 {
184 return e->flags.has_aux ? 187 return e->flags.has_aux ?
185 XEXTENT_AUXILIARY (XCAR (e->plist)) : 188 XEXTENT_AUXILIARY (XCAR (e->plist)) :
186 & extent_auxiliary_defaults; 189 & extent_auxiliary_defaults;
257 #define extent_duplicable_p(e) extent_normal_field (e, duplicable) 260 #define extent_duplicable_p(e) extent_normal_field (e, duplicable)
258 #define extent_detachable_p(e) extent_normal_field (e, detachable) 261 #define extent_detachable_p(e) extent_normal_field (e, detachable)
259 #define extent_internal_p(e) extent_normal_field (e, internal) 262 #define extent_internal_p(e) extent_normal_field (e, internal)
260 #define extent_in_red_event_p(e) extent_normal_field (e, in_red_event) 263 #define extent_in_red_event_p(e) extent_normal_field (e, in_red_event)
261 264
262 INLINE_HEADER Lisp_Object * extent_no_chase_plist_addr (EXTENT e); 265 INLINE Lisp_Object * extent_no_chase_plist_addr (EXTENT e);
263 INLINE_HEADER Lisp_Object * 266 INLINE Lisp_Object *
264 extent_no_chase_plist_addr (EXTENT e) 267 extent_no_chase_plist_addr (EXTENT e)
265 { 268 {
266 return e->flags.has_aux ? &XCDR (e->plist) : &e->plist; 269 return e->flags.has_aux ? &XCDR (e->plist) : &e->plist;
267 } 270 }
268 271
316 EXFUN (Fprevious_single_property_change, 4); 319 EXFUN (Fprevious_single_property_change, 4);
317 EXFUN (Fset_extent_endpoints, 4); 320 EXFUN (Fset_extent_endpoints, 4);
318 EXFUN (Fset_extent_parent, 2); 321 EXFUN (Fset_extent_parent, 2);
319 322
320 extern int inside_undo; 323 extern int inside_undo;
321 extern int in_modeline_generation;
322 324
323 struct extent_fragment *extent_fragment_new (Lisp_Object buffer_or_string, 325 struct extent_fragment *extent_fragment_new (Lisp_Object buffer_or_string,
324 struct frame *frm); 326 struct frame *frm);
325 face_index extent_fragment_update (struct window *w, 327 face_index extent_fragment_update (struct window *w,
326 struct extent_fragment *ef, 328 struct extent_fragment *ef,
338 EXTENT extent_ancestor_1 (EXTENT e); 340 EXTENT extent_ancestor_1 (EXTENT e);
339 341
340 /* extent_ancestor() chases all the parent links until there aren't any 342 /* extent_ancestor() chases all the parent links until there aren't any
341 more. extent_ancestor_1() does the same thing but it a function; 343 more. extent_ancestor_1() does the same thing but it a function;
342 the following optimizes the most common case. */ 344 the following optimizes the most common case. */
343 INLINE_HEADER EXTENT extent_ancestor (EXTENT e); 345 INLINE EXTENT extent_ancestor (EXTENT e);
344 INLINE_HEADER EXTENT 346 INLINE EXTENT
345 extent_ancestor (EXTENT e) 347 extent_ancestor (EXTENT e)
346 { 348 {
347 return e->flags.has_parent ? extent_ancestor_1 (e) : e; 349 return e->flags.has_parent ? extent_ancestor_1 (e) : e;
348 } 350 }
349 351
366 Lisp_Object inhibit_read_only_value); 368 Lisp_Object inhibit_read_only_value);
367 void process_extents_for_insertion (Lisp_Object object, 369 void process_extents_for_insertion (Lisp_Object object,
368 Bytind opoint, Bytecount length); 370 Bytind opoint, Bytecount length);
369 void process_extents_for_deletion (Lisp_Object object, Bytind from, 371 void process_extents_for_deletion (Lisp_Object object, Bytind from,
370 Bytind to, int destroy_them); 372 Bytind to, int destroy_them);
371 void report_extent_modification (Lisp_Object, Bufpos, Bufpos, int); 373 void report_extent_modification (Lisp_Object, Bufpos, Bufpos, int *, int);
372 374
373 void set_extent_glyph (EXTENT extent, Lisp_Object glyph, int endp, 375 void set_extent_glyph (EXTENT extent, Lisp_Object glyph, int endp,
374 glyph_layout layout); 376 glyph_layout layout);
375 377
376 void add_string_extents (Lisp_Object string, struct buffer *buf, 378 void add_string_extents (Lisp_Object string, struct buffer *buf,
396 struct overhead_stats *ovstats); 398 struct overhead_stats *ovstats);
397 #endif 399 #endif
398 400
399 #endif /* emacs */ 401 #endif /* emacs */
400 402
401 #endif /* INCLUDED_extents_h_ */ 403 #endif /* _XEMACS_EXTENTS_H_ */