Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
cython
Commits
4d5d3045
Commit
4d5d3045
authored
Feb 20, 2009
by
Robert Bradshaw
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
6943f537
4345d482
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
47 additions
and
30 deletions
+47
-30
Cython/Compiler/ModuleNode.py
Cython/Compiler/ModuleNode.py
+1
-1
Cython/Compiler/Parsing.py
Cython/Compiler/Parsing.py
+16
-5
Cython/Compiler/PyrexTypes.py
Cython/Compiler/PyrexTypes.py
+14
-4
Cython/Runtime/refnanny.pyx
Cython/Runtime/refnanny.pyx
+10
-10
runtests.py
runtests.py
+1
-1
tests/errors/e_nosignword.pyx
tests/errors/e_nosignword.pyx
+0
-8
tests/run/size_t.pyx
tests/run/size_t.pyx
+5
-1
No files found.
Cython/Compiler/ModuleNode.py
View file @
4d5d3045
...
...
@@ -2338,7 +2338,7 @@ typedef struct {
void (*DECREF)(void*, PyObject*, int);
void (*GOTREF)(void*, PyObject*, int);
void (*GIVEREF)(void*, PyObject*, int);
void* (*NewContext)(const char*, int, char*);
void* (*NewContext)(const char*, int, c
onst c
har*);
int (*FinishContext)(void**);
} __Pyx_RefnannyAPIStruct;
static __Pyx_RefnannyAPIStruct *__Pyx_Refnanny = NULL;
...
...
Cython/Compiler/Parsing.py
View file @
4d5d3045
...
...
@@ -1688,12 +1688,17 @@ def p_c_simple_base_type(s, self_flag, nonempty):
if
looking_at_base_type
(
s
):
#print "p_c_simple_base_type: looking_at_base_type at", s.position()
is_basic
=
1
signed
,
longness
=
p_sign_and_longness
(
s
)
if
s
.
sy
==
'IDENT'
and
s
.
systring
in
basic_c_type_names
:
if
s
.
sy
==
'IDENT'
and
s
.
systring
in
special_basic_c_types
:
signed
,
longness
=
special_basic_c_types
[
s
.
systring
]
name
=
s
.
systring
s
.
next
()
else
:
name
=
'int'
signed
,
longness
=
p_sign_and_longness
(
s
)
if
s
.
sy
==
'IDENT'
and
s
.
systring
in
basic_c_type_names
:
name
=
s
.
systring
s
.
next
()
else
:
name
=
'int'
elif
looking_at_dotted_name
(
s
):
#print "p_c_simple_base_type: looking_at_type_name at", s.position()
name
=
s
.
systring
...
...
@@ -1811,12 +1816,18 @@ def looking_at_dotted_name(s):
else
:
return
0
basic_c_type_names
=
(
"void"
,
"char"
,
"int"
,
"float"
,
"double"
,
"Py_ssize_t"
,
"size_t"
,
"bint"
)
basic_c_type_names
=
(
"void"
,
"char"
,
"int"
,
"float"
,
"double"
,
"bint"
)
special_basic_c_types
=
{
# name : (signed, longness)
"Py_ssize_t"
:
(
2
,
0
),
"size_t"
:
(
0
,
0
),
}
sign_and_longness_words
=
(
"short"
,
"long"
,
"signed"
,
"unsigned"
)
base_type_start_words
=
\
basic_c_type_names
+
sign_and_longness_words
basic_c_type_names
+
sign_and_longness_words
+
tuple
(
special_basic_c_types
)
def
p_sign_and_longness
(
s
):
signed
=
1
...
...
Cython/Compiler/PyrexTypes.py
View file @
4d5d3045
...
...
@@ -1283,8 +1283,8 @@ modifiers_and_name_to_type = {
(
2
,
1
,
"int"
):
c_slong_type
,
(
2
,
2
,
"int"
):
c_slonglong_type
,
(
1
,
0
,
"Py_ssize_t"
):
c_py_ssize_t_type
,
(
1
,
0
,
"size_t"
)
:
c_size_t_type
,
(
2
,
0
,
"Py_ssize_t"
):
c_py_ssize_t_type
,
(
0
,
0
,
"size_t"
)
:
c_size_t_type
,
(
1
,
0
,
"long"
):
c_long_type
,
(
1
,
0
,
"short"
):
c_short_type
,
...
...
@@ -1492,8 +1492,13 @@ static INLINE PY_LONG_LONG __pyx_PyInt_AsLongLong(PyObject* x) {
}
else {
PY_LONG_LONG val;
PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
#if PY_VERSION_HEX < 0x03000000
PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
val = __pyx_PyInt_AsLongLong(tmp);
#else
PyObject* tmp = PyNumber_Long(x); if (!tmp) return (PY_LONG_LONG)-1;
val = PyLong_AsLongLong(tmp);
#endif
Py_DECREF(tmp);
return val;
}
...
...
@@ -1516,8 +1521,13 @@ static INLINE unsigned PY_LONG_LONG __pyx_PyInt_AsUnsignedLongLong(PyObject* x)
}
else {
unsigned PY_LONG_LONG val;
PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
#if PY_VERSION_HEX < 0x03000000
PyObject* tmp = PyNumber_Int(x); if (!tmp) return (PY_LONG_LONG)-1;
val = __pyx_PyInt_AsUnsignedLongLong(tmp);
#else
PyObject* tmp = PyNumber_Long(x); if (!tmp) return (PY_LONG_LONG)-1;
val = PyLong_AsUnsignedLongLong(tmp);
#endif
Py_DECREF(tmp);
return val;
}
...
...
Cython/Runtime/refnanny.pyx
View file @
4d5d3045
...
...
@@ -23,9 +23,9 @@ class Context(object):
self
.
errors
=
[]
def
regref
(
self
,
obj
,
lineno
,
is_null
):
log
(
LOG_ALL
,
'regref'
,
"<NULL>"
if
is_null
else
obj
,
lineno
)
log
(
LOG_ALL
,
u'regref'
,
u
"<NULL>"
if
is_null
else
obj
,
lineno
)
if
is_null
:
self
.
errors
.
append
(
"NULL argument on line %d"
%
lineno
)
self
.
errors
.
append
(
u
"NULL argument on line %d"
%
lineno
)
return
id_
=
id
(
obj
)
count
,
linenumbers
=
self
.
refs
.
get
(
id_
,
(
0
,
[]))
...
...
@@ -33,14 +33,14 @@ class Context(object):
linenumbers
.
append
(
lineno
)
def
delref
(
self
,
obj
,
lineno
,
is_null
):
log
(
LOG_ALL
,
'delref'
,
"<NULL>"
if
is_null
else
obj
,
lineno
)
log
(
LOG_ALL
,
u'delref'
,
u
"<NULL>"
if
is_null
else
obj
,
lineno
)
if
is_null
:
self
.
errors
.
append
(
"NULL argument on line %d"
%
lineno
)
self
.
errors
.
append
(
u
"NULL argument on line %d"
%
lineno
)
return
id_
=
id
(
obj
)
count
,
linenumbers
=
self
.
refs
.
get
(
id_
,
(
0
,
[]))
if
count
==
0
:
self
.
errors
.
append
(
"Too many decrefs on line %d, reference acquired on lines %r"
%
self
.
errors
.
append
(
u
"Too many decrefs on line %d, reference acquired on lines %r"
%
(
lineno
,
linenumbers
))
elif
count
==
1
:
del
self
.
refs
[
id_
]
...
...
@@ -49,12 +49,12 @@ class Context(object):
def
end
(
self
):
if
len
(
self
.
refs
)
>
0
:
msg
=
""
msg
=
u
""
for
count
,
linenos
in
self
.
refs
.
itervalues
():
msg
+=
"
\
n
Acquired on lines: "
+
", "
.
join
([
"%d"
%
x
for
x
in
linenos
])
self
.
errors
.
append
(
"References leaked: %s"
%
msg
)
msg
+=
u"
\
n
Acquired on lines: "
+
u", "
.
join
([
u
"%d"
%
x
for
x
in
linenos
])
self
.
errors
.
append
(
u
"References leaked: %s"
%
msg
)
if
self
.
errors
:
return
"
\
n
"
.
join
(
self
.
errors
)
return
u
"
\
n
"
.
join
(
self
.
errors
)
else
:
return
None
...
...
@@ -134,7 +134,7 @@ cdef int FinishContext(PyObject** ctx) except -1:
Py_XDECREF
(
<
object
>
ctx
[
0
])
ctx
[
0
]
=
NULL
if
errors
:
print
"%s: %s()"
%
pos
print
u
"%s: %s()"
%
pos
print
errors
# raise Error(errors)
return
0
...
...
runtests.py
View file @
4d5d3045
...
...
@@ -483,7 +483,7 @@ if __name__ == '__main__':
action
=
"store_true"
,
default
=
False
,
help
=
"only compile pyx to c, do not run C compiler or run the tests"
)
parser
.
add_option
(
"--no-refnanny"
,
dest
=
"with_refnanny"
,
action
=
"store_false"
,
default
=
True
,
action
=
"store_false"
,
default
=
(
sys
.
version_info
[
0
]
<
3
)
,
help
=
"do not regression test reference counting"
)
parser
.
add_option
(
"--sys-pyregr"
,
dest
=
"system_pyregr"
,
action
=
"store_true"
,
default
=
False
,
...
...
tests/errors/e_nosignword.pyx
View file @
4d5d3045
cdef
signed
Py_ssize_t
a
cdef
unsigned
Py_ssize_t
b
cdef
signed
size_t
c
cdef
unsigned
size_t
d
cdef
signed
float
e
cdef
unsigned
float
f
cdef
signed
double
g
...
...
@@ -17,8 +13,4 @@ _ERRORS = u"""
4:5: Unrecognised type modifier combination
5:5: Unrecognised type modifier combination
6:5: Unrecognised type modifier combination
7:5: Unrecognised type modifier combination
8:5: Unrecognised type modifier combination
9:5: Unrecognised type modifier combination
10:5: Unrecognised type modifier combination
"""
tests/run/size_t.pyx
View file @
4d5d3045
...
...
@@ -35,13 +35,17 @@ Traceback (most recent call last):
OverflowError: ...
"""
# XXX This should generate a warning !!!
cdef
extern
from
*
:
ctypedef
unsigned
long
size_t
def
test
(
size_t
i
):
return
i
cdef
class
A
:
cdef
public
size_t
a
cdef
readonly
size_t
b
def
__init__
(
self
,
size_t
a
,
object
b
):
self
.
a
=
a
self
.
b
=
b
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment