Skip to content

Commit afb835e

Browse files
committed
2 parents e2514b2 + f98706f commit afb835e

File tree

1 file changed

+34
-22
lines changed

1 file changed

+34
-22
lines changed

gadgets/standard_revisions.js

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ $(function() {
7272
// assumed that the values are integers starting at zero and thus they can
7373
// be used as an index in regular arrays.
7474
var Rev_c = { DIFF: 0, FIRST: 1, C89: 1, C99: 2, C11: 3, LAST: 4 };
75-
var Rev_cxx = { DIFF: 0, FIRST: 1, CXX98: 1, CXX11: 2, CXX14: 3, CXX17: 4, LAST: 5 };
75+
var Rev_cxx = { DIFF: 0, FIRST: 1, CXX98: 1, CXX11: 2, CXX14: 3, CXX17: 4, CXX20: 5, LAST: 6 };
7676

7777
var Rev;
7878

@@ -96,6 +96,7 @@ $(function() {
9696
{ rev: Rev.CXX11, title: 'C++11' },
9797
{ rev: Rev.CXX14, title: 'C++14' },
9898
{ rev: Rev.CXX17, title: 'C++17' },
99+
{ rev: Rev.CXX20, title: 'C++20' },
99100
];
100101

101102
var desc;
@@ -140,6 +141,9 @@ $(function() {
140141
if (el.hasClass('t-since-cxx17')) {
141142
return { since: true, rev: Rev.CXX17 };
142143
}
144+
if (el.hasClass('t-since-cxx20')) {
145+
return { since: true, rev: Rev.CXX20 };
146+
}
143147
if (el.hasClass('t-until-cxx11')) {
144148
return { since: false, rev: Rev.CXX11 };
145149
}
@@ -149,6 +153,9 @@ $(function() {
149153
if (el.hasClass('t-until-cxx17')) {
150154
return { since: false, rev: Rev.CXX17 };
151155
}
156+
if (el.hasClass('t-until-cxx20')) {
157+
return { since: false, rev: Rev.CXX20 };
158+
}
152159
return { since: true, rev: Rev.CXX98 };
153160
}
154161

@@ -217,6 +224,11 @@ $(function() {
217224
this.map[rev] = true;
218225
}
219226

227+
// Sets the visibility on the given revision to true.
228+
VisibilityMap.prototype.remove = function(rev) {
229+
this.map[rev] = false;
230+
}
231+
220232

221233
/* Fills the visibility map with the given value. After the operation
222234
map.is_visible_on(rev) == value for all valid revisions.
@@ -282,31 +294,31 @@ $(function() {
282294
visibility map corresponding to these css classes. Rev.DIFF is not
283295
included into the returned visibility map.
284296
*/
285-
// FIXME: this function handles only certain cases of fully closed ranges
286297
function get_visibility_map_cxx(el) {
287-
// DIFF: 0, CXX98: 1, CXX11: 2, CXX14: 3, CXX17: 4
288-
if (el.hasClass('t-since-cxx17')) {
289-
return new VisibilityMap([Rev.CXX17]);
290-
}
291-
if (el.hasClass('t-since-cxx14')) {
292-
return new VisibilityMap([Rev.CXX14, Rev.CXX17]);
293-
}
294-
if (el.hasClass('t-since-cxx11')) {
295-
if (el.hasClass('t-until-cxx14')) {
296-
return new VisibilityMap([Rev.CXX11]);
298+
// DIFF: 0, CXX98: 1, CXX11: 2, CXX14: 3, CXX17: 4, CXX20: 5
299+
var classes_cxx = [
300+
{ rev: Rev.CXX11, since: 't-since-cxx11', until: 't-until-cxx11' },
301+
{ rev: Rev.CXX14, since: 't-since-cxx14', until: 't-until-cxx14' },
302+
{ rev: Rev.CXX17, since: 't-since-cxx17', until: 't-until-cxx17' },
303+
{ rev: Rev.CXX20, since: 't-since-cxx20', until: 't-until-cxx20' },
304+
];
305+
var map = new VisibilityMap();
306+
for (var i = 0; i < classes_cxx.length; i++) {
307+
if (el.hasClass(classes_cxx[i].since)) {
308+
break;
297309
}
298-
return new VisibilityMap([Rev.CXX11, Rev.CXX14, Rev.CXX17]);
299-
}
300-
if (el.hasClass('t-until-cxx11')) {
301-
return new VisibilityMap([Rev.CXX98]);
302310
}
303-
if (el.hasClass('t-until-cxx14')) {
304-
return new VisibilityMap([Rev.CXX98, Rev.CXX11]);
311+
if (i === classes_cxx.length) {
312+
map.add(Rev.CXX98);
313+
i = 0;
305314
}
306-
if (el.hasClass('t-until-cxx17')) {
307-
return new VisibilityMap([Rev.CXX98, Rev.CXX11, Rev.CXX14]);
315+
for (; i < classes_cxx.length; i++) {
316+
if (el.hasClass(classes_cxx[i].until)) {
317+
break;
318+
}
319+
map.add(classes_cxx[i].rev);
308320
}
309-
return new VisibilityMap([Rev.CXX98, Rev.CXX11, Rev.CXX14, Rev.CXX17]);
321+
return map;
310322
}
311323

312324
function get_visibility_map_c(el) {
@@ -1150,7 +1162,7 @@ $(function() {
11501162
// process the member dcls
11511163
el.children('.t-dcl').each(function() {
11521164
var new_id = process_tr($(this), has_num, has_revs,
1153-
new_def.revs.slice());
1165+
new_def.revs.clone());
11541166
new_def.children.push(new_id);
11551167
});
11561168

0 commit comments

Comments
 (0)