| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
for Py3k port.
|
|
|
|
|
|
| |
2.x and 3.x.
Enclosing PyCObject uses inside #ifdefs
|
| |
|
|
|
|
| |
SEGFAULT)"
|
|
|
|
|
|
|
| |
manager exit.
Reviewer: Hugo Parente <hugo.lima@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
|
|
|
|
|
| |
Reviewer: Renato Araújo <renato.filho@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
|
|
|
|
|
|
|
|
| |
Now all function get for class attribute return the internal memory of
the c++ attribute.
Reviewer: Hugo Parente <hugo.lima@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
|
| |
|
|
|
|
|
|
|
|
|
| |
__del__ function.
Fix bug #505
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Marcelo Lira <marcelo.lira@openbossa.org>
|
|
|
|
|
|
|
| |
PyObjects with a function.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Renamed ObjectType to BaseType.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Hugo Parente Lima <hugo.pl@gmail.com>
|
|
|
|
|
|
|
|
| |
Updated generator to new API.
Fix bug #462
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Hugo Parente Lima <hugo.pl@gmail.com>
|
| |
|
|
|
|
| |
outside C++ namespaces.
|
| |
|
| |
|
|
|
|
| |
(both inside Shiboken:Wrapper namespace)
|
|
|
|
| |
d-pointer to it.
|
|
|
|
|
|
|
| |
This functions returns all PyObjects under the umbrella of BindingManager.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Renato Araújo <renato.filho@openbossa.org>
|
|
|
|
|
| |
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Reviewed by Renato Araújo <renato.filho@openbossa.org>
|
| |
|
|
|
|
|
| |
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
|
|
|
|
|
|
|
| |
In the new rule if the child object is a Shiboken wrapper class, the object is not invalidade during the parent destructions, the binding manager will wait for object destructor to invalidade the wrapper.
Reviewer: Hugo Parente Lima <hugo.pl@gmail.com>
Luciano Wolf <luciano.wolf@openbossa.org>
|
|
|
|
|
|
|
| |
exception.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Renato Araújo <renato.filho@openbossa.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new algorithm do the following:
- Try to use type_info on the object the get the object real name.
- Try to find a type resolver with the name returned by type_info.
- If a type resolver was found, get the python type.
- Else, ask binding manager to resolve the type walking on all possible
subclasses found in the inheritance tree.
The binding manager has a graph representing the class inheritance tree.
Note: This commit break the libshiboken ABI, but not the API.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Renato Araújo <renato.araujo@openbossa.org>
|
|
|
|
|
| |
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Hugo Parente Lima <hugo.pl@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of using assert(), invalidate the remaining instances
in ~BindingManager().
This will prevent them of trying to access it again. As the
program is already finishing, the dangling C++ instances
will be freed anyway.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Reviewer: Renato Filho <renato.filho@openbossa.org>
|
|
|
|
|
| |
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The assertion is only used in debug mode. The duck punching test
was altered to avoid failing when run with debug. Check the
duck punching test file for a better explanation.
Also added a debug helper method "showWrapperMap" to the binding
manager, it shows the contents of the C pointer to Python wrapper
mapping.
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Reviewed by Renato Araújo <renato.filho@openbossa.org>
|
| |
|
|
|
|
| |
We are under Shiboken namespace, so there is no need for yet another prefix.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The simplest definition of duck punching for our purposes is
the ability to change the definition of a method in an instance of
a class.
To allow this behaviour the SbkBaseWrapper structure had to be
extended with a 'ob_dict' which is a PyObject pointer to the instance
dictionary. It is originally set to NULL until the user tries to access
it. This dictionary could be accessed through the '__dict__' instance
property. For now it is read-only.
The generator was updated to handle the instance dictionary, and an
extensive duck punching test was also added.
Reviewed by Hugo Parente Lima <hugo.lima@openbossa.org>
|
|
|
|
|
|
|
| |
The C++ object instanciation was made in tp_init function instead of tp_new function. Now tp_new just
create a useless python object which will be filled in the tp_init function.
Reviewed by Marcelo Lira <marcelo.lira@openbossa.org>
|
|
|
|
| |
with SbkBaseWrapper.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To avoid confusion of Python stuff with Shiboken generated stuff.
For example: a C++ class called "String" would have the PyString_Type
wrapper generated for it, mixing with the proper Python PyString_Type;
now the generate code will have things like SbkString_Type, SbkString_New,
SbkString_someMethod, and so on.
PyBaseWrapper and its variants were renamed to SbkBaseWrapper.
PyType<T>() is now SbkType<T>()
PyEnumObject was renamed to SbkEnumObject.
|
|
|
|
|
|
|
|
|
| |
Using the CLASS->tp_mro, which contains the list of method resolution for
a Python class, to find an override for a wrapped C++ virtual method is
more correct than relying in the ShiboTypeObject's baseWrapperType value.
Also baseWrapperType was removed from ShiboTypeObject structure.
Reviewed by Hugo Lima <hugo.lima@openbossa.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Simple ownership transference, i.e. without parenting, is now performed
by the new BindingManager::transferOwnershipToCpp method. It remove the
parent of the transfered object and proceeds transfer or invalidation
if needed. The generated code for simple ownership transfer from Python
to C++ now reflects this change.
Fixed the method BlackBox::keepObjectType that steals an ObjectType
ownership to C++ to remove it from its parent also. The BlackBox
class does not take care of the stolen object as a proper parent
would, but its destructor deletes the object, so the "unparenting"
is needed to avoid freeing the same memory twice.
Created an unit test that adds children to a parent ObjectType and then
steal the children to C++ with BlackBox.keepObjectType.
Reviewed by Hugo Lima <hugo.lima@openbossa.org>
|
|
|
|
|
|
|
|
|
|
|
| |
BindingManager::invalidateWrapper checks if the object to be invalidated
carries any children objects and recursively invalidates them.
Shiboken::destroyParentInfo function was refactored to call the new
recursive wrapper invalidator and then call a helper function that
only destroy the parent information.
The invalidate parent test was updated.
|
|
|
|
|
|
|
|
| |
This new invalidateWrapper finds the Python wrapper for a C++ pointer
and then invalidates it.
Virtual destructors for C++ wrappers call the invalidateWrapper on
the "this" pointer.
|
|
|
|
| |
Python.
|
|
|
|
|
|
|
|
|
|
|
|
| |
It sets the wrapper as invalid and removes the relation of C++ objects
to the Python wrapper from the mappings.
Moved BindingManager::releaseWrapper(void*) to BindingManagerPrivate,
since it should only be used by releaseWrapper(PyObject*).
Modified includes on conversions.h to use quotes instead of < and >.
Reviewed by Hugo Lima <hugo.lima@openbossa.org>
|
|\ |
|
| |
| |
| |
| |
| | |
the multiple inheritance pointers registered for a class with this
trait.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
C++ object using the memory address of the former to retrieve the
latter. When multiple inheritance is involved, a C++ object passed
to C++ could be caught back downcasted to one of its parents with
a different memory address, following the memory layout for
multiple inheritance used by the compiler. This poses a problem
to keep the Python identity of a C++ object.
The solution was to extend the traditional PyTypeObject with a
number array with all the possible displacements to be added to
an object pointer to produce the memory addresses for the valid
pointers that could appear from all the possible type casts
involving the object parents. All the possible pointers are
registered (and unregistered) by the binding wrapper manager.
To store the multiple inheritance information the ShiboTypeObject
structure was created, expanding the original PyTypeObject with
two fields:
mi_offsets
an integer array containing the possible displacements from the
object base pointer. The array has the value -1 at its end.
mi_init
the function that will initialize the mi_offsets array it is
called at the first instaciation of a multiple inheriting object.
|