summaryrefslogtreecommitdiffstats
path: root/tools/testfiles/tdset-1.ddl
blob: 89a19078f2c63a892f338860245027da6e5f11c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#############################
Expected output for 'h5dump tdset.h5'
#############################
HDF5 "tdset.h5" {
GROUP "/" {
   DATASET "dset1" {
      DATATYPE  H5T_STD_I32BE
      DATASPACE  SIMPLE { ( 10, 20 ) / ( 10, 20 ) }
      DATA {
        (0,0): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
        (0,19): 19,
        (1,0): 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
        (1,18): 19, 20,
        (2,0): 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
        (2,18): 20, 21,
        (3,0): 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
        (3,18): 21, 22,
        (4,0): 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
        (4,18): 22, 23,
        (5,0): 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
        (5,17): 22, 23, 24,
        (6,0): 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
        (6,17): 23, 24, 25,
        (7,0): 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
        (7,17): 24, 25, 26,
        (8,0): 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
        (8,17): 25, 26, 27,
        (9,0): 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
        (9,16): 25, 26, 27, 28
      }
   }
   DATASET "dset2" {
      DATATYPE  H5T_IEEE_F64BE
      DATASPACE  SIMPLE { ( 30, 20 ) / ( 30, 20 ) }
      DATA {
        (0,0): 0, 0.0001, 0.0002, 0.0003, 0.0004, 0.0005, 0.0006, 0.0007,
        (0,8): 0.0008, 0.0009, 0.001, 0.0011, 0.0012, 0.0013, 0.0014, 0.0015,
        (0,16): 0.0016, 0.0017, 0.0018, 0.0019,
        (1,0): 1, 1.0001, 1.0002, 1.0003, 1.0004, 1.0005, 1.0006, 1.0007,
        (1,8): 1.0008, 1.0009, 1.001, 1.0011, 1.0012, 1.0013, 1.0014, 1.0015,
        (1,16): 1.0016, 1.0017, 1.0018, 1.0019,
        (2,0): 2, 2.0001, 2.0002, 2.0003, 2.0004, 2.0005, 2.0006, 2.0007,
        (2,8): 2.0008, 2.0009, 2.001, 2.0011, 2.0012, 2.0013, 2.0014, 2.0015,
        (2,16): 2.0016, 2.0017, 2.0018, 2.0019,
        (3,0): 3, 3.0001, 3.0002, 3.0003, 3.0004, 3.0005, 3.0006, 3.0007,
        (3,8): 3.0008, 3.0009, 3.001, 3.0011, 3.0012, 3.0013, 3.0014, 3.0015,
        (3,16): 3.0016, 3.0017, 3.0018, 3.0019,
        (4,0): 4, 4.0001, 4.0002, 4.0003, 4.0004, 4.0005, 4.0006, 4.0007,
        (4,8): 4.0008, 4.0009, 4.001, 4.0011, 4.0012, 4.0013, 4.0014, 4.0015,
        (4,16): 4.0016, 4.0017, 4.0018, 4.0019,
        (5,0): 5, 5.0001, 5.0002, 5.0003, 5.0004, 5.0005, 5.0006, 5.0007,
        (5,8): 5.0008, 5.0009, 5.001, 5.0011, 5.0012, 5.0013, 5.0014, 5.0015,
        (5,16): 5.0016, 5.0017, 5.0018, 5.0019,
        (6,0): 6, 6.0001, 6.0002, 6.0003, 6.0004, 6.0005, 6.0006, 6.0007,
        (6,8): 6.0008, 6.0009, 6.001, 6.0011, 6.0012, 6.0013, 6.0014, 6.0015,
        (6,16): 6.0016, 6.0017, 6.0018, 6.0019,
        (7,0): 7, 7.0001, 7.0002, 7.0003, 7.0004, 7.0005, 7.0006, 7.0007,
        (7,8): 7.0008, 7.0009, 7.001, 7.0011, 7.0012, 7.0013, 7.0014, 7.0015,
        (7,16): 7.0016, 7.0017, 7.0018, 7.0019,
        (8,0): 8, 8.0001, 8.0002, 8.0003, 8.0004, 8.0005, 8.0006, 8.0007,
        (8,8): 8.0008, 8.0009, 8.001, 8.0011, 8.0012, 8.0013, 8.0014, 8.0015,
        (8,16): 8.0016, 8.0017, 8.0018, 8.0019,
        (9,0): 9, 9.0001, 9.0002, 9.0003, 9.0004, 9.0005, 9.0006, 9.0007,
        (9,8): 9.0008, 9.0009, 9.001, 9.0011, 9.0012, 9.0013, 9.0014, 9.0015,
        (9,16): 9.0016, 9.0017, 9.0018, 9.0019,
        (10,0): 10, 10.0001, 10.0002, 10.0003, 10.0004, 10.0005, 10.0006,
        (10,7): 10.0007, 10.0008, 10.0009, 10.001, 10.0011, 10.0012, 10.0013,
        (10,14): 10.0014, 10.0015, 10.0016, 10.0017, 10.0018, 10.0019,
        (11,0): 11, 11.0001, 11.0002, 11.0003, 11.0004, 11.0005, 11.0006,
        (11,7): 11.0007, 11.0008, 11.0009, 11.001, 11.0011, 11.0012, 11.0013,
        (11,14): 11.0014, 11.0015, 11.0016, 11.0017, 11.0018, 11.0019,
        (12,0): 12, 12.0001, 12.0002, 12.0003, 12.0004, 12.0005, 12.0006,
        (12,7): 12.0007, 12.0008, 12.0009, 12.001, 12.0011, 12.0012, 12.0013,
        (12,14): 12.0014, 12.0015, 12.0016, 12.0017, 12.0018, 12.0019,
        (13,0): 13, 13.0001, 13.0002, 13.0003, 13.0004, 13.0005, 13.0006,
        (13,7): 13.0007, 13.0008, 13.0009, 13.001, 13.0011, 13.0012, 13.0013,
        (13,14): 13.0014, 13.0015, 13.0016, 13.0017, 13.0018, 13.0019,
        (14,0): 14, 14.0001, 14.0002, 14.0003, 14.0004, 14.0005, 14.0006,
        (14,7): 14.0007, 14.0008, 14.0009, 14.001, 14.0011, 14.0012, 14.0013,
        (14,14): 14.0014, 14.0015, 14.0016, 14.0017, 14.0018, 14.0019,
        (15,0): 15, 15.0001, 15.0002, 15.0003, 15.0004, 15.0005, 15.0006,
        (15,7): 15.0007, 15.0008, 15.0009, 15.001, 15.0011, 15.0012, 15.0013,
        (15,14): 15.0014, 15.0015, 15.0016, 15.0017, 15.0018, 15.0019,
        (16,0): 16, 16.0001, 16.0002, 16.0003, 16.0004, 16.0005, 16.0006,
        (16,7): 16.0007, 16.0008, 16.0009, 16.001, 16.0011, 16.0012, 16.0013,
        (16,14): 16.0014, 16.0015, 16.0016, 16.0017, 16.0018, 16.0019,
        (17,0): 17, 17.0001, 17.0002, 17.0003, 17.0004, 17.0005, 17.0006,
        (17,7): 17.0007, 17.0008, 17.0009, 17.001, 17.0011, 17.0012, 17.0013,
        (17,14): 17.0014, 17.0015, 17.0016, 17.0017, 17.0018, 17.0019,
        (18,0): 18, 18.0001, 18.0002, 18.0003, 18.0004, 18.0005, 18.0006,
        (18,7): 18.0007, 18.0008, 18.0009, 18.001, 18.0011, 18.0012, 18.0013,
        (18,14): 18.0014, 18.0015, 18.0016, 18.0017, 18.0018, 18.0019,
        (19,0): 19, 19.0001, 19.0002, 19.0003, 19.0004, 19.0005, 19.0006,
        (19,7): 19.0007, 19.0008, 19.0009, 19.001, 19.0011, 19.0012, 19.0013,
        (19,14): 19.0014, 19.0015, 19.0016, 19.0017, 19.0018, 19.0019,
        (20,0): 20, 20.0001, 20.0002, 20.0003, 20.0004, 20.0005, 20.0006,
        (20,7): 20.0007, 20.0008, 20.0009, 20.001, 20.0011, 20.0012, 20.0013,
        (20,14): 20.0014, 20.0015, 20.0016, 20.0017, 20.0018, 20.0019,
        (21,0): 21, 21.0001, 21.0002, 21.0003, 21.0004, 21.0005, 21.0006,
        (21,7): 21.0007, 21.0008, 21.0009, 21.001, 21.0011, 21.0012, 21.0013,
        (21,14): 21.0014, 21.0015, 21.0016, 21.0017, 21.0018, 21.0019,
        (22,0): 22, 22.0001, 22.0002, 22.0003, 22.0004, 22.0005, 22.0006,
        (22,7): 22.0007, 22.0008, 22.0009, 22.001, 22.0011, 22.0012, 22.0013,
        (22,14): 22.0014, 22.0015, 22.0016, 22.0017, 22.0018, 22.0019,
        (23,0): 23, 23.0001, 23.0002, 23.0003, 23.0004, 23.0005, 23.0006,
        (23,7): 23.0007, 23.0008, 23.0009, 23.001, 23.0011, 23.0012, 23.0013,
        (23,14): 23.0014, 23.0015, 23.0016, 23.0017, 23.0018, 23.0019,
        (24,0): 24, 24.0001, 24.0002, 24.0003, 24.0004, 24.0005, 24.0006,
        (24,7): 24.0007, 24.0008, 24.0009, 24.001, 24.0011, 24.0012, 24.0013,
        (24,14): 24.0014, 24.0015, 24.0016, 24.0017, 24.0018, 24.0019,
        (25,0): 25, 25.0001, 25.0002, 25.0003, 25.0004, 25.0005, 25.0006,
        (25,7): 25.0007, 25.0008, 25.0009, 25.001, 25.0011, 25.0012, 25.0013,
        (25,14): 25.0014, 25.0015, 25.0016, 25.0017, 25.0018, 25.0019,
        (26,0): 26, 26.0001, 26.0002, 26.0003, 26.0004, 26.0005, 26.0006,
        (26,7): 26.0007, 26.0008, 26.0009, 26.001, 26.0011, 26.0012, 26.0013,
        (26,14): 26.0014, 26.0015, 26.0016, 26.0017, 26.0018, 26.0019,
        (27,0): 27, 27.0001, 27.0002, 27.0003, 27.0004, 27.0005, 27.0006,
        (27,7): 27.0007, 27.0008, 27.0009, 27.001, 27.0011, 27.0012, 27.0013,
        (27,14): 27.0014, 27.0015, 27.0016, 27.0017, 27.0018, 27.0019,
        (28,0): 28, 28.0001, 28.0002, 28.0003, 28.0004, 28.0005, 28.0006,
        (28,7): 28.0007, 28.0008, 28.0009, 28.001, 28.0011, 28.0012, 28.0013,
        (28,14): 28.0014, 28.0015, 28.0016, 28.0017, 28.0018, 28.0019,
        (29,0): 29, 29.0001, 29.0002, 29.0003, 29.0004, 29.0005, 29.0006,
        (29,7): 29.0007, 29.0008, 29.0009, 29.001, 29.0011, 29.0012, 29.0013,
        (29,14): 29.0014, 29.0015, 29.0016, 29.0017, 29.0018, 29.0019
      }
   }
}
}
378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775
!****h* ROBODoc/H5O
!
! NAME
!  MODULE H5O
!
! FILE
!  fortran/src/H5Off.f90
!
! PURPOSE
!  This file contains Fortran interfaces for H5O functions. It includes
!  all the functions that are independent on whether the Fortran 2003 functions
!  are enabled or disabled.
!
!
! COPYRIGHT
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!   Copyright by The HDF Group.                                               *
!   Copyright by the Board of Trustees of the University of Illinois.         *
!   All rights reserved.                                                      *
!                                                                             *
!   This file is part of HDF5.  The full HDF5 copyright notice, including     *
!   terms governing use, modification, and redistribution, is contained in    *
!   the files COPYING and Copyright.html.  COPYING can be found at the root   *
!   of the source code distribution tree; Copyright.html can be found at the  *
!   root level of an installed copy of the electronic HDF5 document set and   *
!   is linked from the top-level documents page.  It can also be found at     *
!   http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
!   access to either file, you may request a copy from help@hdfgroup.org.     *
! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
!
! NOTES
!                         *** IMPORTANT ***
!  If you add a new H5O function you must add the function name to the
!  Windows dll file 'hdf5_fortrandll.def.in' in the fortran/src directory.
!  This is needed for Windows based operating systems.
!
!*****

