From a18c114cecc28c628afcca3e6489b53cf1b24a3a Mon Sep 17 00:00:00 2001 From: Brett Laptop Date: Sun, 2 Jun 2024 21:27:00 -0400 Subject: [PATCH] running into type system issues again --- CMakeLists.txt | 4 +-- include/blt/gp/fwdecl.h | 27 ++++++++++++++++ include/blt/gp/program.h | 67 ++++++++++++++++++++++++++++++++++++++++ src/program.cpp | 23 ++++++++++++++ 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 include/blt/gp/fwdecl.h create mode 100644 include/blt/gp/program.h create mode 100644 src/program.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index bb12412..bcf5b9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.28) -project(blt-gp VERSION 0.0.3) +cmake_minimum_required(VERSION 3.25) +project(blt-gp VERSION 0.0.4) option(ENABLE_ADDRSAN "Enable the address sanitizer" OFF) option(ENABLE_UBSAN "Enable the ub sanitizer" OFF) diff --git a/include/blt/gp/fwdecl.h b/include/blt/gp/fwdecl.h new file mode 100644 index 0000000..93effe3 --- /dev/null +++ b/include/blt/gp/fwdecl.h @@ -0,0 +1,27 @@ +#pragma once +/* + * Copyright (C) 2024 Brett Terpstra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef BLT_GP_FWDECL_H +#define BLT_GP_FWDECL_H + +namespace blt::gp +{ + class identifier; +} + +#endif //BLT_GP_FWDECL_H diff --git a/include/blt/gp/program.h b/include/blt/gp/program.h new file mode 100644 index 0000000..b19a492 --- /dev/null +++ b/include/blt/gp/program.h @@ -0,0 +1,67 @@ +#pragma once +/* + * Copyright (C) 2024 Brett Terpstra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef BLT_GP_PROGRAM_H +#define BLT_GP_PROGRAM_H + +#include +#include +#include +#include + +namespace blt::gp +{ + class identifier + { + }; + + template + class operation + { + public: + using function_t = std::function)>; + + operation(const operation& copy) = default; + + operation(operation&& move) = default; + + template + explicit operation(const T& functor) + { + if constexpr (std::is_same_v) + { + func = functor; + } else + { + func = [&functor](blt::span args) { + return functor(args); + }; + } + } + + explicit operation(function_t&& functor): func(std::move(functor)) + {} + + private: + function_t func; + }; + + +} + +#endif //BLT_GP_PROGRAM_H diff --git a/src/program.cpp b/src/program.cpp new file mode 100644 index 0000000..3d821da --- /dev/null +++ b/src/program.cpp @@ -0,0 +1,23 @@ +/* + * + * Copyright (C) 2024 Brett Terpstra + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include + +namespace blt::gp +{ + +} \ No newline at end of file