~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/_static_tuple_c.c

(gz) Backslash escape selftest output when printing to non-unicode consoles
 (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2009 Canonical Ltd
 
1
/* Copyright (C) 2009, 2010 Canonical Ltd
2
2
 * 
3
3
 * This program is free software; you can redistribute it and/or modify
4
4
 * it under the terms of the GNU General Public License as published by
140
140
StaticTuple_New(Py_ssize_t size)
141
141
{
142
142
    StaticTuple *stuple;
143
 
    if (size < 0) {
144
 
        PyErr_BadInternalCall();
145
 
        return NULL;
146
 
    }
147
143
 
148
144
    if (size < 0 || size > 255) {
149
145
        /* Too big or too small */
280
276
        return NULL;
281
277
    }
282
278
    len = PyTuple_GET_SIZE(args);
 
279
    if (len < 0 || len > 255) {
 
280
        /* Check the length here so we can raise a TypeError instead of
 
281
         * StaticTuple_New's ValueError.
 
282
         */
 
283
        PyErr_SetString(PyExc_TypeError, "StaticTuple(...)"
 
284
            " takes from 0 to 255 items");
 
285
        return NULL;
 
286
    }
283
287
    self = (StaticTuple *)StaticTuple_New(len);
284
288
    if (self == NULL) {
285
289
        return NULL;
699
703
    return 0;
700
704
}
701
705
 
 
706
 
 
707
static PyObject *
 
708
StaticTuple_sizeof(StaticTuple *self)
 
709
{
 
710
        Py_ssize_t res;
 
711
 
 
712
        res = _PyObject_SIZE(&StaticTuple_Type) + (int)self->size * sizeof(void*);
 
713
        return PyInt_FromSsize_t(res);
 
714
}
 
715
 
 
716
 
 
717
 
702
718
static char StaticTuple_doc[] =
703
719
    "C implementation of a StaticTuple structure."
704
720
    "\n This is used as StaticTuple(item1, item2, item3)"
718
734
     "Create a StaticTuple from a given sequence. This functions"
719
735
     " the same as the tuple() constructor."},
720
736
    {"__reduce__", (PyCFunction)StaticTuple_reduce, METH_NOARGS, StaticTuple_reduce_doc},
 
737
    {"__sizeof__",  (PyCFunction)StaticTuple_sizeof, METH_NOARGS}, 
721
738
    {NULL, NULL} /* sentinel */
722
739
};
723
740