wrapit icon indicating copy to clipboard operation
wrapit copied to clipboard

Need to support templated base classes

Open peremato opened this issue 2 years ago • 2 comments

I encountered two cases of a class inheriting from a templated base class that is blocking the progress in Geant4.jl.

  • Class G4[U]Box inherits from G4UAdapter<vecgeom::UnplacedBox> and this one inherits from public G4VSolid, protected UnplacedVolume_t. It is needed that we can use instances of G4Box in function arguments expecting G4VSolid*.
  • Class HepGeom::Point3D<double> does not wrap any constructor. I get the following error:
    [ Info: Precompiling Geant4 [559df036-b7a0-42fd-85df-7d5dd9d70f44]
    C++ exception while wrapping module Geant4: No appropriate factory for type N7HepGeom7Point3DIdEE
    ERROR: LoadError: No appropriate factory for type N7HepGeom7Point3DIdEE
    
    The class is defined as template<class T> class Point3D : public BasicVector3D<T> {};

To reproduce the last error the following config file will do it:

include_dirs        = [ "/cvmfs/sft.cern.ch/lcg/views/LCG_102/x86_64-centos7-gcc11-opt/include" ]

input               = [ "CLHEP/Geometry/Transform3D.h",
                        "CLHEP/Geometry/Point3D.h",
                      ]

peremato avatar Jan 27 '23 08:01 peremato

Hello Pere,

I was not able to reproduce the issue with HepGeom::Point3D<double>. I will add the support for inheritance from templated class.

Philippe.

grasph avatar Feb 01 '23 08:02 grasph

I' ve used https://gitlab.kitware.com/autopybind11/autopybind11 to generate some template based code. Would it be easier to reuse some code from there to generate for julia instead?

xgdgsc avatar Jul 29 '23 07:07 xgdgsc