summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
authorRohit Goswami <rog32@hi.is>2022-06-21 18:19:05 +0300
committerRohit Goswami <rog32@hi.is>2022-06-21 18:19:05 +0300
commitf6f0ad0643848faa39d62a6a44bbe72aa6f0ad3b (patch)
treedafd6909d353c7dd87b9df82bd3f5aeccb78eed4 /numpy
parent0028203bf0ab1fb8e72318bba958969ec7cecc73 (diff)
downloadnumpy-f6f0ad0643848faa39d62a6a44bbe72aa6f0ad3b.tar.gz
ENH: Generate wrappers for scalars with value
Diffstat (limited to 'numpy')
-rw-r--r--numpy/f2py/auxfuncs.py8
-rwxr-xr-xnumpy/f2py/rules.py4
2 files changed, 8 insertions, 4 deletions
diff --git a/numpy/f2py/auxfuncs.py b/numpy/f2py/auxfuncs.py
index 98c9eff78..3f9b0ceaf 100644
--- a/numpy/f2py/auxfuncs.py
+++ b/numpy/f2py/auxfuncs.py
@@ -47,7 +47,7 @@ __all__ = [
'isunsigned_chararray', 'isunsigned_long_long',
'isunsigned_long_longarray', 'isunsigned_short',
'isunsigned_shortarray', 'l_and', 'l_not', 'l_or', 'outmess',
- 'replace', 'show', 'stripcomma', 'throw_error',
+ 'replace', 'show', 'stripcomma', 'throw_error', 'isattr_value'
]
@@ -298,6 +298,9 @@ def issubroutine_wrap(rout):
return 0
return issubroutine(rout) and hasassumedshape(rout)
+def isattr_value(var):
+ return 'value' in var.get('attrspec', [])
+
def hasassumedshape(rout):
if rout.get('hasassumedshape'):
@@ -692,7 +695,8 @@ def getcallprotoargument(rout, cb_map={}):
elif isstring(var):
pass
else:
- ctype = ctype + '*'
+ if not isattr_value(var):
+ ctype = ctype + '*'
if ((isstring(var)
or isarrayofstrings(var) # obsolete?
or isstringarray(var))):
diff --git a/numpy/f2py/rules.py b/numpy/f2py/rules.py
index 63c48a878..1bac87102 100755
--- a/numpy/f2py/rules.py
+++ b/numpy/f2py/rules.py
@@ -71,7 +71,7 @@ from .auxfuncs import (
islong_double, islong_doublefunction, islong_long,
islong_longfunction, ismoduleroutine, isoptional, isrequired,
isscalar, issigned_long_longarray, isstring, isstringarray,
- isstringfunction, issubroutine,
+ isstringfunction, issubroutine, isattr_value,
issubroutine_wrap, isthreadsafe, isunsigned, isunsigned_char,
isunsigned_chararray, isunsigned_long_long,
isunsigned_long_longarray, isunsigned_short, isunsigned_shortarray,
@@ -874,7 +874,7 @@ if (#varname#_cb.capi==Py_None) {
{ # Common
'decl': ' #ctype# #varname# = 0;',
'pyobjfrom': {debugcapi: ' fprintf(stderr,"#vardebugshowvalue#\\n",#varname#);'},
- 'callfortran': {isintent_c: '#varname#,', l_not(isintent_c): '&#varname#,'},
+ 'callfortran': {l_or(isintent_c, isattr_value): '#varname#,', l_not(l_or(isintent_c, isattr_value)): '&#varname#,'},
'return': {isintent_out: ',#varname#'},
'_check': l_and(isscalar, l_not(iscomplex))
}, {