MODULE H5O

  USE H5GLOBAL

CONTAINS

!****s* H5O/h5olink_f
!
! NAME
!  h5olink_f
!
! PURPOSE
!  Creates a hard link to an object in an HDF5 file.
!
! Inputs:
!  object_id 	 - Object to be linked.
!  new_loc_id 	 - File or group identifier specifying location at which object is to be linked.
!  new_link_name - Name of link to be created, relative to new_loc_id.
!
! Outputs:
!  hdferr        - Returns 0 if successful and -1 if fails.
!
! Optional parameters:
!  lcpl_id 	 - Link creation property list identifier.
!  lapl_id 	 - Link access property list identifier.
!
! AUTHOR
!  M. Scot Breitenfeld
!  April 21, 2008
!
! Fortran90 Interface:
  SUBROUTINE h5olink_f(object_id, new_loc_id, new_link_name, hdferr, lcpl_id, lapl_id)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)  :: object_id
    INTEGER(HID_T)  , INTENT(IN)  :: new_loc_id
    CHARACTER(LEN=*), INTENT(IN)  :: new_link_name
    INTEGER         , INTENT(OUT) :: hdferr
    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lcpl_id
    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lapl_id
!*****
    INTEGER(HID_T) :: lapl_id_default
    INTEGER(HID_T) :: lcpl_id_default

    INTEGER(SIZE_T) :: new_link_namelen

    INTERFACE
       INTEGER FUNCTION h5olink_c(object_id, new_loc_id, new_link_name, new_link_namelen, &
            lcpl_id_default, lapl_id_default)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OLINK_C'::h5olink_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: new_link_name
         INTEGER(HID_T), INTENT(IN) :: object_id
         INTEGER(HID_T), INTENT(IN) :: new_loc_id
         CHARACTER(LEN=*), INTENT(IN) :: new_link_name
         INTEGER(SIZE_T) :: new_link_namelen
         INTEGER(HID_T) :: lapl_id_default
         INTEGER(HID_T) :: lcpl_id_default
       END FUNCTION h5olink_c
    END INTERFACE

    new_link_namelen = LEN(new_link_name)

    lapl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
    lcpl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id

    hdferr = h5olink_c(object_id, new_loc_id, new_link_name, new_link_namelen, &
         lcpl_id_default, lapl_id_default)

  END SUBROUTINE h5olink_f

