summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthakis <thakis@chromium.org>2014-10-28 18:30:42 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-29 01:31:01 +0000
commitb8fbe312fb52b02c80e0cf5b2c6b806f7b894e22 (patch)
tree25eaa8697c40c2321ba31141c1642543daf1279b
parent3edd4d5d972d3820ec22cebd011ecbd9d4841143 (diff)
downloadchromium_src-b8fbe312fb52b02c80e0cf5b2c6b806f7b894e22.zip
chromium_src-b8fbe312fb52b02c80e0cf5b2c6b806f7b894e22.tar.gz
chromium_src-b8fbe312fb52b02c80e0cf5b2c6b806f7b894e22.tar.bz2
Clarify that enum classes include explicit underlying types.
Also use that in one place to forward-declare an enum, to make sure it actually works. No behavior change. BUG=none Review URL: https://codereview.chromium.org/678333004 Cr-Commit-Position: refs/heads/master@{#301766}
-rw-r--r--styleguide/c++/c++11.html12
-rw-r--r--ui/base/layout.h2
-rw-r--r--ui/base/resource/data_pack.h2
3 files changed, 9 insertions, 7 deletions
diff --git a/styleguide/c++/c++11.html b/styleguide/c++/c++11.html
index b62f3c0..c0274d9 100644
--- a/styleguide/c++/c++11.html
+++ b/styleguide/c++/c++11.html
@@ -94,12 +94,14 @@ decltype specifier</a></td>
</tr>
<tr>
-<td>Enumerated Type Classes</td>
-<td><code>enum class <i>classname</i></code></td>
+<td>Enumerated Type Classes and Enum Bases</td>
+<td><code>enum class <i>classname</i></code><br>
+ <code>enum class <i>classname</i> : <i>base-type</i></code><br>
+ <code>enum <i>enumname</i> : <i>base-type</i></code></td>
<td>Provide enums as full classes, with no implicit
-conversion to booleans or integers</td>
-<td><a href="http://stackoverflow.com/questions/6936030/do-we-really-need-enum-class-in-c11">
-enum-class</a></td>
+conversion to booleans or integers. Provide an explicit underlying type for
+enum classes and regular enums.</td>
+<td><a href="http://www.stroustrup.com/C++11FAQ.html#enum">enum-class</a></td>
<td>Enum classes are still enums and follow enum naming rules
(which means SHOUTY_CASE in the <a href="http://www.chromium.org/developers/coding-style#Naming">current style guide</a>).
<a href="https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/Q5WmkAImanc">Discussion thread</a></td>
diff --git a/ui/base/layout.h b/ui/base/layout.h
index eaaa926..ab83878 100644
--- a/ui/base/layout.h
+++ b/ui/base/layout.h
@@ -18,7 +18,7 @@ namespace ui {
// SCALE_FACTOR_NONE is used for density independent resources such as
// string, html/js files or an image that can be used for any scale factors
// (such as wallpapers).
-enum ScaleFactor {
+enum ScaleFactor : int {
SCALE_FACTOR_NONE = 0,
SCALE_FACTOR_100P,
SCALE_FACTOR_125P,
diff --git a/ui/base/resource/data_pack.h b/ui/base/resource/data_pack.h
index 928c855..b7d833c 100644
--- a/ui/base/resource/data_pack.h
+++ b/ui/base/resource/data_pack.h
@@ -16,7 +16,6 @@
#include "base/files/memory_mapped_file.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/string_piece.h"
-#include "ui/base/layout.h"
#include "ui/base/resource/resource_handle.h"
#include "ui/base/ui_base_export.h"
@@ -26,6 +25,7 @@ class RefCountedStaticMemory;
}
namespace ui {
+enum ScaleFactor : int;
class UI_BASE_EXPORT DataPack : public ResourceHandle {
public: