Skip to content

Commit c095377

Browse files
Use customized smart_holder for disowning pointers
1 parent dbb4009 commit c095377

File tree

209 files changed

+1077
-1561
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

209 files changed

+1077
-1561
lines changed

.gitmodules

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[submodule "pybind11"]
22
path = pybind11
3-
url = https://github.com/pybind/pybind11
4-
branch = v2.6
3+
url = https://github.com/HaarigerHarald/pybind11
4+
branch = smart_holder

CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ find_package(Geant4 OPTIONAL_COMPONENTS gdml ui_tcsh motif vis_raytracer_x11 vis
2020
include_directories(${Geant4_INCLUDE_DIRS})
2121

2222
set(PYBIND11_PYTHON_VERSION 3.5)
23-
24-
if(EXISTS ${CMAKE_SOURCE_DIR}/pybind11/CMakeLists.txt)
25-
add_subdirectory(pybind11)
26-
else()
27-
# if not checked out correctly we search for an install
28-
find_package(pybind11 2.6 REQUIRED)
29-
endif()
23+
add_subdirectory(pybind11)
3024

3125
add_subdirectory(source)

pybind11

Submodule pybind11 updated 115 files

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ requires = [
33
"setuptools>=42",
44
"wheel",
55
"cmake>=3.12",
6-
"pybind11>=2.6",
76
"ninja; sys_platform != 'win32'",
87
]
98
build-backend = "setuptools.build_meta"

source/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ if(Geant4_qt_FOUND)
4949
add_definitions(-DG4_HAS_QT)
5050
endif()
5151

52+
add_definitions(-DPYBIND11_USE_SMART_HOLDER_AS_DEFAULT)
53+
5254
pybind11_add_module(geant4_pybind
5355
${SOURCE}
5456
geant4_pybind.cc

source/analysis/pyG4AnalysisManager.cc

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ namespace py = pybind11;
2222

2323
void export_G4AnalysisManager(py::module &m)
2424
{
25-
py::class_<G4ToolsAnalysisManager, G4VAnalysisManager, std::unique_ptr<G4ToolsAnalysisManager, py::nodelete>>(
26-
m, "G4ToolsAnalysisManager")
25+
py::class_<G4ToolsAnalysisManager, G4VAnalysisManager, py::nodelete>(m, "G4ToolsAnalysisManager")
2726

2827
//.def(py::init<const G4String &, G4bool>(), py::arg("type"), py::arg("isMaster") = true)
2928

@@ -45,8 +44,7 @@ void export_G4AnalysisManager(py::module &m)
4544
.def("GetP2", &G4ToolsAnalysisManager::GetP2, py::arg("id"), py::arg("warn") = true,
4645
py::arg("onlyIfActive") = true, py::return_value_policy::reference_internal);
4746

48-
py::class_<G4RootAnalysisManager, G4ToolsAnalysisManager, std::unique_ptr<G4RootAnalysisManager, py::nodelete>>(
49-
m, "G4RootAnalysisManager")
47+
py::class_<G4RootAnalysisManager, G4ToolsAnalysisManager, py::nodelete>(m, "G4RootAnalysisManager")
5048

5149
.def(py::init<G4bool>(), py::arg("isMaster") = true)
5250
.def_static("Instance", &G4RootAnalysisManager::Instance, py::return_value_policy::reference)
@@ -60,22 +58,19 @@ void export_G4AnalysisManager(py::module &m)
6058
.def("SetBasketSize", &G4RootAnalysisManager::SetBasketSize, py::arg("basketSize"))
6159
.def("SetBasketEntries", &G4RootAnalysisManager::SetBasketEntries, py::arg("basketEntries"));
6260

63-
py::class_<G4CsvAnalysisManager, G4ToolsAnalysisManager, std::unique_ptr<G4CsvAnalysisManager, py::nodelete>>(
64-
m, "G4CsvAnalysisManager")
61+
py::class_<G4CsvAnalysisManager, G4ToolsAnalysisManager, py::nodelete>(m, "G4CsvAnalysisManager")
6562

6663
.def(py::init<G4bool>(), py::arg("isMaster") = true)
6764
.def_static("Instance", &G4CsvAnalysisManager::Instance, py::return_value_policy::reference)
6865
.def_static("IsInstance", &G4CsvAnalysisManager::IsInstance);
6966

70-
py::class_<G4XmlAnalysisManager, G4ToolsAnalysisManager, std::unique_ptr<G4XmlAnalysisManager, py::nodelete>>(
71-
m, "G4XmlAnalysisManager")
67+
py::class_<G4XmlAnalysisManager, G4ToolsAnalysisManager, py::nodelete>(m, "G4XmlAnalysisManager")
7268

7369
.def(py::init<G4bool>(), py::arg("isMaster") = true)
7470
.def_static("Instance", &G4XmlAnalysisManager::Instance, py::return_value_policy::reference)
7571
.def_static("IsInstance", &G4XmlAnalysisManager::IsInstance);
7672

77-
py::class_<G4GenericAnalysisManager, G4ToolsAnalysisManager,
78-
std::unique_ptr<G4GenericAnalysisManager, py::nodelete>>(m, "G4GenericAnalysisManager")
73+
py::class_<G4GenericAnalysisManager, G4ToolsAnalysisManager, py::nodelete>(m, "G4GenericAnalysisManager")
7974

8075
.def(py::init<G4bool>(), py::arg("isMaster") = true)
8176
.def_static("Instance", &G4GenericAnalysisManager::Instance, py::return_value_policy::reference)

source/analysis/pyG4TScoreNtupleWriter.cc

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ namespace py = pybind11;
2323

2424
void export_G4TScoreNtupleWriter(py::module &m)
2525
{
26-
py::class_<G4TScoreNtupleWriter<G4RootAnalysisManager>,
27-
std::unique_ptr<G4TScoreNtupleWriter<G4RootAnalysisManager>>>(m, "G4RootScoreNtupleWriter")
26+
py::class_<G4TScoreNtupleWriter<G4RootAnalysisManager>>(m, "G4RootScoreNtupleWriter")
2827

2928
.def(py::init<>())
3029
.def("Book", &G4TScoreNtupleWriter<G4RootAnalysisManager>::Book)
@@ -37,8 +36,7 @@ void export_G4TScoreNtupleWriter(py::module &m)
3736
.def("GetFileName", &G4TScoreNtupleWriter<G4RootAnalysisManager>::GetFileName)
3837
.def("GetVerboseLevel", &G4TScoreNtupleWriter<G4RootAnalysisManager>::GetVerboseLevel);
3938

40-
py::class_<G4TScoreNtupleWriter<G4CsvAnalysisManager>, std::unique_ptr<G4TScoreNtupleWriter<G4CsvAnalysisManager>>>(
41-
m, "G4CsvScoreNtupleWriter")
39+
py::class_<G4TScoreNtupleWriter<G4CsvAnalysisManager>>(m, "G4CsvScoreNtupleWriter")
4240

4341
.def(py::init<>())
4442
.def("Book", &G4TScoreNtupleWriter<G4CsvAnalysisManager>::Book)
@@ -51,8 +49,7 @@ void export_G4TScoreNtupleWriter(py::module &m)
5149
.def("GetFileName", &G4TScoreNtupleWriter<G4CsvAnalysisManager>::GetFileName)
5250
.def("GetVerboseLevel", &G4TScoreNtupleWriter<G4CsvAnalysisManager>::GetVerboseLevel);
5351

54-
py::class_<G4TScoreNtupleWriter<G4XmlAnalysisManager>, std::unique_ptr<G4TScoreNtupleWriter<G4XmlAnalysisManager>>>(
55-
m, "G4XmlScoreNtupleWriter")
52+
py::class_<G4TScoreNtupleWriter<G4XmlAnalysisManager>>(m, "G4XmlScoreNtupleWriter")
5653

5754
.def(py::init<>())
5855
.def("Book", &G4TScoreNtupleWriter<G4XmlAnalysisManager>::Book)

source/analysis/pyG4VAnalysisManager.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace py = pybind11;
2424

2525
void export_G4VAnalysisManager(py::module &m)
2626
{
27-
py::class_<G4VAnalysisManager, std::unique_ptr<G4VAnalysisManager, py::nodelete>>(m, "G4VAnalysisManager")
27+
py::class_<G4VAnalysisManager, py::nodelete>(m, "G4VAnalysisManager")
2828

2929
//.def(py::init<const G4String &, G4bool>())
3030

@@ -178,6 +178,7 @@ void export_G4VAnalysisManager(py::module &m)
178178
py::arg("zmax") = 0, py::arg("xunitName") = "none", py::arg("yunitName") = "none",
179179
py::arg("zunitName") = "none", py::arg("xfcnName") = "none", py::arg("yfcnName") = "none",
180180
py::arg("zfcnName") = "none")
181+
181182
.def("SetP1",
182183
py::overload_cast<G4int, G4int, G4double, G4double, G4double, G4double, const G4String &, const G4String &,
183184
const G4String &, const G4String &, const G4String &>(&G4VAnalysisManager::SetP1),

source/analysis/pyhisto.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace py = pybind11;
1414

1515
void export_histo(py::module &m)
1616
{
17-
py::class_<tools::histo::h1d, std::unique_ptr<tools::histo::h1d>>(m, "h1d")
17+
py::class_<tools::histo::h1d>(m, "h1d")
1818
.def(py::init<>())
1919
.def(py::init<const std::string &, const std::vector<double> &>(), py::arg("title"), py::arg("edges"))
2020
.def(py::init<const std::string &, unsigned int, double, double>(), py::arg("title"), py::arg("xnumber"),
@@ -51,8 +51,8 @@ void export_histo(py::module &m)
5151
.def("dimension", &tools::histo::h1d::dimension)
5252
.def("divide", &tools::histo::h1d::divide)
5353
.def("entries", &tools::histo::h1d::entries)
54-
.def("equals", &tools::histo::h1d::equals)
55-
.def("equals_TH", &tools::histo::h1d::equals_TH)
54+
//.def("equals", &tools::histo::h1d::equals)
55+
//.def("equals_TH", &tools::histo::h1d::equals_TH)
5656
.def("equivalent_bin_entries", &tools::histo::h1d::equivalent_bin_entries)
5757
.def("extra_entries", &tools::histo::h1d::extra_entries)
5858
.def("Fill", &tools::histo::h1d::Fill)

source/digits_hits/pyG4HCofThisEvent.cc

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,19 @@
33

44
#include <G4HCofThisEvent.hh>
55

6-
#include "holder.hh"
76
#include "typecast.hh"
87
#include "opaques.hh"
98

109
namespace py = pybind11;
1110

1211
void export_G4HCofThisEvent(py::module &m)
1312
{
14-
py::class_<G4HCofThisEvent, std::unique_ptr<G4HCofThisEvent>>(m, "G4HCofThisEvent")
13+
py::class_<G4HCofThisEvent>(m, "G4HCofThisEvent")
1514
.def(py::init<>())
1615
.def(py::init<G4int>())
1716
.def(py::init<const G4HCofThisEvent &>())
18-
.def("AddHitsCollection",
19-
[](G4HCofThisEvent &self, G4int HCID, G4VHitsCollection *aHC) {
20-
owntrans_ptr<G4VHitsCollection>::remove(aHC);
21-
// TRAMPOLINE_REF_INCREASE(G4VHitsCollection, aHC);
22-
self.AddHitsCollection(HCID, aHC);
23-
})
17+
.def("AddHitsCollection", [](G4HCofThisEvent &self, G4int HCID,
18+
py::disown_ptr<G4VHitsCollection> aHC) { self.AddHitsCollection(HCID, aHC); })
2419

2520
.def("GetHC", &G4HCofThisEvent::GetHC, py::return_value_policy::reference_internal)
2621
.def("GetNumberOfCollections", &G4HCofThisEvent::GetNumberOfCollections)

0 commit comments

Comments
 (0)