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. */