From db0be8e44d43c6460e60c5c611b39b4f02165162 Mon Sep 17 00:00:00 2001
From: mmentovai
Date: Wed, 17 Dec 2008 22:24:29 +0000
Subject: [PATCH] Update C++ style guide: - Allow unsigned types where defined
overflow behavior is desired - Clarify that a function-closing } is
permitted on the same line as an opening { for one-line functions
Set svn:eol-style = native on google-c-style.el
---
cppguide.xml | 10 ++-
google-c-style.el | 216 +++++++++++++++++++++++-----------------------
2 files changed, 114 insertions(+), 112 deletions(-)
diff --git a/cppguide.xml b/cppguide.xml
index 5e351ae..74e708c 100644
--- a/cppguide.xml
+++ b/cppguide.xml
@@ -2149,8 +2149,9 @@ Tashana Landray
You should not use the unsigned integer types such as
uint32_t
,
unless the quantity you are representing is really a bit pattern
- rather than a number. In particular, do not use unsigned types to
- say a number will never be negative. Instead, use
+ rather than a number, or unless you need defined
+ twos-complement overflow. In particular, do not use unsigned
+ types to say a number will never be negative. Instead, use
assertions for this.
@@ -3472,8 +3473,9 @@ Tashana Landray
The open curly brace is always at the end of the same
line as the last parameter.
- The close curly brace is always on the last line by
- itself.
+ The close curly brace is either on the last line by itself
+ or (if other style rules permit) on the same line as the
+ open curly brace.
There should be a space between the close parenthesis and
the open curly brace.
diff --git a/google-c-style.el b/google-c-style.el
index bb2dd83..4712619 100644
--- a/google-c-style.el
+++ b/google-c-style.el
@@ -1,108 +1,108 @@
-;;; google-c-style.el --- Google's C/C++ style for c-mode
-
-;; Keywords: c, tools
-
-;; google-c-style.el is Copyright (C) 2008 Google Inc. All Rights Reserved.
-;;
-;; It is free software; you can redistribute it and/or modify it under the
-;; terms of either:
-;;
-;; a) the GNU General Public License as published by the Free Software
-;; Foundation; either version 1, or (at your option) any later version, or
-;;
-;; b) the "Artistic License".
-
-;;; Commentary:
-
-;; Provides the google C/C++ coding style. You may wish to add
-;; `google-set-c-style' to your `c-mode-common-hook' after requiring this
-;; file. For example:
-;;
-;; (add-hook 'c-mode-common-hook 'google-set-c-style)
-;;
-;; If you want the RETURN key to go to the next line and space over
-;; to the right place, add this to your .emacs right after the load-file:
-;;
-;; (add-hook 'c-mode-common-hook 'google-make-newline-indent)
-
-;;; Code:
-
-(defconst google-c-style
- `((c-recognize-knr-p . nil)
- (c-enable-xemacs-performance-kludge-p . t) ; speed up indentation in XEmacs
- (c-basic-offset . 2)
- (indent-tabs-mode . nil)
- (c-comment-only-line-offset . 0)
- (c-hanging-braces-alist . ((defun-open after)
- (defun-close before after)
- (class-open after)
- (class-close before after)
- (namespace-open after)
- (inline-open after)
- (inline-close before after)
- (block-open after)
- (block-close . c-snug-do-while)
- (extern-lang-open after)
- (extern-lang-close after)
- (statement-case-open after)
- (substatement-open after)))
- (c-hanging-colons-alist . ((case-label)
- (label after)
- (access-label after)
- (member-init-intro before)
- (inher-intro)))
- (c-hanging-semi&comma-criteria
- . (c-semi&comma-no-newlines-for-oneline-inliners
- c-semi&comma-inside-parenlist
- c-semi&comma-no-newlines-before-nonblanks))
- (c-indent-comments-syntactically-p . nil)
- (comment-column . 40)
- (c-cleanup-list . (brace-else-brace
- brace-elseif-brace
- brace-catch-brace
- empty-defun-braces
- defun-close-semi
- list-close-comma
- scope-operator))
- (c-offsets-alist . ((arglist-intro . ++)
- (func-decl-cont . ++)
- (member-init-intro . ++)
- (inher-intro . ++)
- (comment-intro . 0)
- (arglist-close . c-lineup-arglist)
- (topmost-intro . 0)
- (block-open . 0)
- (inline-open . 0)
- (substatement-open . 0)
- (statement-cont
- .
- (,(when (fboundp 'c-no-indent-after-java-annotations)
- 'c-no-indent-after-java-annotations)
- ,(when (fboundp 'c-lineup-assignments)
- 'c-lineup-assignments)
- ++))
- (label . /)
- (case-label . +)
- (statement-case-open . +)
- (statement-case-intro . +) ; case w/o {
- (access-label . /)
- (innamespace . 0))))
- "Google C/C++ Programming Style")
-
-(defun google-set-c-style ()
- "Set the current buffer's c-style to Google C/C++ Programming
- Style. Meant to be added to `c-mode-common-hook'."
- (interactive)
- (make-local-variable 'c-tab-always-indent)
- (setq c-tab-always-indent t)
- (c-add-style "Google" google-c-style t))
-
-(defun google-make-newline-indent ()
- "Sets up preferred newline behavior. Not set by default. Meant
- to be added to `c-mode-common-hook'."
- (interactive)
- (define-key c-mode-base-map "\C-m" 'newline-and-indent)
- (define-key c-mode-base-map [ret] 'newline-and-indent))
-
-(provide 'google-c-style)
-;;; google-c-style.el ends here
+;;; google-c-style.el --- Google's C/C++ style for c-mode
+
+;; Keywords: c, tools
+
+;; google-c-style.el is Copyright (C) 2008 Google Inc. All Rights Reserved.
+;;
+;; It is free software; you can redistribute it and/or modify it under the
+;; terms of either:
+;;
+;; a) the GNU General Public License as published by the Free Software
+;; Foundation; either version 1, or (at your option) any later version, or
+;;
+;; b) the "Artistic License".
+
+;;; Commentary:
+
+;; Provides the google C/C++ coding style. You may wish to add
+;; `google-set-c-style' to your `c-mode-common-hook' after requiring this
+;; file. For example:
+;;
+;; (add-hook 'c-mode-common-hook 'google-set-c-style)
+;;
+;; If you want the RETURN key to go to the next line and space over
+;; to the right place, add this to your .emacs right after the load-file:
+;;
+;; (add-hook 'c-mode-common-hook 'google-make-newline-indent)
+
+;;; Code:
+
+(defconst google-c-style
+ `((c-recognize-knr-p . nil)
+ (c-enable-xemacs-performance-kludge-p . t) ; speed up indentation in XEmacs
+ (c-basic-offset . 2)
+ (indent-tabs-mode . nil)
+ (c-comment-only-line-offset . 0)
+ (c-hanging-braces-alist . ((defun-open after)
+ (defun-close before after)
+ (class-open after)
+ (class-close before after)
+ (namespace-open after)
+ (inline-open after)
+ (inline-close before after)
+ (block-open after)
+ (block-close . c-snug-do-while)
+ (extern-lang-open after)
+ (extern-lang-close after)
+ (statement-case-open after)
+ (substatement-open after)))
+ (c-hanging-colons-alist . ((case-label)
+ (label after)
+ (access-label after)
+ (member-init-intro before)
+ (inher-intro)))
+ (c-hanging-semi&comma-criteria
+ . (c-semi&comma-no-newlines-for-oneline-inliners
+ c-semi&comma-inside-parenlist
+ c-semi&comma-no-newlines-before-nonblanks))
+ (c-indent-comments-syntactically-p . nil)
+ (comment-column . 40)
+ (c-cleanup-list . (brace-else-brace
+ brace-elseif-brace
+ brace-catch-brace
+ empty-defun-braces
+ defun-close-semi
+ list-close-comma
+ scope-operator))
+ (c-offsets-alist . ((arglist-intro . ++)
+ (func-decl-cont . ++)
+ (member-init-intro . ++)
+ (inher-intro . ++)
+ (comment-intro . 0)
+ (arglist-close . c-lineup-arglist)
+ (topmost-intro . 0)
+ (block-open . 0)
+ (inline-open . 0)
+ (substatement-open . 0)
+ (statement-cont
+ .
+ (,(when (fboundp 'c-no-indent-after-java-annotations)
+ 'c-no-indent-after-java-annotations)
+ ,(when (fboundp 'c-lineup-assignments)
+ 'c-lineup-assignments)
+ ++))
+ (label . /)
+ (case-label . +)
+ (statement-case-open . +)
+ (statement-case-intro . +) ; case w/o {
+ (access-label . /)
+ (innamespace . 0))))
+ "Google C/C++ Programming Style")
+
+(defun google-set-c-style ()
+ "Set the current buffer's c-style to Google C/C++ Programming
+ Style. Meant to be added to `c-mode-common-hook'."
+ (interactive)
+ (make-local-variable 'c-tab-always-indent)
+ (setq c-tab-always-indent t)
+ (c-add-style "Google" google-c-style t))
+
+(defun google-make-newline-indent ()
+ "Sets up preferred newline behavior. Not set by default. Meant
+ to be added to `c-mode-common-hook'."
+ (interactive)
+ (define-key c-mode-base-map "\C-m" 'newline-and-indent)
+ (define-key c-mode-base-map [ret] 'newline-and-indent))
+
+(provide 'google-c-style)
+;;; google-c-style.el ends here