comparison src/extents.c @ 5117:3742ea8250b5 ben-lisp-object ben-lisp-object-final-ws-year-2005

Checking in final CVS version of workspace 'ben-lisp-object'
author Ben Wing <ben@xemacs.org>
date Sat, 26 Dec 2009 00:20:27 -0600
parents facf3239ba30
children e0db3c197671
comparison
equal deleted inserted replaced
5116:e56f73345619 5117:3742ea8250b5
975 mark_object (data->before_change_functions); 975 mark_object (data->before_change_functions);
976 mark_object (data->after_change_functions); 976 mark_object (data->after_change_functions);
977 return data->parent; 977 return data->parent;
978 } 978 }
979 979
980 DEFINE_LRECORD_IMPLEMENTATION ("extent-auxiliary", extent_auxiliary, 980 DEFINE_NONDUMPABLE_INTERNAL_LISP_OBJECT ("extent-auxiliary",
981 0, /*dumpable-flag*/ 981 extent_auxiliary,
982 mark_extent_auxiliary, internal_object_printer, 982 struct extent_auxiliary,
983 0, 0, 0, extent_auxiliary_description, 983 extent_auxiliary_description,
984 struct extent_auxiliary); 984 mark_extent_auxiliary);
985 void 985 void
986 allocate_extent_auxiliary (EXTENT ext) 986 allocate_extent_auxiliary (EXTENT ext)
987 { 987 {
988 Lisp_Object extent_aux; 988 Lisp_Object obj = ALLOC_LISP_OBJECT (extent_auxiliary);
989 struct extent_auxiliary *data = 989 struct extent_auxiliary *data = XEXTENT_AUXILIARY (obj);
990 ALLOC_LCRECORD_TYPE (struct extent_auxiliary, &lrecord_extent_auxiliary); 990
991 COPY_LCRECORD (data, &extent_auxiliary_defaults); 991 COPY_LCRECORD (data, &extent_auxiliary_defaults);
992 extent_aux = wrap_extent_auxiliary (data); 992 ext->plist = Fcons (obj, ext->plist);
993 ext->plist = Fcons (extent_aux, ext->plist);
994 ext->flags.has_aux = 1; 993 ext->flags.has_aux = 1;
995 } 994 }
996 995
997 996
998 /************************************************************************/ 997 /************************************************************************/
1152 free_extent_list (data->extents); 1151 free_extent_list (data->extents);
1153 data->extents = 0; 1152 data->extents = 0;
1154 } 1153 }
1155 } 1154 }
1156 1155
1157 DEFINE_LRECORD_IMPLEMENTATION ("extent-info", extent_info, 1156 DEFINE_NONDUMPABLE_LISP_OBJECT ("extent-info", extent_info,
1158 0, /*dumpable-flag*/ 1157 mark_extent_info, 0,
1159 mark_extent_info, internal_object_printer, 1158 finalize_extent_info, 0, 0,
1160 finalize_extent_info, 0, 0, 1159 extent_info_description,
1161 extent_info_description, 1160 struct extent_info);
1162 struct extent_info);
1163 1161
1164 static Lisp_Object 1162 static Lisp_Object
1165 allocate_extent_info (void) 1163 allocate_extent_info (void)
1166 { 1164 {
1167 Lisp_Object extent_info; 1165 Lisp_Object obj = ALLOC_LISP_OBJECT (extent_info);
1168 struct extent_info *data = 1166 struct extent_info *data = XEXTENT_INFO (obj);
1169 ALLOC_LCRECORD_TYPE (struct extent_info, &lrecord_extent_info); 1167
1170
1171 extent_info = wrap_extent_info (data);
1172 data->extents = allocate_extent_list (); 1168 data->extents = allocate_extent_list ();
1173 data->soe = 0; 1169 data->soe = 0;
1174 return extent_info; 1170 return obj;
1175 } 1171 }
1176 1172
1177 void 1173 void
1178 flush_cached_extent_info (Lisp_Object extent_info) 1174 flush_cached_extent_info (Lisp_Object extent_info)
1179 { 1175 {
3315 extent_plist (Lisp_Object obj) 3311 extent_plist (Lisp_Object obj)
3316 { 3312 {
3317 return Fextent_properties (obj); 3313 return Fextent_properties (obj);
3318 } 3314 }
3319 3315
3320 DEFINE_BASIC_LRECORD_IMPLEMENTATION_WITH_PROPS ("extent", extent, 3316 DEFINE_BASIC_LISP_OBJECT_WITH_PROPS ("extent", extent,
3321 1, /*dumpable-flag*/
3322 mark_extent, 3317 mark_extent,
3323 print_extent, 3318 print_extent,
3324 /* NOTE: If you declare a 3319 /* NOTE: If you declare a
3325 finalization method here, 3320 finalization method here,
3326 it will NOT be called. 3321 it will NOT be called.
3895 if (e->flags.has_aux) 3890 if (e->flags.has_aux)
3896 { 3891 {
3897 /* also need to copy the aux struct. It won't work for 3892 /* also need to copy the aux struct. It won't work for
3898 this extent to share the same aux struct as the original 3893 this extent to share the same aux struct as the original
3899 one. */ 3894 one. */
3900 struct extent_auxiliary *data = 3895 Lisp_Object ea = ALLOC_LISP_OBJECT (extent_auxiliary);
3901 ALLOC_LCRECORD_TYPE (struct extent_auxiliary, 3896 struct extent_auxiliary *data = XEXTENT_AUXILIARY (ea);
3902 &lrecord_extent_auxiliary);
3903 3897
3904 COPY_LCRECORD (data, XEXTENT_AUXILIARY (XCAR (original->plist))); 3898 COPY_LCRECORD (data, XEXTENT_AUXILIARY (XCAR (original->plist)));
3905 XCAR (e->plist) = wrap_extent_auxiliary (data); 3899 XCAR (e->plist) = ea;
3906 } 3900 }
3907 3901
3908 { 3902 {
3909 /* we may have just added another child to the parent extent. */ 3903 /* we may have just added another child to the parent extent. */
3910 Lisp_Object parent = extent_parent (e); 3904 Lisp_Object parent = extent_parent (e);
7294 /************************************************************************/ 7288 /************************************************************************/
7295 7289
7296 void 7290 void
7297 syms_of_extents (void) 7291 syms_of_extents (void)
7298 { 7292 {
7299 INIT_LRECORD_IMPLEMENTATION (extent); 7293 INIT_LISP_OBJECT (extent);
7300 INIT_LRECORD_IMPLEMENTATION (extent_info); 7294 INIT_LISP_OBJECT (extent_info);
7301 INIT_LRECORD_IMPLEMENTATION (extent_auxiliary); 7295 INIT_LISP_OBJECT (extent_auxiliary);
7302 7296
7303 DEFSYMBOL (Qextentp); 7297 DEFSYMBOL (Qextentp);
7304 DEFSYMBOL (Qextent_live_p); 7298 DEFSYMBOL (Qextent_live_p);
7305 7299
7306 DEFSYMBOL (Qall_extents_closed); 7300 DEFSYMBOL (Qall_extents_closed);