@@ -11,12 +11,12 @@ module pcre2
11
11
private
12
12
13
13
integer , parameter , public :: c_uint32_t = c_int32_t
14
- integer , parameter , public :: PCRE2_UCHAR = c_char
15
- integer , parameter , public :: PCRE2_SPTR = c_char
16
- integer , parameter , public :: PCRE2_SIZE = c_size_t
17
- integer , parameter , public :: PCRE2_SIZE_MAX = storage_size(int (0 , kind= PCRE2_SIZE )) / 8
18
- integer (kind= PCRE2_SIZE ), parameter , public :: PCRE2_ZERO_TERMINATED = not (int (0 , kind= PCRE2_SIZE ))
19
- integer (kind= PCRE2_SIZE ), parameter , public :: PCRE2_UNSET = not (int (0 , kind= PCRE2_SIZE ))
14
+ integer , parameter , public :: pcre2_uchar = c_char
15
+ integer , parameter , public :: pcre2_sptr = c_char
16
+ integer , parameter , public :: pcre2_size = c_size_t
17
+ integer , parameter , public :: pcre2_size_max = storage_size(int (0 , kind= pcre2_size )) / 8
18
+ integer (kind= pcre2_size ), parameter , public :: pcre2_zero_terminated = not (int (0 , kind= pcre2_size ))
19
+ integer (kind= pcre2_size ), parameter , public :: pcre2_unset = not (int (0 , kind= pcre2_size ))
20
20
21
21
integer (kind= c_int), parameter , public :: PCRE2_ANCHORED = int (z' 80000000' )
22
22
integer (kind= c_int), parameter , public :: PCRE2_NO_UTF_CHECK = int (z' 40000000' )
@@ -309,40 +309,39 @@ module pcre2
309
309
public :: pcre2_match_data_create
310
310
public :: pcre2_match_data_free
311
311
public :: pcre2_substring_copy_byname
312
+ public :: pcre2_substring_copy_byname_
312
313
public :: pcre2_substring_copy_bynumber
314
+ public :: pcre2_substring_copy_bynumber_
313
315
public :: pcre2_substring_free
314
316
public :: pcre2_substring_get_byname
317
+ public :: pcre2_substring_get_byname_
315
318
public :: pcre2_substring_get_bynumber
319
+ public :: pcre2_substring_get_bynumber_
316
320
public :: pcre2_substring_number_from_name
317
321
318
322
private :: c_f_str_ptr
319
- private :: c_strlen
320
- private :: pcre2_substring_copy_byname_
321
- private :: pcre2_substring_copy_bynumber_
322
- private :: pcre2_substring_get_byname_
323
- private :: pcre2_substring_get_bynumber_
324
323
325
324
interface
326
325
! pcre2_code *pcre2_compile(PCRE2_SPTR pattern, PCRE2_SIZE length, uint32_t options, int *errorcode, PCRE2_SIZE *erroroffset, pcre2_compile_context *ccontext)
327
326
function pcre2_compile (pattern , length , options , errorcode , erroroffset , ccontext ) bind(c, name= ' pcre2_compile_8' )
328
- import :: PCRE2_SIZE, PCRE2_SPTR, c_uint32_t, c_int, c_ptr
327
+ import :: c_uint32_t, c_int, c_ptr, pcre2_size, pcre2_sptr
329
328
implicit none
330
- character (kind= PCRE2_SPTR ), intent (in ) :: pattern
331
- integer (kind= PCRE2_SIZE ), intent (in ), value :: length
329
+ character (kind= pcre2_sptr ), intent (in ) :: pattern
330
+ integer (kind= pcre2_size ), intent (in ), value :: length
332
331
integer (kind= c_uint32_t), intent (in ), value :: options
333
332
integer (kind= c_int), intent (out ) :: errorcode
334
- integer (kind= PCRE2_SIZE ), intent (out ) :: erroroffset
333
+ integer (kind= pcre2_size ), intent (out ) :: erroroffset
335
334
type (c_ptr), intent (in ), value :: ccontext
336
335
type (c_ptr) :: pcre2_compile
337
336
end function pcre2_compile
338
337
339
338
! int pcre2_get_error_message(int errorcode, PCRE2_UCHAR *buffer, PCRE2_SIZE bufflen)
340
339
function pcre2_get_error_message (errorcode , buffer , bufflen ) bind(c, name= ' pcre2_get_error_message_8' )
341
- import :: c_int, PCRE2_SIZE, PCRE2_UCHAR
340
+ import :: c_int, pcre2_size, pcre2_uchar
342
341
implicit none
343
342
integer (kind= c_int), intent (in ), value :: errorcode
344
- character (kind= PCRE2_UCHAR ), intent (inout ) :: buffer
345
- integer (kind= PCRE2_SIZE ), intent (in ), value :: bufflen
343
+ character (kind= pcre2_uchar ), intent (inout ) :: buffer
344
+ integer (kind= pcre2_size ), intent (in ), value :: bufflen
346
345
integer (kind= c_int) :: pcre2_get_error_message
347
346
end function pcre2_get_error_message
348
347
@@ -364,12 +363,12 @@ end function pcre2_get_ovector_pointer
364
363
365
364
! int pcre2_match(const pcre2_code *code, PCRE2_SPTR subject, PCRE2_SIZE length, PCRE2_SIZE startoffset, uint32_t options, pcre2_match_data *match_data, pcre2_match_context *mcontext)
366
365
function pcre2_match (code , subject , length , startoffset , options , match_data , mcontext ) bind(c, name= ' pcre2_match_8' )
367
- import :: c_int, c_ptr, c_uint32_t, PCRE2_SIZE, PCRE2_SPTR
366
+ import :: c_int, c_ptr, c_uint32_t, pcre2_size, pcre2_sptr
368
367
implicit none
369
368
type (c_ptr), intent (in ), value :: code
370
- character (kind= PCRE2_SPTR ), intent (in ) :: subject
371
- integer (kind= PCRE2_SIZE ), intent (in ), value :: length
372
- integer (kind= PCRE2_SIZE ), intent (in ), value :: startoffset
369
+ character (kind= pcre2_sptr ), intent (in ) :: subject
370
+ integer (kind= pcre2_size ), intent (in ), value :: length
371
+ integer (kind= pcre2_size ), intent (in ), value :: startoffset
373
372
integer (kind= c_uint32_t), intent (in ), value :: options
374
373
type (c_ptr), intent (in ), value :: match_data
375
374
type (c_ptr), intent (in ), value :: mcontext
@@ -387,55 +386,55 @@ end function pcre2_match_data_create
387
386
388
387
! int pcre2_substring_copy_byname(pcre2_match_data *match_data, PCRE2_SPTR name, PCRE2_UCHAR *buffer, PCRE2_SIZE *bufflen)
389
388
function pcre2_substring_copy_byname_ (match_data , name , buffer , bufflen ) bind(c, name= ' pcre2_substring_copy_byname_8' )
390
- import :: c_int, c_ptr, PCRE2_SIZE, PCRE2_SPTR, PCRE2_UCHAR
389
+ import :: c_int, c_ptr, pcre2_size, pcre2_sptr, pcre2_uchar
391
390
implicit none
392
391
type (c_ptr), intent (in ), value :: match_data
393
- character (kind= PCRE2_SPTR ), intent (in ) :: name
394
- character (kind= PCRE2_UCHAR ), intent (inout ) :: buffer
395
- integer (kind= PCRE2_SIZE ), intent (inout ) :: bufflen
392
+ character (kind= pcre2_sptr ), intent (in ) :: name
393
+ character (kind= pcre2_uchar ), intent (inout ) :: buffer
394
+ integer (kind= pcre2_size ), intent (inout ) :: bufflen
396
395
integer (kind= c_int) :: pcre2_substring_copy_byname_
397
396
end function pcre2_substring_copy_byname_
398
397
399
398
! int pcre2_substring_copy_bynumber(pcre2_match_data *match_data, uint32_t number, PCRE2_UCHAR *buffer, PCRE2_SIZE *bufflen)
400
399
function pcre2_substring_copy_bynumber_ (match_data , number , buffer , bufflen ) bind(c, name= ' pcre2_substring_copy_bynumber_8' )
401
- import :: c_int, c_ptr, c_uint32_t, PCRE2_SIZE, PCRE2_UCHAR
400
+ import :: c_int, c_ptr, c_uint32_t, pcre2_size, pcre2_uchar
402
401
implicit none
403
402
type (c_ptr), intent (in ), value :: match_data
404
403
integer (kind= c_uint32_t), intent (in ), value :: number
405
- character (kind= PCRE2_UCHAR ), intent (inout ) :: buffer
406
- integer (kind= PCRE2_SIZE ), intent (inout ) :: bufflen
404
+ character (kind= pcre2_uchar ), intent (inout ) :: buffer
405
+ integer (kind= pcre2_size ), intent (inout ) :: bufflen
407
406
integer (kind= c_int) :: pcre2_substring_copy_bynumber_
408
407
end function pcre2_substring_copy_bynumber_
409
408
410
409
! int pcre2_substring_get_byname(pcre2_match_data *match_data, PCRE2_SPTR name, PCRE2_UCHAR **bufferptr, PCRE2_SIZE *bufflen)
411
410
function pcre2_substring_get_byname_ (match_data , name , bufferptr , bufflen ) bind(c, name= ' pcre2_substring_get_byname_8' )
412
- import :: c_int, c_ptr, PCRE2_SIZE, PCRE2_SPTR
411
+ import :: c_int, c_ptr, pcre2_size, pcre2_sptr
413
412
implicit none
414
413
type (c_ptr), intent (in ), value :: match_data
415
- character (kind= PCRE2_SPTR ), intent (in ) :: name
414
+ character (kind= pcre2_sptr ), intent (in ) :: name
416
415
type (c_ptr), intent (out ) :: bufferptr
417
- integer (kind= PCRE2_SIZE ), intent (out ) :: bufflen
416
+ integer (kind= pcre2_size ), intent (out ) :: bufflen
418
417
integer (kind= c_int) :: pcre2_substring_get_byname_
419
418
end function pcre2_substring_get_byname_
420
419
421
420
! int pcre2_substring_get_bynumber(pcre2_match_data *match_data, uint32_t number, PCRE2_UCHAR **bufferptr, PCRE2_SIZE *bufflen)
422
421
function pcre2_substring_get_bynumber_ (match_data , number , bufferptr , bufflen ) &
423
422
bind(c, name= ' pcre2_substring_get_bynumber_8' )
424
- import :: c_int, c_ptr, c_uint32_t, PCRE2_SIZE
423
+ import :: c_int, c_ptr, c_uint32_t, pcre2_size
425
424
implicit none
426
425
type (c_ptr), intent (in ), value :: match_data
427
426
integer (kind= c_uint32_t), intent (in ), value :: number
428
427
type (c_ptr), intent (out ) :: bufferptr
429
- integer (kind= PCRE2_SIZE ), intent (out ) :: bufflen
428
+ integer (kind= pcre2_size ), intent (out ) :: bufflen
430
429
integer (kind= c_int) :: pcre2_substring_get_bynumber_
431
430
end function pcre2_substring_get_bynumber_
432
431
433
432
! int pcre2_substring_number_from_name(const pcre2_code *code, PCRE2_SPTR name)
434
433
function pcre2_substring_number_from_name (code , name ) bind(c, name= ' pcre2_substring_number_from_name_8' )
435
- import :: c_int, c_ptr, PCRE2_SPTR
434
+ import :: c_int, c_ptr, pcre2_sptr
436
435
implicit none
437
436
type (c_ptr), intent (in ), value :: code
438
- character (kind= PCRE2_SPTR ), intent (in ) :: name
437
+ character (kind= pcre2_sptr ), intent (in ) :: name
439
438
integer (kind= c_int) :: pcre2_substring_number_from_name
440
439
end function pcre2_substring_number_from_name
441
440
@@ -468,28 +467,19 @@ subroutine pcre2_substring_free(buffer) bind(c, name='pcre2_substring_free_8')
468
467
end subroutine pcre2_substring_free
469
468
end interface
470
469
471
- interface
472
- ! size_t strlen(const char *str)
473
- function c_strlen (str ) bind(c, name= ' strlen' )
474
- import :: c_ptr, c_size_t
475
- implicit none
476
- type (c_ptr), intent (in ), value :: str
477
- integer (kind= c_size_t) :: c_strlen
478
- end function c_strlen
479
- end interface
480
470
contains
481
471
function pcre2_substring_copy_byname (match_data , name , buffer , buff_len ) result(rc)
482
472
type (c_ptr), intent (in ) :: match_data
483
473
character (len=* ), intent (in ) :: name
484
474
character (len=* ), intent (inout ) :: buffer
485
- integer (kind= PCRE2_SIZE ), intent (inout ), optional :: buff_len
475
+ integer (kind= pcre2_size ), intent (inout ), optional :: buff_len
486
476
integer :: rc
487
- integer (kind= PCRE2_SIZE ) :: sz
477
+ integer (kind= pcre2_size ) :: sz
488
478
489
479
if (present (buff_len)) then
490
480
sz = buff_len
491
481
else
492
- sz = len (buffer, kind= PCRE2_SIZE )
482
+ sz = len (buffer, kind= pcre2_size )
493
483
end if
494
484
495
485
rc = pcre2_substring_copy_byname_(match_data, name // c_null_char, buffer, sz)
@@ -500,14 +490,14 @@ function pcre2_substring_copy_bynumber(match_data, number, buffer, buff_len) res
500
490
type (c_ptr), intent (in ) :: match_data
501
491
integer , intent (in ) :: number
502
492
character (len=* ), intent (inout ) :: buffer
503
- integer (kind= PCRE2_SIZE ), intent (inout ), optional :: buff_len
493
+ integer (kind= pcre2_size ), intent (inout ), optional :: buff_len
504
494
integer :: rc
505
- integer (kind= PCRE2_SIZE ) :: sz
495
+ integer (kind= pcre2_size ) :: sz
506
496
507
497
if (present (buff_len)) then
508
498
sz = buff_len
509
499
else
510
- sz = len (buffer, kind= PCRE2_SIZE )
500
+ sz = len (buffer, kind= pcre2_size )
511
501
end if
512
502
513
503
rc = pcre2_substring_copy_bynumber_(match_data, number, buffer, sz)
@@ -518,34 +508,30 @@ function pcre2_substring_get_byname(match_data, name, buffer, buff_len) result(r
518
508
type (c_ptr), intent (in ) :: match_data
519
509
character (len=* ), intent (in ) :: name
520
510
character (len= :), allocatable , intent (out ) :: buffer
521
- integer (kind= PCRE2_SIZE), intent (out ) :: buff_len
522
- integer :: rc
523
- type (c_ptr) :: ptr
511
+ integer (kind= pcre2_size), intent (out ) :: buff_len
512
+
513
+ integer :: rc
514
+ type (c_ptr) :: ptr
524
515
525
516
ptr = c_null_ptr
526
517
rc = pcre2_substring_get_byname_(match_data, name // c_null_char, ptr, buff_len)
527
-
528
- if (c_associated(ptr)) then
529
- call c_f_str_ptr(ptr, buffer)
530
- call pcre2_substring_free(ptr)
531
- end if
518
+ call c_f_str_ptr(ptr, buffer)
519
+ if (c_associated(ptr)) call pcre2_substring_free(ptr)
532
520
end function pcre2_substring_get_byname
533
521
534
522
function pcre2_substring_get_bynumber (match_data , number , buffer , buff_len ) result(rc)
535
523
type (c_ptr), intent (in ) :: match_data
536
524
integer , intent (in ) :: number
537
525
character (len= :), allocatable , intent (out ) :: buffer
538
- integer (kind= PCRE2_SIZE), intent (out ) :: buff_len
539
- integer :: rc
540
- type (c_ptr) :: ptr
526
+ integer (kind= pcre2_size), intent (out ) :: buff_len
527
+
528
+ integer :: rc
529
+ type (c_ptr) :: ptr
541
530
542
531
ptr = c_null_ptr
543
532
rc = pcre2_substring_get_bynumber_(match_data, number, ptr, buff_len)
544
-
545
- if (c_associated(ptr)) then
546
- call c_f_str_ptr(ptr, buffer)
547
- call pcre2_substring_free(ptr)
548
- end if
533
+ call c_f_str_ptr(ptr, buffer)
534
+ if (c_associated(ptr)) call pcre2_substring_free(ptr)
549
535
end function pcre2_substring_get_bynumber
550
536
551
537
subroutine c_f_str_ptr (c_str , f_str )
@@ -556,6 +542,16 @@ subroutine c_f_str_ptr(c_str, f_str)
556
542
character (kind= c_char), pointer :: ptrs(:)
557
543
integer (kind= c_size_t) :: i, sz
558
544
545
+ interface
546
+ ! size_t strlen(const char *str)
547
+ function c_strlen (str ) bind(c, name= ' strlen' )
548
+ import :: c_ptr, c_size_t
549
+ implicit none
550
+ type (c_ptr), intent (in ), value :: str
551
+ integer (kind= c_size_t) :: c_strlen
552
+ end function c_strlen
553
+ end interface
554
+
559
555
copy_block: block
560
556
if (.not. c_associated(c_str)) exit copy_block
561
557
sz = c_strlen(c_str)
0 commit comments