;ELC   
;;; Compiled by pot@pot.cnuce.cnr.it on Tue Mar 18 15:48:59 2003
;;; from file /home/pot/gnu/emacs-pretest.new/lisp/obsolete/cplus-md.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 "`cplus-md.el' was compiled for Emacs 19.29 or later"))

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


(custom-declare-group 'old-c++ nil "Old C++ code editing mode for Emacs." :prefix "c-")
#@32 Abbrev table used in C++ mode.
(defvar c++-mode-abbrev-table nil (#$ . 715))
(define-abbrev-table 'c++-mode-abbrev-table nil)
#@26 Keymap used in C++ mode.
(defvar c++-mode-map nil (#$ . 847))
(byte-code "\204= \301 \302\303\304#\210\302\305\306#\210\302\307\306#\210\302\310\311#\210\302\312\313#\210\302\314\315#\210\302\316\317#\210\302\320\321#\210\302\322\323#\210\301\207" [c++-mode-map make-sparse-keymap define-key "\n" reindent-then-newline-and-indent "{" electric-c++-brace "}" ";" electric-c++-semi "" mark-c-function "" indent-c++-exp "" backward-delete-char-untabify "	" c++-indent-command "" c-backslash-region] 4)
#@32 Syntax table used in C++ mode.
(defvar c++-mode-syntax-table nil (#$ . 1369))
(byte-code "\204g \301 \302\303\304#\210\302\305\306#\210\302\307\310#\210\302\311\312#\210\302\313\312#\210\302\314\312#\210\302\315\312#\210\302\316\312#\210\302\317\312#\210\302\320\312#\210\302\321\312#\210\302\322\323#\210\302\307\324#\210\302\305\325#\210\302\326\327#\210\302\330\327#\210\301\207" [c++-mode-syntax-table make-syntax-table modify-syntax-entry 92 "\\" 47 ". 14" 42 ". 23" 43 "." 45 61 37 60 62 38 124 39 "\"" ". 23b" ". 124" 10 ">" 13] 4)
#@150 *Extra indent for continuation lines of member inits;
nil means to align with previous initializations rather than
with the colon on the first line.
(custom-declare-variable 'c++-continued-member-init-offset 'nil '(#$ . -1933) :type '(choice (const nil) integer) :group 'old-c++)
#@72 *Indentation level of member initializations in function declarations.
(custom-declare-variable 'c++-member-init-indent '0 '(#$ . -2219) :type 'integer :group 'old-c++)
#@69 *Offset of C++ friend declarations relative to member declarations.
(custom-declare-variable 'c++-friend-offset '-4 '(#$ . -2394) :type 'integer :group 'old-c++)
#@41 *If t, colon is an electric terminator.
(custom-declare-variable 'c++-electric-colon 't '(#$ . -2562) :type 'boolean :group 'old-c++)
#@111 *Indicates how far to indent a line following an empty argument
list.  Nil indicates to just after the paren.
(custom-declare-variable 'c++-empty-arglist-indent 'nil '(#$ . -2703) :type '(choice (const nil) integer) :group 'old-c++)
#@73 Imenu generic expression for C++ mode.  See `imenu-generic-expression'.
(defvar c++-imenu-generic-expression (byte-code "\300\301\302BB\303\304\305BBD\207" [nil "^\\(template[ 	]*<[^>]+>[ 	]*\\)?\\([a-zA-Z0-9_:]+[ 	]+\\)?\\([a-zA-Z0-9_:]+[ 	]+\\)?\\([a-zA-Z0-9_:]+\\([ 	]*[*&]+[ 	]*\\|[ 	]+\\)\\)?\\([a-zA-Z0-9_:~]+\\|\\([a-zA-Z0-9_:~]*::\\)?operator[^a-zA-Z1-9_][^(]* \\)[ 	]*([^)]*)[ 	\n]*[^	      ;]" (6) "Class" "^\\(template[ 	]*<[^>]+>[ 	]*\\)?class[ 	]+\\([a-zA-Z0-9_]+\\)[ 	]*[:{]" (2)] 4) (#$ . 2942))
#@2928 Major mode for editing C++ code.  Very much like editing C code.
Expression and list commands understand all C++ brackets.
Tab at left margin indents for C++ code
Comments are delimited with /* ... */ {or with // ... <newline>}
Paragraphs are separated by blank lines only.
Delete converts tabs to spaces as it moves back.
\{c++-mode-map}
Variables controlling indentation style:
 c-tab-always-indent
    Non-nil means TAB in C mode should always reindent the current line,
    regardless of where in the line point is when the TAB command is used.
    Default is t.
 c-auto-newline
    Non-nil means automatically newline before and after braces,
    and after colons and semicolons, inserted in C code.
 c-indent-level
    Indentation of C statements within surrounding block.
    The surrounding block's indentation is the indentation
    of the line on which the open-brace appears.
 c-continued-statement-offset
    Extra indentation given to a substatement, such as the
    then-clause of an if or body of a while.
 c-continued-brace-offset
    Extra indentation given to a brace that starts a substatement.
    This is in addition to c-continued-statement-offset.
 c-brace-offset
    Extra indentation for line if it starts with an open brace.
 c-brace-imaginary-offset
    An open brace following other text is treated as if it were
    this far to the right of the start of its line.
 c-argdecl-indent
    Indentation level of declarations of C function arguments.
 c-label-offset
    Extra indentation for line that is a label, or case or ``default:'', or
    ``public:'' or ``private:'', or ``protected:''.
 c++-electric-colon
    If non-nil at invocation of c++-mode (t is the default) colon electrically
    indents.
 c++-empty-arglist-indent
    If non-nil, a function declaration or invocation which ends a line with a
    left paren is indented this many extra spaces, instead of flush with the
    left paren.
 c++-friend-offset
    Offset of C++ friend declarations relative to member declarations.
 c++-member-init-indent
    Indentation level of member initializations in function declarations,
    if they are on a separate line beginning with a colon.
 c++-continued-member-init-offset
    Extra indentation for continuation lines of member initializations; NIL
    means to align with previous initializations rather than with the colon.

Settings for K&R, BSD, and Stroustrup indentation styles are
  c-indent-level                5    8    4
  c-continued-statement-offset  5    8    4
  c-continued-brace-offset                0
  c-brace-offset               -5   -8    0
  c-brace-imaginary-offset                0
  c-argdecl-indent              0    8    4
  c-label-offset               -5   -8   -4
  c++-empty-arglist-indent                4
  c++-friend-offset                       0

Turning on C++ mode calls the value of the variable `c++-mode-hook' with
no args if that value is non-nil.
(defalias 'c++-mode #[nil "\306 \210\307\310!\210\311!\210\312	!\210\313\314\315'\316\317!\320L\210\316\321!\322L\210\316\323!\324L\210\316\325!\326L\210\316\327!\330L\210\316\331!\332(PL\210\316\333!L\210\316\334!\335L\210\316\336!\335L\210\316\337!\335L\210\316\340!\210) \341*\342\343!\210+\205q \344\345\346#\207" [c++-mode-map c++-mode-syntax-table major-mode mode-name comment-column c++-mode-abbrev-table kill-all-local-variables require c-mode use-local-map set-syntax-table c++-mode "C++" 32 make-local-variable indent-line-function c++-indent-line comment-start "// " comment-end "" comment-start-skip "/\\*+ *\\|// *" comment-indent-function c++-comment-indent paragraph-start "$\\|" paragraph-separate paragraph-ignore-fill-prefix t require-final-newline parse-sexp-ignore-comments imenu-generic-expression nil run-hooks c++-mode-hook define-key ":" electric-c++-terminator local-abbrev-table page-delimiter c++-imenu-generic-expression imenu-case-fold-search c++-electric-colon] 4 (#$ . 3461) nil])
(defalias 'c++-comment-indent #[nil "\303\304!\203 \305\207\212\306\307x\210\310i!\203 \305\202 iT`\311\305!\210\312	\313#\203/ \305\224b\210i\2020 \n)])\207" [cur-pt comment-start-skip comment-column looking-at "^\\(/\\*\\|//\\)" 0 " 	" nil zerop beginning-of-line re-search-forward t] 5])
#@50 Insert character and correct line's indentation.
(defalias 'electric-c++-brace #[(arg) "\304	\204@ l\203@ \212\305\304x\210n)\204 \n\203@ \306 \210\307 \210c\210\306 \210\n\2032 \307 \210`\310Z\306 \210\212\203; Tb\210\311\312!\210)\203Q \212b\210\313\314	!!)\202V \313\314	!!)\207" [insertpos arg c-auto-newline last-command-char nil " 	" c++-indent-line newline 2 delete-char -1 self-insert-command prefix-numeric-value] 3 (#$ . 7716) "P"])
#@50 Insert character and correct line's indentation.
(defalias 'electric-c++-semi #[(arg) "\203 \302	!\207\303\304	!!\207" [c-auto-newline arg electric-c++-terminator self-insert-command prefix-numeric-value] 3 (#$ . 8173) "P"])
#@50 Insert character and correct line's indentation.
(defalias 'electric-c++-terminator #[(arg) "\306`\n\204\211 l\203\211 \212\307 \210\310\306w\210g\311U\206Y \312=\203A \313\314!\2062 \212\315v\210\310\306w\210`Y)?\206Y \212\315\210\313\316!)\206Y \317 \210\320`\"\321\f8\206X \322\f8\206X \323\f8))\204\211 c\210\324 \210\203{ \325 \204{ \326 \211`S\306\223\210\327 \210\330 \210\212	\203\204 	Tb\210\331\332!\210)	\203\232 \212	b\210\333\334\n!!)\202\237 \333\334\n!!*\207" [end insertpos arg last-command-char pps c-auto-newline nil beginning-of-line " 	" 35 58 looking-at "case[ 	]" 1 ":" beginning-of-defun parse-partial-sexp 3 4 5 c++-indent-line c-inside-parens-p make-marker newline c-indent-line delete-char -1 self-insert-command prefix-numeric-value] 4 (#$ . 8406) "P"])
#@545 Indent current line as C++ code, or in some cases insert a tab character.
If `c-tab-always-indent' is non-nil (the default), always indent current
line.  Otherwise, indent the current line only if point is at the left
margin or in the line's indentation; otherwise insert a tab.

A numeric argument, regardless of its value, means indent rigidly all means
indent rigidly all the lines of the expression starting after point so that
this line becomes properly indented.  The relative indentation among the
lines of the expression are preserved.
(defalias 'c++-indent-command #[(&optional whole-exp) "\2032 \305 \306\211\212\f\203 \307 \210`\310\311!\210`\nb\210\311y\210`)	\nV\2050 \312\n	\313$+\207\f\204C \212\314\306x\210n)\204C \315 \207\305 \207" [whole-exp end beg shift-amt c-tab-always-indent c++-indent-line nil beginning-of-line forward-sexp 1 indent-code-rigidly "#" " 	" insert-tab] 5 (#$ . 9204) "P"])
#@80 Indent current line as C++ code.
Return the amount the indentation changed by.
(defalias 'c++-indent-line #[nil "\306\307!\307\211\211d`Z\310 \210`\f\307=\203 \311 \202\256 \f\312=\203+ \313 \202\256 \314\315!\2036 \316\202\256 \317\307w\210\f<\203B \f@\314\320!\203O \f\\\202\256 \314\321!\204g \314\322!\203p \212\323\324!\210\314\325!)\203p \324\f\\]\202\256 \314\326!\203\207 \314\327!\204\207 \212\330 \210\311 )\202\256 \314\331!\203\225 \f\\\202\256 g\332U\203\243 \fZ\202\256 g\333U\203\256 \f\\\317\307w\210\fiZ\334\n!\203\314 dZ`V\203\340 dZb\210\202\340 `|\210\fj\210dZ`V\203\340 dZb\210\n-\207" [pos case-fold-search shift-amt beg indent c-label-offset calculate-c++-indent nil beginning-of-line current-indentation t calculate-c-indent-within-comment looking-at "[ 	]*#" 0 " 	" "\\(default\\|public\\|private\\|protected\\):" "case\\b" "[A-Za-z]" forward-sexp 1 ":[^:]" "else\\b" "else\\s_" c-backward-to-start-of-if "friend[ 	]" 125 123 zerop c++-friend-offset c-indent-level c-brace-offset] 6 (#$ . 10133)])
#@184 Return appropriate indentation for current line as C++ code.
In usual case returns an integer: the column to indent to.
Returns nil if line starts inside a string, t if in a comment.
(defalias 'calculate-c++-indent #[(&optional parse-start) "\212\306 \210`\307\211\211\f\203 \fb\210\202 \310 \210`W\203. `\311`\312#\211A@\202 \313	8\204: \314	8\203@ \314	8\202\334\204\300 b\210\315\307w\210g\316U\203U \312\202\334\317\f\206[ e!\210h\320U\203y b\210\315\307w\210g\321U\203t \202\334(\202\334h\322U\203\202 \323u\210h\324U\203\214 \312\202\334h\320U\203\226 \325\323!\210\306 \210\315\307w\210g\321U\203\273 )\203\260 \326 )\\\202\334\327u\210\315\307w\210i\202\334\326 \202\334f\316U\204\375 *\203\365 \330	8\203\336 \212Tb\210\331\332!)\204\365 b\210\306 \210\315\307w\210`*\\T^b\210i\202\334Tb\210i\202\334b\210\317!\210h\333>\204:\212b\210\315\307w\210g\324U)\204:\334!\210+i\\\212b\210\315\307w\210g)\316=\2035,\2026\312\\\202\334b\210\212\327u\210\312-\335\307w\210\331\336!\203\204g\337U\203Z\327y\210\202D\331\340!\203i\341\342\307\343#\210\202D\331\344!\203u\327y\210\202D\212\307\210`-)\341\345!\210\202D`W\205\247-`V\203\231\326 .Z\202\232ig\316U\203\245/\202\246\312Z*\206\334n\203\276\3460!\203\276/+\\\202\3000\315\307x\210n\203\314\312\202\3161\\h\320=\203\331\347\323!\210\326 \\-\207" [containing-sexp state case-fold-search indent-point parse-start c++-member-init-indent beginning-of-line nil beginning-of-defun parse-partial-sexp 0 3 4 " 	" 123 c++-backward-to-noncomment 41 58 59 -1 125 forward-list current-indentation 1 2 looking-at "\\( \\|	\\)*[^/\n]" (0 44 59 125 123) c-backward-to-start-of-continued-exp " 	\n" "#\\|/\\*\\|//\\|case[ 	]\\|[a-zA-Z0-9_$]*:[^:]\\|friend[ 	]" 35 "/\\*" search-forward "*/" move "//\\|friend[ 	]" ":" zerop forward-sexp c-argdecl-indent c++-continued-member-init-offset c++-empty-arglist-indent c-continued-statement-offset c-continued-brace-offset colon-line-end c-label-offset c-brace-offset c-indent-level c-brace-imaginary-offset] 5 (#$ . 11194)])
(defalias 'c++-backward-to-noncomment #[(lim) "\303\211?\205` \304\nx\210``\n\305\\Y\203+ \212\306u\210\307\310!)\203+ \311\312\n\313#\210\202 \311\314\315 \n]\313#\203= \316`	\"\203 \317 \210\320\303w\210\307\321!\203X `	W\203X `\nX\211\202 \322	b\210\202 *\207" [stop opoint lim nil " 	\n\f" 2 -2 looking-at "\\*/" search-backward "/*" move "//" c++-point-bol c++-within-string-p beginning-of-line " 	" "#" t] 5])
#@55 Indent each line of the C++ grouping following point.
(defalias 'indent-c++-exp #[nil "\306C`C\306\211\211\211\211\211\211\211\211\211\211`\307&'()*+,-.\212\310\311!\210)\212\306*m?\205'*?\205'\306))\204\235 m\203S \312\211*\204\235 ('\313`\306\210`\306\211(%\211(@(AA@\203 (AA@\307Y\203 (AA@\314'8\203\211 \315 \210\316(8\203\226 \311y\210\202C \312\211)\203H \307X\203\246 \312**\2043 \f\317(8V\203\305 .A.-A-\fS\211\202\254 \fU\204\315 \306\fW\203\346 \306.B.\306-B-\fT\211\202\316 -@\204\376 -(A@\206\374 \212\310\320!\210`)\240\210\311y\210\321\306w\210l\2043 .@\203.@\307Y\204F\306/-@f\322U\2031\212-@b\210\323 /)\202?\324.@\205<.@[!/./\240\210)-@f\322U\204W.@&\202\231\212\325\326!g\322U\327	!\210h\330>\204\204\331-@!\2100i\\\n\203}1\202~\307\\&\202\230\203\223\332	!\210\333 &\202\230.@&)\325\334!\203\251&2Z&\202\312\325\335!\204\301\325\336!\203\312\212\310\311!\210\325\337!)\203\312\311&3\\]&\325\340!\203\327&4\\&g\341U\203\344&2Z&g\322U\203\361&5\\&i&U\204	g\342U\204	`\343 \210`|\210&j\210\3256!\2043 \3446\212\306\210`)\312#\2033 \345 \210\343 \210\2023 .\207" [next-depth opoint at-brace at-else last-depth last-sexp nil 0 forward-sexp 1 t parse-partial-sexp 4 c++-indent-line 3 6 -1 " 	" 123 calculate-c-indent-after-brace calculate-c++-indent looking-at "else\\W" c++-backward-to-noncomment (nil 44 59 125 58 123) c-backward-to-start-of-continued-exp c-backward-to-start-of-if current-indentation "\\(public\\|private\\|protected\\):" "case[ 	]" "[A-Za-z]" ":[^:]" "friend[ 	]" 125 35 beginning-of-line re-search-forward indent-for-comment this-indent ostate state inner-loop-done outer-loop-done restart case-fold-search contain-stack indent-stack val c-continued-statement-offset c-continued-brace-offset c-indent-level c-label-offset c++-friend-offset c-brace-offset comment-start-skip] 16 (#$ . 13717) nil])
#@98 Fill a comment contained in consecutive lines containing point.
The fill lines remain a comment.
(defalias 'fill-c++-comment #[nil "\212\303\304!\210\212\305\n\212\306\210`)\307#\210\310\225b\210\311 \210)\312!\203( \313\304!\210\202 \314\304!\210\315\316!\210\317\306!\210\320\321!\210	\211*\207" [fill-prefix save comment-start-skip beginning-of-line 1 re-search-forward nil t 0 set-fill-prefix looking-at previous-line next-line insert-string "\n" fill-paragraph delete-char -1] 4 (#$ . 15683) nil])
#@70 Returns the value of the point at the beginning of the current line.
(defalias 'c++-point-bol #[nil "\212\300 \210`)\207" [beginning-of-line] 1 (#$ . 16198)])
#@68 Returns true if number of double quotes between two points is odd.
(defalias 'c++-within-string-p #[(point1 point2) "	{\303\304\305\n\"\306\246!)?\207" [point1 point2 s zerop c++-count-char-in-string 34 2] 4 (#$ . 16363)])
(defalias 'c++-count-char-in-string #[(c s) "\304\211\nGW\203\" 	\nHU\203 \305\202 \304\\T\211\202 	*\207" [pos count s c 0 1] 4])
(provide 'cplus-md)
