Mercurial > hg > xemacs-beta
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); |