From b3b296407544e3b53b30cb14224d23474140c38b Mon Sep 17 00:00:00 2001 From: Jordan08 Date: Sat, 19 Sep 2026 13:37:36 +0200 Subject: [PATCH] Fix missing override, class/struct mismatch and hidden overloads --- src/core/actions/codac2_OctaSym.h | 4 +-- src/core/contractors/codac2_CtcDist.h | 3 +- src/core/contractors/codac2_CtcPolar.h | 3 +- src/core/contractors/codac2_CtcProj.h | 3 +- src/core/domains/tube/codac2_Slice.h | 4 +-- src/core/domains/tube/codac2_SlicedTube.h | 15 +++++---- .../functions/analytic/codac2_AnalyticExpr.h | 16 +++++----- .../analytic/codac2_analytic_constants.h | 14 ++++---- src/core/operators/codac2_component.h | 32 +++++++++---------- src/core/peibos/codac2_peibos.h | 4 +-- src/core/tools/codac2_TypeInfo.h | 2 ++ src/core/trajectory/codac2_SampledTraj.h | 3 +- src/core/trajectory/codac2_TrajBase.h | 4 ++- src/core/trajectory/codac2_TrajBase_impl.h | 1 + 14 files changed, 59 insertions(+), 49 deletions(-) diff --git a/src/core/actions/codac2_OctaSym.h b/src/core/actions/codac2_OctaSym.h index 81cdb1d7c..db0bd840f 100644 --- a/src/core/actions/codac2_OctaSym.h +++ b/src/core/actions/codac2_OctaSym.h @@ -23,7 +23,7 @@ namespace codac2 class SepBase; class SepAction; class SetExpr; - class OctaSymOp; + struct OctaSymOp; /** * \class Action @@ -168,4 +168,4 @@ namespace codac2 return str; } }; -} \ No newline at end of file +} diff --git a/src/core/contractors/codac2_CtcDist.h b/src/core/contractors/codac2_CtcDist.h index 6a55e6820..9ee1fc55e 100644 --- a/src/core/contractors/codac2_CtcDist.h +++ b/src/core/contractors/codac2_CtcDist.h @@ -37,6 +37,7 @@ namespace codac2 */ CtcDist(); + using CtcBase::contract; /** * \brief Applies \f$\mathcal{C}_{\textrm{dist}}\big([\mathbf{x}]\big)\f$. * @@ -55,4 +56,4 @@ namespace codac2 */ void contract(Interval& a1, Interval& a2, Interval& b1, Interval& b2, Interval& d) const; }; -} \ No newline at end of file +} diff --git a/src/core/contractors/codac2_CtcPolar.h b/src/core/contractors/codac2_CtcPolar.h index 23f3f704c..6bc78549d 100644 --- a/src/core/contractors/codac2_CtcPolar.h +++ b/src/core/contractors/codac2_CtcPolar.h @@ -42,6 +42,7 @@ namespace codac2 : Ctc(4) { } + using CtcBase::contract; /** * \brief Applies \f$\mathcal{C}_{\textrm{polar}}\big([\mathbf{x}]\big)\f$. * @@ -59,4 +60,4 @@ namespace codac2 */ void contract(Interval& x, Interval& y, Interval& rho, Interval& theta) const; }; -} \ No newline at end of file +} diff --git a/src/core/contractors/codac2_CtcProj.h b/src/core/contractors/codac2_CtcProj.h index 20fc5c91d..88b89c2e1 100644 --- a/src/core/contractors/codac2_CtcProj.h +++ b/src/core/contractors/codac2_CtcProj.h @@ -39,7 +39,8 @@ namespace codac2 assert_release(size_of(c) >= (Index)_xi.size() && "cannot compute a projection of a set into a superset"); assert_release(default_eps > 0.); } - + + using CtcBase::contract; void contract(IntervalVector& x) const; void contract(IntervalVector& x, double eps) const; diff --git a/src/core/domains/tube/codac2_Slice.h b/src/core/domains/tube/codac2_Slice.h index 4d74f0389..29c6af000 100644 --- a/src/core/domains/tube/codac2_Slice.h +++ b/src/core/domains/tube/codac2_Slice.h @@ -295,7 +295,7 @@ namespace codac2 * * No propagation is performed on adjacent slices. */ - inline void init() + inline void init() override { this->T::init(); // Nothing to propagate to adjacent codomains @@ -306,7 +306,7 @@ namespace codac2 * * Adjacent gates are updated accordingly. */ - inline void set_empty() + inline void set_empty() override { set_empty(true); } diff --git a/src/core/domains/tube/codac2_SlicedTube.h b/src/core/domains/tube/codac2_SlicedTube.h index f8dca4c91..dd075a492 100644 --- a/src/core/domains/tube/codac2_SlicedTube.h +++ b/src/core/domains/tube/codac2_SlicedTube.h @@ -382,7 +382,7 @@ namespace codac2 { return eval_common(t, [this](auto it, const Interval& t_) { - return slice(it)->operator()(t_); + return this->slice(it)->operator()(t_); }); } @@ -398,7 +398,8 @@ namespace codac2 { return eval_common(t, [this,&v](auto it, const Interval& t_) { - return slice(it)->operator()(t_, *v.slice(it)); + return this->slice(it)->operator()(t_, *v.slice(it)); + }); } @@ -783,7 +784,7 @@ namespace codac2 { return invert_common(y, t, [this,&y](auto it, const Interval& t_) { - return slice(it)->invert(y, t_); + return this->slice(it)->invert(y, t_); }); } @@ -812,7 +813,7 @@ namespace codac2 { return invert_common_subsets(y, v_t, t, [this,&y](auto it, const Interval& t_) { - return slice(it)->invert(y, t_); + return this->slice(it)->invert(y, t_); }); } @@ -849,7 +850,7 @@ namespace codac2 { return invert_common(y, t, [this,&v,&y](auto it, const Interval& t_) { - return slice(it)->invert(y, *v.slice(it), t_); + return this->slice(it)->invert(y, *v.slice(it), t_); }); } @@ -886,7 +887,7 @@ namespace codac2 { return invert_common_subsets(y, v_t, t, [this,&v,&y](auto it, const Interval& t_) { - return slice(it)->invert(y, *v.slice(it), t_); + return this->slice(it)->invert(y, *v.slice(it), t_); }); } @@ -1265,4 +1266,4 @@ namespace codac2 } } -#include "codac2_SlicedTube_integral_impl.h" \ No newline at end of file +#include "codac2_SlicedTube_integral_impl.h" diff --git a/src/core/functions/analytic/codac2_AnalyticExpr.h b/src/core/functions/analytic/codac2_AnalyticExpr.h index 7de355569..3c8ebeb8b 100644 --- a/src/core/functions/analytic/codac2_AnalyticExpr.h +++ b/src/core/functions/analytic/codac2_AnalyticExpr.h @@ -76,17 +76,17 @@ namespace codac2 : OperationExprBase...>(e) { } - std::shared_ptr copy() const + std::shared_ptr copy() const override { return std::make_shared>(*this); } - void replace_arg(const ExprID& old_arg_id, const std::shared_ptr& new_expr) + void replace_arg(const ExprID& old_arg_id, const std::shared_ptr& new_expr) override { return OperationExprBase...>::replace_arg(old_arg_id, new_expr); } - Y fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const + Y fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const override { return std::apply( [this,&v,total_input_size,natural_eval](auto &&... x) @@ -102,7 +102,7 @@ namespace codac2 this->_x); } - void bwd_eval(ValuesMap& v) const + void bwd_eval(ValuesMap& v) const override { auto y = AnalyticExpr::value(v); @@ -117,7 +117,7 @@ namespace codac2 }, this->_x); } - virtual std::string str(bool in_parentheses = false) const + virtual std::string str(bool in_parentheses = false) const override { std::string s = std::apply([](auto &&... x) { return C::str(x...); @@ -125,12 +125,12 @@ namespace codac2 return in_parentheses ? "(" + s + ")" : s; } - virtual bool is_str_leaf() const + virtual bool is_str_leaf() const override { return false; } - std::pair output_shape() const + std::pair output_shape() const override { std::pair s; std::apply([&s](auto &&... x) @@ -140,7 +140,7 @@ namespace codac2 return s; } - virtual bool belongs_to_args_list(const FunctionArgsList& args) const + virtual bool belongs_to_args_list(const FunctionArgsList& args) const override { bool b = true; diff --git a/src/core/functions/analytic/codac2_analytic_constants.h b/src/core/functions/analytic/codac2_analytic_constants.h index ae446bfda..a447f2f5f 100644 --- a/src/core/functions/analytic/codac2_analytic_constants.h +++ b/src/core/functions/analytic/codac2_analytic_constants.h @@ -28,12 +28,12 @@ namespace codac2 return _x; } - std::shared_ptr copy() const + std::shared_ptr copy() const override { return std::make_shared>(*this); } - T fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const + T fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const override { if(natural_eval) return AnalyticExpr::init_value(v, T( @@ -55,12 +55,12 @@ namespace codac2 )); } - void bwd_eval(ValuesMap& v) const + void bwd_eval(ValuesMap& v) const override { AnalyticExpr::value(v).a &= _x; } - std::pair output_shape() const + std::pair output_shape() const override { if constexpr(std::is_same_v) return {1,1}; @@ -74,17 +74,17 @@ namespace codac2 assert_release_constexpr(false && "unknow output shape for constant"); } - void replace_arg([[maybe_unused]] const ExprID& old_arg_id, [[maybe_unused]] const std::shared_ptr& new_expr) + void replace_arg([[maybe_unused]] const ExprID& old_arg_id, [[maybe_unused]] const std::shared_ptr& new_expr) override { } - virtual bool belongs_to_args_list([[maybe_unused]] const FunctionArgsList& args) const + virtual bool belongs_to_args_list([[maybe_unused]] const FunctionArgsList& args) const override { return true; } virtual std::string str(bool in_parentheses = false) const override; - virtual bool is_str_leaf() const + virtual bool is_str_leaf() const override { return true; } diff --git a/src/core/operators/codac2_component.h b/src/core/operators/codac2_component.h index 16ce50dcc..5558209b0 100644 --- a/src/core/operators/codac2_component.h +++ b/src/core/operators/codac2_component.h @@ -71,17 +71,17 @@ namespace codac2 : OperationExprBase>(e), _i(e._i) { } - std::shared_ptr copy() const + std::shared_ptr copy() const override { return std::make_shared>(*this); } - void replace_arg(const ExprID& old_arg_id, const std::shared_ptr& new_expr) + void replace_arg(const ExprID& old_arg_id, const std::shared_ptr& new_expr) override { return OperationExprBase>::replace_arg(old_arg_id, new_expr); } - ScalarType fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const + ScalarType fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const override { if(natural_eval) return AnalyticExpr::init_value( @@ -91,29 +91,29 @@ namespace codac2 v, ComponentOp::fwd_centered(std::get<0>(this->_x)->fwd_eval(v, total_input_size, natural_eval), _i)); } - void bwd_eval(ValuesMap& v) const + void bwd_eval(ValuesMap& v) const override { ComponentOp::bwd(AnalyticExpr::value(v).a, std::get<0>(this->_x)->value(v).a, _i); std::get<0>(this->_x)->bwd_eval(v); } - std::pair output_shape() const + std::pair output_shape() const override { return ComponentOp::output_shape(std::get<0>(this->_x),_i); } - virtual bool belongs_to_args_list(const FunctionArgsList& args) const + virtual bool belongs_to_args_list(const FunctionArgsList& args) const override { return std::get<0>(this->_x)->belongs_to_args_list(args); } - std::string str(bool in_parentheses = false) const + std::string str(bool in_parentheses = false) const override { std::string s = ComponentOp::str(std::get<0>(this->_x), _i); return in_parentheses ? "(" + s + ")" : s; } - virtual bool is_str_leaf() const + virtual bool is_str_leaf() const override { return true; } @@ -146,17 +146,17 @@ namespace codac2 : OperationExprBase>(e), _i(e._i), _j(e._j) { } - std::shared_ptr copy() const + std::shared_ptr copy() const override { return std::make_shared>(*this); } - void replace_arg(const ExprID& old_arg_id, const std::shared_ptr& new_expr) + void replace_arg(const ExprID& old_arg_id, const std::shared_ptr& new_expr) override { return OperationExprBase>::replace_arg(old_arg_id, new_expr); } - ScalarType fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const + ScalarType fwd_eval(ValuesMap& v, Index total_input_size, bool natural_eval) const override { if(natural_eval) return AnalyticExpr::init_value( @@ -166,29 +166,29 @@ namespace codac2 v, ComponentOp::fwd_centered(std::get<0>(this->_x)->fwd_eval(v, total_input_size, natural_eval), _i, _j)); } - void bwd_eval(ValuesMap& v) const + void bwd_eval(ValuesMap& v) const override { ComponentOp::bwd(AnalyticExpr::value(v).a, std::get<0>(this->_x)->value(v).a, _i, _j); std::get<0>(this->_x)->bwd_eval(v); } - std::pair output_shape() const + std::pair output_shape() const override { return ComponentOp::output_shape(std::get<0>(this->_x),_i,_j); } - virtual bool belongs_to_args_list(const FunctionArgsList& args) const + virtual bool belongs_to_args_list(const FunctionArgsList& args) const override { return std::get<0>(this->_x)->belongs_to_args_list(args); } - std::string str(bool in_parentheses = false) const + std::string str(bool in_parentheses = false) const override { std::string s = ComponentOp::str(std::get<0>(this->_x), _i, _j); return in_parentheses ? "(" + s + ")" : s; } - virtual bool is_str_leaf() const + virtual bool is_str_leaf() const override { return true; } diff --git a/src/core/peibos/codac2_peibos.h b/src/core/peibos/codac2_peibos.h index 840421bae..d486997cd 100644 --- a/src/core/peibos/codac2_peibos.h +++ b/src/core/peibos/codac2_peibos.h @@ -17,7 +17,7 @@ namespace codac2 { // Forward declarations to reduce compilation load caused by heavy template use: - class AnalyticTypeBase; + struct AnalyticTypeBase; template requires std::is_base_of_v @@ -65,4 +65,4 @@ namespace codac2 * \return A vector of Parallelepipeds enclosing \f$\mathbf{f}(\sigma(\psi_0([-1,1]^m))+ offset)\f$ for each symmetry \f$\sigma\f$ in the set of symmetries \f$\Sigma\f$. */ std::vector PEIBOS(const AnalyticFunction& f, const AnalyticFunction& psi_0, const std::vector& Sigma, double epsilon, const Vector& offset, bool verbose = false); -} \ No newline at end of file +} diff --git a/src/core/tools/codac2_TypeInfo.h b/src/core/tools/codac2_TypeInfo.h index 860c43474..977d94707 100644 --- a/src/core/tools/codac2_TypeInfo.h +++ b/src/core/tools/codac2_TypeInfo.h @@ -9,6 +9,8 @@ #pragma once +#include + namespace codac2 { template diff --git a/src/core/trajectory/codac2_SampledTraj.h b/src/core/trajectory/codac2_SampledTraj.h index 3aaaa0537..e230abdd2 100644 --- a/src/core/trajectory/codac2_SampledTraj.h +++ b/src/core/trajectory/codac2_SampledTraj.h @@ -280,6 +280,7 @@ namespace codac2 SampledTraj primitive() const { T s = [this]() { + (void)this; if constexpr(std::is_same_v) return 0.; else @@ -454,4 +455,4 @@ namespace codac2 } } -#include "codac2_TrajBase_impl.h" \ No newline at end of file +#include "codac2_TrajBase_impl.h" diff --git a/src/core/trajectory/codac2_TrajBase.h b/src/core/trajectory/codac2_TrajBase.h index 46e12f645..dba040afa 100644 --- a/src/core/trajectory/codac2_TrajBase.h +++ b/src/core/trajectory/codac2_TrajBase.h @@ -27,6 +27,8 @@ namespace codac2 TrajBase() { } + virtual ~TrajBase() = default; + virtual Index size() const = 0; virtual std::pair shape() const = 0; virtual bool is_empty() const = 0; @@ -43,4 +45,4 @@ namespace codac2 SampledTraj sampled_as(const SampledTraj& x) const; SampledTraj primitive(double dt) const; }; -} \ No newline at end of file +} diff --git a/src/core/trajectory/codac2_TrajBase_impl.h b/src/core/trajectory/codac2_TrajBase_impl.h index 50d123e78..483845d67 100644 --- a/src/core/trajectory/codac2_TrajBase_impl.h +++ b/src/core/trajectory/codac2_TrajBase_impl.h @@ -55,6 +55,7 @@ namespace codac2 assert_release(!is_empty()); T s = [this]() { + (void)this; if constexpr(std::is_same_v) return 0.; else