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
343064e8
Commit
343064e8
authored
7 years ago
by
Robert Bradshaw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Simplify and memoize specialization__name.
parent
750ce9c4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
9 deletions
+10
-9
Cython/Compiler/PyrexTypes.py
Cython/Compiler/PyrexTypes.py
+10
-9
No files found.
Cython/Compiler/PyrexTypes.py
View file @
343064e8
...
...
@@ -28,6 +28,7 @@ class BaseType(object):
# List of attribute names of any subtypes
subtypes
=
[]
_empty_declaration
=
None
_specialization_name
=
None
default_format_spec
=
None
def
can_coerce_to_pyobject
(
self
,
env
):
...
...
@@ -48,15 +49,15 @@ class BaseType(object):
return
self
.
_empty_declaration
def
specialization_name
(
self
):
# This is not entirely robust.
safe
=
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789'
all
=
[]
for
c
in
self
.
empty_declaration_code
().
replace
(
"unsigned "
,
"unsigned_"
).
replace
(
"long long"
,
"long_long"
).
replace
(
" "
,
"__"
):
if
c
in
safe
:
all
.
append
(
c
)
else
:
all
.
append
(
'_%x_'
%
ord
(
c
)
)
return
''
.
join
(
all
)
if
self
.
_specialization_name
is
None
:
# This is not entirely robust.
common_subs
=
(
self
.
empty_declaration_code
()
.
replace
(
"unsigned "
,
"unsigned_"
)
.
replace
(
"long long"
,
"long_long"
)
.
replace
(
" "
,
"__"
)
)
self
.
_specialization_name
=
re
.
sub
(
'[^a-zA-Z0-9_]'
,
lambda
x
:
'_%x_'
%
ord
(
x
.
group
(
0
)),
common_subs
)
return
self
.
_specialization_name
def
base_declaration_code
(
self
,
base_code
,
entity_code
):
if
entity_code
:
...
...
This diff is collapsed.
Click to expand it.
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