~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/_btree_serializer_pyx.pyx

  • Committer: John Arbash Meinel
  • Date: 2010-08-24 19:21:32 UTC
  • mto: This revision was merged to the branch mainline in revision 5390.
  • Revision ID: john@arbash-meinel.com-20100824192132-2ktt5adkbk5bk1ct
Handle test_source and extensions. Also define an 'extern' protocol, to allow
the test suite to recognize that returning an object of that type is a Python object.

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
    unsigned long strtoul(char *s1, char **out, int base)
65
65
    long long strtoll(char *s1, char **out, int base)
66
66
 
 
67
 
67
68
# It seems we need to import the definitions so that the pyrex compiler has
68
69
# local names to access them.
69
70
from _static_tuple_c cimport StaticTuple, \
70
71
    import_static_tuple_c, StaticTuple_New, \
71
72
    StaticTuple_Intern, StaticTuple_SET_ITEM, StaticTuple_CheckExact, \
72
73
    StaticTuple_GET_SIZE, StaticTuple_GET_ITEM
 
74
# This tells the test infrastructure that StaticTuple is a class, so we don't
 
75
# have to worry about exception checking.
 
76
## extern cdef class StaticTuple
73
77
import sys
74
78
 
75
79
 
112
116
    Py_DECREF_ptr(py_str)
113
117
    return result
114
118
 
115
 
from bzrlib import _static_tuple_c
116
119
# This sets up the StaticTuple C_API functionality
117
120
import_static_tuple_c()
118
121
 
356
359
_populate_unhexbuf()
357
360
 
358
361
 
359
 
cdef int _unhexlify_sha1(char *as_hex, char *as_bin):
 
362
cdef int _unhexlify_sha1(char *as_hex, char *as_bin): # cannot_raise
360
363
    """Take the hex sha1 in as_hex and make it binary in as_bin
361
364
    
362
365
    Same as binascii.unhexlify, but working on C strings, not Python objects.
390
393
    return None
391
394
 
392
395
 
393
 
cdef void _hexlify_sha1(char *as_bin, char *as_hex):
 
396
cdef void _hexlify_sha1(char *as_bin, char *as_hex): # cannot_raise
394
397
    cdef int i, j
395
398
    cdef char c
396
399
 
412
415
    return as_hex
413
416
 
414
417
 
415
 
cdef int _key_to_sha1(key, char *sha1):
 
418
cdef int _key_to_sha1(key, char *sha1): # cannot_raise
416
419
    """Map a key into its sha1 content.
417
420
 
418
421
    :param key: A tuple of style ('sha1:abcd...',)
483
486
    return _sha1_to_key(PyString_AS_STRING(sha1_bin))
484
487
 
485
488
 
486
 
cdef unsigned int _sha1_to_uint(char *sha1):
 
489
cdef unsigned int _sha1_to_uint(char *sha1): # cannot_raise
487
490
    cdef unsigned int val
488
491
    # Must be in MSB, because that is how the content is sorted
489
492
    val = (((<unsigned int>(sha1[0]) & 0xff) << 24)
692
695
            PyList_Append(result, item)
693
696
        return result
694
697
 
695
 
    cdef int _count_records(self, char *c_content, char *c_end):
 
698
    cdef int _count_records(self, char *c_content, char *c_end): # cannot_raise
696
699
        """Count how many records are in this section."""
697
700
        cdef char *c_cur
698
701
        cdef int num_records