Gerald Squelart
0e7e45ed66
Bug 1500811 - Variant::as()&&, match()&& - r=sg
...
`as<...>()` on an rvalue variant returns the contained value as rvalue-reference.
`match()` on an rvalue variant forwards the contained value as rvalue-reference.
So now the contained values can be efficiently moved-from.
There are also equivalents for `const&&`, which should be rare.
For `match(2+ matchers)`, the static_assert for same return types has been moved to `Impl::matchN`. Also, it doesn't rely on `FunctionTypeTraits` anymore, which has the added benefit of allowing `auto` in individual matchers.
Differential Revision: https://phabricator.services.mozilla.com/D98050
2020-12-02 00:17:46 +00:00
André Bargull
14ca007916
Bug 1625138 - Part 41: Remove no longer needed includes for mozilla/TypeTraits. r=froydnj
...
Also adds missing includes in some files, these were previously only transivitely
included through mozilla/TypeTraits.h.
Differential Revision: https://phabricator.services.mozilla.com/D68561
--HG--
extra : moz-landing-system : lando
2020-03-28 16:00:09 +00:00
André Bargull
5992327185
Bug 1625138 - Part 36: Replace mozilla::IsSame with std::is_same in mfbt/. r=froydnj
...
Differential Revision: https://phabricator.services.mozilla.com/D68555
--HG--
extra : moz-landing-system : lando
2020-03-28 13:57:20 +00:00
André Bargull
32cb16fc45
Bug 1625138 - Part 32: Replace mozilla::RemoveConst with std::remove_const. r=froydnj
...
Differential Revision: https://phabricator.services.mozilla.com/D68551
--HG--
extra : moz-landing-system : lando
2020-03-28 13:57:19 +00:00
André Bargull
1be056677a
Bug 1625138 - Part 26: Replace mozilla::Conditional with std::conditional. r=froydnj
...
Differential Revision: https://phabricator.services.mozilla.com/D68381
--HG--
extra : moz-landing-system : lando
2020-03-28 13:57:18 +00:00
André Bargull
3ee851a1a5
Bug 1625138 - Part 25: Replace mozilla::RemoveReference with std::remove_reference. r=froydnj,jgilbert
...
Differential Revision: https://phabricator.services.mozilla.com/D68380
--HG--
extra : moz-landing-system : lando
2020-03-28 14:16:19 +00:00
Gerald Squelart
056a867f22
Bug 1621865 - Variant matchers may optionally take the current index as first parameter - r=froydnj
...
Depends on D66719
Differential Revision: https://phabricator.services.mozilla.com/D66720
--HG--
extra : moz-landing-system : lando
2020-03-13 21:56:47 +00:00
Gerald Squelart
9c1f5b9571
Bug 1621865 - In Variant::match(), forward the callback before invoking it - r=froydnj
...
`std::forward(invocable)()` ensures that the optimal callback is invoked, in
case there are different versions with different reference qualifiers.
E.g., an rvalue-reference-qualified member function could std::move() from class
members, because the object is about to be destroyed anyway.
Differential Revision: https://phabricator.services.mozilla.com/D66719
--HG--
extra : moz-landing-system : lando
2020-03-13 15:23:25 +00:00
Peter Van der Beken
22e4870bda
Bug 1584256 - Add IPDLParamTraits for Variant. r=nika,jwalden
...
Differential Revision: https://phabricator.services.mozilla.com/D47607
--HG--
extra : moz-landing-system : lando
2019-10-08 16:03:11 +00:00
Jim Blandy
54f04058eb
Bug 1548133: mozilla::Variant::addTagToHash should be const-this. r=froydnj
...
Differential Revision: https://phabricator.services.mozilla.com/D29423
--HG--
extra : moz-landing-system : lando
2019-05-01 12:13:23 +00:00
Jim Blandy
52031426cb
Bug 1546853: Implement mozilla::Variant::addTagToHash. r=froydnj
...
Define the Variant::addTagToHash method, which perturbs a hash value according
to the variant's current alternative's tag. This makes it easier to avoid
collisions in variants in which different alternatives might hash similarly.
Tests included.
Differential Revision: https://phabricator.services.mozilla.com/D28768
--HG--
extra : moz-landing-system : lando
2019-04-25 14:03:40 +00:00
Sylvestre Ledru
03c8e8c2dd
Bug 1519636 - clang-format-8: Reformat recent changes to the Google coding style r=Ehsan
...
clang-format-8 upstream had some improvements wrt macros
See: https://reviews.llvm.org/D33440
This is why the diff is bigger than usual
# ignore-this-changeset
Differential Revision: https://phabricator.services.mozilla.com/D26098
--HG--
extra : moz-landing-system : lando
2019-04-05 21:41:42 +00:00
Csoregi Natalia
ba58e936bd
Backed out changeset 4ad80127f89f (bug 1519636) for bustage on MarkupMap.h and nsAccessibilityService.cpp. CLOSED TREE
2019-04-05 09:48:19 +03:00
Sylvestre Ledru
d1c1878603
Bug 1519636 - clang-format-8: Reformat recent changes to the Google coding style r=Ehsan
...
clang-format-8 upstream had some improvements wrt macros
See: https://reviews.llvm.org/D33440
This is why the diff is bigger than usual
# ignore-this-changeset
Differential Revision: https://phabricator.services.mozilla.com/D26098
--HG--
extra : moz-landing-system : lando
2019-04-04 21:36:16 +00:00
Narcis Beleuzu
24dbe577a5
Backed out changeset 389b6bbd76db (bug 1519636) for bustages on MarkupMap.h . CLOSED TREE
2019-04-05 00:27:56 +03:00
Sylvestre Ledru
399dbd28fe
Bug 1519636 - clang-format-8: Reformat recent changes to the Google coding style r=Ehsan
...
clang-format-8 upstream had some improvements wrt macros
See: https://reviews.llvm.org/D33440
This is why the diff is bigger than usual
# ignore-this-changeset
Differential Revision: https://phabricator.services.mozilla.com/D26098
--HG--
extra : moz-landing-system : lando
2019-04-04 20:12:23 +00:00
Gerald Squelart
7fca0d0d21
Bug 1429613 - Variadic Variant::match, takes one function object per option - r=froydnj
...
Differential Revision: https://phabricator.services.mozilla.com/D24890
--HG--
extra : moz-landing-system : lando
2019-04-02 11:53:51 +00:00
Gerald Squelart
e2d15a1cfb
Bug 1429613 - Variant matcher callbacks renamed from `match` to `operator()` - r=froydnj
...
Mechanical change from Matcher::match(...) to Matcher::operator()(...).
This will now permit the use of generic lambdas, and facilitate the
implementation of multi-lambda match.
Differential Revision: https://phabricator.services.mozilla.com/D24889
--HG--
extra : moz-landing-system : lando
2019-04-02 11:53:47 +00:00
Ehsan Akhgari
e5e885ae31
Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
...
# ignore-this-changeset
--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Sylvestre Ledru
265e672179
Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
...
# ignore-this-changeset
--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Emilio Cobos Álvarez
1e9c395548
Bug 1466168: Remove mozilla::Forward in favor of std::forward. r=froydnj
...
Same approach as the other bug, mostly replacing automatically by removing
'using mozilla::Forward;' and then:
s/mozilla::Forward/std::forward/
s/Forward</std::forward</
The only file that required manual fixup was TestTreeTraversal.cpp, which had
a class called TestNodeForward with template parameters :)
MozReview-Commit-ID: A88qFG5AccP
2018-06-02 09:33:26 +02:00
Emilio Cobos Álvarez
fffb25b74f
Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
...
This was done automatically replacing:
s/mozilla::Move/std::move/
s/ Move(/ std::move(/
s/(Move(/(std::move(/
Removing the 'using mozilla::Move;' lines.
And then with a few manual fixups, see the bug for the split series..
MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Jeff Hajewski
447dee122f
Add IPC support for mozilla::Variant (bug 1371846); r=botond
...
Changes made:
* Add IPC::ParamTraits as a friend to mozilla::Variant in Variant.h.
This is required so that `tag` can be accessed in the
IPC::ParamTraits specialization.
* Add a IPC::ParamTraits specialization to IPCMessageUtils.h.
MozReview-Commit-ID: B3pGrZE1z0O
--HG--
extra : rebase_source : cb73873b87401846f79e124249c7ce00dff2de77
2017-07-21 07:18:02 -05:00
Gerald Squelart
a7c6eed190
Bug 1338389 - VariantType<T> and VariantIndex<N> permit unambiguous and variadic Variant construction - r=froydnj
...
MozReview-Commit-ID: 3rDya9ZBG6Y
--HG--
extra : rebase_source : d59375a7c805d6d470f5074669f3db5a609eb518
2017-05-08 11:26:07 +12:00
Gerald Squelart
78bc93af40
Bug 1338389 - Allow repeated Variant types, but prevent is/as/extract<T> for them - r=froydnj
...
MozReview-Commit-ID: 1yEUuGsht8k
--HG--
extra : rebase_source : fed56f264821e87cc474e6686e6dc203c147ac9b
2017-05-10 15:49:38 +12:00
Gerald Squelart
6015fbb5ac
Bug 1338389 - Index-based Variant::is<N>, as<N>, and extract<N> - r=froydnj
...
MozReview-Commit-ID: C5iga0Eb1tH
--HG--
extra : rebase_source : d88cf614318cc8544d7ab52315e015a7ca4e5efd
2017-05-08 11:09:21 +12:00
Gerald Squelart
6f9c60dc02
Bug 1365802 - In VariantImplementation::moveConstruct, move the aRhs rvalue to the next moveConstruct - r=froydnj
...
Without the Move(), a temporary copy is created and passed as rvalue.
MozReview-Commit-ID: B3MXz6yzO39
--HG--
extra : rebase_source : 897493da0dfac983449da3853fe60bd6ac93117b
2017-05-18 15:39:40 +12:00
Jeff Walden
8f8272ae04
Bug 1339555 - Make various operator-news into a known-non-null pointer use a ::operator new overload that odesn't null-check. r=froydnj
...
--HG--
extra : rebase_source : cad3ffa778db607bb2ccee2ac42671e60d3c8160
2017-02-14 11:23:18 -08:00
Jeff Walden
d7372e37d9
Bug 1338374 - Use alignas/alignof to define Variant's internal raw storage. r=froydnj
...
--HG--
extra : rebase_source : a75613ba7c17ceccf20e6f096a118bfedfa1eb15
2017-01-30 15:56:05 -08:00
James Cheng
642927f52b
Bug 1329334 - Variant::as<> should use MOZ_RELEASE_ASSERT. r=froydnj
...
MozReview-Commit-ID: E95959RYm2r
--HG--
extra : rebase_source : 774fcf05c3e6baf080a0e74358e7441242465bb4
2017-01-10 14:24:49 +08:00
James Cheng
c627faaa2b
Bug 1319673 - Make it compile error when instantiate a Variant with duplicate type. r=Tomcat,Waldo
...
MozReview-Commit-ID: IKoLU2FjtzA
--HG--
extra : rebase_source : dcf3ff852af5a985c6c77dcfb1e2a901e92fb869
2016-11-23 15:12:50 +08:00
James Cheng
c100bc54ce
Bug 1319016 - Part2 - Make IsVariant class use IntegralConstant as true false type. r=froydnj
...
MozReview-Commit-ID: G4ohbnUy049
--HG--
extra : rebase_source : 2c20783fe3556ecd0cc04ec1b37b002d044a4e06
2016-11-21 14:28:49 +08:00
Jeff Walden
efea1b6545
Bug 1287243 - Optimize the type used to store Variant's tag. r=fitzgen
...
--HG--
extra : rebase_source : c7c6fd63ea50330958ef794dc28cc8890ef59bbe
2016-07-16 02:31:45 -07:00
Terrence Cole
1fe18b25cf
Bug 1232686 - Use decltype to infer Variant::match return type; r=fitzgen
...
--HG--
extra : rebase_source : 38f280cc3014b2285a79e377f1fa8edf4c5f4661
2015-12-15 07:45:22 -08:00
Michael Layzell
09a0151088
Bug 1209227 - Part 2: Mark mfbt::Variant as MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS, r=froydnj
2016-05-19 09:34:01 -04:00
Carsten "Tomcat" Book
558930f4e9
Backed out changeset e673dbc9848f (bug 1232686) for breaking VS2013 Builds
2016-04-16 10:57:53 +02:00
Terrence Cole
2177cca5cd
Bug 1232686 - Use decltype to infer Variant::match return type; r=fitzgen
2015-12-15 07:45:22 -08:00
Nick Fitzgerald
3508cf5f6a
Bug 1254565 - Allow passing matchers as rvalues to Variant::match. r=froydnj
...
--HG--
extra : rebase_source : 9863e7cde9ff918af22de94ca7ec29988c154bbd
2016-03-10 13:35:00 -05:00
Seth Fowler
57081a13af
Bug 1250666 - Forward Variant's move constructor argument correctly to the underlying variant type. r=waldo
2016-02-26 21:01:49 -08:00
Seth Fowler
27ae3900e1
Bug 1246841 - Allow construction of Variant values using type inference. r=waldo
...
--HG--
extra : rebase_source : 7d596149e6d3c630d62aab0d65d5a826af731bf5
2016-02-25 14:34:12 -08:00
Seth Fowler
4052eca615
Bug 1246838 - Handle const qualifiers and references better in Variant. r=waldo
...
--HG--
extra : rebase_source : 4dc9df6cb5ea9b994c5074b505471101746def83
2016-02-25 14:34:12 -08:00
Nick Fitzgerald
26eaf483ae
Bug 1186693 - Add exhaustive matching to mozilla::Variant; r=Waldo
2015-08-08 16:43:35 -07:00
Nick Fitzgerald
a23f223b5f
Bug 1186650 - Do not mark mozilla::Variant copy and move constructors as explicit. r=Waldo
2015-07-22 14:49:00 -04:00
Nick Fitzgerald
bdd6b06c87
Bug 1184839 - Provide an overloaded == operator for mozilla::Variant; r=Waldo
2015-07-19 16:32:00 +02:00
Nick Fitzgerald
474c4d36e3
Bug 1174906 - Add a mozilla::Variant<T1, T2, ...> template class; r=Waldo
2015-06-30 10:01:00 -07:00