;ELC   
;;; compiled by rms@mole.gnu.ai.mit.edu on Fri Jul  1 11:39:50 1994
;;; from file /home/fsf/rms/e19/lisp/cc-mode.el
;;; emacs version 19.25.13.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19")))
    (error "`/home/fsf/rms/e19/lisp/cc-mode.el' was compiled for Emacs 19"))

(defvar c-inhibit-startup-warnings-p nil "\
*If non-nil, inhibits start up compatibility warnings.")
(defvar c-strict-semantics-p nil "\
*If non-nil, all semantic symbols must be found in `c-offsets-alist'.
If the semantic symbol for a particular line does not match a symbol
in the offsets alist, an error is generated, otherwise no error is
reported and the semantic symbol is ignored.")
(defvar c-echo-semantic-information-p nil "\
*If non-nil, semantic info is echoed when the line is indented.")
(defvar c-basic-offset 4 "\
*Amount of basic offset used by + and - symbols in `c-offsets-alist'.")
(defconst c-offsets-alist-default (quote ((string . -1000) (c . c-lineup-C-comments) (defun-open . 0) (defun-close . 0) (defun-block-intro . +) (class-open . 0) (class-close . 0) (inline-open . +) (inline-close . 0) (c++-funcdecl-cont . -) (knr-argdecl-intro . +) (knr-argdecl . 0) (topmost-intro . 0) (topmost-intro-cont . 0) (member-init-intro . +) (member-init-cont . 0) (inher-intro . +) (inher-cont . c-lineup-multi-inher) (block-open . 0) (block-close . 0) (brace-list-open . 0) (brace-list-close . 0) (brace-list-intro . +) (brace-list-entry . 0) (statement . 0) (statement-cont . +) (statement-block-intro . +) (statement-case-intro . +) (substatement . +) (substatement-open . +) (case-label . 0) (access-label . -) (label . 2) (do-while-closure . 0) (else-clause . 0) (comment-intro . c-lineup-comment) (arglist-intro . +) (arglist-cont . 0) (arglist-cont-nonempty . c-lineup-arglist) (arglist-close . +) (stream-op . c-lineup-streamop) (inclass . +) (cpp-macro . -1000) (friend . 0))) "\
Default settings for offsets of syntactic elements.
Do not change this constant!  See the variable `c-offsets-alist' for
more information.")
(defvar c-offsets-alist (copy-alist c-offsets-alist-default) "\
*Association list of syntactic element symbols and indentation offsets.
As described below, each cons cell in this list has the form:

    (SYNTACTIC-SYMBOL . OFFSET)

When a line is indented, cc-mode first determines the syntactic
context of the line by generating a list of symbols called syntactic
elements.  This list can contain more than one syntactic element and
the global variable `c-semantics' contains the context list for the
line being indented.  Each element in this list is actually a cons
cell of the syntactic symbol and a buffer position.  This buffer
position is call the relative indent point for the line.  Some
syntactic symbols may not have a relative indent point associated with
them.

After the syntactic context list for a line is generated, cc-mode
calculates the absolute indentation for the line by looking at each
syntactic element in the list.  First, it compares the syntactic
element against the SYNTACTIC-SYMBOL's in `c-offsets-alist'.  When it
finds a match, it adds the OFFSET to the column of the relative indent
point.  The sum of this calculation for each element in the syntactic
list is the absolute offset for line being indented.

If the syntactic element does not match any in the `c-offsets-alist',
an error is generated if `c-strict-semantics-p' is non-nil, otherwise
the element is ignored.

Actually, OFFSET can be an integer, a function, or the symbol `+' or
`-', the latter designating positive or negative values of
`c-basic-offset'. If OFFSET is a function, it is called with a single
argument containing the cons of the syntactic element symbol and the
relative indent point.  The function should return an integer offset.

Here is the current list of valid semantic element symbols:

 string                 -- inside multi-line string
 c                      -- inside a multi-line C style block comment
 defun-open             -- brace that opens a function definition
 defun-close            -- brace that closes a function definition
 defun-block-intro      -- the first line in a top-level defun
 class-open             -- brace that opens a class definition
 class-close            -- brace that closes a class definition
 inline-open            -- brace that opens an in-class inline method
 inline-close           -- brace that closes an in-class inline method
 c++-funcdecl-cont      -- the nether region between a C++ function
                           declaration and the defun opening brace
 knr-argdecl-intro      -- first line of a K&R C argument declaration
 knr-argdecl            -- subsequent lines in a K&R C argument declaration
 topmost-intro          -- the first line in a topmost construct definition
 topmost-intro-cont     -- topmost definition continuation lines
 member-init-intro      -- first line in a member initialization list
 member-init-cont       -- subsequent member initialization list lines
 inher-intro            -- first line of a multiple inheritance list
 inher-cont             -- subsequent multiple inheritance lines
 block-open             -- statement block open brace
 block-close            -- statement block close brace
 brace-list-open        -- open brace of an enum or static array list
 brace-list-close       -- close brace of an enum or static array list
 brace-list-intro       -- first line in an enum or static array list
 brace-list-entry       -- subsequent lines in an enum or static array list
 statement              -- a C/C++ statement
 statement-cont         -- a continuation of a C/C++ statement
 statement-block-intro  -- the first line in a new statement block
 statement-case-intro   -- the first line in a case `block'
 substatement           -- the first line after an if/while/for/do/else
 substatement-open      -- the brace that opens a substatement block
 case-label             -- a case or default label
 access-label           -- C++ private/protected/public access label
 label                  -- any non-special C/C++ label
 do-while-closure       -- the `while' that ends a do/while construct
 else-clause            -- the `else' of an if/else construct
 comment-intro          -- a line containing only a comment introduction
 arglist-intro          -- the first line in an argument list
 arglist-cont           -- subsequent argument list lines when no
                           arguments follow on the same line as the
                           the arglist opening paren
 arglist-cont-nonempty  -- subsequent argument list lines when at
                           least one argument follows on the same
                           line as the arglist opening paren
 arglist-close          -- the solo close paren of an argument list
 stream-op              -- lines continuing a stream operator construct
 inclass                -- the construct is nested inside a class definition
 cpp-macro              -- the start of a cpp macro
 friend                 -- a C++ friend declaration
")
(defvar c-tab-always-indent t "\
*Controls the operation of the TAB key.
If t, hitting TAB always just indents the current line.  If nil,
hitting TAB indents the current line if point is at the left margin or
in the line's indentation, otherwise it insert a real tab character.
If other than nil or t, then tab is inserted only within literals
-- defined as comments and strings -- and inside preprocessor
directives, but line is always reindented.

Note that indentation of lines containing only comments is also
controlled by the `c-comment-only-line-offset' variable.")
(defvar c-comment-only-line-offset 0 "\
*Extra offset for line which contains only the start of a comment.
Can contain an integer or a cons cell of the form:

 (NON-ANCHORED-OFFSET . ANCHORED-OFFSET)

Where NON-ANCHORED-OFFSET is the amount of offset given to
non-column-zero anchored comment-only lines, and ANCHORED-OFFSET is
the amount of offset to give column-zero anchored comment-only lines.
Just an integer as value is equivalent to (<val> . 0)")
(defvar c-block-comments-indent-p nil "\
*Specifies how to re-indent C style block comments.

4 styles of C block comments are supported.  If this variable is nil,
then styles 1-3 are supported.  If this variable is non-nil, style 4
only is supported.  Note that this currently has *no* effect on how
comments are lined up or whether stars are inserted when C comments
are auto-filled.  In any case, you still have to insert the stars
manually.

 style 1:       style 2:       style 3:       style 4:
 /*             /*             /*             /*
    blah         * blah        ** blah        blah
    blah         * blah        ** blah        blah
    */           */            */             */")
(defvar c-cleanup-list (quote (scope-operator)) "\
*List of various C/C++ constructs to \"clean up\".
These clean ups only take place when the auto-newline feature is turned
on, as evidenced by the `/a' or `/ah' appearing next to the mode name.
Valid symbols are:

 brace-else-brace    -- cleans up `} else {' constructs by placing entire
                        construct on a single line.  This clean up only
                        takes place when there is nothing but white
                        space between the braces and the `else'.  Clean
			up occurs when the open-brace after the `else'
			is typed.
 empty-defun-braces  -- cleans up empty defun braces by placing the
                        braces on the same line.  Clean up occurs when
			the defun closing brace is typed.
 defun-close-semi    -- cleans up the terminating semi-colon on defuns
			by placing the semi-colon on the same line as
			the closing brace.  Clean up occurs when the
			semi-colon is typed.
 list-close-comma    -- cleans up commas following braces in array
                        and aggregate initializers.  Clean up occurs
			when the comma is typed.
 scope-operator      -- cleans up double colons which may designate
			a C++ scope operator split across multiple
			lines. Note that certain C++ constructs can
			generate ambiguous situations.  This clean up
			only takes place when there is nothing but
			whitespace between colons. Clean up occurs
			when the second colon is typed.")
(defvar c-hanging-braces-alist (quote ((brace-list-open) (substatement-open after))) "\
*Controls the insertion of newlines before and after braces.
This variable contains an association list with elements of the
following form: (SYNTACTIC-SYMBOL . (NL-LIST)).

SYNTACTIC-SYMBOL can be any of: defun-open, defun-cloase, class-open,
class-close, inline-open, inline-close, block-open,
block-close, substatement-open, brace-list-open, or
brace-list-close. See `c-offsets-alist' for details.

NL-LIST can contain any combination of the symbols `before' or
`after'. It also be nil.  When a brace is inserted, the syntactic
context it defines is looked up in this list, and if found, the
NL-LIST is used to determine where newlines are inserted.  If not
found, the default is to insert a newline both before and after
braces.")
(defvar c-hanging-colons-alist nil "\
*Controls the insertion of newlines before and after certain colons.
This variable contains an association list with elements of the
following form: (SYNTACTIC-SYMBOL . (NL-LIST)).

SYNTACTIC-SYMBOL can be any of: member-init-intro, inher-intro,
case-label, label, and access-label. See `c-offsets-alist' for
details.

NL-LIST can contain any combination of the symbols `before' or
`after'. It also be nil.  When a colon is inserted, the language
element that it defines is looked up in this list, and if found, the
NL-LIST is used to determine where newlines are inserted.  If the
language element for the colon is not found in this list, the default
behavior is to not insert any newlines.")
(defvar c-backslash-column 48 "\
*Column to insert backslashes when macroizing a region.")
(defvar c-special-indent-hook nil "\
*Hook for user defined special indentation adjustments.
This hook gets called after a line is indented by the mode.")
(defvar c-delete-function (quote backward-delete-char-untabify) "\
*Function called by `c-electric-delete' when deleting a single char.")
(defvar c-electric-pound-behavior nil "\
*List of behaviors for electric pound insertion.
Only currently supported behavior is `alignleft'.")
(defvar c-style-alist (quote (("GNU" (c-basic-offset . 2) (c-comment-only-line-offset . 0) (c-offsets-alist (statement-block-intro . +) (knr-argdecl-intro . 5) (substatement-open . +) (label . -) (statement-cont . +))) ("K&R" (c-basic-offset . 5) (c-comment-only-line-offset . 0) (c-offsets-alist (statement-block-intro . +) (knr-argdecl-intro . 0) (substatement-open . 0) (label . -) (statement-cont . +))) ("BSD" (c-basic-offset . 4) (c-comment-only-line-offset . 0) (c-offsets-alist (statement-block-intro . +) (knr-argdecl-intro . +) (substatement-open . 0) (label . -) (statement-cont . +))) ("Stroustrup" (c-basic-offset . 4) (c-comment-only-line-offset . 0) (c-offsets-alist (statement-block-intro . +) (substatement-open . 0) (label . -) (statement-cont . +))) ("Whitesmith" (c-basic-offset . 4) (c-comment-only-line-offset . 0) (c-offsets-alist (statement-block-intro . +) (knr-argdecl-intro . +) (substatement-open . 0) (label . -) (statement-cont . +))) ("Ellemtel" (c-basic-offset . 3) (c-comment-only-line-offset . 0) (c-hanging-braces-alist (substatement-open before)) (c-offsets-alist (topmost-intro . 0) (topmost-intro-cont . 0) (substatement . 3) (substatement-open . 0) (case-label . +) (access-label . -3) (inclass . 6) (inline-open . 0))))) "\
Styles of Indentation.
Elements of this alist are of the form:

  (STYLE-STRING (VARIABLE . VALUE) [(VARIABLE . VALUE) ...])

where STYLE-STRING is a short descriptive string used to select a
style, VARIABLE is any cc-mode variable, and VALUE is the intended
value for that variable when using the selected style.

There is one special case when VARIABLE is `c-offsets-alist'.  In this
case, the VALUE is a list containing elements of the form:

  (SYNTACTIC-SYMBOL . VALUE)

as described in `c-offsets-alist'.  These are passed directly to
`c-set-offset' so there is no need to set every syntactic symbol in
your style, only those that are different from the default.")
(byte-code "\n\" \f\"B\nB*" [assoc "Default" c-style-alist (c-inhibit-startup-warnings-p c-strict-semantics-p c-echo-semantic-information-p c-basic-offset c-offsets-alist c-tab-always-indent c-comment-only-line-offset c-block-comments-indent-p c-cleanup-list c-hanging-braces-alist c-hanging-colons-alist c-backslash-column c-electric-pound-behavior) varlist mapcar #[(var) "JB" [var] 2] default] 5)
(defvar c-mode-hook nil "\
*Hook called by `c-mode'.")
(defvar c++-mode-hook nil "\
*Hook called by `c++-mode'.")
(defvar c-mode-common-hook nil "\
*Hook called by both `c-mode' and `c++-mode' during common init path.")
(defvar c-mode-menu (quote (["Comment Out Region" comment-region (mark)] ["Macro Expand Region" c-macro-expand (mark)] ["Backslashify" c-backslash-region (mark)] ["Indent Expression" c-indent-exp (memq (following-char) (quote (40 91 123)))] ["Indent Line" c-indent-command t] ["Fill Comment Paragraph" c-fill-paragraph t] ["Up Conditional" c-up-conditional t] ["Backward Conditional" c-backward-conditional t] ["Forward Conditional" c-forward-conditional t] ["Backward Statement" c-beginning-of-statement t] ["Forward Statement" c-end-of-statement t])) "\
Lucid Emacs menu for C/C++ modes.")
(defconst c-emacs-features (byte-code "! 	! \nÉ = \n\"= \n̔̕O!\n͔͕O!G K !UX  Ue  U \n\"{ ւ|  \"=  #H\"\"U  ) = = W = = W ' \n\"!=	\f=	'	\n\"!=$\f=$'$!!\fE," [boundp emacs-major-version emacs-minor-version nil comments flavor minor major string-match "\\([0-9]+\\).\\([0-9]+\\)" emacs-version string-to-int 1 2 error "Cannot figure out the major and minor version numbers." 18 v18 4 19 v19 "Lucid" Lucid FSF "Cannot recognize major version number: %s" copy-syntax-table table modify-syntax-entry 97 ". 12345678" logand lsh -16 255 8-bit 1-bit no-dual-comments 6 21 c-inhibit-startup-warnings-p "*cc-mode warnings*" print format "The version of Emacs that you are running, %s,\nhas known bugs in its syntax.c parsing routines which will affect the\nperformance of cc-mode. You should strongly consider upgrading to the\nlatest available version.  cc-mode may continue to work, after a\nfashion, but strange indentation errors could be encountered." "The version of Emacs 18 you are running, %s,\nhas known deficiencies in its ability to handle dual C++ comments,\ni.e. C++ line style comments and C block style comments.  This will\nnot be much of a problem for you if you are only editing C code, but\nif you are doing much C++ editing, you should strongly consider\nupgrading to one of the latest Emacs 19's.  In Emacs 18, you may also\nexperience performance degradations. Emacs 19 has some new built-in\nroutines which will speed things up for you.\n\nBecause of these inherent problems, cc-mode is no longer being\nactively maintained for Emacs 18, although patch contributions will be\nfolded into the main release. " "You are running a syntax patched Emacs 18 variant.  While this should\nwork for you, you may want to consider upgrading to Emacs 19.\nThe syntax patches are no longer supported\neither for syntax.c or cc-mode."] 6) "\
A list of features extant in the Emacs you are using.
There are many flavors of Emacs out there, each with different
features supporting those needed by cc-mode.  Here's the current
supported list, along with the values for this variable:

 Emacs 19:                  (v19 FSF 1-bit)
 Vanilla Emacs 18/Epoch 4:  (v18 no-dual-comments)
 Emacs 18/Epoch 4 (patch2): (v18 8-bit)
 Lucid Emacs 19:            (v19 Lucid 8-bit).")
(defvar c++-mode-abbrev-table nil "\
Abbrev table in use in c++-mode buffers.")
(define-abbrev-table (quote c++-mode-abbrev-table) nil)
(defvar c-mode-abbrev-table nil "\
Abbrev table in use in c-mode buffers.")
(define-abbrev-table (quote c-mode-abbrev-table) nil)
(defvar c-mode-map nil "\
Keymap used in c-mode buffers.")
(byte-code "[ #############################<>> #!B#@ A #B C #D E #F G #H I #J K #L M #N O #P Q #R S #T U #[V <>[W X ![Y Z #" [c-mode-map make-sparse-keymap define-key "{" c-electric-brace "}" ";" c-electric-semi&comma "#" c-electric-pound ":" c-electric-colon "" c-mark-function "" c-indent-exp "a" c-beginning-of-statement "e" c-end-of-statement "q" c-fill-paragraph "" c-forward-conditional "" c-backward-conditional "" c-up-conditional "	" c-indent-command "" c-electric-delete "," "/" c-electric-slash "*" c-electric-star "" c-indent-defun "" c-backslash-region "" c-toggle-auto-state "" c-submit-bug-report "" comment-region "" c-toggle-hungry-state "" c-macro-expand "" c-set-offset "" c-show-semantic-information "" c-toggle-auto-hungry-state "" c-version FSF c-emacs-features [menu-bar] [menu-bar c] "C/C++" [menu-bar c comment-region] ("Comment Out Region" . comment-region) [menu-bar c c-macro-expand] ("Macro Expand Region" . c-macro-expand) [menu-bar c c-backslash-region] ("Backslashify" . c-backslash-region) [menu-bar c indent-exp] ("Indent Expression" . c-indent-exp) [menu-bar c indent-line] ("Indent Line" . c-indent-command) [menu-bar c fill] ("Fill Comment Paragraph" . c-fill-paragraph) [menu-bar c up] ("Up Conditional" . c-up-conditional) [menu-bar c backward] ("Backward Conditional" . c-backward-conditional) [menu-bar c forward] ("Forward Conditional" . c-forward-conditional) [menu-bar c backward-stmt] ("Backward Statement" . c-beginning-of-statement) [menu-bar c forward-stmt] ("Forward Statement" . c-end-of-statement) Lucid boundp mode-popup-menu button3 c-popup-menu] 6)
(defvar c++-mode-map nil "\
Keymap used in c++-mode buffers.")
(byte-code "- \n>\" \n> B'  \"'  #\"" [c++-mode-map v19 c-emacs-features FSF keymap c-mode-map make-sparse-keymap set-keymap-parent define-key ":" c-scope-operator defalias c-populate-syntax-table #[(table) "##########" [modify-syntax-entry 92 "\\" table 43 "." 45 61 37 60 62 38 124 39 "\""] 4]] 4)
(defvar c-mode-syntax-table nil "\
Syntax table used in c-mode buffers.")
(byte-code "  !##" [c-mode-syntax-table make-syntax-table c-populate-syntax-table modify-syntax-entry 47 ". 14" 42 ". 23"] 4)
(defvar c++-mode-syntax-table nil "\
Syntax table used in c++-mode buffers.")
(byte-code ">  !\f>& ###> \f>> ###" [c++-mode-syntax-table make-syntax-table c-populate-syntax-table 8-bit c-emacs-features modify-syntax-entry 47 ". 1456" 42 ". 23" 10 "> b" 1-bit ". 124b"] 4)
(defvar c-hungry-delete-key nil "\
Internal state of hungry delete key feature.")
(defvar c-auto-newline nil "\
Internal state of auto newline feature.")
(defvar c-auto-hungry-string nil "\
Internal auto-newline/hungry-delete designation string for mode line.")
(defvar c-semantics nil "\
Variable containing semantics list during indentation.")
(defvar c-comment-start-regexp nil "\
Buffer local variable describing how comment are introduced.")
(defvar c-conditional-key nil "\
Buffer-local language-specific conditional keyword regexp.")
(byte-code "!!!!!" [make-variable-buffer-local c-auto-newline c-hungry-delete-key c-auto-hungry-string c-comment-start-regexp c-conditional-key] 2)
(autoload (quote c-macro-expand) "cmacexp" "\
Display the result of expanding all C macros occurring in the region.
The expansion is entirely correct because it uses the C preprocessor." t)
(defconst c-symbol-key "\\(\\w\\|\\s_\\)+" "\
Regexp describing a C/C++ symbol.
We cannot use just `word' syntax class since `_' cannot be in word
class.  Putting underscore in word class breaks forward word movement
behavior that users are familiar with.")
(defconst c-class-key (concat "\\(\\(extern\\|typedef\\)\\s +\\)?" "\\(template\\s *<[^>]*>\\s *\\)?" "\\([^<a-zA-Z0-9_]\\|\\`\\)[ 	]*" "\\(class\\|struct\\|union\\)\\([ 	\n]+\\|\\'\\)") "\
Regexp describing a class declaration, including templates.")
(defconst c-inher-key (concat "\\(\\<static\\>\\s +\\)?" c-class-key "[ 	]+" c-symbol-key "\\([ 	]*:[ 	]*\\)?\\s *[^;]") "\
Regexp describing a class inheritance declaration.")
(defconst c-protection-key "\\<\\(public\\|protected\\|private\\)\\>" "\
Regexp describing protection keywords.")
(defconst c-baseclass-key (concat ":?[ 	]*\\(virtual[ 	]+\\)?\\(" c-protection-key "[ 	]+\\)" c-symbol-key) "\
Regexp describing base classes in a derived class definition.")
(defconst c-switch-label-key "\\(\\(case[ 	]+\\S .*\\)\\|default[ 	]*\\):" "\
Regexp describing a switch's case or default label")
(defconst c-access-key (concat c-protection-key ":") "\
Regexp describing access specification keywords.")
(defconst c-label-key (concat c-symbol-key ":\\([^:]\\|$\\)") "\
Regexp describing any label.")
(defconst c-C-conditional-key "\\b\\(for\\|if\\|do\\|else\\|while\\|switch\\)\\b[^_]" "\
Regexp describing a conditional control.")
(defconst c-C++-conditional-key "\\b\\(for\\|if\\|do\\|else\\|while\\|switch\\|try\\|catch\\)\\b[^_]" "\
Regexp describing a conditional control for C++.")
(defalias 'c++-mode #[nil " \n!\n! !" [kill-all-local-variables set-syntax-table c++-mode-syntax-table c++-mode major-mode "C++" mode-name c++-mode-abbrev-table local-abbrev-table use-local-map c++-mode-map c-common-init "// " comment-start "" comment-end c-C++-conditional-key c-conditional-key "//\\|/\\*" c-comment-start-regexp run-hooks c++-mode-hook] 2 "\
Major mode for editing C++ code.
cc-mode Revision: 3.349
To submit a problem report, enter `\\[c-submit-bug-report]' from a
c++-mode buffer.  This automatically sets up a mail buffer with
version information already added.  You just need to add a description
of the problem, including a reproducable test case and send the
message.

Note that the details of configuring c++-mode have been moved to
the accompanying texinfo manual.

The hook variable `c++-mode-hook' is run with no args, if that
variable is bound and has a non-nil value.  Also the common hook
c-mode-common-hook is run first,  both by this defun, and `c-mode'.

Key bindings:
\\{c++-mode-map}" nil])
(defalias 'c-mode #[nil " \n!\n! !" [kill-all-local-variables set-syntax-table c-mode-syntax-table c-mode major-mode "C" mode-name c-mode-abbrev-table local-abbrev-table use-local-map c-mode-map c-common-init "/* " comment-start " */" comment-end c-C-conditional-key c-conditional-key "/\\*" c-comment-start-regexp run-hooks c-mode-hook] 2 "\
Major mode for editing K&R and ANSI C code.
cc-mode Revision: 3.349
To submit a problem report, enter `\\[c-submit-bug-report]' from a
c-mode buffer.  This automatically sets up a mail buffer with version
information already added.  You just need to add a description of the
problem, including a reproducable test case and send the message.

Note that the details of configuring c-mode will soon be moved to the
accompanying texinfo manual.  Until then, please read the README file
that came with the cc-mode distribution.

The hook variable `c-mode-hook' is run with no args, if that value is
bound and has a non-nil value.  Also the common hook
c-mode-common-hook is run first, both by this defun and `c++-mode'.

Key bindings:
\\{c-mode-map}" nil])
(byte-code "\"\"\"\"\"\"\"\"\"" [defalias c-common-init #[nil "!!!!!!!!!!!P\n!U !\\ !>  \" !! #> ! P B!$ $B$!" [make-local-variable paragraph-start paragraph-separate paragraph-ignore-fill-prefix require-final-newline parse-sexp-ignore-comments indent-line-function indent-region-function comment-start comment-end comment-column comment-start-skip "^$\\|" page-delimiter t c-indent-line c-indent-region 32 "/\\*+ *\\|// *" boundp comment-indent-function c-comment-indent comment-indent-hook Lucid c-emacs-features current-menubar assoc mode-name set-buffer-menubar copy-sequence add-menu nil c-mode-menu mode-popup-menu " Mode Commands" c-auto-hungry-string minor-mode-alist (c-auto-hungry-string c-auto-hungry-string) run-hooks c-mode-common-hook] 5] c-point (macro . #[(position) "	= 	AA 	\"	A@	=# Ȃm 	=- ʂm 	=7 ̂m 	=A ΂m 	=K Ђm 	=U ҂m 	=_ Ԃm 	=i ւm 	\"#BB" [quote position error "bad buffer position requested: %s" let ((here (point))) append bol ((beginning-of-line)) eol ((end-of-line)) bod ((beginning-of-defun) (and (boundp (quote defun-prompt-regexp)) defun-prompt-regexp (looking-at defun-prompt-regexp) (goto-char (match-end 0)))) boi ((back-to-indentation)) bonl ((forward-line 1)) bopl ((forward-line -1)) iopl ((forward-line -1) (back-to-indentation)) ionl ((forward-line 1) (back-to-indentation)) "unknown buffer position requested: %s" ((prog1 (point) (goto-char here))) nil] 6]) c-auto-newline (macro . #[nil "" [(and c-auto-newline (not (c-in-literal)) (not (newline)))] 1]) c-safe (macro . #[(&rest body) "BBBB" [condition-case nil progn body ((error nil))] 4]) c-insert-special-chars #[(arg) "\n!!" [self-insert-command prefix-numeric-value arg] 3] c-comment-indent #[nil "\nQ! ć`y\nQ!' !iT !3 !7 ͂ yoB yw\n!`)d biW`  i bxU{ n{ Ă iT]+" [looking-at "^\\(" c-comment-start-regexp "\\)" 0 nil placeholder opoint "[ 	]*}[ 	]*\\($\\|" search-forward "}" "^#[ 	]*endif[ 	]*" "^#[ 	]*else[ 	]*" 7 -1 " 	" comment-column] 4] c-keep-region-active #[nil "!	 " [boundp zmacs-region-stays t] 2] c-update-modeline #[nil " 	\f  Â 	 >    !" [c-auto-newline c-hungry-delete-key "/ah" "/a" "/h" c-auto-hungry-string v19 c-emacs-features force-mode-line-update set-buffer-modified-p buffer-modified-p] 2] c-calculate-state #[(arg prevstate) " !U ?V" [arg prefix-numeric-value 0 prevstate] 2]] 3)
(defalias 'c-toggle-auto-state #[(arg) "	\n\"  " [c-calculate-state arg c-auto-newline c-update-modeline c-keep-region-active] 3 "\
Toggle auto-newline feature.
Optional numeric ARG, if supplied turns on auto-newline when positive,
turns it off when negative, and just toggles it when zero.

When the auto-newline feature is enabled (as evidenced by the `/a' or
`/ah' on the modeline after the mode name) newlines are automatically
inserted after special characters such as brace, comma, semi-colon,
and colon." "P"])
(defalias 'c-toggle-hungry-state #[(arg) "	\n\"  " [c-calculate-state arg c-hungry-delete-key c-update-modeline c-keep-region-active] 3 "\
Toggle hungry-delete-key feature.
Optional numeric ARG, if supplied turns on hungry-delete when positive,
turns it off when negative, and just toggles it when zero.

When the hungry-delete-key feature is enabled (as evidenced by the
`/h' or `/ah' on the modeline after the mode name) the delete key
gobbles all preceding whitespace in one fell swoop." "P"])
(defalias 'c-toggle-auto-hungry-state #[(arg) "	\n\"	\"  " [c-calculate-state arg c-auto-newline c-hungry-delete-key c-update-modeline c-keep-region-active] 3 "\
Toggle auto-newline and hungry-delete-key features.
Optional numeric ARG, if supplied turns on auto-newline and
hungry-delete when positive, turns them off when negative, and just
toggles them when zero.

See `c-toggle-auto-state' and `c-toggle-hungry-state' for details." "P"])
(defalias 'c-electric-delete #[(arg) " 	   	!!`x`U% `|( !)" [c-hungry-delete-key arg c-in-literal c-delete-function prefix-numeric-value here " 	\n" nil 1] 3 "\
Deletes preceding character or whitespace.
If `c-hungry-delete-key' is non-nil, as evidenced by the \"/h\" or
\"/ah\" string on the mode line, then all preceding whitespace is
consumed.  If however an ARG is supplied, or `c-hungry-delete-key' is
nil, or point is inside a literal then the function in the variable
`c-delete-function' is called." "P"])
(defalias 'c-electric-pound #[(arg) "  	 > 	!!d`Zny \"?4 dZb*" [c-in-literal arg alignleft c-electric-pound-behavior self-insert-command prefix-numeric-value bolp pos 0 delete-horizontal-space insert-char last-command-char 1] 3 "\
Electric pound (`#') insertion.
Inserts a `#' character specially depending on the variable
`c-electric-pound-behavior'.  If a numeric ARG is supplied, or if
point is inside a literal, nothing special happens." "P"])
(defalias 'c-electric-brace #[(arg) "` !  ! ŕb`b)!!1 	3 \n	\nW W !^ !xn)n  !!            @& > d`Z`)y d)Zb`U  *\n`Z`S| !`d`Z̉-.)[0>[1U[DD[uxhU[ [`S|0>1U#Ŕ.ŕ-U .-|cd)Zb,>  1U!! !).	" [here beginning-of-defun boundp defun-prompt-regexp looking-at 0 bod c-in-literal literal blink-paren-function blink-paren-hook old-blink-paren nil semantics newlines delete-temp-newline c-echo-semantic-information-p arg "[ 	]*$" c-insert-special-chars " 	" newline t self-insert-command prefix-numeric-value c-guess-basic-semantics c-auto-newline defun-open defun-close class-open class-close inline-open inline-close brace-list-open brace-list-close block-open block-close substatement-open c-hanging-braces-alist (ignore before after) before pos -1 c-indent-line 2 mend mbeg empty-defun-braces c-cleanup-list last-command-char 125 " 	\n" 123 brace-else-brace re-search-backward "}[ 	\n]*else[ 	\n]*{" "} else {" after c-backward-syntactic-ws run-hooks] 5 "\
Insert a brace.

If the auto-newline feature is turned on, as evidenced by the \"/a\"
or \"/ah\" string on the mode line, newlines are inserted before and
after braces based on the value of `c-hanging-braces-alist'.

Also, the line is re-indented unless a numeric ARG is supplied, there
are non-whitespace characters present on the line after the brace, or
the brace is inserted inside a literal." "P"])
(defalias 'c-electric-slash #[(arg) "= \n? hU \fU  ?\n!!,  *" [major-mode c++-mode arg 47 last-command-char c-in-literal nil c-echo-semantic-information-p indentp self-insert-command prefix-numeric-value c-indent-line] 3 "\
Insert a slash character.
If slash is second of a double-slash C++ style comment introducing
construct, and we are on a comment-only-line, indent line as comment.
If numeric ARG is supplied or point is inside a literal, indentation
is inhibited." "P"])
(defalias 'c-electric-star #[(arg) "?  > xn) hU!!+  *" [arg c-in-literal (c) "* 	" nil 47 c-echo-semantic-information-p indentp self-insert-command prefix-numeric-value c-indent-line] 3 "\
Insert a star character.
If the star is the second character of a C style comment introducing
construct, and we are on a comment-only-line, indent line as comment.
If numeric ARG is supplied or point is inside a literal, indentation
is inhibited." "P"])
(defalias 'c-electric-semi&comma #[(arg) "` !  ! ŕb`b)!`\n; ; !B ! !!?? d`ZUc >q U > uxhU   `|dZb) U ݏ   ," [here beginning-of-defun boundp defun-prompt-regexp looking-at 0 bod c-in-literal literal nil c-echo-semantic-information-p arg "[ 	]*$" c-insert-special-chars self-insert-command prefix-numeric-value c-auto-newline pos last-command-char 44 list-close-comma c-cleanup-list 59 defun-close-semi -1 " 	\n" 125 c-indent-line (byte-code "!gU)?" [up-list -1 40] 2) ((error t)) newline] 3 "\
Insert a comma or semicolon.
When the auto-newline feature is turned on, as evidenced by the \"/a\"
or \"/ah\" string on the mode line, a newline is inserted after
semicolons, but not commas.

When semicolon is inserted, the line is re-indented unless a numeric
arg is supplied, point is inside a literal, or there are
non-whitespace characters on the line following the semicolon." "P"])
(defalias 'c-electric-colon #[(arg) "` !  ! ŕb`b)!\n\f? ? !F !!!d`Z` > hU uxhU   `ZfU `S|dZb* \n \n \n \n @) c \n\n \n @*!\n!> d`Zu  dZb)>  -" [here beginning-of-defun boundp defun-prompt-regexp looking-at 0 bod c-in-literal literal nil semantics newlines c-echo-semantic-information-p arg "[ 	]*$" c-insert-special-chars self-insert-command prefix-numeric-value pos c-auto-newline scope-operator c-cleanup-list 58 -1 " 	\n" 2 c-guess-basic-semantics case-label label access-label langelem c-hanging-colons-alist "\n" member-init-intro inher-intro delete-char c-indent-line before newline after] 4 "\
Insert a colon.

If the auto-newline feature is turned on, as evidenced by the \"/a\"
or \"/ah\" string on the mode line, newlines are inserted before and
after colons based on the value of `c-hanging-colons-alist'.

Also, the line is re-indented unless a numeric ARG is supplied, there
are non-whitespace characters present on the line after the colon, or
the colon is inserted inside a literal.

This function cleans up double colon scope operators based on the
value of `c-cleanup-list'." "P"])
(defalias (quote c-read-offset) #[(langelem) "\n\"Ɖ	\nb 	\"͘, ΂\\ Ϙ7 Ђ\\ \"F !\\ ՏT !\\  \n	Ɖ -" [format "%s" langelem c-offsets-alist "Offset must be +, -, an integer, or function name: " "Offset: " nil input offset prompt errmsg oldoff read-string "+" + "-" - string-match "^-?[0-9]+$" string-to-int (byte-code "	!K" [intern input] 2) ((error)) intern ding] 6])
(defalias 'c-set-offset #[(symbol offset &optional add-p) "= =  ŏ \"	\n0 \nG A B	B	G \") " [offset + - nil (symbol-function offset) ((error)) error "Offset is not +, -, an integer, or a function name: %s" symbol c-offsets-alist entry add-p "%s is not a valid syntactic symbol." c-keep-region-active] 4 "\
Change the value of a syntactic element symbol in `c-offsets-alist'.
SYMBOL is the syntactic element symbol to change and OFFSET is the new
offset for that syntactic element.  Optional ADD says to add SYMBOL to
`c-offsets-alist' if it doesn't already appear there." (byte-code " Ă\f Q	\"?$!!E*" [intern completing-read "Syntactic symbol to change" current-prefix-arg " or add" "" ": " mapcar #[(langelem) "\n@\"B" [format "%s" langelem nil] 3] c-offsets-alist nil langelem c-read-offset offset] 6)])
(defalias 'c-set-style #[(style &optional local) "	\n\"A 	\"\") " [assoc style c-style-alist vars error "Invalid C indentation style `%s'" mapcar #[(varentry) "@A \n!\n= \n	L# !	\"*" [varentry val var local make-local-variable c-offsets-alist copy-alist c-offsets-alist-default mapcar #[(langentry) "@A\n	\"*" [langentry offset langelem c-set-offset] 3]] 3] c-keep-region-active] 4 "\
Set cc-mode variables to use one of several different indentation styles.
STYLE is a string representing the desired style and optional LOCAL is
a flag which, if non-nil, means to make the style variables being
changed buffer local, instead of the default, which is to set the
global variables.  Interactively, the flag comes from the prefix
argument.  The styles are chosen from the `c-style-alist' variable." (list (completing-read "Use which C indentation style? " c-style-alist nil t) current-prefix-arg)])
(defalias 'c-fill-paragraph #[(&optional arg) "yw! `)= y!) \nP\fP\f\nyoK !K y; !T y!{`y`b)y!} yp `)}!-s  = y`)#`)oy! !i\"  yiy`y``b)w`{!``|))\nP\fP\f\n		b!i\"`\"\"\"*	/	\\b#y`)}!ebVS``\\|dby#y!j .s!*" [nil comment-start-place 0 " 	\n" looking-at comment-start-skip first-line major-mode c++-mode ".*//" paragraph-start "\\|^[ 	]*/\\*[ 	]*$\\|^[ 	]*\\*/[ 	]*$\\|^[ 	/*]*$" paragraph-separate fill-prefix "[ 	]*//" -1 1 re-search-forward "[ 	]*//[ 	]*" here fill-paragraph arg c-in-literal c t "[ 	]*/\\*.*\\*/" make-string 32 line-width " 	*" move-to-column chars-to-delete search-backward "/*" column insert-char 2 search-forward "*/" move "[ 	]*\\*/" delete-indentation] 5 "\
Like \\[fill-paragraph] but handles C and C++ style comments.
If any of the current line is a comment or within a comment,
fill the comment or the paragraph of it that point is in,
preserving the comment indentation or line-starting decorations." "P"])
(defalias 'c-forward-into-nomenclature #[(&optional arg) "\nV d\n$* \nW* e#* u\nT ) " [nil case-fold-search arg 0 re-search-forward "\\W*\\([A-Z]*[a-z0-9]*\\)" t re-search-backward "\\(\\(\\W\\|[a-z0-9]\\)[A-Z]+\\|\\W\\w+\\)" 1 c-keep-region-active] 6 "\
Move forward to end of a nomenclature section or word.
With arg, to it arg times." "p"])
(defalias 'c-backward-into-nomenclature #[(&optional arg) "	[! " [c-forward-into-nomenclature arg c-keep-region-active] 2 "\
Move backward to beginning of a nomenclature section or word.
With optional ARG, move that many times.  If ARG is negative, move
forward." "p"])
(defalias 'c-scope-operator #[nil "c" ["::"] 1 "\
Insert a double colon scope operator at point.
No indentation or other \"electric\" behavior is performed." nil])
(defalias 'c-beginning-of-statement #[(&optional count lim) "` \n* ` !% % !% ȕb`b)\n\nb`ɉ$\n)tq \n8i \n8i P!i x`Zb!)q [! V  Sr W  T `\n]b, " [count 1 lim here beginning-of-defun boundp defun-prompt-regexp looking-at 0 nil state parse-partial-sexp 3 4 "[ 	]*" comment-start-skip " 	" 2 "\\*/" forward-sentence c-beginning-of-statement-1 c-end-of-statement-1 c-keep-region-active] 6 "\
Go to the beginning of the innermost C statement.
With prefix arg, go back N - 1 statements.  If already at the
beginning of a statement then go to the beginning of the preceding
one.  If within a string or comment, or next to a comment (only
whitespace between), move by sentences instead of statements.

When called from a program, this function takes 2 optional args: the
prefix arg, and a buffer position limit which is the farthest back to
search." "p"])
(defalias 'c-end-of-statement #[(&optional count lim) "	 [\" " [c-beginning-of-statement count 1 lim c-keep-region-active] 3 "\
Go to the end of the innermost C statement.

With prefix arg, go forward N - 1 statements.  Move forward to end of
the next statement if already at end.  If within a string or comment,
move by sentences instead of statements.

When called from a program, this function takes 2 optional args: the
prefix arg, and a buffer position limit which is the farthest back to
search." "p"])
(byte-code "\"\"" [defalias c-beginning-of-statement-1 #[nil "`\f o 	 ǏA ( !+ \nb xhU; `)\nb\f  =T y  c ` ! ӏ!){ !`	  `\nW \nwg>    u )) ` \nb," [t nil last-begin literal-cache donep firstp (byte-code "!" [backward-sexp 1 t] 2) ((error)) backward-up-list 1 c-backward-syntactic-ws "-+!*&:.~" 40 c-in-literal pound 0 looking-at c-conditional-key (forward-sexp -1) ((error)) "\\<else\\>[ 	]+\\<if\\>" forward-sexp -1 crossedp "^;{}" (59 123 125)] 5] c-end-of-statement-1 #[nil "" [nil (byte-code "m `!`b#+  !u" [beg forward-sexp 1 end re-search-forward "[;{}]" t re-search-backward "[;}]"] 4) ((error (byte-code "`!`b#*" [beg backward-up-list -1 end search-forward ";" move] 4)))] 3]] 3)
(defalias 'c-up-conditional #[(count) "	[\" " [c-forward-conditional count t c-keep-region-active] 3 "\
Move back to the containing preprocessor conditional, leaving mark behind.
A prefix argument acts as a repeat count.  With a negative argument,
move forward to the end of the containing preprocessor conditional.
When going backwards, `#elif' is treated like `#else' followed by
`#if'.  When going forwards, `#elif' is ignored." "p"])
(defalias 'c-backward-conditional #[(count &optional up-flag) "	[\n\" " [c-forward-conditional count up-flag c-keep-region-active] 3 "\
Move back across a preprocessor conditional, leaving mark behind.
A prefix argument acts as a repeat count.  With a negative argument,
move forward across a preprocessor conditional." "p"])
(defalias 'c-forward-conditional #[(count &optional up-flag) "V\f Â \n Ƃ \nU , - \f\f # y!3 y!` \\} !w \n} U} `\f} ZW W \n ւ !\n yW `\f)3 )\f !\f\nb*\\ ) \nb, " [count 0 forward -1 1 increment re-search-forward re-search-backward search-function nil new up-flag found depth "#[ 	]*\\(if\\|elif\\|endif\\)" t looking-at "^[ 	]*#[ 	]*\\(if\\|elif\\|endif\\)" prev "[ 	]*#[ 	]*endif" "[ 	]*#[ 	]*elif" error "No following conditional at this level" "No previous conditional at this level" "No containing preprocessor conditional" push-mark c-keep-region-active] 5 "\
Move forward across a preprocessor conditional, leaving mark behind.
A prefix argument acts as a repeat count.  With a negative argument,
move backward across a preprocessor conditional." "p"])
(defalias 'c-indent-command #[(&optional whole-exp) "` !  ! ŕb`b)d  ɉ\n\f=: y`!`\nby`)\nV` \n\f$+ } xn)x     =   !   )" [here beginning-of-defun boundp defun-prompt-regexp looking-at 0 bod whole-exp c-indent-line nil end beg shift-amt c-tab-always-indent t forward-sexp 1 indent-code-rigidly "#" " 	" insert-tab c-in-literal] 5 "\
Indent current line as C++ code, or in some cases insert a tab character.

If `c-tab-always-indent' is t, always just indent the current line.
If nil, indent the current line only if point is at the left margin or
in the line's indentation; otherwise insert a tab.  If other than nil
or t, then tab is inserted only within literals (comments and strings)
and inside preprocessor directives, but line is always reindented.

A numeric argument, regardless of its value, 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." "P"])
(defalias 'c-indent-exp #[(&optional shutup-p) "`Îwg> `: ```\nb)\"A@9 A@b9 g>9 `)	\n̏G  	V V !	c c !l !	by`	W !  ys -" [nil end here ((byte-code "	 \n !b" [end nil shutup-p message "indenting expression... done." here] 3)) " 	\n" (40 91 123) parse-partial-sexp state (40 91 123) start c-echo-semantic-information-p (byte-code "!" [forward-sexp 1 t] 2) ((error)) point-marker shutup-p error "Cannot find start of balanced expression to indent." "Cannot find end of balanced expression to indent." message "indenting expression... (this may take a while)" 0 looking-at "[ 	]*$" c-indent-line 1] 6 "\
Indent each line in balanced expression following point.
Optional SHUTUP-P if non-nil, inhibits message printing and error checking." "P"])
(defalias 'c-indent-defun #[nil "  !  ! ȕbɎˏ+" [point-marker nil c-echo-semantic-information-p here beginning-of-defun boundp defun-prompt-regexp looking-at 0 ((byte-code "b" [here nil] 3)) (c-indent-exp) ((buffer-read-only (error)) (error (error "Cannot find closed top-level defun containing point.")))] 3 "\
Re-indents the current top-level function def, struct or class declaration." nil])
(defalias (quote c-indent-region) #[(start end) "!\nbwyǎ	\n\f!n m `W ĉwy y!)S y `y`b)y`Ww ֏ e  b !`)yw! `y`b))ݏ ! ĉy+  -!" [message "indenting region... (this may take a while)" start " 	\n" nil 0 endmark ((byte-code "" [endmark nil] 3)) t c-echo-semantic-information-p c-tab-always-indent copy-marker end sexpbeg sexpend nextline c-indent-line looking-at "[ 	]*#" 1 here (byte-code "!`" [forward-sexp 1 sexpend] 2) ((error (byte-code "\nb" [nil sexpend nextline] 1))) c-forward-syntactic-ws point-marker backward-sexp " 	" c-comment-start-regexp (byte-code " 	V \nX b!bć" [sexpend nextline endmark sexpbeg c-indent-exp shutup] 2) ((error (byte-code "b " [sexpbeg c-indent-line] 1))) markerp "indenting region... done."] 3])
(defalias 'c-mark-function #[nil "`` !  ! ŕb`b) `)!`)	\n!	#b `\nYO b," [here beginning-of-defun boundp defun-prompt-regexp looking-at 0 end-of-defun 2 bod2 eod bod push-mark nil t] 5 "\
Put mark at end of a C/C++ defun, point at beginning." nil])
(byte-code "\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"" [defalias c-forward-syntactic-ws #[(&optional lim) " dd`}	`U?7 `\n!gU ` `	b)`U  ," [lim here hugenum forward-comment 35 back-to-indentation nil] 3] c-backward-syntactic-ws #[(&optional lim) "# ` ! \f \f! ƕb`	b)d[`WP `}	`U?P `!!=4 y4 ," [lim here beginning-of-defun boundp defun-prompt-regexp looking-at 0 hugenum forward-comment c-in-literal pound] 3] c-in-literal #[(&optional lim) "# ` ! \f \f! ƕb`	b)``\"87 ʂ^ 8M 8I ͂^ ΂^ 	by!] Ђ^ ," [lim here beginning-of-defun boundp defun-prompt-regexp looking-at 0 parse-partial-sexp state 3 string 4 7 c++ c "[ 	]*#" pound nil] 3] c-parse-state #[nil "	% W%  gU To ǉ	 )`)`)	\n\fύ= \f." [nil at-bob 0 cnt 2 beginning-of-defun 123 t pos here last-bod last-pos state sexp-end backup-bod (byte-code "\n \nW \nƏX \nXX ȏ	P 	XP \nSfUI \nS	B	@:F 	AG 	B	 \nS	B \n  ͏ b   gU `op `\"* " [nil state pos here last-pos (scan-lists pos 1 -1) ((error)) (byte-code "	S\"" [scan-sexps pos 1] 3) ((error)) sexp-end 123 at-bob (byte-code "	#" [scan-lists last-pos 1] 4) ((error)) donep last-bod beginning-of-defun t throw backup-bod] 4)] 3] c-beginning-of-inheritance-list #[(&optional lim) "\" ` ! \f \f! ƕb`	b) `!`VQ h>Q y`w!Q !- b``	b)w*" [lim here beginning-of-defun boundp defun-prompt-regexp looking-at 0 back-to-indentation placeholder c-backward-syntactic-ws (44 58) " 	" nil c-class-key "^:"] 3] c-beginning-of-macro #[(&optional lim) " " [back-to-indentation] 1] c-just-after-func-arglist-p #[(&optional containing) " 		 `bhU$ v$ !$  < \nbhU9 u !< \nbhU*" [c-backward-syntactic-ws containing checkpoint 116 -1 looking-at "\\<const\\>" 58 "\\s *:\\([^:]+\\|$\\)" 41] 3] c-backward-to-start-of-do #[(&optional lim) "\n& ` !! ! !! ȕb`b)	\n\nU?; ̏+ +" [1 nil lim here beginning-of-defun boundp defun-prompt-regexp looking-at 0 case-fold-search do-level (byte-code "!!>4 ! T4 !( S4 `W4 b" [backward-sexp 1 c-in-literal lim (c c++) looking-at "while\\b[^_]" do-level "do\\b[^_]" 0] 2) ((error (byte-code "b" [lim 0 do-level] 1)))] 4] c-backward-to-start-of-if #[(&optional lim) "\n& ` !! ! !! ȕb`b)!\n\f΍," [1 nil lim here beginning-of-defun boundp defun-prompt-regexp looking-at 0 "if\\b[^_]" at-if case-fold-search if-level orphan-if (byte-code "oM UM  ŏ! T  != `	ˏ!9 S	b)  `W  b  ·" [if-level 0 c-backward-syntactic-ws nil (backward-sexp 1) ((error (byte-code "\f \" !Ç" [at-if throw orphan-if nil error "Orphaned `else' clause encountered."] 3))) looking-at "else\\b[^_]" "if\\b[^_]" here (forward-sexp -1) ((error)) "\\<else\\>[ 	]+\\<if\\>" lim t] 3)] 5] c-skip-conditional #[nil "! Â ! ł !" [forward-sexp looking-at "\\<else\\>[ 	]+\\<if\\>" 3 "\\<\\(do\\|else\\)\\>" 1 2] 3] c-search-uplist-for-classkey #[(brace-state) "?? @: 8A@$ A@@\n?? \n:4 \n\"= eE :E Ab	\n\n  ~`\n}\n#) ϔ	ϕ!S 	bw` `b)\n\"\n\nw`\nU \nbS 	bxhUS \n\nwS \n-+" [brace-state nil search-end search-start carcache 2 error "consp search-end: %s" match-end class foundp c-forward-syntactic-ws re-search-forward c-class-key t 0 c-in-literal " 	\n" vector here back-to-indentation "^;=,)" 60 "^>"] 5] c-inside-bracelist-p #[(containing-sexp) "b o  `W, !, w`U)t b\nt  hUF  `/ hUT Ώ/ hUm `ZfUm u!/ / )	*" [nil bufpos donep containing-sexp c-beginning-of-statement c-forward-syntactic-ws looking-at "\\(typedef[ 	]+\\)?enum[ 	\n]+" "^;" c-backward-syntactic-ws 61 t 123 (forward-char -1) ((error)) 44 2 125 -1 backward-sexp 1] 4] c-add-semantics (macro . #[(symbol &optional relpos) "\fEBBE" [setq semantics cons symbol relpos (semantics)] 6]) c-enclosing-brace #[(state) "\n( 	( \n@\nA	:  e	V\"  	)" [nil enclosingp state] 3] c-narrow-out-enclosing-class #[(state lim) "\nU \n!U 	HTbw`y`b)	HX7 	HTb!`y`b)b``b)}	)" [nil inclass-p state c-search-uplist-for-classkey 1 " 	\n" lim here 0 c-forward-syntactic-ws] 3] c-guess-basic-semantics #[nil "y` 	\n\f	\"	bwxl l @A:_ A`UY @3 3 eX3 3 )s e\n	bwg	\n!h	bw\n!> `y`b)BB\n> yU ! `y`b)BB\n= \n!` `b)BB\n	U	bw !!\"!H\f*2\fBB\n\n\"oA	!`\f!QU[	wgU)?)k\fBB\n~HBB\n\fb`y`b)BB\n ;U	UUu\n!hUu\n!hU!` `b)BB\n2=` `b)BB\nHBB\n` `b)BB\nHBB\n7!	Ud\n!` `b)BB\nU` `b)BB\nHBB\n\n!`BB\nU	b\n!\n`WhUu`y`b)!hU!y\n!hU	b\n!` `b)BB\n	!gU&w`BB\n@!EA ` `b)BB\nB \nxhC U)cD `BB\n\n\"E ` `b)BB\nF!G `y`b)BBHBB\n	H U~uI J `HU*~HbK ` `b)BB)\n2L =Q\n!hM >!y`\f\n!hU)Q ؁N !)Q\fbO ` `b)BB\n\n!zhUz!F!)z!\n!VohP >Q `y`b)BB\nHBB\n\n\"R ` `b)BB\nfU!S UbT ` `b)BB\nU(	U(bU ` `b)BB\nbV W =؁X !)h\"U[Y `BB\nE `BB\nTbwl) Z x`X)b[ ` `b)BB\n\"D ` `b)BB\n	bw7!))	bw	U\n!` `b)BB\nU` `b)BB\n\n!`BB\n\\ !\f	H Uh] ^ h`Uh_ ` `b)BB\n	b!`TU)b` ` `b)BB	U\na BB\nTb	!b `BB	U\na BB\nc >O`\"`\f)VO\fUO	bw\fbd!e f  `	Y)S\fb	U;g ` `b)BB\nh ` `b)BB\n	U	bw !!s!H\f*\fBB\n\fb؁i !)U\fBB\nE \fBBa BB\n؁j !\"\fbd!k  l j 	m # `	Un ` `b)BB\n\n!E ` `b)BB\n\fbd!>o p > `)\"E `BB\n؁q !vr !s ` `b)BB\n	bw؁t !u !`\f؁v !)w \fBB\nx!by ` `b)BB\nz!b{ ` `b)BB\n	H Uz	b`` `b)U	 ` `b*|b!5	} |BBv	~ !K	 |BBv	e	} !!j	K !HBBu	 |BB*)\nbu	!x zQ!	x!	 y	!			b! `\fx!)	 \fBB\nU	E ` `b)BB\n >\n	b\n! z!)/\n	 >G\n	bw؁ !)G\nE ` `b)BB\n`	Wv\nY ` `b)BB	U\na BB\n~b\"~ !*\nb ` `b)BB\nb`` `b)U\n  ` `b)BB	U\na BB*	bw!iW\n BB BB2=0؁ !0 BB." [0 indent-point nil case-fold-search c-parse-state state literal containing-sexp char-before-ip char-after-ip lim semantics placeholder c-narrow-out-enclosing-class inclass-p " 	}" " 	" c-backward-syntactic-ws c-in-literal (string) string here -1 (c c++) looking-at "^[ 	]*$" pound c-beginning-of-macro cpp-macro back-to-indentation 123 " 	{" c-search-uplist-for-classkey decl class-open c-beginning-of-statement c-forward-syntactic-ws "enum[ 	\n]+" 61 "^;" 59 brace-list-open inline-open defun-open c-just-after-func-arglist-p 58 41 backward-sexp 1 member-init-intro major-mode c++-mode c++-funcdecl-cont inclass knr-argdecl-intro c-baseclass-key inher-intro c-beginning-of-inheritance-list inher-cont 44 (backward-sexp 1) ((error)) member-init-cont " 	:" c-inher-key inher-cont-1 "^<" 60 arglist-cont statement-cont c-access-key access-label 125 (byte-code "!" [backward-sexp 1 t] 2) ((error)) class-close c-mode (59 44) "typedef[ 	\n]+" knr-argdecl (59 125) topmost-intro topmost-intro-cont 40 arglist-intro arglist-close (byte-code "!" [forward-sexp -1 t] 2) ((error)) "\\<for\\>" statement " 	(" arglist-cont-nonempty c-inside-bracelist-p (byte-code "u!" [1 backward-sexp t] 2) ((error)) brace-list-close brace-list-intro block-open brace-list-entry (59 125 58) c-conditional-key (byte-code " " [c-skip-conditional t] 1) ((error)) substatement-open substatement "\\<enum\\>" "<<\\|>>" c-skip-conditional re-search-forward move stream-op (byte-code " " [c-skip-conditional t] 1) ((error)) "\\<else\\>" c-backward-to-start-of-if else-clause "while\\b[^_]" c-backward-to-start-of-do "do\\b[^_]" do-while-closure c-switch-label-key case-label c-label-key label relpos inline-close c-enclosing-brace block-close defun-close "\\|" inswitch-p ignore-re t statement-case-intro (58 63) (58 63) "::" defun-block-intro statement-block-intro c-comment-start-regexp comment-column comment-intro "friend[ 	]+" friend] 6] c-get-offset #[(langelem) "@A	\f%  	\"Y Y =1 Y => [Y P !P !Y Y !\nw \n`y`b)Ww \nbi)x \\," [langelem symbol relpos c-offsets-alist match offset c-strict-semantics-p error "don't know how to indent a %s" 0 + c-basic-offset - fboundp eval here] 4] c-indent-line #[(&optional semantics) "  d`Z\n\"\" Z\n' \n#\nUO `y`b)` `b)|yj`` `b)Wf  s dZ`Vs dZb!\n," [semantics c-guess-basic-semantics c-semantics pos apply + mapcar c-get-offset indent current-indentation shift-amt c-echo-semantic-information-p message "semantics: %s, indent= %d" 0 here back-to-indentation run-hooks c-special-indent-hook] 5]] 3)
(defalias 'c-show-semantic-information #[nil " \" " [message "semantics: %s" c-guess-basic-semantics c-keep-region-active] 3 "\
Show semantic information for current line." nil])
(byte-code "\"\"\"\"\"\"\"\"" [defalias c-lineup-arglist #[(langelem) "@>\" y!``b)w& Ab`)Abi)	y!)V yw!u i	Zt blp u``b)!i	Z+" [langelem (arglist-intro arglist-cont-nonempty) 0 backward-up-list 1 " 	" here nil containing-sexp cs-curcol looking-at "[ 	]*)" " 	)" forward-sexp -1 c-forward-syntactic-ws] 3] c-lineup-streamop #[(langelem) "Abi``b)#Ȕbi\nZ+" [langelem relpos curcol re-search-forward "<<\\|>>" here nil move 0] 5] c-lineup-multi-inher #[(langelem) "``	b)`\fAbi\nw\nwl) !- 	!iZ," [nil here eol cs-curcol langelem "^:" " 	:" looking-at c-comment-start-regexp c-forward-syntactic-ws] 3] c-lineup-C-comments #[(langelem) "yw! Z Abi ``b)#_ A \\ UL ΂\\ UW \\ Z\\biZ+" [0 " 	" nil looking-at "\\*\\*?" langelem cs-curcol stars back-to-indentation re-search-forward "/\\*[ 	]*" here t c-block-comments-indent-p 1 2] 4] c-lineup-comment #[(langelem) " i	Y  ' n ' ' ' ' )" [back-to-indentation comment-column c-comment-indent c-comment-only-line-offset -1000] 2] c-lineup-runin-statements #[(langelem) "AfU Abiuwi\nZ*Ƈ" [langelem 123 curcol 1 " 	" nil 0] 2] c-lineup-math #[(langelem) "` `b)b``b)wgU- `` `b)Z)Abi``b)wgUO e ^ uwiZZ+" [here back-to-indentation "^=" nil 61 langelem curcol equalp c-basic-offset 1 " 	" 0] 3] c-backslashify-current-line #[(doit) "	A u!)?a iY ciX+ c !iW> c/ cn?a u!a x``\f`\fb)|" [nil doit -1 looking-at "\\\\" c-backslash-column " \\" "	" delete-char " " "\\" " 	" here] 3]] 3)
(defalias 'c-backslash-region #[(beg end arg) "bn?\n}ebym)# ?!y )	/ b?!*" [end do-lastline-p beg 1 c-backslashify-current-line arg] 2 "\
Insert backslashes at end of every line in region.
Useful for defining cpp macros.  If called with a prefix argument,
it trailing backslashes are removed." "r\nP"])
(defconst c-version "3.349" "\
cc-mode version number.")
(defconst c-mode-help-address "cc-mode-help@anthem.nlm.nih.gov" "\
Address accepting submission of bug reports.")
(defalias 'c-version #[nil "\n\" " [message "Using cc-mode version %s" c-version c-keep-region-active] 3 "\
Echo the current version of cc-mode in the minibuffer." nil])
(defalias 'c-submit-bug-report #[nil "!3 !3 	= ˂ Ͱۯ$" [y-or-n-p "Do you want to submit a report on cc-mode? " require reporter reporter-submit-bug-report c-mode-help-address "cc-mode " c-version " (" major-mode c++-mode "C++" "C" ")" c-emacs-features c-basic-offset c-offsets-alist c-block-comments-indent-p c-cleanup-list c-comment-only-line-offset c-backslash-column c-delete-function c-electric-pound-behavior c-hanging-braces-alist c-hanging-colons-alist c-tab-always-indent defun-prompt-regexp tab-width #[nil " \"ư c" [c-special-indent-hook "\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n" "c-special-indent-hook is set to '" format "%s" ".\nPerhaps this is your problem?\n" "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n\n" "\n"] 5]] 17 "\
Submit via mail a bug report on cc-mode." nil])
(defalias 'c-popup-menu #[(e) "	PB! " [popup-menu mode-name " Mode Commands" c-mode-menu c-keep-region-active] 3 "\
Pops up the C/C++ menu." "@e"])
(byte-code "MMMMMMMM> BBBBBBBBBBBBBBBBBBBBBBBBBBB@ BA BB BC BD BE BF BG H BI H B$JK L J\"*M N !" [electric-c-brace c-electric-brace electric-c-semi c-electric-semi&comma electric-c-sharp-sign c-electric-pound mark-c-function c-mark-function indent-c-exp c-indent-exp set-c-style c-set-style c++-beginning-of-defun beginning-of-defun c++-end-of-defun end-of-defun v19 c-emacs-features "Nothing appropriate." na c++-c-mode-syntax-table c-mode-syntaxt-table c++-tab-always-indent c-tab-always-indent c++-always-arglist-indent-p c++-block-close-brace-offset c-offsets-alist c++-paren-as-block-close-p c++-continued-member-init-offset c++-member-init-indent c++-friend-offset c++-access-specifier-offset c++-empty-arglist-indent c++-comment-only-line-offset c-comment-only-line-offset c++-C-block-comments-indent-p c-block-comments-indent-p c++-cleanup-list c-cleanup-list c++-hanging-braces c-hanging-braces-alist c++-hanging-member-init-colon c-hanging-colons-alist c++-auto-hungry-initial-state "Use `c-auto-newline' and `c-hungry-delete-key' instead." c++-auto-hungry-toggle c++-relative-offset-p c++-special-indent-hook c-special-indent-hook c++-delete-function c-delete-function c++-electric-pound-behavior c-electric-pound-behavior c++-hungry-delete-key c-hungry-delete-key c++-auto-newline c-auto-newline c++-match-header-strongly c++-defun-header-strong-struct-equivs c++-version c-version c++-mode-help-address c-mode-help-address c-indent-level c-basic-offset c-brace-imaginary-offset c-brace-offset c-argdecl-indent c-label-offset c-continued-statement-offset c-continued-brace-offset c-default-macroize-column c-backslash-column c++-default-macroize-column vars mapcar #[(elt) "	@	A\"" [make-obsolete-variable elt] 3] provide cc-mode] 37)
