Skip to content

Commit 0be66b1

Browse files
committed
with raw pointers it does work
1 parent 28e47fd commit 0be66b1

File tree

9 files changed

+24
-16
lines changed

9 files changed

+24
-16
lines changed

scripter-api/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ $ ./scripting
3434

3535
## notes
3636

37+
- if we ever want to check how it works with `unique_ptr`s, this is a good article on how to add a `unique_ptr` as a private member in a class: <https://katyscode.wordpress.com/2012/10/04/c11-using-stdunique_ptr-as-a-class-member-initialization-move-semantics-and-custom-deleters/>
38+
3739

3840
i'm now looking for a data structure that would allow me to pass my document. if i use "naked" pointers i can get there:
3941

scripter-api/python/set-bar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
print(Sample.a)
77
document = Sample.document
88
print(document.a)
9-
# print(Sample.document.a)
9+
print(Sample.document.a)
1010
print(Sample.a)

scripter-api/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ int main()
1313
{
1414
Sample::Document document;
1515

16-
Scripter scripter{document};
16+
Scripter scripter{&document};
1717
scripter.runFile("../python/set-bar.py");
1818
// std::cout << "document a " << document.a << std::endl;
1919
std::cout << "document top " << document.margin.top << std::endl;

scripter-api/src/scripter.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ void Scripter::runFile(std::string fileName)
99
{
1010
// Sample::Document document;
1111
//Sample::Margin saMargin;
12-
auto document = std::make_unique<Sample::Document>();
1312

1413
ScripterAPI::ScripterAPI scripterAPI;
15-
scripterAPI.setDocument(std::move(document));
14+
scripterAPI.setDocument(document);
1615

1716

1817
auto module = py::module::import("scripterapi");

scripter-api/src/scripter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ namespace py = pybind11;
1212
class Scripter
1313
{
1414
public:
15-
Scripter(Sample::Document &document) :
15+
Scripter(Sample::Document const *document) :
1616
document{document} {};
1717
void runFile(std::string fileName);
1818
private:
19-
Sample::Document &document;
19+
const Sample::Document *document;
2020

2121
py::scoped_interpreter guard{};
2222
};

scripter-api/src/scripterAPI/document.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace py = pybind11;
66

7-
PYBIND11_MODULE(documentapi, m) {
7+
void init_DocumentAPI(py::module &m) {
88
py::class_<ScripterAPI::Document>(m, "Document")
99
.def(py::init<>())
10-
.def_readwrite("document", &ScripterAPI::Document::a)
10+
.def_readwrite("a", &ScripterAPI::Document::a)
1111
;
1212
}

scripter-api/src/scripterAPI/document.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
namespace ScripterAPI {
88
class Document {
99
public:
10-
// void setDocument(std::unique_ptr<Sample::Document> d) {/* document = std::move(d);*/}
11-
// std::unique_ptr<Sample::Document> getDocument() {/*return std::move(document);*/}
10+
Document() {}
11+
void setDocument(const Sample::Document* d) { document = d; }
1212
int a{42};
1313
private:
14-
// std::unique_ptr<Sample::Document> document;
14+
const Sample::Document* document;
1515
};
1616
}
1717
#endif
18-

scripter-api/src/scripterAPI/scripterAPI.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,18 @@
44

55
namespace py = pybind11;
66

7-
PYBIND11_MODULE(scripterapi, m) {
7+
void init_ScripterAPI(py::module &m) {
88
py::class_<ScripterAPI::ScripterAPI>(m, "Sample")
99
.def(py::init<>())
1010
.def_readwrite("a", &ScripterAPI::ScripterAPI::a)
1111
.def_readwrite("document", &ScripterAPI::ScripterAPI::documentAPI)
12-
;
12+
;
13+
}
14+
15+
void init_DocumentAPI(py::module &);
16+
17+
PYBIND11_MODULE(scripterapi, m) {
18+
m.doc() = "Python interface the Sample application";
19+
init_ScripterAPI(m);
20+
init_DocumentAPI(m);
1321
}

scripter-api/src/scripterAPI/scripterAPI.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
namespace ScripterAPI {
99
class ScripterAPI {
1010
public:
11+
ScripterAPI() {}
1112
int a = 1;
12-
void setDocument(std::unique_ptr<Sample::Document> d) {/* documentAPI.setDocument(std::move(d));*/}
13-
// std::unique_ptr<Sample::Document> getDocument() {return std::move(documentAPI.getDocument());}
13+
void setDocument(const Sample::Document* d) { documentAPI.setDocument(d);}
1414
Document documentAPI;
1515
};
1616
}

0 commit comments

Comments
 (0)