;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:46:49 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/international/mule-util.el
;;; in Emacs version 21.3
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`mule-util.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


#@110 Convert STRING to a sequence of TYPE which contains characters in STRING.
TYPE should be `list' or `vector'.
(defalias 'string-to-sequence #[(string type) "\302=\203 \303	\304\"\207\305=\203 \306	!\207\307\310\"\207" [type string list append nil vector vconcat error "Invalid type: %s"] 3 (#$ . 635)])
#@40 Return a list of characters in STRING.
(defalias 'string-to-list #[(string) "\301\302\"\207" [string string-to-sequence list] 3 (#$ . 948)])
(put 'string-to-list 'byte-optimizer 'byte-compile-inline-expand)
#@42 Return a vector of characters in STRING.
(defalias 'string-to-vector #[(string) "\301\302\"\207" [string string-to-sequence vector] 3 (#$ . 1162)])
(put 'string-to-vector 'byte-optimizer 'byte-compile-inline-expand)
#@57 Embed OBJ (string or character) at index IDX of STRING.
(defalias 'store-substring #[(string idx obj) "\250\203 	\nI\210\202, G	G\306W\203+ 	\n\\HI\210T\211\202 +	\207" [obj string idx i len2 len1 0] 5 (#$ . 1385)])
#@657 Truncate string STR to end at column END-COLUMN.
The optional 3rd arg START-COLUMN, if non-nil, specifies
the starting column; that means to return the characters occupying
columns START-COLUMN ... END-COLUMN of STR.

The optional 4th arg PADDING, if non-nil, specifies a padding character
to add at the end of the result if STR doesn't reach column END-COLUMN,
or if END-COLUMN comes in the middle of a character in STR.
PADDING is also added at the beginning of the result
if column START-COLUMN appears in the middle of a character in STR.

If PADDING is nil, no padding is added in these cases, so
the resulting string may be narrower than END-COLUMN.
(defalias 'truncate-string-to-width #[(str end-column &optional start-column padding) "\204 \306	G\306\211\307\211\310\211\211\211\310\311\312\217\210W\203< \2038 \313\"\202\243 \307\202\243 \203R V\203R \313Z\"W\203c \n\202\216 \310\314\315\217\210V\203v \f\203\216 W\203\216 \313Z\"	\nO\203\242 	Q\202\243 	.	\207" [start-column str from-idx last-idx last-column ch 0 "" nil (byte-code "	W\203 \nH\305\f!\\T\202  \305\207" [column start-column str idx ch char-width] 3) ((args-out-of-range (byte-code "\302\207" [len idx nil] 1))) make-string (byte-code "	W\203 H\306!\\T\202  \306\207" [column end-column last-column idx last-idx str char-width ch] 3) ((args-out-of-range (byte-code "\302\207" [len idx nil] 1))) tail-padding head-padding column idx len padding end-column] 9 (#$ . 1623)])
(byte-code "\300\301\302\"\210\303\301\302\304#\207" [defalias truncate-string truncate-string-to-width make-obsolete "20.1"] 4)
#@380 Return t if OBJ is a nested alist.

Nested alist is a list of the form (ENTRY . BRANCHES), where ENTRY is
any Lisp object, and BRANCHES is a list of cons cells of the form
(KEY-ELEMENT . NESTED-ALIST).

You can use a nested alist to store any Lisp object (ENTRY) for a key
sequence KEYSEQ, where KEYSEQ is a sequence of KEY-ELEMENT.  KEYSEQ
can be a string, a vector, or a list.
(defalias 'nested-alist-p #[(obj) "\205\f <\205\f A<\207" [obj] 1 (#$ . 3315)])
(put 'nested-alist-p 'byte-optimizer 'byte-compile-inline-expand)
#@273 Set ENTRY for KEYSEQ in a nested alist ALIST.
Optional 4th arg LEN non-nil means the first LEN elements in KEYSEQ
 is considered.
Optional argument BRANCHES if non-nil is branches for a keyseq
longer than KEYSEQ.
See the documentation of `nested-alist-p' for more detail.
(defalias 'set-nested-alist #[(keyseq entry alist &optional len branches) "\306!\204 \307\310\"\210	<\n\206 	G\311\312\211\nW\203k \211\2053 <\2053 A<)\204< \307\313	\"\210\203G 	8\202J 	H\314\fA\"\211\204a \f\315CBAB\241\210AT\211\202 \240\210\205{ \316!\241-\207" [alist keyseq len slot key-elt i nested-alist-p error "Invalid argument %s" 0 nil "Keyseq %s is too long for this nested alist" assoc t last islist obj entry branches] 6 (#$ . 3850)])
#@532 Look up key sequence KEYSEQ in nested alist ALIST.  Return the definition.
Optional 1st argument LEN specifies the length of KEYSEQ.
Optional 2nd argument START specifies index of the starting key.
The returned value is normally a nested alist of which
car part is the entry for KEYSEQ.
If ALIST is not deep enough for KEYSEQ, return number which is
 how many key elements at the front of KEYSEQ it takes
 to reach a leaf in ALIST.
Optional 3rd argument NIL-FOR-TOO-LONG non-nil means return nil
 even if ALIST is not deep enough.
(defalias 'lookup-nested-alist #[(keyseq alist &optional len start nil-for-too-long) "\306!\204 \307\310\"\210	\204 \nG\206 \311\312\313\215\203' ?\205( \f\202( )\207" [alist len keyseq start i nil-for-too-long nested-alist-p error "Invalid argument %s" 0 lookup-nested-alist-tag (byte-code "<\203' 	\nW\203' \304	8A\"A\211\203 	T\211\202 \305\306\307\"\210\202 	\nW\205I \304	HA\"A\211\203A 	T\211\202( \305\306\307\"\210\202' \207" [keyseq i len alist assoc throw lookup-nested-alist-tag t] 4)] 3 (#$ . 4621)])
#@67 Return the string indicating end-of-line format of CODING-SYSTEM.
(defalias 'coding-system-eol-type-mnemonic #[(coding-system) "\306!\307	!\203 \n\202- 	\310=\203 \202- 	\311=\203\" \f\202- 	\312=\203, \202- \313\211;\2039 \202= \314!*\207" [coding-system eol-type eol-mnemonic-undecided eol-mnemonic-unix eol-mnemonic-dos eol-mnemonic-mac coding-system-eol-type vectorp 0 1 2 "-" char-to-string val] 3 (#$ . 5693)])
#@68 Return the value of CODING-SYSTEM's post-read-conversion property.
(defalias 'coding-system-post-read-conversion #[(coding-system) "\301\302\"\207" [coding-system coding-system-get post-read-conversion] 3 (#$ . 6128)])
#@68 Return the value of CODING-SYSTEM's pre-write-conversion property.
(defalias 'coding-system-pre-write-conversion #[(coding-system) "\301\302\"\207" [coding-system coding-system-get pre-write-conversion] 3 (#$ . 6354)])
#@76 Return the value of CODING-SYSTEM's translation-table-for-decode property.
(defalias 'coding-system-translation-table-for-decode #[(coding-system) "\301\302\"\207" [coding-system coding-system-get translation-table-for-decode] 3 (#$ . 6580)])
#@76 Return the value of CODING-SYSTEM's translation-table-for-encode property.
(defalias 'coding-system-translation-table-for-encode #[(coding-system) "\301\302\"\207" [coding-system coding-system-get translation-table-for-encode] 3 (#$ . 6830)])
#@167 Return t if and only if CODING-SYSTEM-1 and CODING-SYSTEM-2 are identical.
Two coding systems are identical if two symbols are equal
or one is an alias of the other.
(defalias 'coding-system-equal #[(coding-system-1 coding-system-2) "	=\2062 \305\n!\302N)	\305\n!\302N)\232\2052 \306!\306	!\211=\2061 \307\f!\2051 \307!*\207" [coding-system-1 coding-system-2 coding-system eol-type-2 eol-type-1 check-coding-system coding-system-eol-type vectorp] 4 (#$ . 7081)])
#@180 Detect a coding system of the text between FROM and TO with PRIORITY-LIST.
PRIORITY-LIST is an alist of coding categories vs the corresponding
coding systems ordered by priority.
(defalias 'detect-coding-with-priority '(macro . #[(from to priority-list) "\304\305\306D\307\310\311	\"BB\312\313\314\nE\257\315BB\207" [priority-list coding-category-list from to unwind-protect let* prio-list (coding-category-list coding-category-list) mapcar #[(x) "\211D\207" [x] 2] (mapc #'(lambda (x) (set (car x) (cdr x))) prio-list) (set-coding-priority (mapcar #'car prio-list)) detect-coding-region ((set-coding-priority coding-category-list) (update-coding-systems-internal))] 8 (#$ . 7560)]))
#@172 Detect a coding system of the text between FROM and TO with LANG-ENV.
The detection takes into account the coding system priorities for the
language environment LANG-ENV.
(defalias 'detect-coding-with-language-environment #[(from to lang-env) "\306\301\"\211\203a \307\216\310\311	\"\f\312\313\n\"\210\314\310\315\n\"!\210\316\".\202g \316\")\207" [lang-env coding-priority prio-list coding-category-list coding-category-iso-8-1 coding-category-iso-8-2 get-language-info ((byte-code "\301!\210\302 \207" [coding-category-list set-coding-priority update-coding-systems-internal] 2)) mapcar #[(x) "\301\302\"B\207" [x coding-system-get coding-category] 3] mapc #[(x) "@AL\207" [x] 2] set-coding-priority car detect-coding-region coding-category-iso-7-tight coding-category-iso-7 coding-category-iso-7-else coding-category-iso-8-else coding-category-emacs-mule coding-category-raw-text coding-category-sjis coding-category-big5 coding-category-ccl coding-category-binary coding-category-utf-16-be coding-category-utf-16-le coding-category-utf-8 from to] 5 (#$ . 8255)])
(provide 'mule-util)
