I suggest

(a) renaming as test.test is confusing, eg call the file/module test_file,
and the class test_class
(b) I think from your previous post that test.test() simply calls the
constructor for class test, and this constructor is defined in python,
returning an object not a pointer,
so perhaps try extract<Component> not extract<Component*>

Best

Lewis


Bayforest Technologies Limited
48 Dover St, Mayfair
London W1S 4FF
work1:  +44 203 968 5167
email: lewis.ev...@bayforest.ai
web:    https://bayforest.ai/


On Thu, May 14, 2020 at 5:00 PM <cplusplus-sig-requ...@python.org> wrote:

> Send Cplusplus-sig mailing list submissions to
>         cplusplus-sig@python.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://mail.python.org/mailman/listinfo/cplusplus-sig
> or, via email, send a message with subject or body 'help' to
>         cplusplus-sig-requ...@python.org
>
> You can reach the person managing the list at
>         cplusplus-sig-ow...@python.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Cplusplus-sig digest..."
>
>
> Today's Topics:
>
>    1. Re: Cplusplus-sig Digest, Vol 125, Issue 3 (Carlos Duran)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 13 May 2020 17:50:16 +0200
> From: Carlos Duran <carlos_w...@zohomail.eu>
> To: "cplusplus-sig" <cplusplus-sig@python.org>
> Subject: Re: [C++-sig] Cplusplus-sig Digest, Vol 125, Issue 3
> Message-ID:
>         <1720ebab660.12aad1dbc94224.6884088036261319...@zohomail.eu>
> Content-Type: text/plain; charset="utf-8"
>
> Hello again,
>
>
>
> I rewrite part of the code, but I didn't find my error.
>
> My new code is:
>
> cat ../src/DemiWu.cpp
>
> #include <boost/python.hpp>
>
>
>
> #include <DemiComponent.hpp>
>
> #include <DemiWu.hpp>
>
> #include <iostream>
>
> #include <string>
>
>
>
> using namespace boost::python;
>
> using namespace DemiWu;
>
>
>
> #if PY_MAJOR_VERSION >= 3
>
> #?? define INIT_MODULE PyInit_DemiWu
>
> ??? extern "C" PyObject* INIT_MODULE();
>
> #else
>
> #?? define INIT_MODULE initDemiwu
>
> ??? extern "C" void INIT_MODULE();
>
> #endif
>
>
>
> int main()
>
> {
>
> ????? PyImport_AppendInittab((char*)"DemiWu", INIT_MODULE);
>
> ????? Py_Initialize();
>
> ????? object main = import("__main__");
>
> ????? object global = main.attr("__dict__");
>
> ????? PySys_SetPath(L".");
>
> ????? global["test"] = import("test"); // How can I check the import?
>
>
>
> ????? object funcObj = global["test"].attr("test");
>
> ????? std::cout << std::boolalpha;
>
> ????? std::cout << funcObj.is_none() << "\n"; // funcObj.is_none() == false
>
> ????? object resultObj = funcObj();
>
> ????? std::cout << resultObj.is_none() << "\n"; // resultObj.is_none() ==
> false
>
>
>
> ????? // I suppose that in "real" code I need to check every time I use
> attr method.
>
> ????? extract<std::string>
> exclass(funcObj.attr("__class__").attr("__name__"));
>
> ????? if(exclass.check())
>
> ????? ????? std::cout << "test.test.__class__.__name__: " << exclass() <<
> "\n"; // exclass() == "class"
>
> ????? extract<std::string>
> exclass2(resultObj.attr("__class__").attr("__name__"));
>
> ????? if(exclass2.check())
>
> ????? ????? std::cout << "test.test().__class__.__name__: " << exclass2()
> << "\n"; // exclass2() == "test"
>
> ????? extract<std::string>
> exbase(funcObj.attr("__base__").attr("__name__"));
>
> ????? if(exbase.check())
>
> ????? ????? std::cout << "test.test.__base__.__name__: " << exbase() <<
> "\n"; // exbase() == "Component"
>
> ????? // It seems that resultObj is correct, I think that I am using
> extract<> function wrong.
>
> ????? extract<Component*> ex(resultObj);
>
> ????? if(ex.check()){
>
> ????? ????? Component * const b=ex();
>
> ????? ????? b->on_create(); ?
>
> ????? ????? std::cout << "SUCCESS\n";
>
> ????? ????? return 0;
>
> ????? } else {
>
> ????? ????? std::cout << "FAIL\n"; // And again the program jumps here.
>
> ????? ????? return 1;
>
> ????? }
>
> }
>
>
>
> And the execution:
>
> ./DemiWu
>
> false
>
> false
>
> test.test.__class__.__name__: class
>
> test.test().__class__.__name__: test
>
> test.test.__base__.__name__: Component
>
> FAIL
>
>
>
> Thank you for your response
>
>
>
> Carlos
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://mail.python.org/pipermail/cplusplus-sig/attachments/20200513/e8d19d13/attachment-0001.html
> >
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> https://mail.python.org/mailman/listinfo/cplusplus-sig
>
>
> ------------------------------
>
> End of Cplusplus-sig Digest, Vol 125, Issue 5
> *********************************************
>

-- 


Bayforest Capital Limited ( Bayforest®) is an Appointed Representative of 
G10 Capital Limited. G10 Capital Limited is authorised and regulated by the 
Financial Conduct Authority, registration number 648953.





The 
information
contained in this transmission may contain privileged and 
confidential
information.  It is intended only for the
use of the person(s) 
named above.  If you
are not the intended recipient, you are hereby 
notified that any review,
dissemination, distribution or duplication of 
this communication is strictly
prohibited.  This communication is for

information purposes only and should not be regarded as an offer to sell or 
as
a solicitation of an offer to buy any financial product, an official 
confirmation
of any transaction, or as an official statement of Bayforest 
Capital Limited
and Bayforest Technologies Limited.  If
you are not the 
intended recipient, please contact the sender by replying to
this e-mail 
and destroy all copies of this e-mail (and any attachment(s)) from
your 
system.  To reply to our e-mail
administrator directly, please send an 
e-mail to ad...@bayforest.ai <mailto:ad...@bayforest.ai>.
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to