view src/xemacs.def.in.in @ 5882:bbe4146603db

Reduce regexp usage, now CL-oriented non-regexp code available, core Lisp lisp/ChangeLog addition: 2015-04-01 Aidan Kehoe <kehoea@parhasard.net> When calling #'string-match with a REGEXP without regular expression special characters, call #'search, #'mismatch, #'find, etc. instead, making our code less likely to side-effect other functions' match data and a little faster. * apropos.el (apropos-command): * apropos.el (apropos): Call (position ?\n ...) rather than (string-match "\n" ...) here. * buff-menu.el: * buff-menu.el (buffers-menu-omit-invisible-buffers): Don't fire up the regexp engine just to check if a string starts with a space. * buff-menu.el (select-buffers-tab-buffers-by-mode): Don't fire up the regexp engine just to compare mode basenames. * buff-menu.el (format-buffers-tab-line): * buff-menu.el (build-buffers-tab-internal): Moved to being a label within the following. * buff-menu.el (buffers-tab-items): Use the label. * bytecomp.el (byte-compile-log-1): Don't fire up the regexp engine just to look for a newline. * cus-edit.el (get): Ditto. * cus-edit.el (custom-variable-value-create): Ditto, but for a colon. * descr-text.el (describe-text-sexp): Ditto. * descr-text.el (describe-char-unicode-data): Use #'split-string-by-char given that we're just looking for a semicolon. * descr-text.el (describe-char): Don't fire up the regexp engine just to look for a newline. * disass.el (disassemble-internal): Ditto. * files.el (file-name-sans-extension): Implement this using #'position. * files.el (file-name-extension): Correct this function's docstring, implement it in terms of #'position. * files.el (insert-directory): Don't fire up the regexp engine to split a string by space; don't reverse the list of switches, this is actually a longstand bug as far as I can see. * gnuserv.el (gnuserv-process-filter): Use #'position here, instead of consing inside #'split-string needlessly. * gtk-file-dialog.el (gtk-file-dialog-update-dropdown): Use #'split-string-by-char here, don't fire up #'split-string for directory-sep-char. * gtk-font-menu.el (hack-font-truename): Implement this more cheaply in terms of #'find, #'split-string-by-char, #'equal, rather than #'string-match, #'split-string, #'string-equal. * hyper-apropos.el (hyper-apropos-grok-functions): * hyper-apropos.el (hyper-apropos-grok-variables): Look for a newline using #'position rather than #'string-match in these functions. * info.el (Info-insert-dir): * info.el (Info-insert-file-contents): * info.el (Info-follow-reference): * info.el (Info-extract-menu-node-name): * info.el (Info-menu): Look for fixed strings using #'position or #'search as appropriate in this file. * ldap.el (ldap-decode-string): * ldap.el (ldap-encode-string): #'encode-coding-string, #'decode-coding-string are always available, don't check if they're fboundp. * ldap.el (ldap-decode-address): * ldap.el (ldap-encode-address): Use #'split-string-by-char in these functions. * lisp-mnt.el (lm-creation-date): * lisp-mnt.el (lm-last-modified-date): Don't fire up the regexp engine just to look for spaces in this file. * menubar-items.el (default-menubar): Use (not (mismatch ...)) rather than #'string-match here, for simple regexp. Use (search "beta" ...) rather than (string-match "beta" ...) * menubar-items.el (sort-buffers-menu-alphabetically): * menubar-items.el (sort-buffers-menu-by-mode-then-alphabetically): * menubar-items.el (group-buffers-menu-by-mode-then-alphabetically): Don't fire up the regexp engine to check if a string starts with a space or an asterisk. Use the more fine-grained results of #'compare-strings; compare case-insensitively for the buffer menu. * menubar-items.el (list-all-buffers): * menubar-items.el (tutorials-menu-filter): Use #'equal rather than #'string-equal, which, in this context, has the drawback of not having a bytecode, and no redeeming features. * minibuf.el: * minibuf.el (un-substitute-in-file-name): Use #'count, rather than counting the occurences of $ using the regexp engine. * minibuf.el (read-file-name-internal-1): Don't fire up the regexp engine to search for ?=. * mouse.el (mouse-eval-sexp): Check for newline with #'find. * msw-font-menu.el (mswindows-reset-device-font-menus): Split a string by newline with #'split-string-by-char. * mule/japanese.el: * mule/japanese.el ("Japanese"): Use #'search rather than #'string-match; canoncase before comparing; fix a bug I had introduced where I had been making case insensitive comparisons where the case mattered. * mule/korea-util.el (default-korean-keyboard): Look for ?3 using #'find, not #'string-march. * mule/korea-util.el (quail-hangul-switch-hanja): Search for a fixed string using #'search. * mule/mule-cmds.el (set-locale-for-language-environment): #'position, #'substitute rather than #'string-match, #'replace-in-string. * newcomment.el (comment-make-extra-lines): Use #'search rather than #'string-match for a simple string. * package-get.el (package-get-remote-filename): Use #'position when looking for ?@ * process.el (setenv): * process.el (read-envvar-name): Use #'position when looking for ?=. * replace.el (map-query-replace-regexp): Use #'split-string-by-char instead of using an inline implementation of it. * select.el (select-convert-from-cf-text): * select.el (select-convert-from-cf-unicodetext): Use #'position rather than #'string-match in these functions. * setup-paths.el (paths-emacs-data-root-p): Use #'search when looking for simple string. * sound.el (load-sound-file): Use #'split-string-by-char rather than an inline reimplementation of same. * startup.el (splash-screen-window-body): * startup.el (splash-screen-tty-body): Search for simple strings using #'search. * version.el (emacs-version): Ditto. * x-font-menu.el (hack-font-truename): Implement this more cheaply in terms of #'find, #'split-string-by-char, #'equal, rather than #'string-match, #'split-string, #'string-equal. * x-font-menu.el (x-reset-device-font-menus-core): Use #'split-string-by-char here. * x-init.el (x-initialize-keyboard): Search for a simple string using #'search.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 01 Apr 2015 14:28:20 +0100
parents 56144c8593a8
children
line wrap: on
line source