!****s* H5O/h5oopen_f
!
! NAME
!  h5oopen_f
!
! PURPOSE
!  Opens an object in an HDF5 file by location identifier and path name.
!
! Inputs:
!  loc_id  - File or group identifier.
!  name    - Path to the object, relative to loc_id.
!
! Outputs:
!  obj_id  - Object identifier for the opened object.
!  hdferr  - Returns 0 if successful and -1 if fails.
!
! Optional parameters:
!  lapl_id - Access property list identifier for the link pointing to the object.
!
! AUTHOR
!  M. Scot Breitenfeld
!  April 18, 2008
!
! Fortran90 Interface:
  SUBROUTINE h5oopen_f(loc_id, name, obj_id, hdferr, lapl_id)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)  :: loc_id
    CHARACTER(LEN=*), INTENT(IN)  :: name
    INTEGER(HID_T)  , INTENT(OUT) :: obj_id
    INTEGER         , INTENT(OUT) :: hdferr
    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lapl_id
!*****
    INTEGER(HID_T) :: lapl_id_default
    INTEGER(SIZE_T) :: namelen

    INTERFACE
       INTEGER FUNCTION h5oopen_c(loc_id, name, namelen, lapl_id_default, obj_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OOPEN_C'::h5oopen_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: name
         INTEGER(HID_T), INTENT(IN) :: loc_id
         CHARACTER(LEN=*), INTENT(IN) :: name
         INTEGER(HID_T) :: lapl_id_default
         INTEGER(SIZE_T) :: namelen
         INTEGER(HID_T), INTENT(OUT) :: obj_id
       END FUNCTION h5oopen_c
    END INTERFACE

    namelen = LEN(name)

    lapl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lapl_id)) lapl_id_default = lapl_id

    hdferr = h5oopen_c(loc_id, name, namelen, lapl_id_default, obj_id)

  END SUBROUTINE h5oopen_f
