Skip to content

Commit 696daa5

Browse files
committed
Fix intent for const array pointers
swig-fortran 529f70d7b1c9c5b43eef265e5d6c714319cae4ca
1 parent bb45830 commit 696daa5

File tree

4 files changed

+26
-25
lines changed

4 files changed

+26
-25
lines changed

src/flc.i

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,11 @@ using std::size_t;
4747

4848
%include <typemaps.i>
4949
%apply (SWIGTYPE *DATA, size_t SIZE) {
50-
(const int32_t *DATA, size_t DATASIZE),
51-
(const int64_t *DATA, size_t DATASIZE),
52-
(const double *DATA, size_t DATASIZE),
5350
(int32_t *DATA, size_t DATASIZE),
5451
(int64_t *DATA, size_t DATASIZE),
5552
(double *DATA, size_t DATASIZE) };
5653

54+
%apply (const SWIGTYPE *DATA, size_t SIZE) {
55+
(const int32_t *DATA, size_t DATASIZE),
56+
(const int64_t *DATA, size_t DATASIZE),
57+
(const double *DATA, size_t DATASIZE) };

src/flc_algorithm.i

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ static void argsort_cmp(const T *DATA, size_t DATASIZE,
9191

9292
%inline {
9393
template<class T>
94-
int binary_search(T *DATA, size_t DATASIZE, T value) {
95-
T *end = DATA + DATASIZE;
94+
int binary_search(const T *DATA, size_t DATASIZE, T value) {
95+
const T *end = DATA + DATASIZE;
9696
auto iter = std::lower_bound(DATA, end, value);
9797
if (iter == end || *iter != value)
9898
return 0;

src/generated/flc_algorithm.f90

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ function swigf_is_sorted__SWIG_1(data) &
401401
result(swig_result)
402402
use, intrinsic :: ISO_C_BINDING
403403
logical :: swig_result
404-
integer(C_INT32_T), dimension(:), target :: data
404+
integer(C_INT32_T), dimension(:), intent(in), target :: data
405405
integer(C_INT32_T), pointer :: farg1_view
406406
integer(C_INT) :: fresult
407407
type(SwigArrayWrapper) :: farg1
@@ -422,7 +422,7 @@ function swigf_is_sorted__SWIG_2(data) &
422422
result(swig_result)
423423
use, intrinsic :: ISO_C_BINDING
424424
logical :: swig_result
425-
integer(C_INT64_T), dimension(:), target :: data
425+
integer(C_INT64_T), dimension(:), intent(in), target :: data
426426
integer(C_INT64_T), pointer :: farg1_view
427427
integer(C_INT) :: fresult
428428
type(SwigArrayWrapper) :: farg1
@@ -443,7 +443,7 @@ function swigf_is_sorted__SWIG_3(data) &
443443
result(swig_result)
444444
use, intrinsic :: ISO_C_BINDING
445445
logical :: swig_result
446-
real(C_DOUBLE), dimension(:), target :: data
446+
real(C_DOUBLE), dimension(:), intent(in), target :: data
447447
real(C_DOUBLE), pointer :: farg1_view
448448
integer(C_INT) :: fresult
449449
type(SwigArrayWrapper) :: farg1
@@ -464,7 +464,7 @@ function swigf_is_sorted__SWIG_4(data, cmp) &
464464
result(swig_result)
465465
use, intrinsic :: ISO_C_BINDING
466466
logical :: swig_result
467-
integer(C_INT32_T), dimension(:), target :: data
467+
integer(C_INT32_T), dimension(:), intent(in), target :: data
468468
integer(C_INT32_T), pointer :: farg1_view
469469
type(C_FUNPTR), intent(in), value :: cmp
470470
integer(C_INT) :: fresult
@@ -488,7 +488,7 @@ function swigf_is_sorted__SWIG_5(data, cmp) &
488488
result(swig_result)
489489
use, intrinsic :: ISO_C_BINDING
490490
logical :: swig_result
491-
integer(C_INT64_T), dimension(:), target :: data
491+
integer(C_INT64_T), dimension(:), intent(in), target :: data
492492
integer(C_INT64_T), pointer :: farg1_view
493493
type(C_FUNPTR), intent(in), value :: cmp
494494
integer(C_INT) :: fresult
@@ -512,7 +512,7 @@ function swigf_is_sorted__SWIG_6(data, cmp) &
512512
result(swig_result)
513513
use, intrinsic :: ISO_C_BINDING
514514
logical :: swig_result
515-
real(C_DOUBLE), dimension(:), target :: data
515+
real(C_DOUBLE), dimension(:), intent(in), target :: data
516516
real(C_DOUBLE), pointer :: farg1_view
517517
type(C_FUNPTR), intent(in), value :: cmp
518518
integer(C_INT) :: fresult
@@ -534,7 +534,7 @@ function swigf_is_sorted__SWIG_6(data, cmp) &
534534

535535
subroutine swigf_argsort__SWIG_1(data, idx)
536536
use, intrinsic :: ISO_C_BINDING
537-
integer(C_INT32_T), dimension(:), target :: data
537+
integer(C_INT32_T), dimension(:), intent(in), target :: data
538538
integer(C_INT32_T), pointer :: farg1_view
539539
integer(C_INT), dimension(:), target :: idx
540540
integer(C_INT), pointer :: farg3_view
@@ -562,7 +562,7 @@ subroutine swigf_argsort__SWIG_1(data, idx)
562562

563563
subroutine swigf_argsort__SWIG_2(data, idx)
564564
use, intrinsic :: ISO_C_BINDING
565-
integer(C_INT64_T), dimension(:), target :: data
565+
integer(C_INT64_T), dimension(:), intent(in), target :: data
566566
integer(C_INT64_T), pointer :: farg1_view
567567
integer(C_INT), dimension(:), target :: idx
568568
integer(C_INT), pointer :: farg3_view
@@ -590,7 +590,7 @@ subroutine swigf_argsort__SWIG_2(data, idx)
590590

591591
subroutine swigf_argsort__SWIG_3(data, idx)
592592
use, intrinsic :: ISO_C_BINDING
593-
real(C_DOUBLE), dimension(:), target :: data
593+
real(C_DOUBLE), dimension(:), intent(in), target :: data
594594
real(C_DOUBLE), pointer :: farg1_view
595595
integer(C_INT), dimension(:), target :: idx
596596
integer(C_INT), pointer :: farg3_view
@@ -618,7 +618,7 @@ subroutine swigf_argsort__SWIG_3(data, idx)
618618

619619
subroutine swigf_argsort__SWIG_4(data, idx, cmp)
620620
use, intrinsic :: ISO_C_BINDING
621-
integer(C_INT32_T), dimension(:), target :: data
621+
integer(C_INT32_T), dimension(:), intent(in), target :: data
622622
integer(C_INT32_T), pointer :: farg1_view
623623
integer(C_INT), dimension(:), target :: idx
624624
integer(C_INT), pointer :: farg3_view
@@ -649,7 +649,7 @@ subroutine swigf_argsort__SWIG_4(data, idx, cmp)
649649

650650
subroutine swigf_argsort__SWIG_5(data, idx, cmp)
651651
use, intrinsic :: ISO_C_BINDING
652-
integer(C_INT64_T), dimension(:), target :: data
652+
integer(C_INT64_T), dimension(:), intent(in), target :: data
653653
integer(C_INT64_T), pointer :: farg1_view
654654
integer(C_INT), dimension(:), target :: idx
655655
integer(C_INT), pointer :: farg3_view
@@ -680,7 +680,7 @@ subroutine swigf_argsort__SWIG_5(data, idx, cmp)
680680

681681
subroutine swigf_argsort__SWIG_6(data, idx, cmp)
682682
use, intrinsic :: ISO_C_BINDING
683-
real(C_DOUBLE), dimension(:), target :: data
683+
real(C_DOUBLE), dimension(:), intent(in), target :: data
684684
real(C_DOUBLE), pointer :: farg1_view
685685
integer(C_INT), dimension(:), target :: idx
686686
integer(C_INT), pointer :: farg3_view
@@ -713,7 +713,7 @@ function swigf_binary_search__SWIG_1(data, value) &
713713
result(swig_result)
714714
use, intrinsic :: ISO_C_BINDING
715715
integer(C_INT) :: swig_result
716-
integer(C_INT32_T), dimension(:), target :: data
716+
integer(C_INT32_T), dimension(:), intent(in), target :: data
717717
integer(C_INT32_T), pointer :: farg1_view
718718
integer(C_INT32_T), intent(in) :: value
719719
integer(C_INT) :: fresult
@@ -737,7 +737,7 @@ function swigf_binary_search__SWIG_2(data, value) &
737737
result(swig_result)
738738
use, intrinsic :: ISO_C_BINDING
739739
integer(C_INT) :: swig_result
740-
integer(C_INT64_T), dimension(:), target :: data
740+
integer(C_INT64_T), dimension(:), intent(in), target :: data
741741
integer(C_INT64_T), pointer :: farg1_view
742742
integer(C_INT64_T), intent(in) :: value
743743
integer(C_INT) :: fresult
@@ -761,7 +761,7 @@ function swigf_binary_search__SWIG_3(data, value) &
761761
result(swig_result)
762762
use, intrinsic :: ISO_C_BINDING
763763
integer(C_INT) :: swig_result
764-
real(C_DOUBLE), dimension(:), target :: data
764+
real(C_DOUBLE), dimension(:), intent(in), target :: data
765765
real(C_DOUBLE), pointer :: farg1_view
766766
real(C_DOUBLE), intent(in) :: value
767767
integer(C_INT) :: fresult

src/generated/flc_algorithmFORTRAN_wrap.cxx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -323,8 +323,8 @@ static void argsort_cmp(const T *DATA, size_t DATASIZE,
323323

324324

325325
template<class T>
326-
int binary_search(T *DATA, size_t DATASIZE, T value) {
327-
T *end = DATA + DATASIZE;
326+
int binary_search(const T *DATA, size_t DATASIZE, T value) {
327+
const T *end = DATA + DATASIZE;
328328
auto iter = std::lower_bound(DATA, end, value);
329329
if (iter == end || *iter != value)
330330
return 0;
@@ -623,7 +623,7 @@ SWIGEXPORT int _wrap_binary_search__SWIG_1(SwigArrayWrapper *farg1, int32_t cons
623623
arg1 = static_cast< int32_t * >(farg1->data);
624624
arg2 = farg1->size;
625625
arg3 = static_cast< int32_t >(*farg3);
626-
result = (int)binary_search< int32_t >(arg1,arg2,arg3);
626+
result = (int)binary_search< int32_t >((int32_t const *)arg1,arg2,arg3);
627627
fresult = static_cast< int >(result);
628628
return fresult;
629629
}
@@ -639,7 +639,7 @@ SWIGEXPORT int _wrap_binary_search__SWIG_2(SwigArrayWrapper *farg1, int64_t cons
639639
arg1 = static_cast< int64_t * >(farg1->data);
640640
arg2 = farg1->size;
641641
arg3 = static_cast< int64_t >(*farg3);
642-
result = (int)binary_search< int64_t >(arg1,arg2,arg3);
642+
result = (int)binary_search< int64_t >((int64_t const *)arg1,arg2,arg3);
643643
fresult = static_cast< int >(result);
644644
return fresult;
645645
}
@@ -655,7 +655,7 @@ SWIGEXPORT int _wrap_binary_search__SWIG_3(SwigArrayWrapper *farg1, double const
655655
arg1 = static_cast< double * >(farg1->data);
656656
arg2 = farg1->size;
657657
arg3 = static_cast< double >(*farg3);
658-
result = (int)binary_search< double >(arg1,arg2,arg3);
658+
result = (int)binary_search< double >((double const *)arg1,arg2,arg3);
659659
fresult = static_cast< int >(result);
660660
return fresult;
661661
}

0 commit comments

Comments
 (0)