Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New header convention #2572

Draft
wants to merge 3 commits into
base: devel
Choose a base branch
from

Conversation

jorisv
Copy link
Contributor

@jorisv jorisv commented Feb 11, 2025

This PR is a POC about include convention.

Right now, there is include convention. This lead to some issues:

  • Code discrepancy
  • Cyclic include
  • LSP is not working well (since some includes are missing)
  • Big dependency chain (since they are probable unused include in most file)

Since Pinocchio is header only, we can't use the include what you use convention since it will create a lot of cycle.

In this PR we propose to change the include convention as the following:

  • Public headers: xxx.hpp
  • Private headers:
    • Definition: xxx-def.hxx
    • Declaration: xxx-decl.hxx
    • Explicit template instantiation: xxx-tpl.hxx

With the following rules:

  • Private header can't include anything
  • Public header can include private header

This should prevent cyclic include and with some .clangd trick will improve the LSP processing.

All is described in development/convention.md.

Constraints

  • Public API should be preserved
  • Authors should be preserved

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👋 Hi,
This is a reminder message to assign an extra build label to this Pull Request if needed.
By default, this PR will be build with minimal build options (URDF support and Python bindings)
The possible extra labels are:

  • build_collision (build Pinocchio with coal support)
  • build_casadi (build Pinocchio with CasADi support)
  • build_autodiff (build Pinocchio with CppAD support)
  • build_codegen (build Pinocchio with CppADCodeGen support)
  • build_extra (build Pinocchio with extra algorithms)
  • build_mpfr (build Pinocchio with Boost.Multiprecision support)
  • build_sdf (build Pinocchio with SDF parser)
  • build_accelerate (build Pinocchio with APPLE Accelerate framework support)
  • build_all (build Pinocchio with ALL the options stated above)

Thanks.
The Pinocchio development team.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant