1. 18 Sep, 2017 2 commits
  2. 30 Aug, 2017 2 commits
  3. 02 Aug, 2017 2 commits
  4. 16 Mar, 2017 4 commits
  5. 15 Dec, 2016 2 commits
  6. 25 Nov, 2016 1 commit
  7. 24 Nov, 2016 1 commit
  8. 08 Nov, 2016 1 commit
  9. 18 Oct, 2016 2 commits
  10. 12 Oct, 2016 2 commits
  11. 24 Sep, 2016 1 commit
  12. 25 Aug, 2016 1 commit
  13. 16 Aug, 2016 1 commit
  14. 09 Aug, 2016 2 commits
  15. 13 Jul, 2016 1 commit
    • Steffen Müthing's avatar
      Merge branch 'feature/no-variable-templates' into 'master' · 8f04a97e
      Steffen Müthing authored
      Feature/no variable templates
      Due to the introduction of the variable template `staticDegree<N>` the master of `dune-typetree` does no longer compile with gcc-4.9 and hence you cannot use `dune-typetree` and thus `dune-functions` on debian stable. This merge request removed this variable template and uses `StaticDegree<N>::value` instead. As far as I can see the latter does not have any disadvantage despite being slightly more verbose. However, in this case the difference is rather small, such that using this new feature does hardy give any benefit but excludes many users.
      With this merge request the modules `dune-typetree` and `dune-functions` and their tests compile and run successfully with gcc-4.9.
      See merge request !13
  16. 04 Jul, 2016 2 commits
    • Carsten Gräser's avatar
      Remove staticDegree<N> · a2179d6c
      Carsten Gräser authored
      By removing this variable template the code compiles
      with gcc-4.9 and thus (hopefully) with debian stable
      again. Notice that, despite beeing slightly more verbose,
      this has no disadvantage.
    • Carsten Gräser's avatar
      Avoid using variable template · d196c372
      Carsten Gräser authored
      Use StaticDegree<N>::value instead of staticDegree<N>.
  17. 15 Jun, 2016 1 commit
  18. 05 Jun, 2016 2 commits
  19. 19 May, 2016 9 commits
    • Steffen Müthing's avatar
      [bugfix] fix compiler warning · 568df5e2
      Steffen Müthing authored
    • Steffen Müthing's avatar
    • Steffen Müthing's avatar
      Merge branch 'feature/reimplement-child-storage-extraction' into 'master' · 885b906e
      Steffen Müthing authored
      Reimplement child storage extraction
      During the re-write of the child extraction code, we lost the ability to extract the storage of a child. This merge requests adds that functionality again.
      See merge request !11
    • Steffen Müthing's avatar
      [child extraction] add childStorage() function to directly access the storage of a child · b37d0431
      Steffen Müthing authored
      In some contexts, we actually have to access the underlying storage of a
      node's children (e.g. for proxy nodes). It is important to *not* use
      `child()` in this situation, as the child might have been allocated on
      the head (e.g. as part of a tree transformation) and thus might
      disappear when its parent goes out of scope or is otherwise destroyed.
      This patch adds a new function `childStorage()` that works just like
      `child()`, but returns the storage (usually a `std::shared_ptr`) of the
      child instead. It will fail if the child path is of length zero and the
      passed-in object is not pointer-like. If it is pointer-like, the
      algorithm assumes that the pointer represents the storage of the root
      node and will just return that object.
    • Steffen Müthing's avatar
      Merge branch 'feature/freestanding-degree-and-tag-functions' into 'master' · 7cf76948
      Steffen Müthing authored
      Add freestanding degree and tag functions
      This merge requests does two things:
      * Freestanding meta functions for accessing the `NodeTag` and
        `ImplementationTag`, which are called just like the tag that they
        extract. Just replace `typename Node::NodeTag` with `NodeTag<Node>`.
        This gets rid of a `typename` and improves readability as well as
        extensibility. The merge requests also switches all internal uses of
        those tags to the new meta functions.
      * More importantly, it gets rid of the horrible node member `CHILDREN`.
        This is actually a leftover from TypeTree's predecessor. The new
        canonical way of accessing the degree of a node is either:
        * If you have a node instance lying around and only need the run time
          information, you can simply write `TypeTree::degree(node)`. At the
          moment, the degree of all nodes is fixed at compile time, but this
          might change in the future.
        * If you need compile time information, you can use the new variable
          template `TypeTree::staticDegree<Node>`. This expression directly
          evaluates to the actual number. If you are instead interested in a
          type, you can use `TypeTree::StaticDegree<Node>` to obtain a
        Internally, the default implementation forwards to a static member
        function `Node::degree()`, but this can be changed by overloading the
        dispatch mechanism on the node tag.
      * All internal uses of `Node::CHILDREN` have been replaced by calls to
        the new (meta) function.
      * `Node::CHILDREN` is **deprecated** and will be removed after the
        release of TypeTree 3.0.
      See merge request !10
    • Steffen Müthing's avatar
    • Steffen Müthing's avatar
    • Steffen Müthing's avatar
      [Interface] Add freestanding functions for node degree · 2a1f33b9
      Steffen Müthing authored
      This patch introduces two new functions to obtain the degree of a tree
      degree(node) is a normal, freestanding function that will in theory even
      work for nodes where the number of children is determined at run time.
      StaticDegree<Node> and staticDegree<Node> obtain the degree as a compile
      time constant and are thus only usable for nodes where the degree is
      fixed at compile time. staticDegree<Node> is a variable template and
      thus creates a hard dependency on C++14.
      Internally, both functions dispatch to the following function signature:
      template<typename Node, typename NodeTag>
      constexpr std::size_t degree(const Node* node, NodeTag nodeTag);
      Note that this signature uses a pointer to the node; this is necessary
      to make it usable in the constexpr context, where the node parameter has
      to be constexpr - manufacturing a constexpr reference is not possible in
      The default implementation of this function calls the static member
      function Node::degree(). If your node implementation requires different
      behavior, you can provide an overload for your custom node tag that will
      be found via ADL. staticDegree<Node> will only work if this function is
      constexpr (it is thus important to make Node::degree() constexpr in your
      implementation iff the degree is a compile time constant).
    • Steffen Müthing's avatar
      [Interface] Add freestanding type aliases for node tags · b185f2f0
      Steffen Müthing authored
      This patch adds freestanding template aliases NodeTag<Node> and
      ImplementationTag<Node>. This improves readability and allows a future
      extension to nodes that do not carry the nested tag types (by
      introducing an intermediate dispatch mechanism). But for now, it's just
      about readability...
  20. 01 Apr, 2016 1 commit