comparison src/objects.c @ 1204:e22b0213b713

[xemacs-hg @ 2003-01-12 11:07:58 by michaels] modules/ChangeLog: 2002-12-16 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: remove ifdef USE_KKCC. src/ChangeLog: 2003-01-08 Mike Sperber <mike@xemacs.org> * console.h (CDFW_CONSOLE): Don't lead to a crash if we're dealing with a dead window/frame/device/console. 2002-12-20 Mike Sperber <mike@xemacs.org> * ui-gtk.c: Fix typo from Ben's patch: emacs_ffi_data is a typedef, not a struct. emacs_gtk_object_data is a typedef, not a struct. * gtk-glue.c (gdk_event_to_emacs_event): Fix typos from Ben's patch: le -> emacs_event + rearrange the code. * event-gtk.c (gtk_event_to_emacs_event): Fix typos from Ben's patch: ..._UNDERLYING_GDK_EVENT -> ..._GDK_EVENT, ev -> key_event. * device-gtk.c: Fix typo from Ben's patch: x_keysym_map_hash_table -> x_keysym_map_hashtable. 2002-12-19 Mike Sperber <mike@xemacs.org> * menubar-x.c (set_frame_menubar): Initialize protect_me field of popup_data. 2002-12-16 Ben Wing <ben@xemacs.org> Major cleanup of KKCC, etc. KKCC, pdump-related: -- descriptions are written for all objects. this required some changes in the format of some objects, e.g. extents, popup-data, coding system, lstream, lcrecord-list. -- KKCC now handles weakness in markers, hash tables, elsewhere correctly (formerly, you'd eventually get a stack overflow due to endlessly expanding markers). -- textual changes: lrecord_description -> memory_description, struct_description -> sized_memory_description. -- extensive comment describing descriptions and pdump. -- redo XD_UNION so it works inline and change its format to provide sufficient info for pdump. implement XD_UNION in pdump. also add XD_UNION_DYNAMIC_SIZE, which works like XD_UNION except for when auto-computing structure sizes. -- add support for XD_INDIRECT in description offsets (used by extents). -- add support for "description maps", allowing for indirect descriptions that are retrieved from an object at run-time. this generalizes XD_CODING_SYSTEM_END, XD_SPECIFIER_END, etc., which have now been eliminated. -- add a fifth field "flags" to memory_description, to support flags that can be specified for this particular line. Currently defined flags are XD_FLAG_NO_KKCC (KKCC should ignore this entry; useful for the weakness above in markers, etc.), XD_FLAG_NO_PDUMP (pdump should ignore this entry), XD_FLAG_UNION_DEFAULT_ENTRY (in union maps, this specifies a "default" entry for all remaining values), and XD_FLAG_FREE_LISP_OBJECT (for use with lcrecord-lists). -- clean up the kkcc-itis in events, so that the differences between event data as separate objects and as a union are now minimized to a small number of places. with the new XD_UNION, we no longer need event data as separate objects, so this code is no longer ifdef USE_KKCC, but instead ifdef EVENT_DATA_AS_OBJECTS, not used by default. make sure that we explicitly free the separate event data objects when no longer in use, to maintain the invariant the event processing causes no consing. -- also remove other USE_KKCC ifdefs when not necessary. -- allow for KKCC compilation under MS Windows. -- fix README.kkcc. -- dump_add_root_object -> dump_add_root_lisp_object. -- implement dump_add_root_block and use this to handle dump_add_opaque. -- factor out some code duplicated in kkcc and pdump. Other allocation/object-related: -- change various *slots.h so MARKED_SLOT() call no longer includes semicolon. -- free_marker() takes a Lisp_Object not a direct pointer. -- make bit vectors lcrecords, like vectors, and eliminate code that essentially duplicated the lcrecord handling. -- additional asserts in FREE_FIXED_TYPE, formerly duplicated in the various callers of this. -- all lcrecord allocation functions now zero out the returned lcrecords. unnecessary calls to zero_lcrecord removed. add long comment describing these functions. -- extract out process and coding system slots, like for buffers, frames, etc. -- lcrecords now set the type of items sitting on the free list to lcrecord_type_free. -- changes to the way that gap arrays are allocated, for kkcc's benefit -- now, one single memory block with a stretchy array on the end, instead of a separate block holding the array. Error-checking-related: -- now can compile with C++ under MS Windows. clean up compile errors discovered that way. (a few were real problems) -- add C++ error-checking code to verify problems with mismatched GCPRO/UNGCPRO. (there were a few in the kkcc code.) add long comment about how to catch insufficient GCPRO (yes, it's possible using C++). -- add debug_p4(), a simple object printer, when debug_print() doesn't work. -- add dp() and db() as short synonyms of debug_print(), debug_backtrace(). -- `print' tries EXTREMELY hard to avoid core dumping when printing when crashing or from debug_print(), and tries as hard as it reasonably can in other situations. -- Correct the message output upon crashing to be more up-to-date. Event-related: -- document event-matches-key-specifier-p better. -- generalize the dispatch queues formerly duplicated in the various event implementations. add event methods to drain pending events. generalize and clean up QUIT handling, removing event-specific quit processing. allow arbitrary keystrokes, not just ASCII, to be the QUIT char. among other things, this should fix some longstanding bugs in X quit handling. long comment describing the various event queues. -- implement delaying of XFlush() if there are pending expose events. SOMEONE PLEASE TRY THIS OUT. -- Fix `xemacs -batch -l dunnet' under Cygwin. Try to fix under MS Windows but not quite there yet. Other: -- class -> class_ and no more C++ games with this item. new -> new_ in the lwlib code, so far not elsewhere. -- use `struct htentry' not `struct hentry' in elhash.c to avoid debugger confusion with hash.c. -- new macros ALIST_LOOP_3, ALIST_LOOP_4. * README.kkcc: * alloc.c: * alloc.c (deadbeef_memory): * alloc.c (allocate_lisp_storage): * alloc.c (copy_lisp_object): * alloc.c (ALLOCATE_FIXED_TYPE_1): * alloc.c (FREE_FIXED_TYPE): * alloc.c (make_vector_internal): * alloc.c (make_bit_vector_internal): * alloc.c (make_key_data): * alloc.c (make_button_data): * alloc.c (make_motion_data): * alloc.c (make_process_data): * alloc.c (make_timeout_data): * alloc.c (make_magic_data): * alloc.c (make_magic_eval_data): * alloc.c (make_eval_data): * alloc.c (make_misc_user_data): * alloc.c (struct string_chars_block): * alloc.c (mark_lcrecord_list): * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (alloc_automanaged_lcrecord): * alloc.c (staticpro_1): * alloc.c (staticpro): * alloc.c (lispdesc_indirect_count_1): * alloc.c (lispdesc_indirect_description_1): * alloc.c (lispdesc_one_description_line_size): * alloc.c (lispdesc_structure_size): * alloc.c (mark_object_maybe_checking_free): * alloc.c (mark_with_description): * alloc.c (mark_struct_contents): * alloc.c (mark_object): * alloc.c (tick_lcrecord_stats): * alloc.c (free_cons): * alloc.c (free_key_data): * alloc.c (free_button_data): * alloc.c (free_motion_data): * alloc.c (free_process_data): * alloc.c (free_timeout_data): * alloc.c (free_magic_data): * alloc.c (free_magic_eval_data): * alloc.c (free_eval_data): * alloc.c (free_misc_user_data): * alloc.c (free_marker): * alloc.c (compact_string_chars): * alloc.c (gc_sweep): * alloc.c (garbage_collect_1): * alloc.c (Fgarbage_collect): * alloc.c (common_init_alloc_early): * alloc.c (init_alloc_early): * alloc.c (init_alloc_once_early): * buffer.c: * buffer.c (mark_buffer): * buffer.c (MARKED_SLOT): * buffer.c (cleanup_buffer_undo_lists): * buffer.c (Fget_file_buffer): * buffer.h (MARKED_SLOT): * bufslots.h: * bytecode.c: * callint.c: * casetab.c: * chartab.c: * chartab.c (symbol_to_char_table_type): * cmdloop.c: * cmdloop.c (Fcommand_loop_1): * config.h.in (new): * conslots.h: * console-gtk-impl.h (struct gtk_frame): * console-impl.h: * console-impl.h (struct console): * console-impl.h (MARKED_SLOT): * console-impl.h (CONSOLE_QUIT_EVENT): * console-msw-impl.h (XM_BUMPQUEUE): * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.h: * console-stream-impl.h: * console-stream-impl.h (struct stream_console): * console-stream.c: * console-stream.c (stream_init_console): * console-stream.h: * console-tty.c: * console-tty.h: * console-x.h: * console.c: * console.c (mark_console): * console.c (MARKED_SLOT): * console.c (allocate_console): * console.c (get_console_variant): * console.c (create_console): * console.c (delete_console_internal): * console.c (Fset_input_mode): * console.c (Fcurrent_input_mode): * console.c (common_init_complex_vars_of_console): * console.h: * console.h (console_variant): * console.h (device_metrics): * data.c: * data.c (Faref): * data.c (Faset): * data.c (decode_weak_list_type): * database.c: * debug.c (xemacs_debug_loop): * debug.c (FROB): * debug.c (Fadd_debug_class_to_check): * debug.c (Fdelete_debug_class_to_check): * debug.c (Fset_debug_classes_to_check): * debug.c (Fset_debug_class_types_to_check): * debug.c (Fdebug_types_being_checked): * debug.h (DASSERT): * device-gtk.c: * device-impl.h (struct device): * device-impl.h (MARKED_SLOT): * device-msw.c: * device-x.c: * device-x.c (x_init_device_class): * device-x.c (x_comp_visual_info): * device-x.c (x_try_best_visual_class): * device-x.c (x_init_device): * device-x.c (construct_name_list): * device-x.c (x_get_resource_prefix): * device-x.c (Fx_get_resource): * device-x.c (Fx_display_visual_class): * device.c: * device.c (MARKED_SLOT): * device.c (allocate_device): * device.c (Fmake_device): * device.c (delete_device_internal): * device.c (Fset_device_class): * device.h: * devslots.h: * devslots.h (MARKED_SLOT): * dialog-msw.c: * dired-msw.c (mswindows_ls_sort_fcn): * dired-msw.c (mswindows_get_files): * dired-msw.c (mswindows_format_file): * doprnt.c (parse_doprnt_spec): * dumper.c: * dumper.c (struct): * dumper.c (dump_add_root_block): * dumper.c (dump_add_root_struct_ptr): * dumper.c (dump_add_root_lisp_object): * dumper.c (pdump_struct_list_elt): * dumper.c (pdump_get_entry_list): * dumper.c (pdump_backtrace): * dumper.c (pdump_bump_depth): * dumper.c (pdump_register_sub): * dumper.c (pdump_register_object): * dumper.c (pdump_register_struct_contents): * dumper.c (pdump_register_struct): * dumper.c (pdump_store_new_pointer_offsets): * dumper.c (pdump_dump_data): * dumper.c (pdump_reloc_one): * dumper.c (pdump_allocate_offset): * dumper.c (pdump_scan_by_alignment): * dumper.c (pdump_dump_root_blocks): * dumper.c (pdump_dump_rtables): * dumper.c (pdump_dump_root_lisp_objects): * dumper.c (pdump): * dumper.c (pdump_load_finish): * dumper.c (pdump_file_get): * dumper.c (pdump_resource_get): * dumper.c (pdump_load): * editfns.c (save_excursion_restore): * editfns.c (user_login_name): * editfns.c (save_restriction_restore): * elhash.c: * elhash.c (htentry): * elhash.c (struct Lisp_Hash_Table): * elhash.c (HTENTRY_CLEAR_P): * elhash.c (LINEAR_PROBING_LOOP): * elhash.c (check_hash_table_invariants): * elhash.c (mark_hash_table): * elhash.c (hash_table_equal): * elhash.c (print_hash_table_data): * elhash.c (free_hentries): * elhash.c (make_general_lisp_hash_table): * elhash.c (decode_hash_table_weakness): * elhash.c (decode_hash_table_test): * elhash.c (Fcopy_hash_table): * elhash.c (resize_hash_table): * elhash.c (pdump_reorganize_hash_table): * elhash.c (find_htentry): * elhash.c (Fgethash): * elhash.c (Fputhash): * elhash.c (remhash_1): * elhash.c (Fremhash): * elhash.c (Fclrhash): * elhash.c (copy_compress_hentries): * elhash.c (elisp_maphash_unsafe): * elhash.c (finish_marking_weak_hash_tables): * elhash.c (prune_weak_hash_tables): * elhash.h: * emacs.c: * emacs.c (main_1): * emacs.c (main): * emacs.c (shut_down_emacs): * emodules.h (dump_add_root_lisp_object): * eval.c: * eval.c (unwind_to_catch): * eval.c (maybe_signal_error_1): * eval.c (maybe_signal_continuable_error_1): * eval.c (maybe_signal_error): * eval.c (maybe_signal_continuable_error): * eval.c (maybe_signal_error_2): * eval.c (maybe_signal_continuable_error_2): * eval.c (maybe_signal_ferror): * eval.c (maybe_signal_continuable_ferror): * eval.c (maybe_signal_ferror_with_frob): * eval.c (maybe_signal_continuable_ferror_with_frob): * eval.c (maybe_syntax_error): * eval.c (maybe_sferror): * eval.c (maybe_invalid_argument): * eval.c (maybe_invalid_constant): * eval.c (maybe_invalid_operation): * eval.c (maybe_invalid_change): * eval.c (maybe_invalid_state): * eval.c (Feval): * eval.c (call_trapping_problems): * eval.c (call_with_suspended_errors): * eval.c (warn_when_safe_lispobj): * eval.c (warn_when_safe): * eval.c (vars_of_eval): * event-Xt.c: * event-Xt.c (maybe_define_x_key_as_self_inserting_character): * event-Xt.c (x_to_emacs_keysym): * event-Xt.c (x_event_to_emacs_event): * event-Xt.c (emacs_Xt_enqueue_focus_event): * event-Xt.c (emacs_Xt_format_magic_event): * event-Xt.c (emacs_Xt_compare_magic_event): * event-Xt.c (emacs_Xt_hash_magic_event): * event-Xt.c (emacs_Xt_handle_magic_event): * event-Xt.c (Xt_timeout_to_emacs_event): * event-Xt.c (Xt_process_to_emacs_event): * event-Xt.c (signal_special_Xt_user_event): * event-Xt.c (emacs_Xt_next_event): * event-Xt.c (emacs_Xt_event_handler): * event-Xt.c (emacs_Xt_drain_queue): * event-Xt.c (emacs_Xt_event_pending_p): * event-Xt.c (check_if_pending_expose_event): * event-Xt.c (reinit_vars_of_event_Xt): * event-Xt.c (vars_of_event_Xt): * event-gtk.c: * event-gtk.c (IS_MODIFIER_KEY): * event-gtk.c (emacs_gtk_format_magic_event): * event-gtk.c (emacs_gtk_compare_magic_event): * event-gtk.c (emacs_gtk_hash_magic_event): * event-gtk.c (emacs_gtk_handle_magic_event): * event-gtk.c (gtk_to_emacs_keysym): * event-gtk.c (gtk_timeout_to_emacs_event): * event-gtk.c (gtk_process_to_emacs_event): * event-gtk.c (dragndrop_data_received): * event-gtk.c (signal_special_gtk_user_event): * event-gtk.c (emacs_gtk_next_event): * event-gtk.c (gtk_event_to_emacs_event): * event-gtk.c (generic_event_handler): * event-gtk.c (emacs_shell_event_handler): * event-gtk.c (emacs_gtk_drain_queue): * event-gtk.c (emacs_gtk_event_pending_p): * event-gtk.c (reinit_vars_of_event_gtk): * event-gtk.c (vars_of_event_gtk): * event-msw.c: * event-msw.c (struct winsock_stream): * event-msw.c (winsock_reader): * event-msw.c (winsock_writer): * event-msw.c (mswindows_enqueue_dispatch_event): * event-msw.c (mswindows_enqueue_misc_user_event): * event-msw.c (mswindows_enqueue_magic_event): * event-msw.c (mswindows_enqueue_process_event): * event-msw.c (mswindows_enqueue_mouse_button_event): * event-msw.c (mswindows_enqueue_keypress_event): * event-msw.c (mswindows_dequeue_dispatch_event): * event-msw.c (emacs_mswindows_drain_queue): * event-msw.c (mswindows_need_event_in_modal_loop): * event-msw.c (mswindows_need_event): * event-msw.c (mswindows_wm_timer_callback): * event-msw.c (dde_eval_string): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * event-msw.c (remove_timeout_mapper): * event-msw.c (emacs_mswindows_remove_timeout): * event-msw.c (emacs_mswindows_event_pending_p): * event-msw.c (emacs_mswindows_format_magic_event): * event-msw.c (emacs_mswindows_compare_magic_event): * event-msw.c (emacs_mswindows_hash_magic_event): * event-msw.c (emacs_mswindows_handle_magic_event): * event-msw.c (emacs_mswindows_select_console): * event-msw.c (emacs_mswindows_unselect_console): * event-msw.c (reinit_vars_of_event_mswindows): * event-msw.c (vars_of_event_mswindows): * event-stream.c: * event-stream.c (mark_command_builder): * event-stream.c (reset_command_builder_event_chain): * event-stream.c (allocate_command_builder): * event-stream.c (copy_command_builder): * event-stream.c (command_builder_append_event): * event-stream.c (event_stream_event_pending_p): * event-stream.c (event_stream_force_event_pending): * event-stream.c (maybe_read_quit_event): * event-stream.c (event_stream_drain_queue): * event-stream.c (remove_quit_p_event): * event-stream.c (event_stream_quit_p): * event-stream.c (echo_key_event): * event-stream.c (maybe_kbd_translate): * event-stream.c (execute_help_form): * event-stream.c (event_stream_generate_wakeup): * event-stream.c (enqueue_dispatch_event): * event-stream.c (enqueue_magic_eval_event): * event-stream.c (Fenqueue_eval_event): * event-stream.c (enqueue_misc_user_event): * event-stream.c (enqueue_misc_user_event_pos): * event-stream.c (next_event_internal): * event-stream.c (Fnext_event): * event-stream.c (Faccept_process_output): * event-stream.c (execute_internal_event): * event-stream.c (munge_keymap_translate): * event-stream.c (command_builder_find_leaf_no_mule_processing): * event-stream.c (command_builder_find_leaf): * event-stream.c (lookup_command_event): * event-stream.c (is_scrollbar_event): * event-stream.c (execute_command_event): * event-stream.c (Fdispatch_event): * event-stream.c (Fread_key_sequence): * event-stream.c (dribble_out_event): * event-stream.c (vars_of_event_stream): * event-tty.c (tty_timeout_to_emacs_event): * event-tty.c (emacs_tty_next_event): * event-tty.c (emacs_tty_drain_queue): * event-tty.c (reinit_vars_of_event_tty): * event-unixoid.c: * event-unixoid.c (find_tty_or_stream_console_from_fd): * event-unixoid.c (read_event_from_tty_or_stream_desc): * event-unixoid.c (drain_tty_devices): * event-unixoid.c (poll_fds_for_input): * events.c: * events.c (deinitialize_event): * events.c (zero_event): * events.c (mark_event): * events.c (print_event_1): * events.c (print_event): * events.c (event_equal): * events.c (event_hash): * events.c (Fmake_event): * events.c (Fdeallocate_event): * events.c (Fcopy_event): * events.c (map_event_chain_remove): * events.c (character_to_event): * events.c (event_to_character): * events.c (Fevent_to_character): * events.c (format_event_object): * events.c (upshift_event): * events.c (downshift_event): * events.c (event_upshifted_p): * events.c (Fevent_live_p): * events.c (Fevent_type): * events.c (Fevent_timestamp): * events.c (CHECK_EVENT_TYPE): * events.c (CHECK_EVENT_TYPE2): * events.c (CHECK_EVENT_TYPE3): * events.c (Fevent_key): * events.c (Fevent_button): * events.c (Fevent_modifier_bits): * events.c (event_x_y_pixel_internal): * events.c (event_pixel_translation): * events.c (Fevent_process): * events.c (Fevent_function): * events.c (Fevent_object): * events.c (Fevent_properties): * events.c (syms_of_events): * events.c (vars_of_events): * events.h: * events.h (struct event_stream): * events.h (struct Lisp_Key_Data): * events.h (KEY_DATA_KEYSYM): * events.h (EVENT_KEY_KEYSYM): * events.h (struct Lisp_Button_Data): * events.h (EVENT_BUTTON_BUTTON): * events.h (struct Lisp_Motion_Data): * events.h (EVENT_MOTION_X): * events.h (struct Lisp_Process_Data): * events.h (EVENT_PROCESS_PROCESS): * events.h (struct Lisp_Timeout_Data): * events.h (EVENT_TIMEOUT_INTERVAL_ID): * events.h (struct Lisp_Eval_Data): * events.h (EVENT_EVAL_FUNCTION): * events.h (struct Lisp_Misc_User_Data): * events.h (EVENT_MISC_USER_FUNCTION): * events.h (struct Lisp_Magic_Eval_Data): * events.h (EVENT_MAGIC_EVAL_INTERNAL_FUNCTION): * events.h (struct Lisp_Magic_Data): * events.h (EVENT_MAGIC_UNDERLYING): * events.h (EVENT_MAGIC_GDK_EVENT): * events.h (struct Lisp_Event): * events.h (XEVENT_CHANNEL): * events.h (SET_EVENT_TIMESTAMP_ZERO): * events.h (SET_EVENT_CHANNEL): * events.h (SET_EVENT_NEXT): * events.h (XSET_EVENT_TYPE): * events.h (struct command_builder): * extents.c: * extents.c (gap_array_adjust_markers): * extents.c (gap_array_recompute_derived_values): * extents.c (gap_array_move_gap): * extents.c (gap_array_make_gap): * extents.c (gap_array_insert_els): * extents.c (gap_array_delete_els): * extents.c (gap_array_make_marker): * extents.c (gap_array_delete_marker): * extents.c (gap_array_move_marker): * extents.c (make_gap_array): * extents.c (free_gap_array): * extents.c (extent_list_num_els): * extents.c (extent_list_insert): * extents.c (mark_extent_auxiliary): * extents.c (allocate_extent_auxiliary): * extents.c (decode_extent_at_flag): * extents.c (verify_extent_mapper): * extents.c (symbol_to_glyph_layout): * extents.c (syms_of_extents): * faces.c: * file-coding.c: * file-coding.c (struct_detector_category_description =): * file-coding.c (detector_category_dynarr_description_1): * file-coding.c (struct_detector_description =): * file-coding.c (detector_dynarr_description_1): * file-coding.c (MARKED_SLOT): * file-coding.c (mark_coding_system): * file-coding.c (coding_system_extra_description_map): * file-coding.c (coding_system_description): * file-coding.c (allocate_coding_system): * file-coding.c (symbol_to_eol_type): * file-coding.c (Fcoding_system_aliasee): * file-coding.c (set_coding_stream_coding_system): * file-coding.c (struct convert_eol_coding_system): * file-coding.c (struct undecided_coding_system): * file-coding.c (undecided_mark_coding_stream): * file-coding.c (coding_category_symbol_to_id): * file-coding.c (struct gzip_coding_system): * file-coding.c (coding_system_type_create): * file-coding.h: * file-coding.h (struct Lisp_Coding_System): * file-coding.h (CODING_SYSTEM_SLOT_DECLARATION): * file-coding.h (coding_system_variant): * file-coding.h (struct coding_system_methods): * file-coding.h (DEFINE_CODING_SYSTEM_TYPE_WITH_DATA): * file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA): * file-coding.h (struct coding_stream): * fileio.c (Fsubstitute_in_file_name): * floatfns.c: * fns.c: * fns.c (base64_encode_1): * frame-gtk.c: * frame-gtk.c (Fgtk_start_drag_internal): * frame-impl.h (struct frame): * frame-impl.h (MARKED_SLOT): * frame-msw.c: * frame-x.c: * frame-x.c (Fcde_start_drag_internal): * frame-x.c (Foffix_start_drag_internal): * frame.c: * frame.c (MARKED_SLOT): * frame.c (allocate_frame_core): * frame.c (delete_frame_internal): * frame.c (Fmouse_position_as_motion_event): * frameslots.h: * frameslots.h (MARKED_SLOT_ARRAY): * free-hook.c: * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-x.c: * glyphs-x.c (convert_EImage_to_XImage): * glyphs.c: * glyphs.c (process_image_string_instantiator): * glyphs.c (mark_image_instance): * glyphs.c (allocate_image_instance): * glyphs.c (unmap_subwindow): * glyphs.c (map_subwindow): * glyphs.c (syms_of_glyphs): * glyphs.c (specifier_type_create_image): * glyphs.h: * glyphs.h (struct text_image_instance): * glyphs.h (struct Lisp_Image_Instance): * gmalloc.c: * gmalloc.c ("C"): * gpmevent.c (Freceive_gpm_event): * gpmevent.c (gpm_next_event_cb): * gpmevent.c (vars_of_gpmevent): * gtk-glue.c (gdk_event_to_emacs_event): * gtk-xemacs.c (gtk_xemacs_class_init): * gui-msw.c: * gui-msw.c (mswindows_handle_gui_wm_command): * gui-msw.c (mswindows_translate_menu_or_dialog_item): * gui-x.c: * gui-x.c (mark_popup_data): * gui-x.c (snarf_widget_value_mapper): * gui-x.c (gcpro_popup_callbacks): * gui-x.c (ungcpro_popup_callbacks): * gui-x.c (free_popup_widget_value_tree): * gui-x.c (popup_selection_callback): * gui-x.h: * gui-x.h (struct popup_data): * gui.c: * gui.c (allocate_gui_item): * gutter.c (decode_gutter_position): * hash.c (NULL_ENTRY): * indent.c (vmotion_1): * indent.c (vmotion_pixels): * input-method-motif.c (res): * input-method-xlib.c (IMInstantiateCallback): * input-method-xlib.c (XIM_init_device): * input-method-xlib.c (res): * intl-encap-win32.c: * intl-encap-win32.c (qxeSHGetDataFromIDList): * intl-win32.c: * intl-win32.c (mswindows_multibyte_cp_type): * intl-win32.c (struct mswindows_multibyte_coding_system): * keymap.c: * keymap.c (make_key_description): * keymap.c (keymap_store): * keymap.c (get_keyelt): * keymap.c (keymap_lookup_1): * keymap.c (define_key_parser): * keymap.c (key_desc_list_to_event): * keymap.c (event_matches_key_specifier_p): * keymap.c (meta_prefix_char_p): * keymap.c (ensure_meta_prefix_char_keymapp): * keymap.c (Fdefine_key): * keymap.c (struct raw_lookup_key_mapper_closure): * keymap.c (raw_lookup_key): * keymap.c (raw_lookup_key_mapper): * keymap.c (lookup_keys): * keymap.c (lookup_events): * keymap.c (Flookup_key): * keymap.c (struct map_keymap_unsorted_closure): * keymap.c (map_keymap_unsorted_mapper): * keymap.c (map_keymap_sorted): * keymap.c (map_keymap_mapper): * keymap.c (map_keymap): * keymap.c (accessible_keymaps_mapper_1): * keymap.c (Faccessible_keymaps): * keymap.c (Fsingle_key_description): * keymap.c (raw_keys_to_keys): * keymap.c (format_raw_keys): * keymap.c (where_is_recursive_mapper): * keymap.c (where_is_internal): * keymap.c (describe_map_mapper_shadow_search): * keymap.c (keymap_lookup_inherited_mapper): * keymap.c (describe_map_mapper): * keymap.h (event_matches_key_specifier_p): * lisp.h: * lisp.h (this): * lisp.h (RETURN_NOT_REACHED): * lisp.h (struct Lisp_Vector): * lisp.h (struct Lisp_Bit_Vector): * lisp.h (UNGCPRO_1): * lisp.h (NUNGCPRO): * lisp.h (NNUNGCPRO): * lisp.h (DECLARE_INLINE_HEADER): * lrecord.h: * lrecord.h (struct lrecord_header): * lrecord.h (struct lcrecord_header): * lrecord.h (lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (RECORD_DUMPABLE): * lrecord.h (memory_description_type): * lrecord.h (data_description_entry_flags): * lrecord.h (struct memory_description): * lrecord.h (struct sized_memory_description): * lrecord.h (XD_INDIRECT): * lrecord.h (XD_IS_INDIRECT): * lrecord.h (XD_DYNARR_DESC): * lrecord.h (DEFINE_BASIC_LRECORD_IMPLEMENTATION): * lrecord.h (MAKE_LRECORD_IMPLEMENTATION): * lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION): * lrecord.h (alloc_lcrecord_type): * lstream.c: * lstream.c (Lstream_new): * lstream.c (lisp_buffer_marker): * lstream.h: * lstream.h (lstream_implementation): * lstream.h (DEFINE_LSTREAM_IMPLEMENTATION): * lstream.h (DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA): * marker.c: * marker.c (copy_marker_1): * mem-limits.h: * menubar-gtk.c: * menubar-gtk.c (gtk_popup_menu): * menubar-msw.c: * menubar-msw.c (mswindows_popup_menu): * menubar-x.c (make_dummy_xbutton_event): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar-x.c (menu_accelerator_safe_compare): * menubar-x.c (menu_accelerator_safe_mod_compare): * mule-charset.c: * mule-charset.c (make_charset): * mule-charset.c (Fcharset_property): * mule-coding.c: * mule-coding.c (ccs_description_1): * mule-coding.c (ccs_description =): * mule-coding.c (ccsd_description_1): * mule-coding.c (ccsd_description =): * nt.c (getpwnam): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_is_executable): * nt.c (read_unc_volume): * nt.c (mswindows_access): * nt.c (mswindows_link): * nt.c (mswindows_fstat): * nt.c (mswindows_stat): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * nt.c (Fmswindows_long_file_name): * objects-impl.h (struct Lisp_Color_Instance): * objects-impl.h (struct Lisp_Font_Instance): * objects-tty.c: * objects-x.c (allocate_nearest_color): * objects.c: * objects.c (Fmake_color_instance): * objects.c (Fmake_font_instance): * objects.c (font_instantiate): * opaque.c: * opaque.c (make_opaque): * opaque.c (make_opaque_ptr): * opaque.c (reinit_opaque_early): * opaque.c (init_opaque_once_early): * print.c: * print.c (printing_badness): * print.c (printing_major_badness): * print.c (print_internal): * print.c (debug_p4): * print.c (dp): * print.c (debug_backtrace): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-unix.c: * process-unix.c (struct unix_process_data): * process-unix.c (get_internet_address): * process-unix.c (unix_alloc_process_data): * process-unix.c (unix_create_process): * process-unix.c (try_to_initialize_subtty): * process-unix.c (unix_kill_child_process): * process-unix.c (process_type_create_unix): * process.c: * process.c (mark_process): * process.c (MARKED_SLOT): * process.c (make_process_internal): * process.c (Fprocess_tty_name): * process.c (decode_signal): * process.h: * procimpl.h: * procimpl.h (struct process_methods): * procimpl.h (struct Lisp_Process): * rangetab.c: * realpath.c (readlink_and_correct_case): * redisplay-x.c (x_window_output_end): * redisplay-x.c (x_redraw_exposed_area): * redisplay-x.c (x_clear_frame): * redisplay.c: * redisplay.h: * redisplay.h (struct rune_dglyph): * redisplay.h (struct rune): * scrollbar.c: * scrollbar.c (create_scrollbar_instance): * specifier.c: * specifier.c (specifier_empty_extra_description_1): * specifier.c (make_specifier_internal): * specifier.c (decode_locale_type): * specifier.c (decode_how_to_add_specification): * specifier.h: * specifier.h (struct specifier_methods): * specifier.h (DEFINE_SPECIFIER_TYPE_WITH_DATA): * specifier.h (INITIALIZE_SPECIFIER_TYPE_WITH_DATA): * symbols.c: * symbols.c (Fsetplist): * symbols.c (default_value): * symbols.c (decode_magic_handler_type): * symbols.c (handler_type_from_function_symbol): * symbols.c (Fdefvaralias): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symsinit.h: * sysdep.c (sys_subshell): * sysdep.c (tty_init_sys_modes_on_device): * syswindows.h: * text.c (dfc_convert_to_external_format): * text.c (dfc_convert_to_internal_format): * text.c (reinit_eistring_early): * text.c (init_eistring_once_early): * text.c (reinit_vars_of_text): * text.h: * text.h (INC_IBYTEPTR_FMT): * text.h (DEC_IBYTEPTR_FMT): * toolbar.c: * toolbar.c (decode_toolbar_position): * tooltalk.c: * ui-gtk.c: * unexnt.c: * unexnt.c (_start): * unexnt.c (unexec): * unexnt.c (get_section_info): * unicode.c: * unicode.c (vars_of_unicode): * window.c: * window.c (allocate_window): * window.c (new_window_mirror): * window.c (update_mirror_internal): * winslots.h:
author michaels
date Sun, 12 Jan 2003 11:08:22 +0000
parents c925bacdda60
children a1e328407366
comparison
equal deleted inserted replaced
1203:5f2f8dcbfb3e 1204:e22b0213b713
33 #include "glyphs.h" 33 #include "glyphs.h"
34 #include "objects-impl.h" 34 #include "objects-impl.h"
35 #include "specifier.h" 35 #include "specifier.h"
36 #include "window.h" 36 #include "window.h"
37 37
38 #ifdef USE_KKCC 38 #ifdef HAVE_TTY
39 #include "objects-tty-impl.h" 39 #include "console-tty.h"
40 #endif /* USE_KKCC */ 40 #endif
41 41
42 /* Objects that are substituted when an instantiation fails. 42 /* Objects that are substituted when an instantiation fails.
43 If we leave in the Qunbound value, we will probably get crashes. */ 43 If we leave in the Qunbound value, we will probably get crashes. */
44 Lisp_Object Vthe_null_color_instance, Vthe_null_font_instance; 44 Lisp_Object Vthe_null_color_instance, Vthe_null_font_instance;
45 45
60 * Color-Instance Object * 60 * Color-Instance Object *
61 ****************************************************************************/ 61 ****************************************************************************/
62 62
63 Lisp_Object Qcolor_instancep; 63 Lisp_Object Qcolor_instancep;
64 64
65 #ifdef USE_KKCC 65 static const struct memory_description color_instance_data_description_1 []= {
66 static const struct lrecord_description empty_color_instance_data_description [] = { 66 #ifdef HAVE_TTY
67 { XD_STRUCT_PTR, tty_console, 1, &tty_color_instance_data_description},
68 #endif
67 { XD_END } 69 { XD_END }
68 }; 70 };
69 71
70 static const struct lrecord_description tty_color_instance_data_description [] = { 72 static const struct sized_memory_description color_instance_data_description = {
71 { XD_LISP_OBJECT, offsetof (struct tty_color_instance_data, symbol) }, 73 sizeof (void *), color_instance_data_description_1
72 { XD_END }
73 }; 74 };
74 75
75 static const struct struct_description color_instance_data_description []= { 76 static const struct memory_description color_instance_description[] = {
76 { dead_console, empty_color_instance_data_description},
77 { tty_console, tty_color_instance_data_description},
78 { gtk_console, empty_color_instance_data_description},
79 { x_console, empty_color_instance_data_description},
80 { mswindows_console, empty_color_instance_data_description},
81 { stream_console, empty_color_instance_data_description},
82 { XD_END }
83 };
84
85 static const struct lrecord_description color_instance_description[] = {
86 { XD_INT, offsetof (Lisp_Color_Instance, color_instance_type) }, 77 { XD_INT, offsetof (Lisp_Color_Instance, color_instance_type) },
87 { XD_LISP_OBJECT, offsetof (Lisp_Color_Instance, name)}, 78 { XD_LISP_OBJECT, offsetof (Lisp_Color_Instance, name)},
88 { XD_LISP_OBJECT, offsetof (Lisp_Color_Instance, device)}, 79 { XD_LISP_OBJECT, offsetof (Lisp_Color_Instance, device)},
89 { XD_UNION, offsetof (Lisp_Color_Instance, data), 80 { XD_UNION, offsetof (Lisp_Color_Instance, data),
90 XD_INDIRECT (0, 0), color_instance_data_description }, 81 XD_INDIRECT (0, 0), &color_instance_data_description },
91 {XD_END} 82 {XD_END}
92 }; 83 };
93 #endif /* USE_KKCC */
94 84
95 static Lisp_Object 85 static Lisp_Object
96 mark_color_instance (Lisp_Object obj) 86 mark_color_instance (Lisp_Object obj)
97 { 87 {
98 Lisp_Color_Instance *c = XCOLOR_INSTANCE (obj); 88 Lisp_Color_Instance *c = XCOLOR_INSTANCE (obj);
154 !d ? LISP_HASH (obj) 144 !d ? LISP_HASH (obj)
155 : DEVMETH_OR_GIVEN (d, color_instance_hash, (c, depth), 145 : DEVMETH_OR_GIVEN (d, color_instance_hash, (c, depth),
156 LISP_HASH (obj))); 146 LISP_HASH (obj)));
157 } 147 }
158 148
159 #ifdef USE_KKCC
160 DEFINE_LRECORD_IMPLEMENTATION ("color-instance", color_instance, 149 DEFINE_LRECORD_IMPLEMENTATION ("color-instance", color_instance,
161 0, /*dumpable-flag*/ 150 0, /*dumpable-flag*/
162 mark_color_instance, print_color_instance, 151 mark_color_instance, print_color_instance,
163 finalize_color_instance, color_instance_equal, 152 finalize_color_instance, color_instance_equal,
164 color_instance_hash, 153 color_instance_hash,
165 color_instance_description, 154 color_instance_description,
166 Lisp_Color_Instance); 155 Lisp_Color_Instance);
167 #else /* not USE_KKCC */
168 DEFINE_LRECORD_IMPLEMENTATION ("color-instance", color_instance,
169 mark_color_instance, print_color_instance,
170 finalize_color_instance, color_instance_equal,
171 color_instance_hash, 0,
172 Lisp_Color_Instance);
173 #endif /* not USE_KKCC */
174 156
175 DEFUN ("make-color-instance", Fmake_color_instance, 1, 3, 0, /* 157 DEFUN ("make-color-instance", Fmake_color_instance, 1, 3, 0, /*
176 Return a new `color-instance' object named NAME (a string). 158 Return a new `color-instance' object named NAME (a string).
177 159
178 Optional argument DEVICE specifies the device this object applies to 160 Optional argument DEVICE specifies the device this object applies to
199 181
200 c = alloc_lcrecord_type (Lisp_Color_Instance, &lrecord_color_instance); 182 c = alloc_lcrecord_type (Lisp_Color_Instance, &lrecord_color_instance);
201 c->name = name; 183 c->name = name;
202 c->device = device; 184 c->device = device;
203 c->data = 0; 185 c->data = 0;
204 #ifdef USE_KKCC 186 c->color_instance_type = get_console_variant (XDEVICE_TYPE (c->device));
205 c->color_instance_type = get_console_variant(XDEVICE_TYPE(c->device));
206 #endif /* USE_KKCC */
207 187
208 retval = MAYBE_INT_DEVMETH (XDEVICE (device), initialize_color_instance, 188 retval = MAYBE_INT_DEVMETH (XDEVICE (device), initialize_color_instance,
209 (c, name, device, 189 (c, name, device,
210 decode_error_behavior_flag (noerror))); 190 decode_error_behavior_flag (noerror)));
211 if (!retval) 191 if (!retval)
276 256
277 Lisp_Object Qfont_instancep; 257 Lisp_Object Qfont_instancep;
278 258
279 static Lisp_Object font_instance_truename_internal (Lisp_Object xfont, 259 static Lisp_Object font_instance_truename_internal (Lisp_Object xfont,
280 Error_Behavior errb); 260 Error_Behavior errb);
281 #ifdef USE_KKCC 261
282 static const struct lrecord_description empty_font_instance_data_description [] = { 262 static const struct memory_description font_instance_data_description_1 []= {
263 #ifdef HAVE_TTY
264 { XD_STRUCT_PTR, tty_console, 1, &tty_font_instance_data_description},
265 #endif
283 { XD_END } 266 { XD_END }
284 }; 267 };
285 268
286 static const struct lrecord_description tty_font_instance_data_description [] = { 269 static const struct sized_memory_description font_instance_data_description = {
287 { XD_LISP_OBJECT, offsetof (struct tty_font_instance_data, charset) }, 270 sizeof (void *), font_instance_data_description_1
288 { XD_END }
289 }; 271 };
290 272
291 static const struct struct_description font_instance_data_description []= { 273 static const struct memory_description font_instance_description[] = {
292 { dead_console, empty_font_instance_data_description},
293 { tty_console, tty_font_instance_data_description},
294 { gtk_console, empty_font_instance_data_description},
295 { x_console, empty_font_instance_data_description},
296 { mswindows_console, empty_font_instance_data_description},
297 { stream_console, empty_font_instance_data_description},
298 { XD_END }
299 };
300
301 static const struct lrecord_description font_instance_description[] = {
302 { XD_INT, offsetof (Lisp_Font_Instance, font_instance_type) }, 274 { XD_INT, offsetof (Lisp_Font_Instance, font_instance_type) },
303 { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, name)}, 275 { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, name)},
304 { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, truename)}, 276 { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, truename)},
305 { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, device)}, 277 { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, device)},
306 { XD_UNION, offsetof (Lisp_Font_Instance, data), 278 { XD_UNION, offsetof (Lisp_Font_Instance, data),
307 XD_INDIRECT (0, 0), font_instance_data_description }, 279 XD_INDIRECT (0, 0), &font_instance_data_description },
308 {XD_END} 280 { XD_END }
309 }; 281 };
310 #endif /* USE_KKCC */
311 282
312 283
313 static Lisp_Object 284 static Lisp_Object
314 mark_font_instance (Lisp_Object obj) 285 mark_font_instance (Lisp_Object obj)
315 { 286 {
370 return internal_hash (font_instance_truename_internal 341 return internal_hash (font_instance_truename_internal
371 (obj, ERROR_ME_DEBUG_WARN), 342 (obj, ERROR_ME_DEBUG_WARN),
372 depth + 1); 343 depth + 1);
373 } 344 }
374 345
375 #ifdef USE_KKCC
376 DEFINE_LRECORD_IMPLEMENTATION ("font-instance", font_instance, 346 DEFINE_LRECORD_IMPLEMENTATION ("font-instance", font_instance,
377 0, /*dumpable-flag*/ 347 0, /*dumpable-flag*/
378 mark_font_instance, print_font_instance, 348 mark_font_instance, print_font_instance,
379 finalize_font_instance, font_instance_equal, 349 finalize_font_instance, font_instance_equal,
380 font_instance_hash, font_instance_description, Lisp_Font_Instance); 350 font_instance_hash, font_instance_description,
381 #else /* not USE_KKCC */ 351 Lisp_Font_Instance);
382 DEFINE_LRECORD_IMPLEMENTATION ("font-instance", font_instance,
383 mark_font_instance, print_font_instance,
384 finalize_font_instance, font_instance_equal,
385 font_instance_hash, 0, Lisp_Font_Instance);
386 #endif /* not USE_KKCC */
387 352
388 353
389 DEFUN ("make-font-instance", Fmake_font_instance, 1, 3, 0, /* 354 DEFUN ("make-font-instance", Fmake_font_instance, 1, 3, 0, /*
390 Return a new `font-instance' object named NAME. 355 Return a new `font-instance' object named NAME.
391 DEVICE specifies the device this object applies to and defaults to the 356 DEVICE specifies the device this object applies to and defaults to the
415 f->name = name; 380 f->name = name;
416 f->truename = Qnil; 381 f->truename = Qnil;
417 f->device = device; 382 f->device = device;
418 383
419 f->data = 0; 384 f->data = 0;
420 #ifdef USE_KKCC 385 f->font_instance_type = get_console_variant (XDEVICE_TYPE (f->device));
421 f->font_instance_type = get_console_variant(XDEVICE_TYPE(f->device));
422 #endif /* USE_KKCC */
423 386
424 /* Stick some default values here ... */ 387 /* Stick some default values here ... */
425 f->ascent = f->height = 1; 388 f->ascent = f->height = 1;
426 f->descent = 0; 389 f->descent = 0;
427 f->width = 1; 390 f->width = 1;
559 522
560 523
561 /**************************************************************************** 524 /****************************************************************************
562 Color Object 525 Color Object
563 ***************************************************************************/ 526 ***************************************************************************/
564 DEFINE_SPECIFIER_TYPE (color); 527
528 static const struct memory_description color_specifier_description[] = {
529 { XD_LISP_OBJECT, offsetof (struct color_specifier, face) },
530 { XD_LISP_OBJECT, offsetof (struct color_specifier, face_property) },
531 { XD_END }
532 };
533
534 DEFINE_SPECIFIER_TYPE_WITH_DATA (color);
565 /* Qcolor defined in general.c */ 535 /* Qcolor defined in general.c */
566 536
567 static void 537 static void
568 color_create (Lisp_Object obj) 538 color_create (Lisp_Object obj)
569 { 539 {
729 699
730 700
731 /**************************************************************************** 701 /****************************************************************************
732 Font Object 702 Font Object
733 ***************************************************************************/ 703 ***************************************************************************/
734 DEFINE_SPECIFIER_TYPE (font); 704
705 static const struct memory_description font_specifier_description[] = {
706 { XD_LISP_OBJECT, offsetof (struct font_specifier, face) },
707 { XD_LISP_OBJECT, offsetof (struct font_specifier, face_property) },
708 { XD_END }
709 };
710
711 DEFINE_SPECIFIER_TYPE_WITH_DATA (font);
735 /* Qfont defined in general.c */ 712 /* Qfont defined in general.c */
736 713
737 static void 714 static void
738 font_create (Lisp_Object obj) 715 font_create (Lisp_Object obj)
739 { 716 {
820 so we can freely error. */ 797 so we can freely error. */
821 Lisp_Object device = DOMAIN_DEVICE (domain); 798 Lisp_Object device = DOMAIN_DEVICE (domain);
822 struct device *d = XDEVICE (device); 799 struct device *d = XDEVICE (device);
823 Lisp_Object instance; 800 Lisp_Object instance;
824 Lisp_Object charset = Qnil; 801 Lisp_Object charset = Qnil;
802 #ifdef MULE
825 int stage = 0; 803 int stage = 0;
826 804
827 #ifdef MULE
828 if (!UNBOUNDP (matchspec)) 805 if (!UNBOUNDP (matchspec))
829 { 806 {
830 charset = Fget_charset (XCAR (matchspec)); 807 charset = Fget_charset (XCAR (matchspec));
831 stage = NILP (XCDR (matchspec)) ? 0 : 1; 808 stage = NILP (XCDR (matchspec)) ? 0 : 1;
832 } 809 }
840 #ifdef MULE 817 #ifdef MULE
841 if (font_spec_matches_charset (d, charset, 0, 818 if (font_spec_matches_charset (d, charset, 0,
842 Ffont_instance_truename 819 Ffont_instance_truename
843 (instantiator), 820 (instantiator),
844 0, -1, stage)) 821 0, -1, stage))
822 #endif
845 return instantiator; 823 return instantiator;
846 #else
847 return instantiator;
848 #endif
849 } 824 }
850 instantiator = Ffont_instance_name (instantiator); 825 instantiator = Ffont_instance_name (instantiator);
851 } 826 }
852 827
853 if (STRINGP (instantiator)) 828 if (STRINGP (instantiator))
977 952
978 953
979 /***************************************************************************** 954 /*****************************************************************************
980 Face Boolean Object 955 Face Boolean Object
981 ****************************************************************************/ 956 ****************************************************************************/
982 DEFINE_SPECIFIER_TYPE (face_boolean); 957
958 static const struct memory_description face_boolean_specifier_description[] = {
959 { XD_LISP_OBJECT, offsetof (struct face_boolean_specifier, face) },
960 { XD_LISP_OBJECT, offsetof (struct face_boolean_specifier, face_property) },
961 { XD_END }
962 };
963
964 DEFINE_SPECIFIER_TYPE_WITH_DATA (face_boolean);
983 Lisp_Object Qface_boolean; 965 Lisp_Object Qface_boolean;
984 966
985 static void 967 static void
986 face_boolean_create (Lisp_Object obj) 968 face_boolean_create (Lisp_Object obj)
987 { 969 {
1152 1134
1153 /* Qcolor, Qfont defined in general.c */ 1135 /* Qcolor, Qfont defined in general.c */
1154 DEFSYMBOL (Qface_boolean); 1136 DEFSYMBOL (Qface_boolean);
1155 } 1137 }
1156 1138
1157 static const struct lrecord_description color_specifier_description[] = {
1158 { XD_LISP_OBJECT, specifier_data_offset + offsetof (struct color_specifier, face) },
1159 { XD_LISP_OBJECT, specifier_data_offset + offsetof (struct color_specifier, face_property) },
1160 { XD_END }
1161 };
1162
1163 static const struct lrecord_description font_specifier_description[] = {
1164 { XD_LISP_OBJECT, specifier_data_offset + offsetof (struct font_specifier, face) },
1165 { XD_LISP_OBJECT, specifier_data_offset + offsetof (struct font_specifier, face_property) },
1166 { XD_END }
1167 };
1168
1169 static const struct lrecord_description face_boolean_specifier_description[] = {
1170 { XD_LISP_OBJECT, specifier_data_offset + offsetof (struct face_boolean_specifier, face) },
1171 { XD_LISP_OBJECT, specifier_data_offset + offsetof (struct face_boolean_specifier, face_property) },
1172 { XD_END }
1173 };
1174
1175 void 1139 void
1176 specifier_type_create_objects (void) 1140 specifier_type_create_objects (void)
1177 { 1141 {
1178 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (color, "color", "color-specifier-p"); 1142 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (color, "color", "color-specifier-p");
1179 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (font, "font", "font-specifier-p"); 1143 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (font, "font", "font-specifier-p");