public interface cast_nonstrict
Non-strict casts/transforms between Fortran and Python datatypes
Result is 1st argument to cast, 2nd argument object/scalar to cast
In contrast to cast, cast_nonstrict tries to convert to the type specified
by the 1st argument even when there is no exact correspondence of types.
Non-strict cast might lead to loss of information (e. g. when casting
a float to an integer) or might need additional memory and time for
making a copy (e. g. casting a list to a tuple)
Use to cast/transform a Python object into a Fortran value
and to cast an unspecific Python object into more specific objects, such
as list or tuple, converting between types when necessary.
Fortran values can be scalars or character strings.
Can be used to get the string representation of a Python object
as a Fortran character string.
Python strings are encoded as UTF-8
Module Procedures
private function cast_nonstrict_to_list(li, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
type(list), |
intent(out) |
|
| :: |
li | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_tuple(tu, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
type(tuple), |
intent(out) |
|
| :: |
tu | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_chars(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
character(kind=C_CHAR,len=:), |
intent(out), |
|
allocatable | :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_int32(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
integer(kind=int32), |
intent(out) |
|
| :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_int64(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
integer(kind=int64), |
intent(out) |
|
| :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_real32(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
real(kind=real32), |
intent(out) |
|
| :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_real64(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
real(kind=real64), |
intent(out) |
|
| :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_complex_real32(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
complex(kind=real32), |
intent(out) |
|
| :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_complex_real64(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
complex(kind=real64), |
intent(out) |
|
| :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)
private function cast_nonstrict_to_logical(out_value, obj) result(ierror)
Arguments
Type |
Intent | Optional |
Attributes | | Name | |
logical, |
intent(out) |
|
| :: |
out_value | |
class(object), |
intent(in) |
|
| :: |
obj | |
Return Value integer(kind=C_INT)