elif not skip_child_analysis:
self.index.analyse_types(env)
if self.base.type.is_pyobject:
- if self.index.type.is_int:
+ if self.index.type.is_int and not self.index.type.is_longlong:
self.original_index_type = self.index.type
self.index = self.index.coerce_to(PyrexTypes.c_py_ssize_t_type, env).coerce_to_simple(env)
if getting:
# is_extension_type boolean Is a Python extension type
# is_numeric boolean Is a C numeric type
# is_int boolean Is a C integer type
+ # is_longlong boolean Is a long long or unsigned long long.
# is_float boolean Is a C floating point type
# is_void boolean Is the C void type
# is_array boolean Is a C array type
is_builtin_type = 0
is_numeric = 0
is_int = 0
+ is_longlong = 0
is_float = 0
is_void = 0
is_array = 0
class CLongLongType(CUIntType):
+ is_longlong = 1
to_py_function = "PyLong_FromLongLong"
from_py_function = "__pyx_PyInt_AsLongLong"
class CULongLongType(CUIntType):
+ is_longlong = 1
to_py_function = "PyLong_FromUnsignedLongLong"
from_py_function = "__pyx_PyInt_AsUnsignedLongLong"
--- /dev/null
+__doc__ = """
+ >>> D = set_longlong(2**40, 2**50, 2, "yelp")
+ >>> D[2**40]
+ 'yelp'
+ >>> D[2**50]
+ 'yelp'
+ >>> D[2]
+ 'yelp'
+"""
+
+ctypedef long long foo
+
+def set_longlong(long long ob, foo x, long y, val):
+ tank = {}
+ tank[ob] = val
+ tank[x] = val
+ tank[y] = val
+ return tank