!
!****s* H5O/h5oclose_f
!
! NAME
!  h5oclose_f
!
! PURPOSE
!  Closes an object in an HDF5 file.
!
! Inputs:
!  object_id - Object identifier.
!
! Outputs:
!  hdferr    - Returns 0 if successful and -1 if fails.
!
! AUTHOR
!  M. Scot Breitenfeld
!  December 17, 2008
!
! Fortran90 Interface:
  SUBROUTINE h5oclose_f(object_id, hdferr)
    IMPLICIT NONE
    INTEGER(HID_T), INTENT(IN)   :: object_id
    INTEGER       , INTENT(OUT) :: hdferr
!*****
    INTERFACE
       INTEGER FUNCTION h5oclose_c(object_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OCLOSE_C'::h5oclose_c
         !DEC$ENDIF
         INTEGER(HID_T), INTENT(IN) :: object_id
       END FUNCTION h5oclose_c
    END INTERFACE

    hdferr = h5oclose_c(object_id)
  END SUBROUTINE h5oclose_f

!
!****s* H5O/h5open_by_addr_f
! NAME		
!  h5oopen_by_addr_f 
!
! PURPOSE
!  Opens an object using its address within an HDF5 file. 
!
! Inputs:  
!  loc_id - File or group identifier.
!  addr   - Object’s address in the file.
!
! Outputs:
!  obj_id - Object identifier for the opened object.
!  hdferr - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  September 14, 2009
! 
! Fortran90 Interface:
  SUBROUTINE h5oopen_by_addr_f(loc_id, addr, obj_id, hdferr)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)  :: loc_id
    INTEGER(HADDR_T), INTENT(IN)  :: addr
    INTEGER(HID_T)  , INTENT(OUT) :: obj_id
    INTEGER         , INTENT(OUT) :: hdferr
!*****
    INTERFACE
       INTEGER FUNCTION h5oopen_by_addr_c(loc_id, addr, obj_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OOPEN_BY_ADDR_C'::h5oopen_by_addr_c
         !DEC$ENDIF
         INTEGER(HID_T), INTENT(IN) :: loc_id
         INTEGER(HADDR_T), INTENT(IN) :: addr
         INTEGER(HID_T), INTENT(OUT) :: obj_id
       END FUNCTION h5oopen_by_addr_c
    END INTERFACE

    hdferr = h5oopen_by_addr_c(loc_id, addr, obj_id)

  END SUBROUTINE h5oopen_by_addr_f
!
!****s* H5O/h5ocopy_f
! NAME		
!  h5ocopy_f 
!
! PURPOSE
!  Copies an object in an HDF5 file.
!
! Inputs:  
!  src_loc_id - Object identifier indicating the location of the source object to be copied.
!  src_name   - Name of the source object to be copied.
!  dst_loc_id - Location identifier specifying the destination.
!  dst_name   - Name to be assigned to the new copy.
!
! Optional parameters:
!  ocpypl_id  - Object copy property list.
!  lcpl_id    - Link creation property list for the new hard link.
!
! Outputs: 
!  hdferr     - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  March 14, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5ocopy_f(src_loc_id, src_name, dst_loc_id, dst_name, hdferr, ocpypl_id, lcpl_id)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)  :: src_loc_id
    CHARACTER(LEN=*), INTENT(IN)  :: src_name
    INTEGER(HID_T)  , INTENT(IN)  :: dst_loc_id
    CHARACTER(LEN=*), INTENT(IN)  :: dst_name
    INTEGER         , INTENT(OUT) :: hdferr
    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: ocpypl_id
    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lcpl_id
!*****

    INTEGER(SIZE_T) :: src_name_len, dst_name_len
    INTEGER(HID_T)  :: ocpypl_id_default, lcpl_id_default

    INTERFACE
       INTEGER FUNCTION h5ocopy_c(src_loc_id, src_name, src_name_len, &
            dst_loc_id, dst_name, dst_name_len, ocpypl_id_default, lcpl_id_default)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OCOPY_C'::h5ocopy_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: src_name, dst_name
         INTEGER(HID_T)  , INTENT(IN) :: src_loc_id
         CHARACTER(LEN=*), INTENT(IN) :: src_name
         INTEGER(HID_T)  , INTENT(IN) :: dst_loc_id
         CHARACTER(LEN=*), INTENT(IN) :: dst_name
         INTEGER(HID_T)  , INTENT(IN) :: ocpypl_id_default
         INTEGER(HID_T)  , INTENT(IN) :: lcpl_id_default
         INTEGER(SIZE_T)              :: src_name_len, dst_name_len

       END FUNCTION h5ocopy_c
    END INTERFACE

    src_name_len = LEN(src_name)
    dst_name_len = LEN(dst_name)

    ocpypl_id_default = H5P_DEFAULT_F
    IF(PRESENT(ocpypl_id)) ocpypl_id_default = ocpypl_id
    lcpl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lcpl_id)) lcpl_id_default = lcpl_id

    hdferr = h5ocopy_c(src_loc_id, src_name, src_name_len, &
         dst_loc_id, dst_name, dst_name_len, ocpypl_id_default, lcpl_id_default)

  END SUBROUTINE h5ocopy_f

!****s* H5O/h5odecr_refcount_f
! NAME		
!  h5odecr_refcount_f
!
! PURPOSE
!  Decrements an object reference count. 
!
! Inputs:  
!  object_id - Object identifier.
!
! Outputs: 
!  hdferr    - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  May 11, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5odecr_refcount_f(object_id, hdferr)
    IMPLICIT NONE
    INTEGER(HID_T), INTENT(IN)  :: object_id
    INTEGER       , INTENT(OUT) :: hdferr
!*****

    INTERFACE
       INTEGER FUNCTION h5odecr_refcount_c(object_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5ODECR_REFCOUNT_C'::h5odecr_refcount_c
         !DEC$ENDIF
         INTEGER(HID_T)  , INTENT(IN) :: object_id
       END FUNCTION h5odecr_refcount_c
    END INTERFACE

    hdferr = h5odecr_refcount_c(object_id)  

  END SUBROUTINE h5odecr_refcount_f

!****s* H5O/h5oexists_by_name_f
! NAME		
!  h5oexists_by_name_f
!
! PURPOSE
!  Determines whether a link resolves to an actual object.
!
! Inputs:
!  loc_id   - Identifier of the file or group to query. 
!  name     - The name of the link to check. 
!    
!
! Optional parameters:
!  lapl_id  - Link access property list identifier.
!
! Outputs: 
!  link_exists - Existing link resolves to an object.
!  hdferr      - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  May 11, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5oexists_by_name_f(loc_id, name, link_exists, hdferr, lapl_id)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)  :: loc_id
    CHARACTER(LEN=*), INTENT(IN)  :: name
    LOGICAL         , INTENT(OUT) :: link_exists
    INTEGER         , INTENT(OUT) :: hdferr
    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lapl_id
!*****

    INTEGER(size_t) :: namelen
    INTEGER :: status
    INTEGER(HID_T) :: lapl_id_default

    INTERFACE
       INTEGER FUNCTION h5oexists_by_name_c(loc_id, name, namelen, lapl_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OEXISTS_BY_NAME_C'::h5oexists_by_name_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: name
         INTEGER(HID_T)  , INTENT(IN) :: loc_id
         CHARACTER(LEN=*), INTENT(IN) :: name
         INTEGER(SIZE_T) , INTENT(IN) :: namelen
         INTEGER(HID_T)  , INTENT(IN) :: lapl_id

       END FUNCTION h5oexists_by_name_c
    END INTERFACE

    namelen = LEN(name)
    
    lapl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lapl_id)) lapl_id_default = lapl_id

    status = h5oexists_by_name_c(loc_id, name, namelen, lapl_id_default)

    link_exists = .FALSE.
    IF(status.EQ.1)THEN
       link_exists = .TRUE.
    ENDIF

    hdferr = 0
    IF(status.LT.0)THEN
       hdferr = -1
    ENDIF

  END SUBROUTINE h5oexists_by_name_f

!****s* H5O/h5oget_comment_f
! NAME		
!  h5oget_comment_f
!
! PURPOSE
!  Retrieves comment for specified object. 
!
! Inputs:
!  obj_id - Identifier for the target object.
!
! Optional parameters:
!  bufsize - Size of the comment buffer.
!
! Outputs: 
!  comment - The comment.
!  hdferr  - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  May 11, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5oget_comment_f(obj_id, comment, hdferr, bufsize)
    IMPLICIT NONE
    INTEGER(HID_T)   , INTENT(IN)            :: obj_id
    CHARACTER(LEN=*) , INTENT(OUT)           :: comment
    INTEGER          , INTENT(OUT)           :: hdferr
    INTEGER(HSSIZE_T), INTENT(OUT), OPTIONAL :: bufsize 
!*****

    INTEGER(SIZE_T)   :: commentsize_default
    INTEGER(HSSIZE_T) :: bufsize_default

    INTERFACE
       INTEGER FUNCTION h5oget_comment_c(obj_id, comment, commentsize_default, bufsize)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OGET_COMMENT_C'::h5oget_comment_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: comment
         INTEGER(HID_T)  , INTENT(IN)  :: obj_id
         CHARACTER(LEN=*), INTENT(OUT) :: comment
         INTEGER(SIZE_T) , INTENT(IN)  :: commentsize_default
         INTEGER(HSSIZE_T) , INTENT(OUT) :: bufsize
       END FUNCTION h5oget_comment_c
    END INTERFACE

    commentsize_default = LEN(comment)

    hdferr = h5oget_comment_c(obj_id, comment, commentsize_default, bufsize_default)
    
    IF(PRESENT(bufsize)) bufsize = bufsize_default

  END SUBROUTINE h5oget_comment_f

!****s* H5O/h5oget_comment_by_name_f
! NAME		
!  h5oget_comment_by_name_f
!
! PURPOSE
!  Retrieves comment for specified object.
!
! Inputs:
!  loc_id   - Identifier of a file, group, dataset, or named datatype.
!  name     - Name of the object whose comment is to be retrieved, 
!             specified as a path relative to loc_id. 
!
! Optional parameters:
!  bufsize  - Size of the comment buffer.
!
! Outputs: 
!  comment  - The comment.
!  hdferr   - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  July 6, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5oget_comment_by_name_f(loc_id, name, comment, hdferr, bufsize, lapl_id)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)            :: loc_id
    CHARACTER(LEN=*), INTENT(IN)            :: name
    CHARACTER(LEN=*), INTENT(OUT)           :: comment
    INTEGER         , INTENT(OUT)           :: hdferr
    INTEGER(SIZE_T) , INTENT(OUT), OPTIONAL :: bufsize 
    INTEGER(HID_T)  , INTENT(IN) , OPTIONAL :: lapl_id 
!*****

    INTEGER(SIZE_T) :: commentsize_default
    INTEGER(SIZE_T) :: name_size
    INTEGER(SIZE_T) :: bufsize_default
    INTEGER(HID_T)  :: lapl_id_default
    INTERFACE
       INTEGER FUNCTION h5oget_comment_by_name_c(loc_id, name, name_size, &
            comment, commentsize_default, bufsize_default, lapl_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OGET_COMMENT_BY_NAME_C'::h5oget_comment_by_name_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: comment, name
         INTEGER(HID_T)  , INTENT(IN)  :: loc_id
         CHARACTER(LEN=*), INTENT(IN)  :: name
         INTEGER(SIZE_T) , INTENT(IN)  :: name_size
         CHARACTER(LEN=*), INTENT(OUT) :: comment
         INTEGER(SIZE_T) , INTENT(IN)  :: commentsize_default
         INTEGER(SIZE_T) , INTENT(OUT) :: bufsize_default
         INTEGER(HID_T)  , INTENT(IN)  :: lapl_id
       END FUNCTION h5oget_comment_by_name_c
    END INTERFACE

    commentsize_default = LEN(comment)
    name_size = LEN(name)

    lapl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lapl_id)) lapl_id_default = lapl_id

    hdferr = h5oget_comment_by_name_c(loc_id, name, name_size, &
         comment, commentsize_default, bufsize_default, lapl_id_default)
    
    IF(PRESENT(bufsize)) bufsize = bufsize_default

  END SUBROUTINE h5oget_comment_by_name_f

!****s* H5O/h5oincr_refcount_f
! NAME		
!  h5oincr_refcount_f
!
! PURPOSE
!  Increments an object reference count.
!
! Inputs:  
!  obj_id  - Object identifier.
!
! Outputs: 
!  hdferr  - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  May 15, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5oincr_refcount_f(obj_id, hdferr)
    IMPLICIT NONE
    INTEGER(HID_T), INTENT(IN)  :: obj_id
    INTEGER       , INTENT(OUT) :: hdferr
!*****

    INTERFACE
       INTEGER FUNCTION h5oincr_refcount_c(obj_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OINCR_REFCOUNT_C'::h5oincr_refcount_c
         !DEC$ENDIF
         INTEGER(HID_T)  , INTENT(IN) :: obj_id
       END FUNCTION h5oincr_refcount_c
    END INTERFACE

    hdferr = h5oincr_refcount_c(obj_id) 

  END SUBROUTINE h5oincr_refcount_f

!****s* H5O/h5oopen_by_idx_f
!
! NAME
!  h5oopen_by_idx_f
!
! PURPOSE
!  Open the nth object in a group. 
!
! Inputs:
!  loc_id      - A file or group identifier.
!  group_name  - Name of group, relative to loc_id, in which object is located.
!  index_type  - Type of index by which objects are ordered.
!  order       - Order of iteration within index, NOTE: zero-based.
!  n           - Object to open.
!
! Outputs:
!  obj_id      - An object identifier for the opened object.
!  hdferr      - Returns 0 if successful and -1 if fails.
!
! Optional parameters:
!  lapl_id     - Link access property list.
!
! AUTHOR
!  M. Scot Breitenfeld
!  May 17, 2012
!
! Fortran90 Interface:
  SUBROUTINE h5oopen_by_idx_f(loc_id, group_name, index_type, order, n, obj_id, &
       hdferr, lapl_id)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)            :: loc_id
    CHARACTER(LEN=*), INTENT(IN)            :: group_name
    INTEGER         , INTENT(IN)            :: index_type
    INTEGER         , INTENT(IN)            :: order
    INTEGER(HSIZE_T), INTENT(IN)            :: n
    INTEGER(HID_T)  , INTENT(OUT)           :: obj_id
    INTEGER         , INTENT(OUT)           :: hdferr
    INTEGER(HID_T)  , INTENT(IN) , OPTIONAL :: lapl_id
!*****
    INTEGER(SIZE_T) :: group_namelen
    INTEGER(HID_T)  :: lapl_id_default
    
    INTERFACE
       INTEGER FUNCTION h5oopen_by_idx_c(loc_id, group_name, group_namelen, index_type, order, n, obj_id, lapl_id_default)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OOPEN_BY_IDX_C'::h5oopen_by_idx_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: group_name
         INTEGER(HID_T)  , INTENT(IN)  :: loc_id
         CHARACTER(LEN=*), INTENT(IN)  :: group_name
         INTEGER(SIZE_T) , INTENT(IN)  :: group_namelen
         INTEGER         , INTENT(IN)  :: index_type
         INTEGER         , INTENT(IN)  :: order
         INTEGER(HSIZE_T), INTENT(IN)  :: n
         INTEGER(HID_T)  , INTENT(OUT) :: obj_id
         INTEGER(HID_T)  , INTENT(IN)  :: lapl_id_default

       END FUNCTION h5oopen_by_idx_c
    END INTERFACE

    group_namelen = LEN(group_name)

    lapl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lapl_id)) lapl_id_default = lapl_id

    hdferr = h5oopen_by_idx_c(loc_id, group_name, group_namelen, index_type, order, n, obj_id, lapl_id_default)

  END SUBROUTINE H5Oopen_by_idx_f

