Commit 019d40fa authored by Nico Weber's avatar Nico Weber

Add a document describing which C++11 features we allow.

For now, this allows only a very limited set.  Also describes the process we're
going to follow to allow more features.  The idea is that we're gradually going
to allow more features over time.

Also included is the source of a tiny appengine app running at
chromium-cpp.appspot.com that will show the contents of the document in this
CL once it's submitted.

BUG=360096
NOTRY=true
R=ben@chromium.org, inferno@chromium.org, jamesr@chromium.org

Review URL: https://codereview.chromium.org/589413003

Cr-Commit-Position: refs/heads/master@{#296214}
parent 2903f337
ajwong@chromium.org
jamesr@chromium.org
thakis@chromium.org
/*
* Copyright 2014 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
html {
margin:0;
padding:0;
border:0;
}
.bp-reset-element,
body,
h1,
h2,
h3,
h4,
h5,
h6,
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary,
blockquote,
q,
th,
td,
caption,
table,
div,
span,
object,
iframe,
p,
pre,
a,
abbr,
acronym,
address,
code,
del,
dfn,
em,
img,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
caption,
tbody,
tfoot,
thead,
tr {
margin:0;
padding:0;
border:0;
font-weight:inherit;
font-style:inherit;
font-size:100%;
font-family:inherit;
vertical-align:baseline;
}
body {
font-family:'Arial', sans-serif;
font-size:81.25%;
color:#222;
background-color:#fff;
line-height:1.67;
overflow: auto;
margin-right: 100px;
margin-left: 100px;
margin-top: 50px;
margin-bottom: 80px;
}
p {
width:600px;
}
h1,
h2,
p.h2,
h3,
h4,
h5,
h6 {
font-weight:bold;
}
h1 {
margin-bottom:.50em;
}
h2,
p.h2,
h3,
h4,
h5,
h6 {
margin-top:1.5em;
margin-bottom:.75em;
}
h1,header {font-size:192%;}
#gc-content h1 {font-size:2em;}
h2, p.h2 {font-size:167%;}
h3 {font-size:145%;}
h4 {font-size:130%;}
h5 {font-size:110%;}
p {
margin:0 0 1.5em;
}
p .left {
display:inline;
float:left;
margin:1.5em 1.5em 1.5em 0;
padding:0;
}
p .right {
display:inline;
float:right;
margin:1.5em 0 1.5em 1.5em;
padding:0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary {
display:block;
}
blockquote,
q {
quotes:'' '';
}
blockquote:before,
blockquote:after,
q:before,
q:after {
content:'';
}
blockquote {
margin:1.5em;
}
blockquote#nav {
margin-top:0;
}
section {
margin-bottom:1.5em;
}
a[href=''] {
cursor:default;
}
strong,
dfn {
font-weight:bold;
}
em,
dfn {
font-style:italic;
}
sup,
sub {
line-height:0;
}
abbr,
acronym {
border-bottom:1px dotted #666;
}
address {
margin:0 0 1.5em;
font-style:italic;
}
del {
color:#666;
}
pre {
margin:1.5em 0;
white-space:pre;
}
pre,
code,
kbd,
tt {
font:1em 'Droid Sans Mono', monospace;
line-height:1.5;
}
dl {
margin:0 0 1.5em 0;
}
dl dt {
font-weight:bold;
}
dd {
margin-left:1.5em;
}
hr {
height:0;
border:0;
border-top:1px solid #ccc;
background-color:#ccc;
}
table {
border:1px solid #bbb;
border-spacing:0;
border-collapse:collapse;
margin:0 0 1.5em;
vertical-align:middle;
width:100%;
}
table.unlined,
table.unlined th,
table.unlined tr,
table.unlined td {
border:0;
}
th,
td,
caption {
float:none !important;
text-align:left;
font-weight:normal;
vertical-align:middle;
padding:4px;
}
caption {
padding:0;
}
td {
border:1px solid #bbb;
vertical-align:top;
}
th {
border:0;
border-bottom:1px solid black;
font-weight:bold;
background:rgb(229, 236, 249);
}
th:only-of-type {
border-bottom:1px solid rgb(244, 244, 244);
background-color: rgb(238, 238, 238);
vertical-align: top;
}
table th code {
background-color:inherit;
color:inherit;
}
table tfoot th {
border:1px solid #bbb;
}
tfoot {
font-style:italic;
}
caption {
background:#eee;
}
table[border='0'] {
border:none;
}
table[border='0']>tbody>tr>td,
table[border='0']>tr>td {
border:none;
}
tr.alt td,
td.alt {
background-color:#efefef;
}
table.striped tr:nth-child(even) td,
table tr.even td {
background:#efefef;
}
table.columns {
border:none;
}
table.columns>tbody>tr>td,
table.columns>tr>td {
border:none;
padding:0 3em 0 0;
}
table.columns>tbody>tr>td:last-child,
table.columns>tr>td:last-child {
border:none;
padding:0;
}
.two-columns td {
width: 50%;
vertical-align:top;
}
ul,
ol {
margin:0 1.5em 1.5em 0;
padding-left:2em;
}
li ul,
li ol {
margin:0;
}
ul {
list-style-type:disc;
}
ol {
list-style-type:decimal;
}
ul {
list-style-type:disc;
}
ul ul {
list-style-type:circle;
}
ul ul ul {
list-style-type:square;
}
ul.disc {
list-style-type:disc;
}
ul.circle {
list-style-type:circle;
}
ul.square {
list-style-type:square;
}
ol {
list-style-type:decimal;
}
ol ol {
list-style-type:lower-alpha;
}
ol ol ol {
list-style-type:lower-roman;
}
ol ul {
list-style-type:circle;
}
ol.decimal {
list-style-type:decimal;
}
ol.upper-alpha {
list-style-type:upper-alpha;
}
ol.lower-alpha {
list-style-type:lower-alpha;
}
ol.upper-roman {
list-style-type:upper-roman;
}
ol.lower-roman {
list-style-type:lower-roman;
}
ol.nolist,
ul.nolist {
padding-left:0;
list-style-image:none;
list-style-type:none;
margin-left:0;
}
li p {
margin-bottom:0.75em;
}
figure {
margin:0 0 1.5em;
text-align:center;
}
figure.right {
float:right;
margin:5px 1em 1em;
}
figcaption {
font-style:italic;
font-size:90%;
text-align:center;
}
.center {
text-align:center;
}
.clear, .clearboth {
clear:both;
}
.class-done {
padding-top:2em;
}
a.file {
font-family:monospace;
font-size:120%;
}
.navtop {
font-size: xx-small;
float:right;
}
.loud {
font-weight:bold;
}
.quiet {
color:#999;
stress:30;
}
.light-title {
font-size:150%;
border:0;
color:#666;
}
code,
kbd,
pre {
color:#009900;
}
code {
white-space: nowrap;
}
pre > code {
white-space: inherit;
}
kbd {
font-weight: bold;
}
table.striped code {
background-color:inherit;
}
pre {
padding:6px 10px;
background-color:#FAFAFA;
border:1px solid #bbb;
overflow:auto;
}
pre.prettyprint {
padding:6px 10px !important;
border:1px solid #bbb !important;
}
code.bad, code.badcode {
color: magenta;
}
pre.bad, pre.badcode {
background-color:#ffe6d8;
border-top:1px inset #a03;
border-left:1px inset #a03;
}
.codesample {
border-top:1px inset silver;
border-left:1px inset silver;
display:inline-block;
margin-bottom:10px;
}
.codesample pre {
margin-bottom:0;
}
.codesample.good {
border-top:1px inset green;
border-left:1px inset green;
vertical-align: top;
}
.codesample.bad {
border-top:1px inset #a03;
border-left:1px inset #a03;
vertical-align: top;
}
.codesample > p {
margin-bottom: 0;
font-weight: bold;
border: 1px solid #888;
border-bottom: 0;
padding: 0 .25em;
}
.codesample.bad > p {
background-color: #ffeaea;
}
.codesample.bad > p:before {
content: "BAD: ";
}
.codesample.good > p {
background-color: #eaffea;
}
.codesample.good > p:before {
content: "GOOD: ";
}
.codesample.bad > pre {
background-color: #ffe6d8;
}
.codesample > pre {
margin-top: 0;
}
.border {
border:1px solid #aaa;
padding:3px;
}
.expandable {
display:block;
margin-left:16px;
min-height:20px;
}
.expandable .exw-control {
position:absolute;
margin-top:-6px;
margin-left:-16px;
cursor:pointer;
display:block;
text-decoration:none;
color:#222;
font-size:20px;
}
.hide {
display:none !important;
}
.show {
display:block !important;
}
.hidden {
display:none;
}
.invisible {
width:0 !important;
height:0 !important;
border:0 !important;
}
.announcement {
background-color:#FFECBC;
border-radius:2px;
border:1px solid #ffbf68;
padding:10px 20px;
color:#666;
margin-top:10px;
margin-right:16px;
}
.announcement>div strong {
font-size:1.2em;
}
.announcement>div#gc-description a {
text-decoration:underline;
}
.quiet {
color:#919191;
}
.quieter {
color:#ccc;
}
.doublespace,
.doublespace li {
margin-top:1em;
line-height:200%;
}
.yellow {
background-color:#fffbd9;
border-left-color:#ffef70;
}
.orange {
background-color:#FFECBC;
border-left-color:#ffef70;
}
.red {
background-color:#ffe6d8;
border-left-color:#a03;
}
aside.caution,
aside.lapswarning,
aside.note,
aside.special,
aside.tip,
aside.warning {
margin-bottom:1.5em;
}
.note,
.caution,
.tip,
.warning,
.special {
background-color:#efefef;
padding:6px 8px 6px 10px;
border-left:6px solid #999;
}
.note>h4,
.caution>h4,
.tip>h4,
.warning>h4,
.special>h4,
.sidebar>h4,
.special-sidebox>h4{
font-weight:bold;
font-size:1em;
margin:0.125em;
}
.note>p:last-child,
.caution>p:last-child,
.special>p:last-child,
.tip>p:last-child,
.warning>p:last-child {
margin:0;
}
.caution,
.tip {
background-color:#fffbd9;
border-left-color:#ffef70;
}
.warning {
background-color:#ffe6d8;
border-left-color:#a03;
}
.note,
.special {
background-color:#e5ecf9;
border-left-color:#36c;
}
.attention {
color:#990000;
font-weight:bold;
}
This diff is collapsed.
application: chromium-cpp
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: .*
script: main.app
libraries:
- name: webapp2
version: "2.5.2"
indexes:
# AUTOGENERATED
# This index.yaml is automatically updated whenever the dev_appserver
# detects that a new type of query is run. If you want to manage the
# index.yaml file manually, remove the above marker line (the line
# saying "# AUTOGENERATED"). If you want to manage some indexes
# manually, move them above the marker line. The index.yaml file is
# automatically uploaded to the admin console when you next deploy
# your application using appcfg.py.
#!/usr/bin/env python
#
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from google.appengine.api import memcache
from google.appengine.api import urlfetch
import webapp2
import base64
"""A simple appengine app that hosts .html files in src/styleguide/c++ from
chromium's git repo."""
class MainHandler(webapp2.RequestHandler):
def get(self):
handler = GitilesMirrorHandler()
handler.initialize(self.request, self.response)
return handler.get("c++11.html")
BASE = 'https://chromium.googlesource.com/chromium/src.git/' \
'+/master/styleguide/c++/%s?format=TEXT'
class GitilesMirrorHandler(webapp2.RequestHandler):
def get(self, resource):
if '..' in resource: # No path traversal.
self.response.write(':-(')
return
url = BASE % resource
contents = memcache.get(url)
if not contents or self.request.get('bust'):
result = urlfetch.fetch(url)
if result.status_code != 200:
self.response.write('http error %d' % result.status_code)
return
contents = base64.b64decode(result.content)
memcache.set(url, contents, time=5*60) # seconds
if resource.endswith('.css'):
self.response.headers['Content-Type'] = 'text/css'
self.response.write(contents)
app = webapp2.WSGIApplication([
('/', MainHandler),
('/(\S+\.(?:css|html))', GitilesMirrorHandler),
], debug=True)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment