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
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Gwenaël Samain
cython
Commits
dbd89db6
Commit
dbd89db6
authored
Feb 20, 2009
by
Lisandro Dalcin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Special handling of Py_ssize_t and size_t in the parser (related to #207)
parent
b33174e7
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
16 deletions
+23
-16
Cython/Compiler/Parsing.py
Cython/Compiler/Parsing.py
+16
-5
Cython/Compiler/PyrexTypes.py
Cython/Compiler/PyrexTypes.py
+2
-2
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/Parsing.py
View file @
dbd89db6
...
@@ -1688,12 +1688,17 @@ def p_c_simple_base_type(s, self_flag, nonempty):
...
@@ -1688,12 +1688,17 @@ def p_c_simple_base_type(s, self_flag, nonempty):
if
looking_at_base_type
(
s
):
if
looking_at_base_type
(
s
):
#print "p_c_simple_base_type: looking_at_base_type at", s.position()
#print "p_c_simple_base_type: looking_at_base_type at", s.position()
is_basic
=
1
is_basic
=
1
signed
,
longness
=
p_sign_and_longness
(
s
)
if
s
.
sy
==
'IDENT'
and
s
.
systring
in
special_basic_c_types
:
if
s
.
sy
==
'IDENT'
and
s
.
systring
in
basic_c_type_names
:
signed
,
longness
=
special_basic_c_types
[
s
.
systring
]
name
=
s
.
systring
name
=
s
.
systring
s
.
next
()
s
.
next
()
else
:
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
):
elif
looking_at_dotted_name
(
s
):
#print "p_c_simple_base_type: looking_at_type_name at", s.position()
#print "p_c_simple_base_type: looking_at_type_name at", s.position()
name
=
s
.
systring
name
=
s
.
systring
...
@@ -1811,12 +1816,18 @@ def looking_at_dotted_name(s):
...
@@ -1811,12 +1816,18 @@ def looking_at_dotted_name(s):
else
:
else
:
return
0
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"
)
sign_and_longness_words
=
(
"short"
,
"long"
,
"signed"
,
"unsigned"
)
base_type_start_words
=
\
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
):
def
p_sign_and_longness
(
s
):
signed
=
1
signed
=
1
...
...
Cython/Compiler/PyrexTypes.py
View file @
dbd89db6
...
@@ -1283,8 +1283,8 @@ modifiers_and_name_to_type = {
...
@@ -1283,8 +1283,8 @@ modifiers_and_name_to_type = {
(
2
,
1
,
"int"
):
c_slong_type
,
(
2
,
1
,
"int"
):
c_slong_type
,
(
2
,
2
,
"int"
):
c_slonglong_type
,
(
2
,
2
,
"int"
):
c_slonglong_type
,
(
1
,
0
,
"Py_ssize_t"
):
c_py_ssize_t_type
,
(
2
,
0
,
"Py_ssize_t"
):
c_py_ssize_t_type
,
(
1
,
0
,
"size_t"
)
:
c_size_t_type
,
(
0
,
0
,
"size_t"
)
:
c_size_t_type
,
(
1
,
0
,
"long"
):
c_long_type
,
(
1
,
0
,
"long"
):
c_long_type
,
(
1
,
0
,
"short"
):
c_short_type
,
(
1
,
0
,
"short"
):
c_short_type
,
...
...
tests/errors/e_nosignword.pyx
View file @
dbd89db6
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
signed
float
e
cdef
unsigned
float
f
cdef
unsigned
float
f
cdef
signed
double
g
cdef
signed
double
g
...
@@ -17,8 +13,4 @@ _ERRORS = u"""
...
@@ -17,8 +13,4 @@ _ERRORS = u"""
4:5: Unrecognised type modifier combination
4:5: Unrecognised type modifier combination
5:5: Unrecognised type modifier combination
5:5: Unrecognised type modifier combination
6: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 @
dbd89db6
...
@@ -35,13 +35,17 @@ Traceback (most recent call last):
...
@@ -35,13 +35,17 @@ Traceback (most recent call last):
OverflowError: ...
OverflowError: ...
"""
"""
# XXX This should generate a warning !!!
cdef
extern
from
*
:
ctypedef
unsigned
long
size_t
def
test
(
size_t
i
):
def
test
(
size_t
i
):
return
i
return
i
cdef
class
A
:
cdef
class
A
:
cdef
public
size_t
a
cdef
public
size_t
a
cdef
readonly
size_t
b
cdef
readonly
size_t
b
def
__init__
(
self
,
size_t
a
,
object
b
):
def
__init__
(
self
,
size_t
a
,
object
b
):
self
.
a
=
a
self
.
a
=
a
self
.
b
=
b
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