/* The module API: core symbols that are visible to modules.
   Copyright (C) 2008 Jerry James
   Copyright (C) 2010 Ben Wing.

This file is part of XEmacs.

XEmacs is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

XEmacs is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with XEmacs.  If not, see <http://www.gnu.org/licenses/>. */

/* The symbol to import/export is on the left.  If the symbol is not
   meant to be used directly, but a macro or inline function in the
   API expands to a form containing the symbol, then the macro or
   inline function is named in a comment to the right. */

#define NOT_C_CODE
#include <config.h>

#if defined (ERROR_CHECK_TYPES) && defined (XEMACS_DEFS_NEEDS_INLINE_DECLS)
#define XEMACS_DEFS_NEEDS_ERROR_CHECK_TYPES_DECLS
#endif

NAME xemacs.exe
EXPORTS
/* Exported functions */
#ifdef NEW_GC
alloc_lrecord			/* ALLOC_LISP_OBJECT */
alloc_sized_lrecord		/* ALLOC_SIZED_LISP_OBJECT */
lrecord_subr			/* DEFSUBR */
lrecord_symbol_value_forward	/* DEFVAR_SYMVAL_FWD */
#ifdef DEBUG_XEMACS
mcpro_1				/* mcpro */
#endif
mc_alloc			/* DEFSUBR */
#else /* not NEW_GC */
alloc_automanaged_lcrecord	/* ALLOC_LISP_OBJECT */
old_alloc_sized_lcrecord	/* ALLOC_SIZED_LISP_OBJECT */
#endif /* not NEW_GC */
apply1
#ifdef USE_ASSERTIONS
assert_failed			/* abort(), assert(), etc. */
#endif
build_extstring
build_istring
build_cistring
build_ascstring
build_msg_istring
build_msg_cistring
build_msg_ascstring
#ifdef MULE
bytecount_to_charcount_fun	/* bytecount_to_charcount */
#endif
call0
call1
call2
call3
call4
call5
call6
call7
call8
#ifdef MULE
charcount_to_bytecount_fun	/* charcount_to_bytecount */
#endif
check_quit			/* QUITP */
check_what_happened		/* QUIT */
concat2
concat3
cons3
copy_lisp_object
dead_wrong_type_argument	/* CHECK_xxx */
#ifdef DEBUG_GCPRO
debug_gcpro1			/* GCPRO1 */
debug_gcpro2			/* GCPRO2 */
debug_gcpro3			/* GCPRO3 */
debug_gcpro4			/* GCPRO4 */
debug_gcpro5			/* GCPRO5 */
debug_ungcpro			/* UNGCPRO */
#endif
deferror
deferror_massage_name		/* DEFERROR */
deferror_massage_name_and_message /* DEFERROR_STANDARD */
defkeyword
defkeyword_massage_name		/* DEFKEYWORD */
defsubr				/* DEFSUBR */
defsubr_macro			/* DEFSUBR_MACRO */
defsymbol
defsymbol_nodump		/* == defsymbol in modules */
defsymbol_massage_multiword_predicate /* DEFSYMBOL_MULTIWORD_PREDICATE */
defsymbol_massage_multiword_predicate_nodump /* DEFSYMBOL_MULTIWORD_PREDICATE_NO_DUMP */
defsymbol_massage_name		/* DEFSYMBOL */
defsymbol_massage_name_nodump	/* DEFSYMBOL_NO_DUMP == DEFSYMBOL in modules */
defvar_magic			/* DEFVAR_LISP, DEFVAR_INT, ... */
dfc_coding_system_is_unicode	/* TO_INTERNAL_FORMAT */
dfc_convert_to_external_format	/* TO_EXTERNAL_FORMAT */
dfc_convert_to_internal_format	/* TO_INTERNAL_FORMAT */
egetenv				
#ifndef EMODULES_GATHER_VERSION
emodules_doc_subr		/* CDOCSUBR */
emodules_doc_sym		/* CDOCSYM */
#endif
eputenv
#ifdef DEBUG_XEMACS
eq_with_ebola_notice		/* EQ_WITH_EBOLA_NOTICE */
#endif
#ifdef XEMACS_DEFS_NEEDS_ERROR_CHECK_TYPES_DECLS
error_check_cons
#ifdef HAVE_LDAP
error_check_ldap
#endif
error_check_opaque_ptr
#ifdef HAVE_POSTGRESQL
error_check_pgconn
error_check_pgresult
#endif
error_check_string
#ifdef NEW_GC
error_check_string_direct_data
error_check_string_indirect_data
#endif
error_check_symbol_value_forward
#endif /* XEMACS_DEFS_NEEDS_ERROR_CHECK_TYPES_DECLS */
free_opaque_ptr
get_coding_system_for_text_file
intern
invalid_argument
invalid_argument_2
invalid_constant
invalid_operation
invalid_operation_2
list1
list2
list3
list4
list5
list6
make_extstring
make_float
make_opaque_ptr
make_string
make_vector
maybe_invalid_operation
message
nconc2
new_dfc_convert_copy_data	/* C_STRING_TO_EXTERNAL, ... */
new_dfc_convert_malloc		/* C_STRING_TO_EXTERNAL_MALLOC, ... */
new_dfc_convert_size		/* C_STRING_TO_EXTERNAL, ... */
#ifdef MULE
non_ascii_itext_copy_ichar	/* itext_copy_ichar */
non_ascii_itext_ichar		/* itext_ichar */
non_ascii_set_itext_ichar	/* set_itext_ichar */
non_ascii_valid_ichar_p		/* valid_ichar_p */
#endif
out_of_memory			/* The postgresql module uses this */
printing_unreadable_lisp_object
printing_unreadable_object_fmt
#ifdef XEMACS_DEFS_NEEDS_INLINE_DECLS
qxestrdup
qxestrlen
qxestrcharlen
qxestrcmp
qxestrcmp_ascii
qxestrncmp
qxestrncmp_ascii
qxestrcpy
qxestrcpy_ascii
qxestrncpy
qxestrncpy_ascii
qxestrcat
qxestrcat_ascii
qxestrncat
qxestrncat_ascii
qxestrchr
qxestrrchr
qxestrstr
qxestrcspn
qxestrspn
qxestrpbrk
qxestrtok
qxestrtod
qxestrtol
qxestrtoul
qxeatoi
qxestrupr
qxestrlwr
qxesprintf
qxesscanf_ascii_1
#endif /* XEMACS_DEFS_NEEDS_INLINE_DECLS */
record_unwind_protect
record_unwind_protect_freeing
report_process_error
signal_circular_list_error	/* EXTERNAL_LIST_LOOP* */
signal_circular_property_list_error	/* EXTERNAL_PROPERTY_LIST_LOOP* */
signal_error
signal_ferror
signal_malformed_list_error	/* EXTERNAL_LIST_LOOP* */
signal_malformed_property_list_error	/* EXTERNAL_PROPERTY_LIST_LOOP* */
signal_quit			/* QUIT */
slow_down_interrupts
speed_up_interrupts
#ifndef DEBUG_XEMACS
staticpro
staticpro_nodump
#else
staticpro_1
staticpro_nodump_1
#endif
unbind_to_1			/* unbind_to */
#ifndef DEBUG_XEMACS
unstaticpro_nodump
#else
unstaticpro_nodump_1
#endif
vconcat2
vconcat3
vector1
vector2
vector3
warn_when_safe
#ifdef XEMACS_DEFS_NEEDS_ERROR_CHECK_TYPES_DECLS
wrap_record_1
#endif
write_cistring
write_fmt_string
write_fmt_string_lisp
write_istring
write_ascstring
wrong_type_argument		/* CONCHECK_xxx */
xemacs_c_alloca			/* ALLOCA */
xfree_1				/* xfree */
xmalloc
xmalloc_and_zero
xrealloc
xstrdup
Dynarr_delete_many		/* Dynarr_delete, Dynarr_delete_object, ... */
Dynarr_free
Dynarr_insert_many		/* Dynarr_add_{literal,lisp}_string */
Dynarr_newf			/* Dynarr_new, Dynarr_new2 */
Dynarr_resize			/* Dynarr_add */
Facons
Fappend
Fapply
Fbuffer_modified_p
Fbuffer_name
Fcall_with_condition_handler
Fcons
Fcurrent_buffer
Fequal
Feval
Fexpand_abbrev
Ffuncall
Fget
Fkill_buffer
Flength
Flist
Fmake_list
Fmake_string
Fmake_symbol
Fmake_vector
Fnreverse
Fprovide
Fput
Freverse
Fset_buffer
Fsignal
Fthrow
Fvector
#ifdef XEMACS_DEFS_NEEDS_ERROR_CHECK_TYPES_DECLS
XFIXNUM_1
#endif

