mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-27 16:16:16 +02:00
9121fed4b4
Types converted: - `NixStringContextElem` - `OutputsSpec` - `ExtendedOutputsSpec` - `DerivationOutput` - `DerivationType` Existing ones mostly conforming the pattern cleaned up: - `ContentAddressMethod` - `ContentAddressWithReferences` The `DerivationGoal::derivationType` field had a bogus initialization, now caught, so I made it `std::optional`. I think #8829 can make it non-optional again because it will ensure we always have the derivation when we construct a `DerivationGoal`. See that issue (#7479) for details on the general goal. `git grep 'Raw::Raw'` indicates the two types I didn't yet convert `DerivedPath` and `BuiltPath` (and their `Single` variants) . This is because @roberth and I (can't find issue right now...) plan on reworking them somewhat, so I didn't want to churn them more just yet. Co-authored-by: Eelco Dolstra <edolstra@gmail.com>
30 lines
859 B
C++
30 lines
859 B
C++
#pragma once
|
|
///@file
|
|
|
|
// not used, but will be used by callers
|
|
#include <variant>
|
|
|
|
/**
|
|
* Force the default versions of all constructors (copy, move, copy
|
|
* assignment).
|
|
*/
|
|
#define FORCE_DEFAULT_CONSTRUCTORS(CLASS_NAME) \
|
|
CLASS_NAME(const CLASS_NAME &) = default; \
|
|
CLASS_NAME(CLASS_NAME &) = default; \
|
|
CLASS_NAME(CLASS_NAME &&) = default; \
|
|
\
|
|
CLASS_NAME & operator =(const CLASS_NAME &) = default; \
|
|
CLASS_NAME & operator =(CLASS_NAME &) = default;
|
|
|
|
/**
|
|
* Make a wrapper constructor. All args are forwarded to the
|
|
* construction of the "raw" field. (Which we assume is the only one.)
|
|
*
|
|
* The moral equivalent of `using Raw::Raw;`
|
|
*/
|
|
#define MAKE_WRAPPER_CONSTRUCTOR(CLASS_NAME) \
|
|
FORCE_DEFAULT_CONSTRUCTORS(CLASS_NAME) \
|
|
\
|
|
CLASS_NAME(auto &&... arg) \
|
|
: raw(std::forward<decltype(arg)>(arg)...) \
|
|
{ }
|