36 use,
intrinsic :: iso_c_binding
42 kim_collections_handle_type, &
51 kim_get_item_library_file_name_and_collection, &
52 kim_cache_list_of_item_metadata_files, &
53 kim_get_item_metadata_file_length, &
54 kim_get_item_metadata_file_values, &
55 kim_cache_list_of_item_names_by_type, &
56 kim_get_item_name_by_type, &
57 kim_cache_list_of_item_names_by_collection_and_type, &
58 kim_get_item_name_by_collection_and_type, &
59 kim_get_item_library_file_name_by_collection_and_type, &
60 kim_cache_list_of_item_metadata_files_by_collection_and_type, &
61 kim_get_item_metadata_file_length_by_collection_and_type, &
62 kim_get_item_metadata_file_values_by_collection_and_type, &
63 kim_get_project_name_and_sem_ver, &
64 kim_get_environment_variable_name, &
65 kim_get_configuration_file_environment_variable, &
66 kim_get_configuration_file_name, &
67 kim_cache_list_of_directory_names, &
68 kim_get_directory_name, &
70 kim_push_log_verbosity, &
78 type,
bind(c) :: kim_collections_handle_type
79 type(c_ptr) :: p = c_null_ptr
80 end type kim_collections_handle_type
85 type(kim_collections_handle_type),
protected,
save &
91 interface operator(.eq.)
92 module procedure kim_collections_handle_equal
93 end interface operator(.eq.)
98 interface operator(.ne.)
99 module procedure kim_collections_handle_not_equal
100 end interface operator(.ne.)
107 interface kim_get_item_type
108 module procedure kim_collections_get_item_type
109 end interface kim_get_item_type
117 interface kim_get_item_library_file_name_and_collection
119 end interface kim_get_item_library_file_name_and_collection
127 interface kim_cache_list_of_item_metadata_files
129 end interface kim_cache_list_of_item_metadata_files
138 interface kim_get_item_metadata_file_length
140 end interface kim_get_item_metadata_file_length
148 interface kim_get_item_metadata_file_values
150 end interface kim_get_item_metadata_file_values
158 interface kim_cache_list_of_item_names_by_type
160 end interface kim_cache_list_of_item_names_by_type
167 interface kim_get_item_name_by_type
169 end interface kim_get_item_name_by_type
177 interface kim_cache_list_of_item_names_by_collection_and_type
180 end interface kim_cache_list_of_item_names_by_collection_and_type
188 interface kim_get_item_name_by_collection_and_type
190 end interface kim_get_item_name_by_collection_and_type
199 interface kim_get_item_library_file_name_by_collection_and_type
202 end interface kim_get_item_library_file_name_by_collection_and_type
211 interface kim_cache_list_of_item_metadata_files_by_collection_and_type
214 end interface kim_cache_list_of_item_metadata_files_by_collection_and_type
223 interface kim_get_item_metadata_file_length_by_collection_and_type
226 end interface kim_get_item_metadata_file_length_by_collection_and_type
234 interface kim_get_item_metadata_file_values_by_collection_and_type
237 end interface kim_get_item_metadata_file_values_by_collection_and_type
245 interface kim_get_project_name_and_sem_ver
247 end interface kim_get_project_name_and_sem_ver
255 interface kim_get_environment_variable_name
257 end interface kim_get_environment_variable_name
265 interface kim_get_configuration_file_environment_variable
267 end interface kim_get_configuration_file_environment_variable
275 interface kim_get_configuration_file_name
277 end interface kim_get_configuration_file_name
285 interface kim_cache_list_of_directory_names
287 end interface kim_cache_list_of_directory_names
294 interface kim_get_directory_name
296 end interface kim_get_directory_name
303 interface kim_set_log_id
305 end interface kim_set_log_id
312 interface kim_push_log_verbosity
314 end interface kim_push_log_verbosity
321 interface kim_pop_log_verbosity
323 end interface kim_pop_log_verbosity
329 logical recursive function kim_collections_handle_equal(lhs, rhs)
331 type(kim_collections_handle_type),
intent(in) :: lhs
332 type(kim_collections_handle_type),
intent(in) :: rhs
334 if ((.not. c_associated(lhs%p)) .and. (.not. c_associated(rhs%p)))
then
335 kim_collections_handle_equal = .true.
337 kim_collections_handle_equal = c_associated(lhs%p, rhs%p)
339 end function kim_collections_handle_equal
344 logical recursive function kim_collections_handle_not_equal(lhs, rhs)
346 type(kim_collections_handle_type),
intent(in) :: lhs
347 type(kim_collections_handle_type),
intent(in) :: rhs
349 kim_collections_handle_not_equal = .not. (lhs == rhs)
350 end function kim_collections_handle_not_equal
360 integer(c_int) recursive function create(collections) &
361 bind(c, name="KIM_Collections_Create")
362 use,
intrinsic :: iso_c_binding
364 type(c_ptr),
intent(out) :: collections
367 type(kim_collections_handle_type),
intent(out) :: collections_handle
368 integer(c_int),
intent(out) :: ierr
370 type(c_ptr) :: pcollections
372 ierr = create(pcollections)
373 collections_handle%p = pcollections
384 recursive subroutine destroy(collections) &
385 bind(c, name="KIM_Collections_Destroy")
386 use,
intrinsic :: iso_c_binding
388 type(c_ptr),
intent(inout) :: collections
389 end subroutine destroy
391 type(kim_collections_handle_type),
intent(inout) :: collections_handle
393 type(c_ptr) :: pcollections
394 pcollections = collections_handle%p
395 call destroy(pcollections)
396 collections_handle%p = c_null_ptr
404 recursive subroutine kim_collections_get_item_type(collections_handle, &
405 item_name, item_type, ierr)
406 use kim_interoperable_types_module,
only: kim_collections_type
410 integer(c_int) recursive function get_item_type( &
411 collections, item_name, item_type) &
412 bind(c, name="KIM_Collections_GetItemType")
413 use,
intrinsic :: iso_c_binding
414 use kim_interoperable_types_module,
only: kim_collections_type
416 kim_collection_item_type_type
418 type(kim_collections_type),
intent(in) :: collections
419 character(c_char),
intent(in) :: item_name(*)
420 type(kim_collection_item_type_type),
intent(out) :: item_type
421 end function get_item_type
423 type(kim_collections_handle_type),
intent(in) :: collections_handle
424 character(len=*, kind=c_char),
intent(in) :: item_name
425 type(kim_collection_item_type_type),
intent(out) :: item_type
426 integer(c_int),
intent(out) :: ierr
427 type(kim_collections_type),
pointer :: collections
429 call c_f_pointer(collections_handle%p, collections)
430 ierr = get_item_type(collections, trim(item_name)//c_null_char, item_type)
431 end subroutine kim_collections_get_item_type
439 recursive subroutine &
441 collections_handle, item_type, item_name, file_name, collection, ierr)
442 use kim_interoperable_types_module,
only: kim_collections_type
443 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
448 integer(c_int) recursive function &
449 get_item_library_file_name_and_collection( &
450 collections, item_type, item_name, file_name, collection) &
451 bind(c, name="KIM_Collections_GetItemLibraryFileNameAndCollection")
452 use,
intrinsic :: iso_c_binding
453 use kim_interoperable_types_module,
only: kim_collections_type
456 kim_collection_item_type_type
458 type(kim_collections_type),
intent(in) :: collections
459 type(kim_collection_item_type_type),
intent(in),
value :: item_type
460 character(c_char),
intent(in) :: item_name(*)
461 type(c_ptr),
intent(out) :: file_name
462 type(kim_collection_type),
intent(out) :: collection
463 end function get_item_library_file_name_and_collection
465 type(kim_collections_handle_type),
intent(in) :: collections_handle
466 type(kim_collection_item_type_type),
intent(in) :: item_type
467 character(len=*, kind=c_char),
intent(in) :: item_name
468 character(len=*, kind=c_char),
intent(out) :: file_name
469 type(kim_collection_type),
intent(out) :: collection
470 integer(c_int),
intent(out) :: ierr
471 type(kim_collections_type),
pointer :: collections
473 type(c_ptr) :: pfile_name
475 call c_f_pointer(collections_handle%p, collections)
476 ierr = get_item_library_file_name_and_collection( &
479 trim(item_name)//c_null_char, &
482 call kim_convert_c_char_ptr_to_string(pfile_name, file_name)
492 collections_handle, item_type, item_name, extent, ierr)
493 use kim_interoperable_types_module,
only: kim_collections_type
497 integer(c_int) recursive function cache_list_of_item_metadata_files( &
498 collections, item_type, item_name, extent) &
499 bind(c, name="KIM_Collections_CacheListOfItemMetadataFiles")
500 use,
intrinsic :: iso_c_binding
501 use kim_interoperable_types_module,
only: kim_collections_type
503 kim_collection_item_type_type
505 type(kim_collections_type),
intent(in) :: collections
506 type(kim_collection_item_type_type),
intent(in),
value :: item_type
507 character(c_char),
intent(in) :: item_name(*)
508 integer(c_int),
intent(out) :: extent
509 end function cache_list_of_item_metadata_files
511 type(kim_collections_handle_type),
intent(in) :: collections_handle
512 type(kim_collection_item_type_type),
intent(in) :: item_type
513 character(len=*, kind=c_char),
intent(in) :: item_name
514 integer(c_int),
intent(out) :: extent
515 integer(c_int),
intent(out) :: ierr
516 type(kim_collections_type),
pointer :: collections
518 call c_f_pointer(collections_handle%p, collections)
519 ierr = cache_list_of_item_metadata_files(collections, item_type, &
520 trim(item_name)//c_null_char, &
532 collections_handle, index, file_length, available_as_string, ierr)
533 use kim_interoperable_types_module,
only: kim_collections_type
536 integer(c_int) recursive function get_item_metadata_file( &
537 collections, index, file_name, file_length, file_raw_data, &
538 available_as_string, file_string) &
539 bind(c, name="KIM_Collections_GetItemMetadataFile_fortran")
540 use,
intrinsic :: iso_c_binding
541 use kim_interoperable_types_module,
only: kim_collections_type
543 type(kim_collections_type),
intent(in) :: collections
544 integer(c_int),
intent(in),
value :: index
545 type(c_ptr),
intent(out) :: file_name
546 integer(c_long),
intent(out) :: file_length
547 type(c_ptr),
intent(out) :: file_raw_data
548 integer(c_int),
intent(out) :: available_as_string
549 type(c_ptr),
intent(out) :: file_string
550 end function get_item_metadata_file
552 type(kim_collections_handle_type),
intent(in) :: collections_handle
553 integer(c_int),
intent(in) :: index
554 integer(c_long),
intent(out) :: file_length
555 integer(c_int),
intent(out) :: available_as_string
556 integer(c_int),
intent(out) :: ierr
557 type(kim_collections_type),
pointer :: collections
559 type(c_ptr) pfile_name, pfile_raw_data, pfile_string
561 call c_f_pointer(collections_handle%p, collections)
562 ierr = get_item_metadata_file(collections, &
567 available_as_string, &
578 collections_handle, index, file_name, file_raw_data, file_string, ierr)
579 use kim_interoperable_types_module,
only: kim_collections_type
580 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
583 integer(c_int) recursive function get_item_metadata_file( &
584 collections, index, file_name, file_length, file_raw_data, &
585 available_as_string, file_string) &
586 bind(c, name="KIM_Collections_GetItemMetadataFile_fortran")
587 use,
intrinsic :: iso_c_binding
588 use kim_interoperable_types_module,
only: kim_collections_type
590 type(kim_collections_type),
intent(in) :: collections
591 integer(c_int),
intent(in),
value :: index
592 type(c_ptr),
intent(out) :: file_name
593 integer(c_long),
intent(out) :: file_length
594 type(c_ptr),
intent(out) :: file_raw_data
595 integer(c_int),
intent(out) :: available_as_string
596 type(c_ptr),
intent(out) :: file_string
597 end function get_item_metadata_file
599 type(kim_collections_handle_type),
intent(in) :: collections_handle
600 integer(c_int),
intent(in) :: index
601 character(len=*, kind=c_char),
intent(out) :: file_name
602 integer(c_signed_char),
intent(out) :: file_raw_data(:)
603 character(len=*, kind=c_char),
intent(out) :: file_string
604 integer(c_int),
intent(out) :: ierr
605 type(kim_collections_type),
pointer :: collections
607 integer(c_long) file_length
608 integer(c_int) available_as_string
609 type(c_ptr) pfile_name, pfile_raw_data, pfile_string
610 integer(c_signed_char),
pointer :: file_raw_data_fpointer(:)
612 call c_f_pointer(collections_handle%p, collections)
613 ierr = get_item_metadata_file(collections, &
618 available_as_string, &
621 if (
size(file_raw_data) < file_length)
then
625 if (available_as_string == 1)
then
626 if (len(file_string) < file_length)
then
632 call kim_convert_c_char_ptr_to_string(pfile_name, file_name)
633 if (c_associated(pfile_raw_data))
then
634 call c_f_pointer(pfile_raw_data, file_raw_data_fpointer, [file_length])
636 nullify (file_raw_data_fpointer)
638 file_raw_data = file_raw_data_fpointer(1:file_length)
640 if (available_as_string == 1)
then
641 call kim_convert_c_char_ptr_to_string(pfile_string, file_string)
653 collections_handle, item_type, extent, ierr)
654 use kim_interoperable_types_module,
only: kim_collections_type
658 integer(c_int) recursive function cache_list_of_item_names_by_type( &
659 collections, item_type, extent) &
660 bind(c, name="KIM_Collections_CacheListOfItemNamesByType")
661 use,
intrinsic :: iso_c_binding
662 use kim_interoperable_types_module,
only: kim_collections_type
664 kim_collection_item_type_type
666 type(kim_collections_type),
intent(in) :: collections
667 type(kim_collection_item_type_type),
intent(in),
value :: item_type
668 integer(c_int),
intent(out) :: extent
669 end function cache_list_of_item_names_by_type
671 type(kim_collections_handle_type),
intent(in) :: collections_handle
672 type(kim_collection_item_type_type),
intent(in) :: item_type
673 integer(c_int),
intent(out) :: extent
674 integer(c_int),
intent(out) :: ierr
675 type(kim_collections_type),
pointer :: collections
677 call c_f_pointer(collections_handle%p, collections)
678 ierr = cache_list_of_item_names_by_type(collections, item_type, extent)
687 collections_handle, index, item_name, ierr)
688 use kim_interoperable_types_module,
only: kim_collections_type
689 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
692 integer(c_int) recursive function get_item_name_by_type( &
693 collections, index, item_name) &
694 bind(c, name="KIM_Collections_GetItemNameByType")
695 use,
intrinsic :: iso_c_binding
696 use kim_interoperable_types_module,
only: kim_collections_type
698 type(kim_collections_type),
intent(in) :: collections
699 integer(c_int),
intent(in),
value :: index
700 type(c_ptr),
intent(out) :: item_name
701 end function get_item_name_by_type
703 type(kim_collections_handle_type),
intent(in) :: collections_handle
704 integer(c_int),
intent(in) :: index
705 character(len=*, kind=c_char),
intent(out) :: item_name
706 integer(c_int),
intent(out) :: ierr
707 type(kim_collections_type),
pointer :: collections
709 type(c_ptr) pitem_name
711 call c_f_pointer(collections_handle%p, collections)
712 ierr = get_item_name_by_type(collections, index - 1, pitem_name)
713 call kim_convert_c_char_ptr_to_string(pitem_name, item_name)
722 recursive subroutine &
724 collections_handle, collection, item_type, extent, ierr)
725 use kim_interoperable_types_module,
only: kim_collections_type
730 integer(c_int) recursive function &
731 cache_list_of_item_names_by_collection_and_type( &
732 collections, collection, item_type, extent) &
733 bind(c, name="KIM_Collections_CacheListOfItemNamesByCollectionAndType")
734 use,
intrinsic :: iso_c_binding
735 use kim_interoperable_types_module,
only: kim_collections_type
738 kim_collection_item_type_type
740 type(kim_collections_type),
intent(in) :: collections
741 type(kim_collection_type),
intent(in),
value :: collection
742 type(kim_collection_item_type_type),
intent(in),
value :: item_type
743 integer(c_int),
intent(out) :: extent
744 end function cache_list_of_item_names_by_collection_and_type
746 type(kim_collections_handle_type),
intent(in) :: collections_handle
747 type(kim_collection_type),
intent(in) :: collection
748 type(kim_collection_item_type_type),
intent(in) :: item_type
749 integer(c_int),
intent(out) :: extent
750 integer(c_int),
intent(out) :: ierr
751 type(kim_collections_type),
pointer :: collections
753 call c_f_pointer(collections_handle%p, collections)
754 ierr = cache_list_of_item_names_by_collection_and_type(collections, &
767 collections_handle, index, item_name, ierr)
768 use kim_interoperable_types_module,
only: kim_collections_type
769 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
772 integer(c_int) recursive function get_item_name_by_collection_and_type( &
773 collections, index, item_name) &
774 bind(c, name="KIM_Collections_GetItemNameByCollectionAndType")
775 use,
intrinsic :: iso_c_binding
776 use kim_interoperable_types_module,
only: kim_collections_type
778 type(kim_collections_type),
intent(in) :: collections
779 integer(c_int),
intent(in),
value :: index
780 type(c_ptr),
intent(out) :: item_name
781 end function get_item_name_by_collection_and_type
783 type(kim_collections_handle_type),
intent(in) :: collections_handle
784 integer(c_int),
intent(in) :: index
785 character(len=*, kind=c_char),
intent(out) :: item_name
786 integer(c_int),
intent(out) :: ierr
787 type(kim_collections_type),
pointer :: collections
789 type(c_ptr) pitem_name
791 call c_f_pointer(collections_handle%p, collections)
792 ierr = get_item_name_by_collection_and_type(collections, index - 1, &
794 call kim_convert_c_char_ptr_to_string(pitem_name, item_name)
804 recursive subroutine &
806 collections_handle, collection, item_type, item_name, file_name, ierr)
807 use kim_interoperable_types_module,
only: kim_collections_type
808 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
813 integer(c_int) recursive function &
814 get_item_library_file_name_by_coll_and_type( &
815 collections, collection, item_type, item_name, file_name) &
817 name=
"KIM_Collections_GetItemLibraryFileNameByCollectionAndType")
818 use,
intrinsic :: iso_c_binding
819 use kim_interoperable_types_module,
only: kim_collections_type
822 kim_collection_item_type_type
824 type(kim_collections_type),
intent(in) :: collections
825 type(kim_collection_type),
intent(in),
value :: collection
826 type(kim_collection_item_type_type),
intent(in),
value :: item_type
827 character(c_char),
intent(in) :: item_name(*)
828 type(c_ptr),
intent(out) :: file_name
829 end function get_item_library_file_name_by_coll_and_type
831 type(kim_collections_handle_type),
intent(in) :: collections_handle
832 type(kim_collection_type),
intent(in) :: collection
833 type(kim_collection_item_type_type),
intent(in) :: item_type
834 character(len=*, kind=c_char),
intent(in) :: item_name
835 character(len=*, kind=c_char),
intent(out) :: file_name
836 integer(c_int),
intent(out) :: ierr
837 type(kim_collections_type),
pointer :: collections
839 type(c_ptr) pfile_name
841 call c_f_pointer(collections_handle%p, collections)
842 ierr = get_item_library_file_name_by_coll_and_type( &
846 trim(item_name)//c_null_char, &
848 call kim_convert_c_char_ptr_to_string(pfile_name, file_name)
858 recursive subroutine &
860 collections_handle, collection, item_type, item_name, extent, ierr)
861 use kim_interoperable_types_module,
only: kim_collections_type
866 integer(c_int) recursive function &
867 cache_list_of_item_metadata_files_by_coll_and_type( &
868 collections, collection, item_type, item_name, extent) &
871 "KIM_Collections_CacheListOfItemMetadataFilesByCollectionAndType")
872 use,
intrinsic :: iso_c_binding
873 use kim_interoperable_types_module,
only: kim_collections_type
876 kim_collection_item_type_type
878 type(kim_collections_type),
intent(in) :: collections
879 type(kim_collection_type),
intent(in),
value :: collection
880 type(kim_collection_item_type_type),
intent(in),
value :: item_type
881 character(c_char),
intent(in) :: item_name(*)
882 integer(c_int),
intent(out) :: extent
883 end function cache_list_of_item_metadata_files_by_coll_and_type
885 type(kim_collections_handle_type),
intent(in) :: collections_handle
886 type(kim_collection_type),
intent(in) :: collection
887 type(kim_collection_item_type_type),
intent(in) :: item_type
888 character(len=*, kind=c_char),
intent(in) :: item_name
889 integer(c_int),
intent(out) :: extent
890 integer(c_int),
intent(out) :: ierr
891 type(kim_collections_type),
pointer :: collections
893 call c_f_pointer(collections_handle%p, collections)
894 ierr = cache_list_of_item_metadata_files_by_coll_and_type( &
898 trim(item_name)//c_null_char, &
908 recursive subroutine &
910 collections_handle, index, file_length, available_as_string, ierr)
911 use kim_interoperable_types_module,
only: kim_collections_type
914 integer(c_int) recursive function &
915 get_item_metadata_file_by_coll_and_type( &
916 collections, index, &
920 available_as_string, &
924 "KIM_Collections_GetItemMetadataFileByCollectionAndType_fortran")
925 use,
intrinsic :: iso_c_binding
926 use kim_interoperable_types_module,
only: kim_collections_type
928 type(kim_collections_type),
intent(in) :: collections
929 integer(c_int),
intent(in),
value :: index
930 type(c_ptr),
intent(out) :: file_name
931 integer(c_long),
intent(out) :: file_length
932 type(c_ptr),
intent(out) :: file_raw_data
933 integer(c_int),
intent(out) :: available_as_string
934 type(c_ptr),
intent(out) :: file_string
935 end function get_item_metadata_file_by_coll_and_type
937 type(kim_collections_handle_type),
intent(in) :: collections_handle
938 integer(c_int),
intent(in),
value :: index
939 integer(c_long),
intent(out) :: file_length
940 integer(c_int),
intent(out) :: available_as_string
941 integer(c_int),
intent(out) :: ierr
942 type(kim_collections_type),
pointer :: collections
944 type(c_ptr) pfile_name, pfile_raw_data, pfile_string
946 call c_f_pointer(collections_handle%p, collections)
947 ierr = get_item_metadata_file_by_coll_and_type(collections, &
952 available_as_string, &
962 recursive subroutine &
964 collections_handle, index, file_name, file_raw_data, file_string, ierr)
965 use kim_interoperable_types_module,
only: kim_collections_type
966 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
969 integer(c_int) recursive function &
970 get_item_metadata_file_by_coll_and_type(collections, &
975 available_as_string, &
979 "KIM_Collections_GetItemMetadataFileByCollectionAndType_fortran")
980 use,
intrinsic :: iso_c_binding
981 use kim_interoperable_types_module,
only: kim_collections_type
983 type(kim_collections_type),
intent(in) :: collections
984 integer(c_int),
intent(in),
value :: index
985 type(c_ptr),
intent(out) :: file_name
986 integer(c_long),
intent(out) :: file_length
987 type(c_ptr),
intent(out) :: file_raw_data
988 integer(c_int),
intent(out) :: available_as_string
989 type(c_ptr),
intent(out) :: file_string
990 end function get_item_metadata_file_by_coll_and_type
992 type(kim_collections_handle_type),
intent(in) :: collections_handle
993 integer(c_int),
intent(in) :: index
994 character(len=*, kind=c_char),
intent(out) :: file_name
995 integer(c_signed_char),
intent(out) :: file_raw_data(:)
996 character(len=*, kind=c_char),
intent(out) :: file_string
997 integer(c_int),
intent(out) :: ierr
998 type(kim_collections_type),
pointer :: collections
1000 integer(c_long) file_length
1001 integer(c_int) available_as_string
1002 type(c_ptr) pfile_name, pfile_raw_data, pfile_string
1003 integer(c_signed_char),
pointer :: file_raw_data_fpointer(:)
1005 call c_f_pointer(collections_handle%p, collections)
1006 ierr = get_item_metadata_file_by_coll_and_type(collections, &
1011 available_as_string, &
1014 if (
size(file_raw_data) < file_length)
then
1018 if (available_as_string == 1)
then
1019 if (len(file_string) < file_length)
then
1025 call kim_convert_c_char_ptr_to_string(pfile_name, file_name)
1026 if (c_associated(pfile_raw_data))
then
1027 call c_f_pointer(pfile_raw_data, file_raw_data_fpointer, [file_length])
1029 nullify (file_raw_data_fpointer)
1031 file_raw_data = file_raw_data_fpointer(1:file_length)
1033 if (available_as_string == 1)
then
1034 call kim_convert_c_char_ptr_to_string(pfile_string, file_string)
1046 collections_handle, project_name, sem_ver)
1047 use kim_interoperable_types_module,
only: kim_collections_type
1048 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
1051 recursive subroutine get_project_name_and_sem_ver(collections, &
1052 project_name, sem_ver) &
1053 bind(c, name="KIM_Collections_GetProjectNameAndSemVer")
1054 use,
intrinsic :: iso_c_binding
1055 use kim_interoperable_types_module,
only: kim_collections_type
1057 type(kim_collections_type),
intent(in) :: collections
1058 type(c_ptr),
intent(out) :: project_name
1059 type(c_ptr),
intent(out) :: sem_ver
1060 end subroutine get_project_name_and_sem_ver
1062 type(kim_collections_handle_type),
intent(in) :: collections_handle
1063 character(len=*, kind=c_char),
intent(out) :: project_name
1064 character(len=*, kind=c_char),
intent(out) :: sem_ver
1065 type(kim_collections_type),
pointer :: collections
1067 type(c_ptr) pproject_name, psem_ver
1069 call c_f_pointer(collections_handle%p, collections)
1070 call get_project_name_and_sem_ver(collections, pproject_name, psem_ver)
1071 call kim_convert_c_char_ptr_to_string(pproject_name, project_name)
1072 call kim_convert_c_char_ptr_to_string(psem_ver, sem_ver)
1082 collections_handle, item_type, name, ierr)
1083 use kim_interoperable_types_module,
only: kim_collections_type
1084 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
1088 integer(c_int) recursive function get_environment_variable_name( &
1089 collections, item_type, name) &
1090 bind(c, name="KIM_Collections_GetEnvironmentVariableName")
1091 use,
intrinsic :: iso_c_binding
1092 use kim_interoperable_types_module,
only: kim_collections_type
1094 kim_collection_item_type_type
1096 type(kim_collections_type),
intent(in) :: collections
1097 type(kim_collection_item_type_type),
intent(in),
value :: item_type
1098 type(c_ptr),
intent(out) :: name
1099 end function get_environment_variable_name
1101 type(kim_collections_handle_type),
intent(in) :: collections_handle
1102 type(kim_collection_item_type_type),
intent(in) :: item_type
1103 character(len=*, kind=c_char),
intent(out) :: name
1104 integer(c_int),
intent(out) :: ierr
1105 type(kim_collections_type),
pointer :: collections
1109 call c_f_pointer(collections_handle%p, collections)
1110 ierr = get_environment_variable_name(collections, item_type, pname)
1111 call kim_convert_c_char_ptr_to_string(pname, name)
1120 recursive subroutine &
1122 collections_handle, name,
value)
1123 use kim_interoperable_types_module,
only: kim_collections_type
1124 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
1127 recursive subroutine get_configuration_file_environment_variable( &
1128 collections, name, value) &
1129 bind(c, name="KIM_Collections_GetConfigurationFileEnvironmentVariable")
1130 use,
intrinsic :: iso_c_binding
1131 use kim_interoperable_types_module,
only: kim_collections_type
1133 type(kim_collections_type),
intent(in) :: collections
1134 type(c_ptr),
intent(out) :: name
1135 type(c_ptr),
intent(out) :: value
1136 end subroutine get_configuration_file_environment_variable
1138 type(kim_collections_handle_type),
intent(in) :: collections_handle
1139 character(len=*, kind=c_char),
intent(out) :: name
1140 character(len=*, kind=c_char),
intent(out) :: value
1141 type(kim_collections_type),
pointer :: collections
1143 type(c_ptr) pname, pvalue
1145 call c_f_pointer(collections_handle%p, collections)
1146 call get_configuration_file_environment_variable(collections, pname, pvalue)
1147 call kim_convert_c_char_ptr_to_string(pname, name)
1148 call kim_convert_c_char_ptr_to_string(pvalue,
value)
1158 collections_handle, file_name)
1159 use kim_interoperable_types_module,
only: kim_collections_type
1160 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
1163 recursive subroutine get_configuration_file_name(collections, file_name) &
1164 bind(c, name="KIM_Collections_GetConfigurationFileName")
1165 use,
intrinsic :: iso_c_binding
1166 use kim_interoperable_types_module,
only: kim_collections_type
1168 type(kim_collections_type),
intent(in) :: collections
1169 type(c_ptr),
intent(out) :: file_name
1170 end subroutine get_configuration_file_name
1172 type(kim_collections_handle_type),
intent(in) :: collections_handle
1173 character(len=*, kind=c_char),
intent(out) :: file_name
1174 type(kim_collections_type),
pointer :: collections
1176 type(c_ptr) pfile_name
1178 call c_f_pointer(collections_handle%p, collections)
1179 call get_configuration_file_name(collections, pfile_name)
1180 call kim_convert_c_char_ptr_to_string(pfile_name, file_name)
1190 collections_handle, collection, item_type, extent, ierr)
1191 use kim_interoperable_types_module,
only: kim_collections_type
1196 integer(c_int) recursive function cache_list_of_directory_names( &
1197 collections, collection, item_type, extent) &
1198 bind(c, name="KIM_Collections_CacheListOfDirectoryNames")
1199 use,
intrinsic :: iso_c_binding
1200 use kim_interoperable_types_module,
only: kim_collections_type
1203 kim_collection_item_type_type
1205 type(kim_collections_type),
intent(in) :: collections
1206 type(kim_collection_type),
intent(in),
value :: collection
1207 type(kim_collection_item_type_type),
intent(in),
value :: item_type
1208 integer(c_int),
intent(out) :: extent
1209 end function cache_list_of_directory_names
1211 type(kim_collections_handle_type),
intent(in) :: collections_handle
1212 type(kim_collection_type),
intent(in) :: collection
1213 type(kim_collection_item_type_type),
intent(in) :: item_type
1214 integer(c_int),
intent(out) :: extent
1215 integer(c_int),
intent(out) :: ierr
1216 type(kim_collections_type),
pointer :: collections
1218 call c_f_pointer(collections_handle%p, collections)
1219 ierr = cache_list_of_directory_names(collections, collection, item_type, &
1232 use kim_interoperable_types_module,
only: kim_collections_type
1233 use kim_convert_string_module,
only: kim_convert_c_char_ptr_to_string
1236 integer(c_int) recursive function get_directory_name(collections, index, &
1238 bind(c, name="KIM_Collections_GetDirectoryName")
1239 use,
intrinsic :: iso_c_binding
1240 use kim_interoperable_types_module,
only: kim_collections_type
1242 type(kim_collections_type),
intent(in) :: collections
1243 integer(c_int),
intent(in),
value :: index
1244 type(c_ptr),
intent(out) :: directory_name
1245 end function get_directory_name
1247 type(kim_collections_handle_type),
intent(in) :: collections_handle
1248 integer(c_int),
intent(in) :: index
1249 character(len=*, kind=c_char),
intent(out) :: directory_name
1250 integer(c_int),
intent(out) :: ierr
1251 type(kim_collections_type),
pointer :: collections
1253 type(c_ptr) pdirectory_name
1255 call c_f_pointer(collections_handle%p, collections)
1256 ierr = get_directory_name(collections, index - 1, pdirectory_name)
1257 call kim_convert_c_char_ptr_to_string(pdirectory_name, directory_name)
1266 use kim_interoperable_types_module,
only: kim_collections_type
1269 recursive subroutine set_log_id(collections, log_id) &
1270 bind(c, name="KIM_Collections_SetLogID")
1271 use,
intrinsic :: iso_c_binding
1272 use kim_interoperable_types_module,
only: kim_collections_type
1274 type(kim_collections_type),
intent(in) :: collections
1275 character(c_char),
intent(in) :: log_id(*)
1276 end subroutine set_log_id
1278 type(kim_collections_handle_type),
intent(in) :: collections_handle
1279 character(len=*, kind=c_char),
intent(in) :: log_id
1280 type(kim_collections_type),
pointer :: collections
1282 call c_f_pointer(collections_handle%p, collections)
1283 call set_log_id(collections, trim(log_id)//c_null_char)
1294 use kim_interoperable_types_module,
only: kim_collections_type
1297 recursive subroutine push_log_verbosity(collections, log_verbosity) &
1298 bind(c, name="KIM_Collections_PushLogVerbosity")
1299 use,
intrinsic :: iso_c_binding
1301 use kim_interoperable_types_module,
only: kim_collections_type
1303 type(kim_collections_type),
intent(in) :: collections
1304 type(kim_log_verbosity_type),
intent(in),
value :: log_verbosity
1305 end subroutine push_log_verbosity
1307 type(kim_collections_handle_type),
intent(in) :: collections_handle
1308 type(kim_log_verbosity_type),
intent(in) :: log_verbosity
1309 type(kim_collections_type),
pointer :: collections
1311 call c_f_pointer(collections_handle%p, collections)
1312 call push_log_verbosity(collections, log_verbosity)
1322 use kim_interoperable_types_module,
only: kim_collections_type
1325 recursive subroutine pop_log_verbosity(collections) &
1326 bind(c, name="KIM_Collections_PopLogVerbosity")
1327 use,
intrinsic :: iso_c_binding
1329 use kim_interoperable_types_module,
only: kim_collections_type
1331 type(kim_collections_type),
intent(in) :: collections
1332 end subroutine pop_log_verbosity
1334 type(kim_collections_handle_type),
intent(in) :: collections_handle
1335 type(kim_collections_type),
pointer :: collections
1337 call c_f_pointer(collections_handle%p, collections)
1338 call pop_log_verbosity(collections)
An Extensible Enumeration for the CollectionItemType's supported by the KIM API.
An Extensible Enumeration for the Collection's supported by the KIM API.
Provides the interface to the KIM API Collections and is meant to be used by simulators.
recursive subroutine kim_collections_get_project_name_and_sem_ver(collections_handle, project_name, sem_ver)
Get the KIM API project name and full Semantic Version string.
recursive subroutine kim_collections_get_item_metadata_file_values(collections_handle, index, file_name, file_raw_data, file_string, ierr)
Get the item's metadata file values.
recursive subroutine kim_collections_get_item_name_by_collection_and_type(collections_handle, index, item_name, ierr)
Get the name of an item from the cached list.
recursive subroutine kim_collections_cache_list_of_item_names_by_collection_and_type(collections_handle, collection, item_type, extent, ierr)
Cache a list of all item names of a specific type in a specific collection.
recursive subroutine kim_collections_get_configuration_file_name(collections_handle, file_name)
Get the absolute file and path name of the KIM API user configuration file.
recursive subroutine kim_collections_get_environment_variable_name(collections_handle, item_type, name, ierr)
Get the names of environment variables that store configuration settings for the KIM::COLLECTION::env...
recursive subroutine kim_collections_get_item_metadata_file_length_by_coll_and_type(collections_handle, index, file_length, available_as_string, ierr)
Get the name and content of one of an item's metadata files.
recursive subroutine kim_collections_cache_list_of_directory_names(collections_handle, collection, item_type, extent, ierr)
Cache a list of directory names where a specific KIM API collection stores library files for a specif...
recursive subroutine kim_collections_cache_list_of_item_metadata_files(collections_handle, item_type, item_name, extent, ierr)
Cache a list of an item's metadata files.
recursive subroutine kim_collections_get_item_library_file_name_and_collection(collections_handle, item_type, item_name, file_name, collection, ierr)
Get the item's library file name and its KIM::Collection.
recursive subroutine kim_collections_get_item_metadata_file_length(collections_handle, index, file_length, available_as_string, ierr)
Get item metadata file length and determine if the file is available as a string.
recursive subroutine kim_collections_push_log_verbosity(collections_handle, log_verbosity)
Push a new LogVerbosity onto the Collections object's Log object verbosity stack.
recursive subroutine, public kim_collections_destroy(collections_handle)
Destroy a previously Collections::Create'd object.
recursive subroutine kim_collections_get_item_metadata_file_values_by_coll_and_type(collections_handle, index, file_name, file_raw_data, file_string, ierr)
Get the item's metadata file values.
recursive subroutine kim_colls_cache_list_of_item_metadata_files_by_coll_and_type(collections_handle, collection, item_type, item_name, extent, ierr)
KIM::Collections::CacheListOfItemMetadataFilesByCollectionAndType
recursive subroutine kim_collections_get_item_name_by_type(collections_handle, index, item_name, ierr)
Get the name of an item from the cached list.
recursive subroutine kim_collections_get_configuration_file_environment_variable(collections_handle, name, value)
Get the name and value of the environment variable that stores the name of the KIM API user configura...
recursive subroutine, public kim_collections_create(collections_handle, ierr)
Create a new KIM API Collections object.
type(kim_collections_handle_type), save, public, protected kim_collections_null_handle
NULL handle for use in comparisons.
recursive subroutine kim_collections_get_item_library_file_name_by_coll_and_type(collections_handle, collection, item_type, item_name, file_name, ierr)
KIM::Collections::GetItemLibraryFileNameByCollectionAndType
recursive subroutine kim_collections_cache_list_of_item_names_by_type(collections_handle, item_type, extent, ierr)
Cache a list of all item names of a specific type in the KIM API collections.
recursive subroutine kim_collections_pop_log_verbosity(collections_handle)
Pop a LogVerbosity from the Collections object's Log object verbosity stack.
recursive subroutine kim_collections_get_directory_name(collections_handle, index, directory_name, ierr)
Get the name of a directory from the cached list.
recursive subroutine kim_collections_set_log_id(collections_handle, log_id)
Set the identity of the Log object associated with the Collections object.
An Extensible Enumeration for the LogVerbosity's supported by the KIM API.