~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/_btree_serializer_pyx.pyx

Things are ~ working again.

Man this is getting messy, I may have to change my mind again.

I tried to export the StaticTuple type only through _static_tuple_pyx.pyx
by using a little bit of trickery. However, you end up with a circular
import issue, and also I forgot to track down one place where I needed
to rename '_static_tuple_c' => '_static_tuple_type_c'.

The idea was that _static_tuple_type.c would *only* define the type,
and not any extra info. This way the code could be compiled with either
cython or pyrex and still get the 'better' StaticTuple object.

It ended up, overall, just being a multi-hour mess trying to get the
dependencies sorted out. By using a .pxd file, at least the basic
circular import problem was sorted out.

However at this point, you *have* to import _static_tuple_pyx before
_static_tuple_type_c or you get a segfault, and you have to import the
latter if you want to get direct access to the class.

So at this point I feel like I either need to:
 1) Go back to the way it was, and get rid of the circular import
 2) Finish the rest of the steps, bring everything into Cython
    and say 'if you want the memory improvements, then you have
    to compile with cython.'

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
 
60
60
# It seems we need to import the definitions so that the pyrex compiler has
61
61
# local names to access them.
62
 
from _static_tuple_c cimport StaticTuple, \
63
 
    import_static_tuple_c, STATIC_TUPLE_ALL_STRING, StaticTuple_New, \
 
62
from _static_tuple_pyx cimport StaticTuple, \
 
63
    STATIC_TUPLE_ALL_STRING, StaticTuple_New, \
64
64
    StaticTuple_Intern, StaticTuple_SET_ITEM, StaticTuple_CheckExact
65
65
 
66
66
 
102
102
    Py_DECREF_ptr(py_str)
103
103
    return result
104
104
 
105
 
from bzrlib import _static_tuple_c
106
 
cdef object _ST
107
 
_ST = _static_tuple_c.StaticTuple
108
 
# This sets up the StaticTuple C_API functionality
109
 
import_static_tuple_c()
 
105
from bzrlib import _static_tuple_pyx
 
106
# import_static_tuple_pyx()
110
107
 
111
108
 
112
109
cdef class BTreeLeafParser: