pygccxml-development Mailing List for C++ Python language bindings (Page 45)
Brought to you by:
mbaas,
roman_yakovenko
You can subscribe to this list here.
2006 |
Jan
|
Feb
(6) |
Mar
(160) |
Apr
(96) |
May
(152) |
Jun
(72) |
Jul
(99) |
Aug
(189) |
Sep
(161) |
Oct
(110) |
Nov
(9) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(13) |
Feb
(48) |
Mar
(35) |
Apr
(7) |
May
(37) |
Jun
(8) |
Jul
(15) |
Aug
(8) |
Sep
(2) |
Oct
(1) |
Nov
(2) |
Dec
(38) |
2008 |
Jan
(11) |
Feb
(29) |
Mar
(17) |
Apr
(3) |
May
|
Jun
(64) |
Jul
(49) |
Aug
(51) |
Sep
(18) |
Oct
(22) |
Nov
(9) |
Dec
(9) |
2009 |
Jan
(28) |
Feb
(15) |
Mar
(2) |
Apr
(11) |
May
(6) |
Jun
(2) |
Jul
(3) |
Aug
(34) |
Sep
(5) |
Oct
(7) |
Nov
(13) |
Dec
(14) |
2010 |
Jan
(39) |
Feb
(3) |
Mar
(3) |
Apr
(14) |
May
(11) |
Jun
(8) |
Jul
(9) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
(7) |
Apr
|
May
|
Jun
(3) |
Jul
(3) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(2) |
2016 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2021 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(1) |
Nov
|
Dec
|
From: Neal B. <ndb...@gm...> - 2006-08-25 18:10:10
|
On Friday 25 August 2006 1:06 pm, Matthias Baas wrote: > Roman Yakovenko wrote: > > On 8/25/06, Neal Becker <ndb...@gm...> wrote: > >> Is there a way to add special functions/operators to a class? > >> > >> For example: > >> > >> struct X {}; > >> X& addAssign (X& x1, X const& x2) { return x1; } // silly example > >> > >> I want this to do: > >> .def ("__iadd__", addAssign, return_self<>()) > > > > I think that if you rename addAssign to __iadd__ this will work, but I > > am not sure. > > > > mb.free_function( 'addAssign' ).rename( '__iadd__' ) > > I think this would only work when addAssign() was a member of X. > > I'm doing such things with the cdef() method of pypp_api which is > equivalent to adding a raw def() statement to the class (I just had to > name it something else because "def" is already a Python keyword). Usage > of cdef is almost identical to Boost.Python's def. The first argument is > the Python name, then comes the C/C++ function (as a string), followed > by optional policies, args and doc string in arbitrary order. In the > above example, it would look like this: > > root.Class("X").cdef("__iadd__", "addAssign", return_self()) > > (see https://realityforge.vrsource.org/view/PyppApi/Pypp_decorating) > Doesn't seem to work though, return_self isn't passed to generated code: mod = ModuleBuilder( headerFiles = "world.h", moduleName = "world" ) root = mod.parse() root.Class("World").expose() root.Class("X").expose() root.Function ("F1").expose() root.Class ("A").expose() root.Class ("B").expose() root.Class ("Z").expose() ##root.Function ("plusAssignOp").expose() root.Class("X").cdef("__iadd__", "addAssign", return_self()) mod.writeModule() generates: [...] bp::class_< X >( "X", bp::init< boost::shared_ptr<int> >(( bp::arg("_i") ))[bp::default_call_policies()] ) .def_readwrite( "i", &X::i ) .def( "__iadd__", addAssign ); <<< missing return_self() |
From: Roman Y. <rom...@gm...> - 2006-08-25 18:06:19
|
On 8/25/06, Matthias Baas <ba...@ir...> wrote: > But in the generated Python bindings it would only be a global function > called __iadd__ and not a method X.__iadd__. You are right. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Matthias B. <ba...@ir...> - 2006-08-25 18:00:26
|
Roman Yakovenko wrote: >> >> struct X {}; >> >> X& addAssign (X& x1, X const& x2) { return x1; } // silly example >> >> >> >> I want this to do: >> >> .def ("__iadd__", addAssign, return_self<>()) >> > >> > I think that if you rename addAssign to __iadd__ this will work, but I >> > am not sure. >> > >> > mb.free_function( 'addAssign' ).rename( '__iadd__' ) >> >> I think this would only work when addAssign() was a member of X. > > In this case it would work, because first argument of the function is X&. But in the generated Python bindings it would only be a global function called __iadd__ and not a method X.__iadd__. - Matthias - |
From: Roman Y. <rom...@gm...> - 2006-08-25 17:35:07
|
On 8/25/06, Matthias Baas <ba...@ir...> wrote: > Roman Yakovenko wrote: > > On 8/25/06, Neal Becker <ndb...@gm...> wrote: > >> Is there a way to add special functions/operators to a class? > >> > >> For example: > >> > >> struct X {}; > >> X& addAssign (X& x1, X const& x2) { return x1; } // silly example > >> > >> I want this to do: > >> .def ("__iadd__", addAssign, return_self<>()) > > > > I think that if you rename addAssign to __iadd__ this will work, but I > > am not sure. > > > > mb.free_function( 'addAssign' ).rename( '__iadd__' ) > > I think this would only work when addAssign() was a member of X. In this case it would work, because first argument of the function is X&. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Roman Y. <rom...@gm...> - 2006-08-25 17:30:44
|
On 8/25/06, Allen Bierbaum <al...@vr...> wrote: > Today I ran my generation script through the python hotspot profiler and > found some interesting results. > > The majority of the time was being spent in algorithm.declaration_path. > I fixed this up and double the speed of my script. :) These are good news! > After that I decided it may be worth investigating some other spots. Before you do this, there is some work left on the previous patch :-(/ > What I have found is that the following areas are consuming a lot of > time. (not sure if it can be fixed or not, but this is where the time > is spent) > > (all of these are in pygccxml) > - Getting names from declarations > - Testing declarations and calldefs for equality > - Getting the decl_string (and creating it) for cpptypes. > > declarations.py _get_name line 151 > class_declarations.py _get_name_impl line 105 > declaration.py _eq_ line 119 > calldef.py _eq_ line 121 and 53 > cpptypes.py _get_decl_string line 37 > algorithm.py full_name line 30 > > Once I get into the office tomorrow I will upload my hotspot trace so > other people can see what I ran into and hopefully find some other > places to improve the performance of py++. :) The issue that left. Consider next use case ( a real one ). I am not able to run a gccxml on boost.date_time library on windows. So I run the gccxml on Linux and than use created xml file on Windows. The only issue I has is next: there is a template class that is instantiated with different values. So, on Windows I give class new name. Another issue is free template function on return type: template< class X> X do_smth(int, double); int do_smth( int ); By default the generated code will not compile. User will have to rename instantiated function to "do_smth<xyz>". You can take a look on pyboost_dev/dev/date_time/generate_code.py script. The point is that if user rename a declaration, the cache value you introduced should be reset to None. In case of namespace and class the internal declaration cache values should be reset too. If you don't do this, Py++ will generate bad code and it will take a lot of time to find out the error. The work, that still should be done: 1. To add new variable to declaration_t class. 2. To reset it and internal values on name change. 3. To write unit test ( pygccxml ). Please, do this before you introduce another changes. Thank you. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Matthias B. <ba...@ir...> - 2006-08-25 17:09:02
|
Roman Yakovenko wrote: > On 8/25/06, Neal Becker <ndb...@gm...> wrote: >> Is there a way to add special functions/operators to a class? >> >> For example: >> >> struct X {}; >> X& addAssign (X& x1, X const& x2) { return x1; } // silly example >> >> I want this to do: >> .def ("__iadd__", addAssign, return_self<>()) > > I think that if you rename addAssign to __iadd__ this will work, but I > am not sure. > > mb.free_function( 'addAssign' ).rename( '__iadd__' ) I think this would only work when addAssign() was a member of X. I'm doing such things with the cdef() method of pypp_api which is equivalent to adding a raw def() statement to the class (I just had to name it something else because "def" is already a Python keyword). Usage of cdef is almost identical to Boost.Python's def. The first argument is the Python name, then comes the C/C++ function (as a string), followed by optional policies, args and doc string in arbitrary order. In the above example, it would look like this: root.Class("X").cdef("__iadd__", "addAssign", return_self()) (see https://realityforge.vrsource.org/view/PyppApi/Pypp_decorating) - Matthias - |
From: Roman Y. <rom...@gm...> - 2006-08-25 17:02:05
|
On 8/25/06, Matthias Baas <ba...@ir...> wrote: > Roman Yakovenko wrote: > > Hi. I just released new version of pygccxml and Py++. > > I noticed that the *.txt files are missing from the contrib directory in > the source archive. I have no idea why this has happened. Me too. > When I run > "setup.py sdist" over here they do get included...? (Python 2.4 on XP > and Linux) As always, after release people found few bugs. One of them is critical. I will fix them and will release new version in a week or too. The critical bug is next: struct allocator_ { void * (*alloc) (unsigned); void (*dispose) (void *p); }; typedef struct allocator_ *allocator_t; struct faulty { allocator_t allocator; }; Py++ fails with AttributeError: 'declarated_t' object has no attribute 'base'. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Roman Y. <rom...@gm...> - 2006-08-25 16:49:30
|
On 8/25/06, Neal Becker <ndb...@gm...> wrote: > Is there a way to add special functions/operators to a class? > > For example: > > struct X {}; > X& addAssign (X& x1, X const& x2) { return x1; } // silly example > > I want this to do: > .def ("__iadd__", addAssign, return_self<>()) I think that if you rename addAssign to __iadd__ this will work, but I am not sure. mb.free_function( 'addAssign' ).rename( '__iadd__' ) -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Neal B. <ndb...@gm...> - 2006-08-25 14:26:11
|
Is there a way to add special functions/operators to a class? For example: struct X {}; X& addAssign (X& x1, X const& x2) { return x1; } // silly example I want this to do: .def ("__iadd__", addAssign, return_self<>()) |
From: Matthias B. <ba...@ir...> - 2006-08-25 14:16:34
|
Roman Yakovenko wrote: > Hi. I just released new version of pygccxml and Py++. I noticed that the *.txt files are missing from the contrib directory in the source archive. I have no idea why this has happened. When I run "setup.py sdist" over here they do get included...? (Python 2.4 on XP and Linux) - Matthias - |
From: Neal B. <ndb...@gm...> - 2006-08-25 11:42:33
|
On Friday 25 August 2006 4:41 am, Matthias Baas wrote: > Neal Becker wrote: > > I am playing with pyplusplus, trying out pypp_api. I noticed that a > > class with virtual functions and inheritance used wrappers, as shown in > > the boost::python tutorial. > > > > I would like to have to option to bypass these wrappers. IIUC, wrappers > > are only needed if the function will be overidden in python and then > > called from c++. My intention is a class hierarchy implemented in c++ > > only that is called from python. > > > > Here is a typical example: > > > > struct base { virtual void F() = 0; }; > > > > struct impl_1 : base { virtual void F() { do something; } }; > > > > struct X { > > X (boost::shared_ptr<base> _p) : p (_p) {} > > boost::shared_ptr<base> p; > > void use_F () { (*p)->F(); } > > }; > > > > In python then: > > > > i = impl_1() > > x = X (i) > > x.use_F() > > I think what you're looking for is the "finalize" functionality which > would tell Py++ that wrappers are not required. I'm not entirely sure, > but I believe this functionality is currently not properly supported by > Py++ (Roman has to give a definite answer here). > > If you don't have to call F() from Python then a simple workaround would > be to ignore that method (but again, I'm not sure if this will prevent > Py++ from generating the wrapper class). > > - Matthias - > > Actually, it appears that I don't really need to do anything. I don't care so much about generating wrappers, I just didn't want the overhead of using them. Looking at the generated code, it seems that I needn't be concerned. It appears that a call from c++ to the virtual function does not use the wrapper but goes direct: struct A { virtual int F () const = 0; }; struct B : public A { virtual int F () const { return 1; } }; struct Z { Z (boost::shared_ptr<A> _a ) : a (_a) {} int use_F() { return a->F(); } boost::shared_ptr<A> a; }; bp::class_< Z >( "Z", bp::init< boost::shared_ptr<A> >(( bp::arg("_a") )) [bp::default_call_policies()] ) .def( "use_F" , &::Z::use_F , bp::default_call_policies() ) .def_readwrite( "a", &Z::a ); |
From: Matthias B. <ba...@ir...> - 2006-08-25 08:44:43
|
Neal Becker wrote: > I am playing with pyplusplus, trying out pypp_api. I noticed that a class > with virtual functions and inheritance used wrappers, as shown in the > boost::python tutorial. > > I would like to have to option to bypass these wrappers. IIUC, wrappers are > only needed if the function will be overidden in python and then called from > c++. My intention is a class hierarchy implemented in c++ only that is > called from python. > > Here is a typical example: > > struct base { virtual void F() = 0; }; > > struct impl_1 : base { virtual void F() { do something; } }; > > struct X { > X (boost::shared_ptr<base> _p) : p (_p) {} > boost::shared_ptr<base> p; > void use_F () { (*p)->F(); } > }; > > In python then: > > i = impl_1() > x = X (i) > x.use_F() I think what you're looking for is the "finalize" functionality which would tell Py++ that wrappers are not required. I'm not entirely sure, but I believe this functionality is currently not properly supported by Py++ (Roman has to give a definite answer here). If you don't have to call F() from Python then a simple workaround would be to ignore that method (but again, I'm not sure if this will prevent Py++ from generating the wrapper class). - Matthias - |
From: Allen B. <al...@vr...> - 2006-08-25 03:14:05
|
Today I ran my generation script through the python hotspot profiler and found some interesting results. The majority of the time was being spent in algorithm.declaration_path. I fixed this up and double the speed of my script. :) After that I decided it may be worth investigating some other spots. What I have found is that the following areas are consuming a lot of time. (not sure if it can be fixed or not, but this is where the time is spent) (all of these are in pygccxml) - Getting names from declarations - Testing declarations and calldefs for equality - Getting the decl_string (and creating it) for cpptypes. declarations.py _get_name line 151 class_declarations.py _get_name_impl line 105 declaration.py _eq_ line 119 calldef.py _eq_ line 121 and 53 cpptypes.py _get_decl_string line 37 algorithm.py full_name line 30 Once I get into the office tomorrow I will upload my hotspot trace so other people can see what I ran into and hopefully find some other places to improve the performance of py++. :) -Allen |
From: Roman Y. <rom...@gm...> - 2006-08-24 17:58:23
|
On 8/24/06, Allen Bierbaum <al...@th...> wrote: > > You are right. I missed that it was a call to filter. Somehow my brain > translated that to "map". My bad. :( It is okay to introduce error, but it is not okay to commit such ( any ) change without running unit tests. Py++ unit tests failed! Try locally to modify the code and run mdecl_wrapper_tester.py. It could be nice if you and Matthias could run unit tests on regular basis. It is very easy to add new environment to the unit tests scripts. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Neal B. <ndb...@gm...> - 2006-08-24 16:38:27
|
I am playing with pyplusplus, trying out pypp_api. I noticed that a class with virtual functions and inheritance used wrappers, as shown in the boost::python tutorial. I would like to have to option to bypass these wrappers. IIUC, wrappers are only needed if the function will be overidden in python and then called from c++. My intention is a class hierarchy implemented in c++ only that is called from python. Here is a typical example: struct base { virtual void F() = 0; }; struct impl_1 : base { virtual void F() { do something; } }; struct X { X (boost::shared_ptr<base> _p) : p (_p) {} boost::shared_ptr<base> p; void use_F () { (*p)->F(); } }; In python then: i = impl_1() x = X (i) x.use_F() |
From: Roman Y. <rom...@gm...> - 2006-08-24 13:54:33
|
Hi. I just released new version of pygccxml and Py++. You can find download and installation instruction here: http://www.language-binding.net/pygccxml/download.html http://www.language-binding.net/pyplusplus/download.html Changes: pygccxml: It has been ported to MacOS New type traits were added Logging functionality ( user feedback ) Py++: User now will get warnings\hints and tips about declarations the user exposes Support for Boost.Python indexing suite version 2 was implemented Py++ generates "stable" code. If header files were not changed, Py++ will not change any file. Support for huge classes was added. Py++ is able to split registration code for the class to multiple cpp files. For full list of changes please see history section of relevant project. I'd like to thank everyone who helped me to improve Py++. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Allen B. <al...@th...> - 2006-08-24 12:50:16
|
> al...@us... wrote: >> Revision: 451 >> Author: allenb >> Date: 2006-08-23 16:30:51 -0700 (Wed, 23 Aug 2006) >> ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=3D451&view=3Drev >> >> Log Message: >> ----------- >> I *think* this fixes a bug. >> >> As far as I can tell with Python 2.4 atleast bool([False,True]) is sti= ll >> true so the logic of this test was not working. >> >> Please review this commit to verify that I have fixed something though= . >> >> Modified Paths: >> -------------- >> pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py >> Modified: pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py >> [...] >> invalid_decls =3D filter( lambda d: not hasattr( d, name ), >> self.decls ) >> - if invalid_decls: >> + if False in invalid_decls: >> raise RuntimeError( "Not all declarations have '%s' >> attribute." % name ) > > This doesn't look like a fix to me.... (what had to be fixed here > anyway?). > > The previous 'if' statement was equivalent to > > if len(invalid_decls)!=3D0: > ... > > which looked all right to me (note that the previous line uses "filter"= , > not "map"). You are right. I missed that it was a call to filter. Somehow my brain translated that to "map". My bad. :( -Allen > > The new 'if' statement checks if the list contains the value "False" > which I don't think will ever happen. > > > - Matthias - > > -----------------------------------------------------------------------= -- > Using Tomcat but need to do more? Need to support web services, securit= y? > Get stuff done quickly with pre-integrated technology to make your job > easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geron= imo > http://sel.as-us.falkag.net/sel?cmd=3Dlnk&kid=3D120709&bid=3D263057&dat= =3D121642 > _______________________________________________ > pygccxml-development mailing list > pyg...@li... > https://lists.sourceforge.net/lists/listinfo/pygccxml-development > > |
From: Matthias B. <ba...@ir...> - 2006-08-24 12:00:11
|
al...@us... wrote: > Revision: 451 > Author: allenb > Date: 2006-08-23 16:30:51 -0700 (Wed, 23 Aug 2006) > ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=451&view=rev > > Log Message: > ----------- > I *think* this fixes a bug. > > As far as I can tell with Python 2.4 atleast bool([False,True]) is still true so the logic of this test was not working. > > Please review this commit to verify that I have fixed something though. > > Modified Paths: > -------------- > pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py > Modified: pygccxml_dev/pygccxml/declarations/mdecl_wrapper.py > [...] > invalid_decls = filter( lambda d: not hasattr( d, name ), self.decls ) > - if invalid_decls: > + if False in invalid_decls: > raise RuntimeError( "Not all declarations have '%s' attribute." % name ) This doesn't look like a fix to me.... (what had to be fixed here anyway?). The previous 'if' statement was equivalent to if len(invalid_decls)!=0: ... which looked all right to me (note that the previous line uses "filter", not "map"). The new 'if' statement checks if the list contains the value "False" which I don't think will ever happen. - Matthias - |
From: Allen B. <al...@vr...> - 2006-08-24 02:13:35
|
Roman Yakovenko wrote: > On 8/24/06, Allen Bierbaum <al...@vr...> wrote: > >> Roman Yakovenko wrote: >> >> > On 8/23/06, Allen Bierbaum <al...@vr...> wrote: >> > >> >> I would like to propose that we change mdecl_wrapper_t.decls to be >> named >> >> something else. Perhaps "decl_list" or something. >> > >> > >> > declarations ? >> >> Sounds fine with me. > > > Please commit the change. I will run unit tests tomorrow > I haven't implemented the change. I don't really know everywhere this will impact so I didn't try to make the change. -Allen |
From: Roman Y. <rom...@gm...> - 2006-08-23 21:30:05
|
On 8/24/06, Allen Bierbaum <al...@vr...> wrote: > Roman Yakovenko wrote: > > > On 8/23/06, Allen Bierbaum <al...@vr...> wrote: > > > >> I would like to propose that we change mdecl_wrapper_t.decls to be named > >> something else. Perhaps "decl_list" or something. > > > > > > declarations ? > > Sounds fine with me. Please commit the change. I will run unit tests tomorrow -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Allen B. <al...@vr...> - 2006-08-23 21:16:43
|
Roman Yakovenko wrote: > On 8/23/06, Allen Bierbaum <al...@vr...> wrote: > >> I would like to propose that we change mdecl_wrapper_t.decls to be named >> something else. Perhaps "decl_list" or something. > > > declarations ? Sounds fine with me. -Allen > >> The reason is that the current name conflicts with the method of the >> same name in the decl interface from scopedef_t. >> >> So for example: >> >> classes = ns.decls("class") >> classes.decls("method") >> >> This will fail because it finds the attribute decls which is not a >> callable. >> >> Comments? >> >> -Allen >> >> >> ------------------------------------------------------------------------- >> >> Using Tomcat but need to do more? Need to support web services, >> security? >> Get stuff done quickly with pre-integrated technology to make your >> job easier >> Download IBM WebSphere Application Server v.1.0.1 based on Apache >> Geronimo >> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 >> _______________________________________________ >> pygccxml-development mailing list >> pyg...@li... >> https://lists.sourceforge.net/lists/listinfo/pygccxml-development >> > > |
From: Roman Y. <rom...@gm...> - 2006-08-23 21:00:53
|
On 8/23/06, Allen Bierbaum <al...@vr...> wrote: > I would like to propose that we change mdecl_wrapper_t.decls to be named > something else. Perhaps "decl_list" or something. declarations ? > The reason is that the current name conflicts with the method of the > same name in the decl interface from scopedef_t. > > So for example: > > classes = ns.decls("class") > classes.decls("method") > > This will fail because it finds the attribute decls which is not a callable. > > Comments? > > -Allen > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > pygccxml-development mailing list > pyg...@li... > https://lists.sourceforge.net/lists/listinfo/pygccxml-development > -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |
From: Allen B. <al...@vr...> - 2006-08-23 20:44:38
|
I updated the dsldiscussion on the wiki. Also, please note that you can add yourself here: https://realityforge.vrsource.org/view/PyppApi/WebNotify If you want to automatically recieve notification when the wiki changes. -Allen |
From: Allen B. <al...@vr...> - 2006-08-23 20:42:42
|
I would like to propose that we change mdecl_wrapper_t.decls to be named something else. Perhaps "decl_list" or something. The reason is that the current name conflicts with the method of the same name in the decl interface from scopedef_t. So for example: classes = ns.decls("class") classes.decls("method") This will fail because it finds the attribute decls which is not a callable. Comments? -Allen |
From: Roman Y. <rom...@gm...> - 2006-08-23 17:36:52
|
On 8/23/06, Matthias Baas <ba...@ir...> wrote: > Roman Yakovenko wrote: > > I see, what about documentation? Don't you want to integrate to > > setup.py script to build pypp_api documentation? > > Actually, I'm against this as I think Py++ shouldn't be dependent on > code in "contrib". After all, these are "only" user contributions that > are not officially supported. And if something proves to be useful for > every Py++ user it should be moved out of contrib and made part of the > official Py++ package. :-) I hope we will make pypp_api part of the Py++. > It depends on what exactly you mean with "use the code". Note that a lot > of Open Source licenses only deal with the distribution and modification > of software and not its mere usage. The following sentence is taken from > the GPL: > > "Activities other than copying, distribution and modification are not > covered by this License; they are outside its scope." > > So if a company only wants to make use of a GPL licensed software (e.g. > a 3D modeler to create models for a commercial game) and do not have to > distribute this software with their own commercial product, then it is > my understanding that they may certainly do so without infringing anything. > > In our case it means that it doesn't matter whether some code in contrib > has a license like the GPL or not if a particular user only wants to > "use" that code and only wants to distribute the output of Py++ and not > Py++ itself. > > (but of course, I'm no lawyer so don't count on the above if you're in > court... ;) Thanks for the explanation. I am not a lawyer too. In the company I work for, if the license is not clear( missing ) we don't use( touch ) this software. This is the case I thought to solve. -- Roman Yakovenko C++ Python language binding http://www.language-binding.net/ |