/* Exported variables */
__temp_alloca_size__		/* ALLOCA */
#ifdef DEBUG_XEMACS
debug_issue_ebola_notices	/* EQ_WITH_EBOLA_NOTICE */
#endif
dont_check_for_quit		/* QUITP, QUIT */
gcprolist			/* GCPRO1, GCPRO2, ... */
initialized			/* LOADHIST_ATTACH */
lrecord_cons			/* CONSP */
lrecord_implementations_table	/* RECORD_DUMPABLE */
lrecord_marker			/* MARKERP */
#ifdef USE_KKCC
lrecord_memory_descriptions	/* INIT_LRECORD_IMPLEMENTATION */
#else
lrecord_markers			/* INIT_LRECORD_IMPLEMENTATION */
#endif
lrecord_string			/* STRINGP */
lrecord_symbol	 		/* SYMBOLP */
lrecord_type_count		/* INIT_EXTERNAL_LRECORD_IMPLEMENTATION */
lrecord_uid_counter
need_to_check_c_alloca		/* ALLOCA */
print_readably
quit_check_signal_happened	/* QUITP */
#ifdef ERROR_CHECK_MALLOC
regex_malloc_disallowed		/* REGEX_MALLOC_CHECK */
#endif
#ifdef MULE
rep_bytes_by_first_byte		/* itext_ichar_len, INC_IBYTEPTR, ... */
#endif
something_happened		/* QUIT */
specpdl_depth_counter		/* specpdl_depth */
Qconsp				/* CHECK_CONS */
Qcritical			/* QUIT, QUITP */
Qdelete
Qfixnump			/* CHECK_FIXNUM */
Qfile_name			/* Qdll_filename_encoding */
Qintegerp			/* CHECK_FIXNUM, CONCHECK_FIXNUM */
Qinvalid_argument
Qnative
Qnil
Qnotice
#ifdef USE_UNION_TYPE
Qnull_pointer			/* DEFVAR_xxx */
#endif
Qprocess_error
Qsearch
Qsimple
Qstringp			/* CHECK_STRING */
Qsymbolp			/* CHECK_SYMBOL */
Qsyntax_error
Qt
Qunbound
#ifdef USE_UNION_TYPE
Qzero				/* ZEROP */
#endif
Vinhibit_quit			/* QUIT, QUITP */
Vquit_flag			/* QUIT, QUITP */