Skip to content
  • Carsten Gräser's avatar
    Cleanup makeBasis() mechanism · 29094a6b
    Carsten Gräser authored
    * Rename `*NodeFactorsBuilder` to `*PreBasisFactory`
    * Rename `*FactoryTag` to `*PreBasisFactory`
    * Rename `build()` to `makePreBasis()`
    * Make `makePreBasis()` `const`
    * Make implementation of `BasisBuilder::composite()` more readable.
    * Fix `BasisBuilder::composite()` and `BasisBuilder::power()`.
      Both did not store the `ChildPreBasisFactory` objects
      but recreated them using default-construction during
      `build()`. This prevented stateful `ChildPreBasisFactory`
      implementations. Now the passed `ChildPreBasisFactory`
      objects are now stored and used during `makePreBasis()`
      such that stateful `PreBasisFactories` should work.
    * Hide internal members of `PreBasisFactories`
    * Use return type deduction for all `PreBasisFactory`
      creation helpers. This makes the code much more readable
      and also hides the concrete `Imp::*` return type
      from the use.
    * Add utility `applyPartial()` which is like `std::apply`
      but allows to select the tuple entries to be used as arguments
    
    This is what you need to do to update your code:
    * If you only use the `makeBasis()` mechanism this will
      work as before.
    * If you explicitly constructed the `*Builder` classes in your code,
      you must follow the renaming.
    * If you explicitly used the `build()` methods, you have to
      change this to `makePreBasis()`
    * If you implemented your own `FactoryTag`/`NodeFactoryBuilder`/`PreBasisFactory`
      to hook into the `makeBasis()` mechanism, then you have to
      rename `build()` to `makePreBasis()`.
    29094a6b