From 967be9e750221ab2ab783f95df79bb26d290a45e Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:07:58 +0200 Subject: add: added projects --- tiger-compiler/lib/misc/list.hxx | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tiger-compiler/lib/misc/list.hxx (limited to 'tiger-compiler/lib/misc/list.hxx') diff --git a/tiger-compiler/lib/misc/list.hxx b/tiger-compiler/lib/misc/list.hxx new file mode 100644 index 0000000..63d7f0d --- /dev/null +++ b/tiger-compiler/lib/misc/list.hxx @@ -0,0 +1,43 @@ +/** + ** \file misc/list.hh + ** \brief Implementation of misc::list + */ + +#pragma once + +#include + +namespace misc::list +{ + template inline vector cons(const T head, const vector& tail) + { + vector res; + + res.emplace_back(head); + res.append(tail); + + return res; + } + + template inline std::pair> snoc(const vector& v) + { + precondition(v.size() > 0); + + T head = v[0]; + vector tail(v.begin() + 1, v.end()); + + return {head, tail}; + } + + template + inline std::array decompose(const vector& v) + { + precondition(v.size() == Size_); + + std::array res; + std::copy(v.begin(), v.end(), res.begin()); + + return res; + } + +} // namespace misc::list -- cgit v1.2.3