!****s* H5O/h5oset_comment_f
! NAME		
!  h5oset_comment_f
!
! PURPOSE
!  Sets comment for specified object.
!
! Inputs:  
!  obj_id    - Identifier of the target object.
!  comment   - The new comment.
!
! Outputs: 
!  hdferr    - Returns 0 if successful and -1 if fails.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  May 15, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5oset_comment_f(obj_id, comment, hdferr)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)  :: obj_id
    CHARACTER(LEN=*), INTENT(IN)  :: comment
    INTEGER         , INTENT(OUT) :: hdferr
!*****
    INTEGER(SIZE_T) :: commentlen

    INTERFACE
       INTEGER FUNCTION h5oset_comment_c(obj_id, comment, commentlen)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OSET_COMMENT_C'::h5oset_comment_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: comment
         INTEGER(HID_T)  , INTENT(IN) :: obj_id
         CHARACTER(LEN=*), INTENT(IN) :: comment
         INTEGER(SIZE_T) , INTENT(IN) :: commentlen

       END FUNCTION h5oset_comment_c
    END INTERFACE

    commentlen = LEN(comment)
    
    hdferr = h5oset_comment_c(obj_id, comment, commentlen)

  END SUBROUTINE h5oset_comment_f

!****s* H5O/h5oset_comment_by_name_f
! NAME		
!  h5oset_comment_by_name_f
!
! PURPOSE
!  Sets comment for specified object. 
!
! Inputs:  
!  loc_id   - Identifier of a file, group, dataset, or named datatype.
!  name     - Name of the object whose comment is to be set or reset, 
!              specified as a path relative to loc_id. 
!  comment  - The new comment.
!
! Outputs: 
!  hdferr   - Returns 0 if successful and -1 if fails.
!
! Optional parameters:
!  lapl_id  - Link access property list identifier.
!
! AUTHOR	
!  M. Scot Breitenfeld
!  May 15, 2012
! 
! Fortran90 Interface:
  SUBROUTINE h5oset_comment_by_name_f(loc_id, name, comment, hdferr, lapl_id)
    IMPLICIT NONE
    INTEGER(HID_T)  , INTENT(IN)  :: loc_id
    CHARACTER(LEN=*), INTENT(IN)  :: name
    CHARACTER(LEN=*), INTENT(IN)  :: comment
    INTEGER         , INTENT(OUT) :: hdferr
    INTEGER(HID_T)  , INTENT(IN), OPTIONAL :: lapl_id
!*****
    INTEGER(SIZE_T) :: commentlen
    INTEGER(SIZE_T) :: namelen
    INTEGER(HID_T) :: lapl_id_default

    INTERFACE
       INTEGER FUNCTION h5oset_comment_by_name_c(loc_id, name, namelen, comment, commentlen, lapl_id)
         USE H5GLOBAL
         !DEC$IF DEFINED(HDF5F90_WINDOWS)
         !DEC$ATTRIBUTES C,reference,decorate,alias:'H5OSET_COMMENT_BY_NAME_C'::h5oset_comment_by_name_c
         !DEC$ENDIF
         !DEC$ATTRIBUTES reference :: name, comment
         INTEGER(HID_T)  , INTENT(IN) :: loc_id
         CHARACTER(LEN=*), INTENT(IN) :: comment
         INTEGER(SIZE_T) , INTENT(IN) :: commentlen
         CHARACTER(LEN=*), INTENT(IN) :: name
         INTEGER(SIZE_T) , INTENT(IN) :: namelen
         INTEGER(HID_T)  , INTENT(IN) :: lapl_id
       END FUNCTION h5oset_comment_by_name_c
    END INTERFACE

    commentlen = LEN(comment)
    namelen = LEN(name)

    lapl_id_default = H5P_DEFAULT_F
    IF(PRESENT(lapl_id)) lapl_id_default = lapl_id
    
    hdferr = h5oset_comment_by_name_c(loc_id, name, namelen, comment, commentlen, lapl_id_default)

  END SUBROUTINE h5oset_comment_by_name_f

END MODULE H5O