1. 05 Oct, 2017 3 commits
  2. 23 Sep, 2017 2 commits
  3. 20 Sep, 2017 1 commit
  4. 19 Sep, 2017 12 commits
  5. 18 Sep, 2017 2 commits
    • Carsten Gräser's avatar
      [doc] Document deprecation of returning references · 9a4af40e
      Carsten Gräser authored
      The deprecation tag in doxygen is here to warn users. We cannot
      mark the method as deprecated directly, because only the return
      type will change.
      9a4af40e
    • Carsten Gräser's avatar
      [bugfix] Restore reference semantics of ReferenceElement methods · d97fc1b5
      Carsten Gräser authored
      By using decltype(auto) we forward references of the
      implementation as references. This reverts the interface
      change introduced in !52 in case the implementation returns
      references. As a consequence the all tests in dune-localfunctions
      pass again.
      
      For (possible) implementations returning values these will
      also be forwarded. In the future (after a grace period of
      one release), this should be switched to references completely
      as proposed in !52.
      d97fc1b5
  6. 08 Sep, 2017 5 commits
  7. 30 Aug, 2017 2 commits
  8. 29 Aug, 2017 2 commits
  9. 28 Aug, 2017 2 commits
    • Steffen Müthing's avatar
      Merge branch 'feature/rework-referenceelement-interface' into 'master' · f23201c7
      Steffen Müthing authored
      Rework ReferenceElement interface
      
      This merge request switches the reference elements to value semantics
      and adds a freestanding function `referenceElement()` to get reference
      elements for arbitrary objects supporting the operation.
      
      This whole thing started as the dune-geometry side of implementing
      core/dune-grid#65, but ballooned just a little ;-). As pointed out in
      that issue, having this type of function will also allow for reference
      elements that are not provided as singletons, so we really need value
      semantics for the returned object. At the same time, these transitions
      from `const ref` to `value` have bitten us in the past with hard-to-find
      errors, so we should try and have a clean transition with deprecation
      warnings for the user. That's what this merge request tries to do.
      
      From the user's point of view, it introduces the following changes:
      - Reference elements and the container
        `Dune::ReferenceElements<ctype,dim>` now export the coordinate field
        type, the coordinate type and the dimension. The container also
        exports the type of the reference element as a nested type
        `ReferenceElement`.
      - Reference elements now have value semantics and should be captured by
        value, copied around etc.
      - As they have value semantics, everything returned by a reference
        element now **also has value semantics**.
      - If you try to assign a reference element to
        `const Dune::ReferenceElement<ctype,dim>&`, you get a deprecation
        warning.
      - There is now a set of freestanding functions `referenceElement(...)`
        that allow for the following calls (note that in general, the function
        will be found using ADL, but in the first two of the following
        variants, that doesn't work due to the explicit template arguments):
          - `auto ref_el = Dune::referenceElement<ctype,dim>(geometryType);`
          - `auto ref_el = Dune::referenceElement<ctype>(geometryType,Dune::Dim<dim>());`
          - `auto ref_el = referenceElement(ctype(),geometryType,Dune::Dim<dim>());`
      - With corresponding changes in dune-grid, you can also get the
        reference element for a geometry by calling
        `referenceElement(geometry)`.
      - `Dune::ReferenceElement<T...>` will become a meta function to obtain
        the return type of the corresponding call to `referenceElement(t...)`.
        In DUNE 2.6, this only works for a single argument, as we have to
        maintain backwards compatibility to the old signature
        `Dune::ReferenceElement<ctype,dim>`.
      - Any usage of `Dune::ReferenceElement<ctype,dim>` is flagged as
        deprecated in DUNE 2.6.
      - The multi-argument version of `Dune::ReferenceElement<T...>` is
        available as `Dune::Transitional::ReferenceElement<T...>` in DUNE 2.6.
        This version will move to the main `Dune` namespace for the next
        release after 2.6.
      
      As a consequence of the changed semantics of `Dune::ReferenceElement`,
      the merge request moves all of the reference element implementation and
      the new value-based interface class to the nested namespace `Dune::Geo`,
      as `Dune::Geometry` is blocked by the interface class in dune-grid.
      Interestingly, I noticed that there were already freestanding functions
      `referenceElement(geo)` for the geometry implementations in
      dune-geometry, but not for the interface class in dune-grid. As these
      functions returned `const ReferenceElement&`, I changed them to return
      by value.
      
      The new interface class `Dune::Geo::ReferenceElement<Impl>` works like a
      simple handle class and just stores a raw const pointer to an
      implementation object that it assumes to be a singleton for the purposes
      of equality comparisons. It should also work for other simple singleton
      implementations. The old reference element class was renamed to
      `Dune::Geo::ReferenceElementImplementation` and is now considered an
      implementation detail (it also doesn't show up in Doxygen anymore). The
      deprecation mechanism relies on a derived helper class of the new
      interface and can be easily removed by reverting a single commit,
      although `Dune::ReferenceElement` will require some additional work.
      
      The merge request also adapts (hopefully) all of dune-geometry to the
      new semantics and interfaces, but most of the changes will have to
      happen in downstream modules
      
      See merge request !52
      f23201c7
    • Jö Fahlke's avatar
      Merge branch 'feature/arbitrary-virtual-refinement' into 'master' · 2818c11f
      Jö Fahlke authored
      Feature/arbitrary virtual refinement
      
      See merge request !51
      2818c11f
  10. 23 Aug, 2017 3 commits
  11. 22 Aug, 2017 1 commit
  12. 21 Aug, 2017 4 commits
  13. 18 Aug, 2017 1 commit
    • Steffen Müthing's avatar
      [GeometryType] Deprecate make...() methods · 69ce3b50
      Steffen Müthing authored
      After merging !54 (constexpr GeometryType), which provides prototypes
      for all GeometryTypes in namespace Dune::GeomtryTypes, these methods
      aren't really needed anymore. Moreover, they were always a little
      awkward to use. So let's get rid of them.
      69ce3b50