Mercurial > hg > xemacs-beta
comparison src/file-coding.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 | 7924b28c57a4 |
children | f0af455e89d9 |
comparison
equal
deleted
inserted
replaced
1203:5f2f8dcbfb3e | 1204:e22b0213b713 |
---|---|
359 Dynarr_declare (coding_system_type_entry); | 359 Dynarr_declare (coding_system_type_entry); |
360 } coding_system_type_entry_dynarr; | 360 } coding_system_type_entry_dynarr; |
361 | 361 |
362 static coding_system_type_entry_dynarr *the_coding_system_type_entry_dynarr; | 362 static coding_system_type_entry_dynarr *the_coding_system_type_entry_dynarr; |
363 | 363 |
364 static const struct lrecord_description cste_description_1[] = { | 364 static const struct memory_description cste_description_1[] = { |
365 { XD_STRUCT_PTR, offsetof (coding_system_type_entry, meths), 1, &coding_system_methods_description }, | 365 { XD_STRUCT_PTR, offsetof (coding_system_type_entry, meths), 1, &coding_system_methods_description }, |
366 { XD_END } | 366 { XD_END } |
367 }; | 367 }; |
368 | 368 |
369 static const struct struct_description cste_description = { | 369 static const struct sized_memory_description cste_description = { |
370 sizeof (coding_system_type_entry), | 370 sizeof (coding_system_type_entry), |
371 cste_description_1 | 371 cste_description_1 |
372 }; | 372 }; |
373 | 373 |
374 static const struct lrecord_description csted_description_1[] = { | 374 static const struct memory_description csted_description_1[] = { |
375 XD_DYNARR_DESC (coding_system_type_entry_dynarr, &cste_description), | 375 XD_DYNARR_DESC (coding_system_type_entry_dynarr, &cste_description), |
376 { XD_END } | 376 { XD_END } |
377 }; | 377 }; |
378 | 378 |
379 static const struct struct_description csted_description = { | 379 static const struct sized_memory_description csted_description = { |
380 sizeof (coding_system_type_entry_dynarr), | 380 sizeof (coding_system_type_entry_dynarr), |
381 csted_description_1 | 381 csted_description_1 |
382 }; | 382 }; |
383 | 383 |
384 static Lisp_Object Vcoding_system_type_list; | 384 static Lisp_Object Vcoding_system_type_list; |
396 int coding_detector_count; | 396 int coding_detector_count; |
397 int coding_detector_category_count; | 397 int coding_detector_category_count; |
398 | 398 |
399 detector_dynarr *all_coding_detectors; | 399 detector_dynarr *all_coding_detectors; |
400 | 400 |
401 static const struct lrecord_description struct_detector_category_description_1[] | 401 static const struct memory_description struct_detector_category_description_1[] |
402 = | 402 = |
403 { | 403 { |
404 { XD_LISP_OBJECT, offsetof (struct detector_category, sym) }, | 404 { XD_LISP_OBJECT, offsetof (struct detector_category, sym) }, |
405 { XD_END } | 405 { XD_END } |
406 }; | 406 }; |
407 | 407 |
408 static const struct struct_description struct_detector_category_description = | 408 static const struct sized_memory_description struct_detector_category_description = |
409 { | 409 { |
410 sizeof (struct detector_category), | 410 sizeof (struct detector_category), |
411 struct_detector_category_description_1 | 411 struct_detector_category_description_1 |
412 }; | 412 }; |
413 | 413 |
414 static const struct lrecord_description detector_category_dynarr_description_1[] = | 414 static const struct memory_description detector_category_dynarr_description_1[] = |
415 { | 415 { |
416 XD_DYNARR_DESC (detector_category_dynarr, | 416 XD_DYNARR_DESC (detector_category_dynarr, |
417 &struct_detector_category_description), | 417 &struct_detector_category_description), |
418 { XD_END } | 418 { XD_END } |
419 }; | 419 }; |
420 | 420 |
421 static const struct struct_description detector_category_dynarr_description = { | 421 static const struct sized_memory_description detector_category_dynarr_description = { |
422 sizeof (detector_category_dynarr), | 422 sizeof (detector_category_dynarr), |
423 detector_category_dynarr_description_1 | 423 detector_category_dynarr_description_1 |
424 }; | 424 }; |
425 | 425 |
426 static const struct lrecord_description struct_detector_description_1[] | 426 static const struct memory_description struct_detector_description_1[] |
427 = | 427 = |
428 { | 428 { |
429 { XD_STRUCT_PTR, offsetof (struct detector, cats), 1, | 429 { XD_STRUCT_PTR, offsetof (struct detector, cats), 1, |
430 &detector_category_dynarr_description }, | 430 &detector_category_dynarr_description }, |
431 { XD_END } | 431 { XD_END } |
432 }; | 432 }; |
433 | 433 |
434 static const struct struct_description struct_detector_description = | 434 static const struct sized_memory_description struct_detector_description = |
435 { | 435 { |
436 sizeof (struct detector), | 436 sizeof (struct detector), |
437 struct_detector_description_1 | 437 struct_detector_description_1 |
438 }; | 438 }; |
439 | 439 |
440 static const struct lrecord_description detector_dynarr_description_1[] = | 440 static const struct memory_description detector_dynarr_description_1[] = |
441 { | 441 { |
442 XD_DYNARR_DESC (detector_dynarr, &struct_detector_description), | 442 XD_DYNARR_DESC (detector_dynarr, &struct_detector_description), |
443 { XD_END } | 443 { XD_END } |
444 }; | 444 }; |
445 | 445 |
446 static const struct struct_description detector_dynarr_description = { | 446 static const struct sized_memory_description detector_dynarr_description = { |
447 sizeof (detector_dynarr), | 447 sizeof (detector_dynarr), |
448 detector_dynarr_description_1 | 448 detector_dynarr_description_1 |
449 }; | 449 }; |
450 | 450 |
451 Lisp_Object Qcoding_systemp; | 451 Lisp_Object Qcoding_systemp; |
510 static Lisp_Object | 510 static Lisp_Object |
511 mark_coding_system (Lisp_Object obj) | 511 mark_coding_system (Lisp_Object obj) |
512 { | 512 { |
513 Lisp_Coding_System *codesys = XCODING_SYSTEM (obj); | 513 Lisp_Coding_System *codesys = XCODING_SYSTEM (obj); |
514 | 514 |
515 mark_object (CODING_SYSTEM_NAME (codesys)); | 515 #define MARKED_SLOT(x) mark_object (codesys->x); |
516 mark_object (CODING_SYSTEM_DESCRIPTION (codesys)); | 516 #include "coding-system-slots.h" |
517 mark_object (CODING_SYSTEM_MNEMONIC (codesys)); | |
518 mark_object (CODING_SYSTEM_DOCUMENTATION (codesys)); | |
519 mark_object (CODING_SYSTEM_EOL_LF (codesys)); | |
520 mark_object (CODING_SYSTEM_EOL_CRLF (codesys)); | |
521 mark_object (CODING_SYSTEM_EOL_CR (codesys)); | |
522 mark_object (CODING_SYSTEM_SUBSIDIARY_PARENT (codesys)); | |
523 mark_object (CODING_SYSTEM_CANONICAL (codesys)); | |
524 | 517 |
525 MAYBE_CODESYSMETH (codesys, mark, (obj)); | 518 MAYBE_CODESYSMETH (codesys, mark, (obj)); |
526 | 519 |
527 mark_object (CODING_SYSTEM_PRE_WRITE_CONVERSION (codesys)); | 520 return Qnil; |
528 return CODING_SYSTEM_POST_READ_CONVERSION (codesys); | |
529 } | 521 } |
530 | 522 |
531 static void | 523 static void |
532 print_coding_system_properties (Lisp_Object obj, Lisp_Object printcharfun) | 524 print_coding_system_properties (Lisp_Object obj, Lisp_Object printcharfun) |
533 { | 525 { |
581 { | 573 { |
582 const Lisp_Coding_System *p = (const Lisp_Coding_System *) header; | 574 const Lisp_Coding_System *p = (const Lisp_Coding_System *) header; |
583 return offsetof (Lisp_Coding_System, data) + p->methods->extra_data_size; | 575 return offsetof (Lisp_Coding_System, data) + p->methods->extra_data_size; |
584 } | 576 } |
585 | 577 |
586 static const struct lrecord_description coding_system_methods_description_1[] | 578 static const struct memory_description coding_system_methods_description_1[] |
587 = { | 579 = { |
588 { XD_LISP_OBJECT, | 580 { XD_LISP_OBJECT, |
589 offsetof (struct coding_system_methods, type) }, | 581 offsetof (struct coding_system_methods, type) }, |
590 { XD_LISP_OBJECT, | 582 { XD_LISP_OBJECT, |
591 offsetof (struct coding_system_methods, predicate_symbol) }, | 583 offsetof (struct coding_system_methods, predicate_symbol) }, |
592 { XD_END } | 584 { XD_END } |
593 }; | 585 }; |
594 | 586 |
595 const struct struct_description coding_system_methods_description = { | 587 const struct sized_memory_description coding_system_methods_description = { |
596 sizeof (struct coding_system_methods), | 588 sizeof (struct coding_system_methods), |
597 coding_system_methods_description_1 | 589 coding_system_methods_description_1 |
598 }; | 590 }; |
599 | 591 |
600 const struct lrecord_description coding_system_empty_extra_description[] = { | 592 static const struct sized_memory_description coding_system_extra_description_map[] = |
593 { | |
594 { offsetof (Lisp_Coding_System, methods) }, | |
595 { offsetof (struct coding_system_methods, extra_description) }, | |
596 { -1 }, | |
597 }; | |
598 | |
599 static const struct memory_description coding_system_description[] = | |
600 { | |
601 { XD_STRUCT_PTR, offsetof (Lisp_Coding_System, methods), 1, | |
602 &coding_system_methods_description }, | |
603 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, x) }, | |
604 #define MARKED_SLOT_ARRAY(slot, size) \ | |
605 { XD_LISP_OBJECT_ARRAY, offsetof (Lisp_Coding_System, slot), size }, | |
606 #include "coding-system-slots.h" | |
607 { XD_STRUCT_ARRAY, offsetof (Lisp_Coding_System, data), 1, | |
608 coding_system_extra_description_map }, | |
601 { XD_END } | 609 { XD_END } |
602 }; | 610 }; |
603 | 611 |
604 static const struct lrecord_description coding_system_description[] = | 612 static const struct memory_description coding_system_empty_extra_description_1[] = |
605 { | 613 { |
606 { XD_STRUCT_PTR, offsetof (Lisp_Coding_System, methods), 1, | 614 { XD_END } |
607 &coding_system_methods_description }, | |
608 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, name) }, | |
609 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, description) }, | |
610 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, mnemonic) }, | |
611 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, documentation) }, | |
612 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, post_read_conversion) }, | |
613 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, pre_write_conversion) }, | |
614 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, text_file_wrapper) }, | |
615 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, auto_eol_wrapper) }, | |
616 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, eol[0]) }, | |
617 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, eol[1]) }, | |
618 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, eol[2]) }, | |
619 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, subsidiary_parent) }, | |
620 { XD_LISP_OBJECT, offsetof (Lisp_Coding_System, canonical) }, | |
621 { XD_CODING_SYSTEM_END } | |
622 }; | 615 }; |
623 | 616 |
624 #ifdef USE_KKCC | 617 const struct sized_memory_description coding_system_empty_extra_description = { |
618 0, coding_system_empty_extra_description_1 | |
619 }; | |
620 | |
625 DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("coding-system", coding_system, | 621 DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("coding-system", coding_system, |
626 1, /*dumpable-flag*/ | 622 1, /*dumpable-flag*/ |
627 mark_coding_system, | 623 mark_coding_system, |
628 print_coding_system, | 624 print_coding_system, |
629 finalize_coding_system, | 625 finalize_coding_system, |
630 0, 0, coding_system_description, | 626 0, 0, coding_system_description, |
631 sizeof_coding_system, | 627 sizeof_coding_system, |
632 Lisp_Coding_System); | 628 Lisp_Coding_System); |
633 #else /* not USE_KKCC */ | |
634 DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("coding-system", coding_system, | |
635 mark_coding_system, | |
636 print_coding_system, | |
637 finalize_coding_system, | |
638 0, 0, coding_system_description, | |
639 sizeof_coding_system, | |
640 Lisp_Coding_System); | |
641 #endif /* not USE_KKCC */ | |
642 | 629 |
643 /************************************************************************/ | 630 /************************************************************************/ |
644 /* Creating coding systems */ | 631 /* Creating coding systems */ |
645 /************************************************************************/ | 632 /************************************************************************/ |
646 | 633 |
960 Bytecount data_size, | 947 Bytecount data_size, |
961 Lisp_Object name) | 948 Lisp_Object name) |
962 { | 949 { |
963 Bytecount total_size = offsetof (Lisp_Coding_System, data) + data_size; | 950 Bytecount total_size = offsetof (Lisp_Coding_System, data) + data_size; |
964 Lisp_Coding_System *codesys = | 951 Lisp_Coding_System *codesys = |
965 (Lisp_Coding_System *) alloc_lcrecord (total_size, &lrecord_coding_system); | 952 (Lisp_Coding_System *) basic_alloc_lcrecord (total_size, |
966 | 953 &lrecord_coding_system); |
967 zero_sized_lcrecord (codesys, total_size); | 954 |
968 codesys->methods = codesys_meths; | 955 codesys->methods = codesys_meths; |
969 CODING_SYSTEM_PRE_WRITE_CONVERSION (codesys) = Qnil; | 956 #define MARKED_SLOT(x) codesys->x = Qnil; |
970 CODING_SYSTEM_POST_READ_CONVERSION (codesys) = Qnil; | 957 #include "coding-system-slots.h" |
958 | |
971 CODING_SYSTEM_EOL_TYPE (codesys) = EOL_LF; | 959 CODING_SYSTEM_EOL_TYPE (codesys) = EOL_LF; |
972 CODING_SYSTEM_EOL_CRLF (codesys) = Qnil; | |
973 CODING_SYSTEM_EOL_CR (codesys) = Qnil; | |
974 CODING_SYSTEM_EOL_LF (codesys) = Qnil; | |
975 CODING_SYSTEM_SUBSIDIARY_PARENT (codesys) = Qnil; | |
976 CODING_SYSTEM_CANONICAL (codesys) = Qnil; | |
977 CODING_SYSTEM_MNEMONIC (codesys) = Qnil; | |
978 CODING_SYSTEM_DOCUMENTATION (codesys) = Qnil; | |
979 CODING_SYSTEM_TEXT_FILE_WRAPPER (codesys) = Qnil; | |
980 CODING_SYSTEM_AUTO_EOL_WRAPPER (codesys) = Qnil; | |
981 CODING_SYSTEM_NAME (codesys) = name; | 960 CODING_SYSTEM_NAME (codesys) = name; |
982 | 961 |
983 MAYBE_CODESYSMETH (codesys, init, (wrap_coding_system (codesys))); | 962 MAYBE_CODESYSMETH (codesys, init, (wrap_coding_system (codesys))); |
984 | 963 |
985 return codesys; | 964 return codesys; |
993 if (EQ (symbol, Qlf)) return EOL_LF; | 972 if (EQ (symbol, Qlf)) return EOL_LF; |
994 if (EQ (symbol, Qcrlf)) return EOL_CRLF; | 973 if (EQ (symbol, Qcrlf)) return EOL_CRLF; |
995 if (EQ (symbol, Qcr)) return EOL_CR; | 974 if (EQ (symbol, Qcr)) return EOL_CR; |
996 | 975 |
997 invalid_constant ("Unrecognized eol type", symbol); | 976 invalid_constant ("Unrecognized eol type", symbol); |
998 RETURN_NOT_REACHED (EOL_AUTODETECT) | 977 RETURN_NOT_REACHED (EOL_AUTODETECT); |
999 } | 978 } |
1000 | 979 |
1001 static Lisp_Object | 980 static Lisp_Object |
1002 eol_type_to_symbol (enum eol_type type) | 981 eol_type_to_symbol (enum eol_type type) |
1003 { | 982 { |
1706 Lisp_Object aliasee = Fgethash (alias, Vcoding_system_hash_table, Qnil); | 1685 Lisp_Object aliasee = Fgethash (alias, Vcoding_system_hash_table, Qnil); |
1707 if (SYMBOLP (aliasee)) | 1686 if (SYMBOLP (aliasee)) |
1708 return aliasee; | 1687 return aliasee; |
1709 else | 1688 else |
1710 invalid_argument ("Symbol is not a coding system alias", alias); | 1689 invalid_argument ("Symbol is not a coding system alias", alias); |
1711 RETURN_NOT_REACHED (Qnil) | 1690 RETURN_NOT_REACHED (Qnil); |
1712 } | 1691 } |
1713 | 1692 |
1714 /* A maphash function, for removing dangling coding system aliases. */ | 1693 /* A maphash function, for removing dangling coding system aliases. */ |
1715 static int | 1694 static int |
1716 dangling_coding_system_alias_p (Lisp_Object alias, | 1695 dangling_coding_system_alias_p (Lisp_Object alias, |
1987 /* A coding stream is a stream used for encoding or decoding text. The | 1966 /* A coding stream is a stream used for encoding or decoding text. The |
1988 coding-stream object keeps track of the actual coding system, the stream | 1967 coding-stream object keeps track of the actual coding system, the stream |
1989 that is at the other end, and data that needs to be persistent across | 1968 that is at the other end, and data that needs to be persistent across |
1990 the lifetime of the stream. */ | 1969 the lifetime of the stream. */ |
1991 | 1970 |
1992 DEFINE_LSTREAM_IMPLEMENTATION ("coding", coding); | 1971 extern const struct sized_memory_description chain_coding_stream_description; |
1972 extern const struct sized_memory_description undecided_coding_stream_description; | |
1973 | |
1974 static const struct memory_description coding_stream_data_description_1 []= { | |
1975 { XD_STRUCT_PTR, chain_coding_system, 1, &chain_coding_stream_description}, | |
1976 { XD_STRUCT_PTR, undecided_coding_system, 1, &undecided_coding_stream_description}, | |
1977 { XD_END } | |
1978 }; | |
1979 | |
1980 static const struct sized_memory_description coding_stream_data_description = { | |
1981 sizeof (void *), coding_stream_data_description_1 | |
1982 }; | |
1983 | |
1984 static const struct memory_description coding_lstream_description[] = { | |
1985 { XD_INT, offsetof (struct coding_stream, type) }, | |
1986 { XD_LISP_OBJECT, offsetof (struct coding_stream, orig_codesys) }, | |
1987 { XD_LISP_OBJECT, offsetof (struct coding_stream, codesys) }, | |
1988 { XD_LISP_OBJECT, offsetof (struct coding_stream, other_end) }, | |
1989 { XD_UNION, offsetof (struct coding_stream, data), | |
1990 XD_INDIRECT (0, 0), &coding_stream_data_description }, | |
1991 { XD_END } | |
1992 }; | |
1993 | |
1994 DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA ("coding", coding); | |
1993 | 1995 |
1994 /* Encoding and decoding are parallel operations, so we create just one | 1996 /* Encoding and decoding are parallel operations, so we create just one |
1995 stream for both. "Decoding" may involve the extra step of autodetection | 1997 stream for both. "Decoding" may involve the extra step of autodetection |
1996 of the data format, but that's only because of the conventional | 1998 of the data format, but that's only because of the conventional |
1997 definition of decoding as converting from external- to | 1999 definition of decoding as converting from external- to |
2307 { | 2309 { |
2308 xfree (str->data); | 2310 xfree (str->data); |
2309 str->data = 0; | 2311 str->data = 0; |
2310 } | 2312 } |
2311 if (XCODING_SYSTEM_METHODS (str->codesys)->coding_data_size) | 2313 if (XCODING_SYSTEM_METHODS (str->codesys)->coding_data_size) |
2312 str->data = | 2314 { |
2313 xmalloc_and_zero (XCODING_SYSTEM_METHODS (str->codesys)-> | 2315 str->data = |
2314 coding_data_size); | 2316 xmalloc_and_zero (XCODING_SYSTEM_METHODS (str->codesys)-> |
2317 coding_data_size); | |
2318 str->type = XCODING_SYSTEM_METHODS (str->codesys)->enumtype; | |
2319 } | |
2315 MAYBE_XCODESYSMETH (str->codesys, init_coding_stream, (str)); | 2320 MAYBE_XCODESYSMETH (str->codesys, init_coding_stream, (str)); |
2316 /* The new coding system may have different ideas regarding whether its | 2321 /* The new coding system may have different ideas regarding whether its |
2317 ends are characters or bytes. */ | 2322 ends are characters or bytes. */ |
2318 set_coding_character_mode (lstr); | 2323 set_coding_character_mode (lstr); |
2319 } | 2324 } |
2536 | 2541 |
2537 /* #### Need a way to create "opposite-direction" coding systems. */ | 2542 /* #### Need a way to create "opposite-direction" coding systems. */ |
2538 | 2543 |
2539 /* Chain two or more coding systems together to make a combination coding | 2544 /* Chain two or more coding systems together to make a combination coding |
2540 system. */ | 2545 system. */ |
2541 DEFINE_CODING_SYSTEM_TYPE (chain); | |
2542 | 2546 |
2543 struct chain_coding_system | 2547 struct chain_coding_system |
2544 { | 2548 { |
2545 /* List of coding systems, in decode order */ | 2549 /* List of coding systems, in decode order */ |
2546 Lisp_Object *chain; | 2550 Lisp_Object *chain; |
2556 /* Lstreams for chain coding system */ | 2560 /* Lstreams for chain coding system */ |
2557 Lisp_Object *lstreams; | 2561 Lisp_Object *lstreams; |
2558 int lstream_count; | 2562 int lstream_count; |
2559 }; | 2563 }; |
2560 | 2564 |
2561 static const struct lrecord_description lo_description_1[] = { | 2565 static const struct memory_description chain_coding_system_description[] = { |
2562 { XD_LISP_OBJECT, 0 }, | 2566 { XD_INT, offsetof (struct chain_coding_system, count) }, |
2567 { XD_STRUCT_PTR, offsetof (struct chain_coding_system, chain), | |
2568 XD_INDIRECT (0, 0), &lisp_object_description }, | |
2569 { XD_LISP_OBJECT, offsetof (struct chain_coding_system, | |
2570 canonicalize_after_coding) }, | |
2563 { XD_END } | 2571 { XD_END } |
2564 }; | 2572 }; |
2565 | 2573 |
2566 static const struct struct_description lo_description = { | 2574 static const struct memory_description chain_coding_stream_description_1 [] = { |
2567 sizeof (Lisp_Object), | 2575 { XD_INT, offsetof (struct chain_coding_stream, lstream_count) }, |
2568 lo_description_1 | 2576 { XD_STRUCT_PTR, offsetof (struct chain_coding_stream, lstreams), |
2569 }; | 2577 XD_INDIRECT (0, 0), &lisp_object_description }, |
2570 | |
2571 static const struct lrecord_description chain_coding_system_description[] = { | |
2572 { XD_INT, | |
2573 coding_system_data_offset + offsetof (struct chain_coding_system, | |
2574 count) }, | |
2575 { XD_STRUCT_PTR, | |
2576 coding_system_data_offset + offsetof (struct chain_coding_system, | |
2577 chain), | |
2578 XD_INDIRECT (0, 0), &lo_description }, | |
2579 { XD_LISP_OBJECT, | |
2580 coding_system_data_offset + offsetof (struct chain_coding_system, | |
2581 canonicalize_after_coding) }, | |
2582 { XD_END } | 2578 { XD_END } |
2583 }; | 2579 }; |
2580 | |
2581 const struct sized_memory_description chain_coding_stream_description = { | |
2582 sizeof (struct chain_coding_stream), chain_coding_stream_description_1 | |
2583 }; | |
2584 | |
2585 DEFINE_CODING_SYSTEM_TYPE_WITH_DATA (chain); | |
2584 | 2586 |
2585 static Lisp_Object | 2587 static Lisp_Object |
2586 chain_canonicalize (Lisp_Object codesys) | 2588 chain_canonicalize (Lisp_Object codesys) |
2587 { | 2589 { |
2588 /* We make use of the fact that this method is called at init time, after | 2590 /* We make use of the fact that this method is called at init time, after |
3022 for example). | 3024 for example). |
3023 | 3025 |
3024 There is one parameter: `subtype', either `cr', `lf', `crlf', or nil. | 3026 There is one parameter: `subtype', either `cr', `lf', `crlf', or nil. |
3025 */ | 3027 */ |
3026 | 3028 |
3027 DEFINE_CODING_SYSTEM_TYPE (convert_eol); | |
3028 | |
3029 struct convert_eol_coding_system | 3029 struct convert_eol_coding_system |
3030 { | 3030 { |
3031 enum eol_type subtype; | 3031 enum eol_type subtype; |
3032 }; | 3032 }; |
3033 | 3033 |
3039 struct convert_eol_coding_stream | 3039 struct convert_eol_coding_stream |
3040 { | 3040 { |
3041 enum eol_type actual; | 3041 enum eol_type actual; |
3042 }; | 3042 }; |
3043 | 3043 |
3044 static const struct lrecord_description | 3044 static const struct memory_description |
3045 convert_eol_coding_system_description[] = { | 3045 convert_eol_coding_system_description[] = { |
3046 { XD_END } | 3046 { XD_END } |
3047 }; | 3047 }; |
3048 | |
3049 DEFINE_CODING_SYSTEM_TYPE_WITH_DATA (convert_eol); | |
3048 | 3050 |
3049 static void | 3051 static void |
3050 convert_eol_print (Lisp_Object cs, Lisp_Object printcharfun, int escapeflag) | 3052 convert_eol_print (Lisp_Object cs, Lisp_Object printcharfun, int escapeflag) |
3051 { | 3053 { |
3052 struct convert_eol_coding_system *data = | 3054 struct convert_eol_coding_system *data = |
3281 non-EOL-processing coding system (if possible), or terminate EOL | 3283 non-EOL-processing coding system (if possible), or terminate EOL |
3282 detection and use the specified EOL type. This prevents data from being | 3284 detection and use the specified EOL type. This prevents data from being |
3283 EOL-processed twice. | 3285 EOL-processed twice. |
3284 */ | 3286 */ |
3285 | 3287 |
3286 DEFINE_CODING_SYSTEM_TYPE (undecided); | |
3287 | |
3288 struct undecided_coding_system | 3288 struct undecided_coding_system |
3289 { | 3289 { |
3290 int do_eol, do_coding; | 3290 int do_eol, do_coding; |
3291 Lisp_Object cs; | 3291 Lisp_Object cs; |
3292 }; | 3292 }; |
3298 struct chain_coding_stream c; | 3298 struct chain_coding_stream c; |
3299 | 3299 |
3300 struct detection_state *st; | 3300 struct detection_state *st; |
3301 }; | 3301 }; |
3302 | 3302 |
3303 static const struct lrecord_description | 3303 static const struct memory_description undecided_coding_system_description[] = { |
3304 undecided_coding_system_description[] = { | 3304 { XD_LISP_OBJECT, offsetof (struct undecided_coding_system, cs) }, |
3305 { XD_LISP_OBJECT, | |
3306 coding_system_data_offset + offsetof (struct undecided_coding_system, | |
3307 cs) }, | |
3308 { XD_END } | 3305 { XD_END } |
3309 }; | 3306 }; |
3307 | |
3308 static const struct memory_description undecided_coding_stream_description_1 [] = { | |
3309 { XD_LISP_OBJECT, offsetof (struct undecided_coding_stream, actual) }, | |
3310 { XD_STRUCT_ARRAY, offsetof (struct undecided_coding_stream, c), | |
3311 1, &chain_coding_stream_description }, | |
3312 { XD_END } | |
3313 }; | |
3314 | |
3315 const struct sized_memory_description undecided_coding_stream_description = { | |
3316 sizeof (struct undecided_coding_stream), undecided_coding_stream_description_1 | |
3317 }; | |
3318 | |
3319 DEFINE_CODING_SYSTEM_TYPE_WITH_DATA (undecided); | |
3310 | 3320 |
3311 static void | 3321 static void |
3312 undecided_init (Lisp_Object codesys) | 3322 undecided_init (Lisp_Object codesys) |
3313 { | 3323 { |
3314 struct undecided_coding_system *data = | 3324 struct undecided_coding_system *data = |
3357 } | 3367 } |
3358 | 3368 |
3359 static void | 3369 static void |
3360 undecided_mark_coding_stream (struct coding_stream *str) | 3370 undecided_mark_coding_stream (struct coding_stream *str) |
3361 { | 3371 { |
3372 mark_object (CODING_STREAM_TYPE_DATA (str, undecided)->actual); | |
3362 chain_mark_coding_stream_1 (&CODING_STREAM_TYPE_DATA (str, undecided)->c); | 3373 chain_mark_coding_stream_1 (&CODING_STREAM_TYPE_DATA (str, undecided)->c); |
3363 } | 3374 } |
3364 | 3375 |
3365 static int | 3376 static int |
3366 undecided_putprop (Lisp_Object codesys, Lisp_Object key, Lisp_Object value) | 3377 undecided_putprop (Lisp_Object codesys, Lisp_Object key, Lisp_Object value) |
3447 if (EQ (Dynarr_at (cats, j).sym, symbol)) | 3458 if (EQ (Dynarr_at (cats, j).sym, symbol)) |
3448 return Dynarr_at (cats, j).id; | 3459 return Dynarr_at (cats, j).id; |
3449 } | 3460 } |
3450 | 3461 |
3451 invalid_constant ("Unrecognized coding category", symbol); | 3462 invalid_constant ("Unrecognized coding category", symbol); |
3452 RETURN_NOT_REACHED (0) | 3463 RETURN_NOT_REACHED (0); |
3453 } | 3464 } |
3454 | 3465 |
3455 static Lisp_Object | 3466 static Lisp_Object |
3456 coding_category_id_to_symbol (int id) | 3467 coding_category_id_to_symbol (int id) |
3457 { | 3468 { |
4269 | 4280 |
4270 /************************************************************************/ | 4281 /************************************************************************/ |
4271 /* Gzip methods */ | 4282 /* Gzip methods */ |
4272 /************************************************************************/ | 4283 /************************************************************************/ |
4273 | 4284 |
4274 DEFINE_CODING_SYSTEM_TYPE (gzip); | |
4275 | |
4276 struct gzip_coding_system | 4285 struct gzip_coding_system |
4277 { | 4286 { |
4278 int level; /* 0 through 9, or -1 for default */ | 4287 int level; /* 0 through 9, or -1 for default */ |
4279 }; | 4288 }; |
4280 | 4289 |
4289 int stream_initted; | 4298 int stream_initted; |
4290 int reached_eof; /* #### this should be handled by the caller, once we | 4299 int reached_eof; /* #### this should be handled by the caller, once we |
4291 return LSTREAM_EOF */ | 4300 return LSTREAM_EOF */ |
4292 }; | 4301 }; |
4293 | 4302 |
4294 static const struct lrecord_description | 4303 static const struct memory_description |
4295 gzip_coding_system_description[] = { | 4304 gzip_coding_system_description[] = { |
4296 { XD_END } | 4305 { XD_END } |
4297 }; | 4306 }; |
4307 | |
4308 DEFINE_CODING_SYSTEM_TYPE_WITH_DATA (gzip); | |
4298 | 4309 |
4299 enum source_sink_type | 4310 enum source_sink_type |
4300 gzip_conversion_end_type (Lisp_Object codesys) | 4311 gzip_conversion_end_type (Lisp_Object codesys) |
4301 { | 4312 { |
4302 return DECODES_BYTE_TO_BYTE; | 4313 return DECODES_BYTE_TO_BYTE; |
4638 | 4649 |
4639 /* Initialize to something reasonable ... */ | 4650 /* Initialize to something reasonable ... */ |
4640 for (i = 0; i < MAX_DETECTOR_CATEGORIES; i++) | 4651 for (i = 0; i < MAX_DETECTOR_CATEGORIES; i++) |
4641 { | 4652 { |
4642 coding_category_system[i] = Qnil; | 4653 coding_category_system[i] = Qnil; |
4643 dump_add_root_object (&coding_category_system[i]); | 4654 dump_add_root_lisp_object (&coding_category_system[i]); |
4644 coding_category_by_priority[i] = i; | 4655 coding_category_by_priority[i] = i; |
4645 } | 4656 } |
4646 | 4657 |
4647 dump_add_opaque (coding_category_by_priority, | 4658 dump_add_opaque (coding_category_by_priority, |
4648 sizeof (coding_category_by_priority)); | 4659 sizeof (coding_category_by_priority)); |