Mercurial > hg > xemacs-beta
comparison src/symbols.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 | b7f26b2f78bd |
children | e0db3c197671 |
comparison
equal
deleted
inserted
replaced
5116:e56f73345619 | 5117:3742ea8250b5 |
---|---|
134 symbol_remprop (Lisp_Object symbol, Lisp_Object property) | 134 symbol_remprop (Lisp_Object symbol, Lisp_Object property) |
135 { | 135 { |
136 return external_remprop (&XSYMBOL (symbol)->plist, property, 0, ERROR_ME); | 136 return external_remprop (&XSYMBOL (symbol)->plist, property, 0, ERROR_ME); |
137 } | 137 } |
138 | 138 |
139 DEFINE_BASIC_LRECORD_IMPLEMENTATION_WITH_PROPS ("symbol", symbol, | 139 DEFINE_BASIC_LISP_OBJECT_WITH_PROPS ("symbol", symbol, |
140 1, /*dumpable-flag*/ | |
141 mark_symbol, print_symbol, | 140 mark_symbol, print_symbol, |
142 0, 0, 0, symbol_description, | 141 0, 0, 0, symbol_description, |
143 symbol_getprop, | 142 symbol_getprop, |
144 symbol_putprop, | 143 symbol_putprop, |
145 symbol_remprop, | 144 symbol_remprop, |
1007 | 1006 |
1008 static const struct memory_description symbol_value_forward_description[] = { | 1007 static const struct memory_description symbol_value_forward_description[] = { |
1009 { XD_END } | 1008 { XD_END } |
1010 }; | 1009 }; |
1011 | 1010 |
1012 DEFINE_LRECORD_IMPLEMENTATION ("symbol-value-forward", | 1011 DEFINE_LISP_OBJECT ("symbol-value-forward", |
1013 symbol_value_forward, | 1012 symbol_value_forward, |
1014 1, /*dumpable-flag*/ | |
1015 0, | 1013 0, |
1016 print_symbol_value_magic, 0, 0, 0, | 1014 print_symbol_value_magic, 0, 0, 0, |
1017 symbol_value_forward_description, | 1015 symbol_value_forward_description, |
1018 struct symbol_value_forward); | 1016 struct symbol_value_forward); |
1019 | 1017 |
1020 DEFINE_LRECORD_IMPLEMENTATION ("symbol-value-buffer-local", | 1018 DEFINE_LISP_OBJECT ("symbol-value-buffer-local", |
1021 symbol_value_buffer_local, | 1019 symbol_value_buffer_local, |
1022 1, /*dumpable-flag*/ | |
1023 mark_symbol_value_buffer_local, | 1020 mark_symbol_value_buffer_local, |
1024 print_symbol_value_magic, 0, 0, 0, | 1021 print_symbol_value_magic, 0, 0, 0, |
1025 symbol_value_buffer_local_description, | 1022 symbol_value_buffer_local_description, |
1026 struct symbol_value_buffer_local); | 1023 struct symbol_value_buffer_local); |
1027 | 1024 |
1028 DEFINE_LRECORD_IMPLEMENTATION ("symbol-value-lisp-magic", | 1025 DEFINE_LISP_OBJECT ("symbol-value-lisp-magic", |
1029 symbol_value_lisp_magic, | 1026 symbol_value_lisp_magic, |
1030 1, /*dumpable-flag*/ | |
1031 mark_symbol_value_lisp_magic, | 1027 mark_symbol_value_lisp_magic, |
1032 print_symbol_value_magic, 0, 0, 0, | 1028 print_symbol_value_magic, 0, 0, 0, |
1033 symbol_value_lisp_magic_description, | 1029 symbol_value_lisp_magic_description, |
1034 struct symbol_value_lisp_magic); | 1030 struct symbol_value_lisp_magic); |
1035 | 1031 |
1036 DEFINE_LRECORD_IMPLEMENTATION ("symbol-value-varalias", | 1032 DEFINE_LISP_OBJECT ("symbol-value-varalias", |
1037 symbol_value_varalias, | 1033 symbol_value_varalias, |
1038 1, /*dumpable-flag*/ | |
1039 mark_symbol_value_varalias, | 1034 mark_symbol_value_varalias, |
1040 print_symbol_value_magic, 0, 0, 0, | 1035 print_symbol_value_magic, 0, 0, 0, |
1041 symbol_value_varalias_description, | 1036 symbol_value_varalias_description, |
1042 struct symbol_value_varalias); | 1037 struct symbol_value_varalias); |
1043 | 1038 |
2185 } | 2180 } |
2186 } | 2181 } |
2187 | 2182 |
2188 { | 2183 { |
2189 struct symbol_value_buffer_local *bfwd | 2184 struct symbol_value_buffer_local *bfwd |
2190 = ALLOC_LCRECORD_TYPE (struct symbol_value_buffer_local, | 2185 = XSYMBOL_VALUE_BUFFER_LOCAL |
2191 &lrecord_symbol_value_buffer_local); | 2186 (ALLOC_LISP_OBJECT (symbol_value_buffer_local)); |
2192 Lisp_Object foo; | 2187 Lisp_Object foo; |
2193 bfwd->magic.type = SYMVAL_BUFFER_LOCAL; | 2188 bfwd->magic.type = SYMVAL_BUFFER_LOCAL; |
2194 | 2189 |
2195 bfwd->default_value = find_symbol_value (variable); | 2190 bfwd->default_value = find_symbol_value (variable); |
2196 bfwd->current_value = valcontents; | 2191 bfwd->current_value = valcontents; |
2293 ABORT (); | 2288 ABORT (); |
2294 } | 2289 } |
2295 } | 2290 } |
2296 | 2291 |
2297 /* Make sure variable is set up to hold per-buffer values */ | 2292 /* Make sure variable is set up to hold per-buffer values */ |
2298 bfwd = ALLOC_LCRECORD_TYPE (struct symbol_value_buffer_local, | 2293 bfwd = XSYMBOL_VALUE_BUFFER_LOCAL |
2299 &lrecord_symbol_value_buffer_local); | 2294 (ALLOC_LISP_OBJECT (symbol_value_buffer_local)); |
2300 bfwd->magic.type = SYMVAL_SOME_BUFFER_LOCAL; | 2295 bfwd->magic.type = SYMVAL_SOME_BUFFER_LOCAL; |
2301 | 2296 |
2302 bfwd->current_buffer = Qnil; | 2297 bfwd->current_buffer = Qnil; |
2303 bfwd->current_alist_element = Qnil; | 2298 bfwd->current_alist_element = Qnil; |
2304 bfwd->current_value = valcontents; | 2299 bfwd->current_value = valcontents; |
3013 CHECK_SYMBOL (handler_type); | 3008 CHECK_SYMBOL (handler_type); |
3014 htype = decode_magic_handler_type (handler_type); | 3009 htype = decode_magic_handler_type (handler_type); |
3015 valcontents = XSYMBOL (variable)->value; | 3010 valcontents = XSYMBOL (variable)->value; |
3016 if (!SYMBOL_VALUE_LISP_MAGIC_P (valcontents)) | 3011 if (!SYMBOL_VALUE_LISP_MAGIC_P (valcontents)) |
3017 { | 3012 { |
3018 bfwd = ALLOC_LCRECORD_TYPE (struct symbol_value_lisp_magic, | 3013 bfwd = |
3019 &lrecord_symbol_value_lisp_magic); | 3014 XSYMBOL_VALUE_LISP_MAGIC |
3015 (ALLOC_LISP_OBJECT (symbol_value_lisp_magic)); | |
3020 bfwd->magic.type = SYMVAL_LISP_MAGIC; | 3016 bfwd->magic.type = SYMVAL_LISP_MAGIC; |
3021 for (i = 0; i < MAGIC_HANDLER_MAX; i++) | 3017 for (i = 0; i < MAGIC_HANDLER_MAX; i++) |
3022 { | 3018 { |
3023 bfwd->handler[i] = Qnil; | 3019 bfwd->handler[i] = Qnil; |
3024 bfwd->harg[i] = Qnil; | 3020 bfwd->harg[i] = Qnil; |
3149 if (SYMBOL_VALUE_MAGIC_P (valcontents) | 3145 if (SYMBOL_VALUE_MAGIC_P (valcontents) |
3150 && !UNBOUNDP (valcontents)) | 3146 && !UNBOUNDP (valcontents)) |
3151 invalid_change ("Variable is magic and cannot be aliased", variable); | 3147 invalid_change ("Variable is magic and cannot be aliased", variable); |
3152 reject_constant_symbols (variable, Qunbound, 0, Qt); | 3148 reject_constant_symbols (variable, Qunbound, 0, Qt); |
3153 | 3149 |
3154 bfwd = ALLOC_LCRECORD_TYPE (struct symbol_value_varalias, | 3150 bfwd = |
3155 &lrecord_symbol_value_varalias); | 3151 XSYMBOL_VALUE_VARALIAS (ALLOC_LISP_OBJECT (symbol_value_varalias)); |
3156 bfwd->magic.type = SYMVAL_VARALIAS; | 3152 bfwd->magic.type = SYMVAL_VARALIAS; |
3157 bfwd->aliasee = alias; | 3153 bfwd->aliasee = alias; |
3158 bfwd->shadowed = valcontents; | 3154 bfwd->shadowed = valcontents; |
3159 | 3155 |
3160 valcontents = wrap_symbol_value_magic (bfwd); | 3156 valcontents = wrap_symbol_value_magic (bfwd); |
3273 #endif /* not MC_ALLOC */ | 3269 #endif /* not MC_ALLOC */ |
3274 | 3270 |
3275 void | 3271 void |
3276 init_symbols_once_early (void) | 3272 init_symbols_once_early (void) |
3277 { | 3273 { |
3278 INIT_LRECORD_IMPLEMENTATION (symbol); | 3274 INIT_LISP_OBJECT (symbol); |
3279 INIT_LRECORD_IMPLEMENTATION (symbol_value_forward); | 3275 INIT_LISP_OBJECT (symbol_value_forward); |
3280 INIT_LRECORD_IMPLEMENTATION (symbol_value_buffer_local); | 3276 INIT_LISP_OBJECT (symbol_value_buffer_local); |
3281 INIT_LRECORD_IMPLEMENTATION (symbol_value_lisp_magic); | 3277 INIT_LISP_OBJECT (symbol_value_lisp_magic); |
3282 INIT_LRECORD_IMPLEMENTATION (symbol_value_varalias); | 3278 INIT_LISP_OBJECT (symbol_value_varalias); |
3283 | 3279 |
3284 reinit_symbols_early (); | 3280 reinit_symbols_early (); |
3285 | 3281 |
3286 /* Bootstrapping problem: Qnil isn't set when make_string_nocopy is | 3282 /* Bootstrapping problem: Qnil isn't set when make_string_nocopy is |
3287 called the first time. */ | 3283 called the first time. */ |