JuliaIO / HDF5.jl

Save and load data in the HDF5 file format from Julia
https://juliaio.github.io/HDF5.jl
MIT License
390 stars 143 forks source link

link via doxygen tags #1044

Closed simonbyrne closed 1 year ago

simonbyrne commented 1 year ago

This was my effort at #1029, as an alternative to #1043. It adds a pass to Documenter that expands @doxygen tags based on XML xpaths.

Still not quite complete, as the xpaths are a bit complicated.

mkitti commented 1 year ago

What happens when someone accesses the help in REPL or in VSCode? Does the docstring expand somehow?

simonbyrne commented 1 year ago

At the moment it will be empty, which is not ideal. I can change it so that it displays the function name (same as how @ref links are displayed)

simonbyrne commented 1 year ago

Hmm, I was wrong. It looks like only @ref tags are rendered as such. Any other tags will be rendered the same as http links, e.g. [fname](@doxygen) will be rendered as

fname (@doxygen])
mkitti commented 1 year ago
help?> HDF5.API.h5d_get_chunk_info
  h5d_get_chunk_info(dataset_id::hid_t, fspace_id::hid_t, index::hsize_t, offset::Ptr{hsize_t}, filter_mask::Ptr{Cuint}, addr::Ptr{haddr_t}, size::Ptr{hsize_t})

  External links
  ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

    •  (@doxygen /tagfile/compound[name='H5D']/member[name='H5Dget_chunk_info']).

I think we should make URL docstrings usable from the REPL and the only way I know how to do that is interpolate the URLs in at generation time. While we could dynamically load the tag file at package init, I don't see a clear advantage for doing that over just statically including the URL in the doc string. Perhaps one thing might be changing the URLs to match the version of the HDF5 library loaded. The URLS should be accessible beyond just the Documenter.jl generated docs.

I do like the xpath approach though.

mkitti commented 1 year ago

Do not forget about these URLs as well: https://github.com/JuliaIO/HDF5.jl/blob/2796b08741b6c5fbfda12435b3733e78abe19abc/gen/gen_wrappers.jl#L125

mkitti commented 1 year ago

Some symbols are not being resolved in the H5F, H5P, and H5T category. Might want to just to do //member[name='$cfuncname'].

List of undiscovered symbols, ignore the line citation. I've been editing this. ```julia ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fformat_convert'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for //member[name='H5Fformat_convert'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fget_mdc_config'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fget_mdc_hit_rate'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fget_mdc_image_info'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fget_mdc_logging_status'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fget_mdc_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fget_metadata_read_retry_info'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fget_mpi_atomicity'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Freset_mdc_hit_rate_stats'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fset_mdc_config'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fset_mpi_atomicity'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fstart_mdc_logging'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fstart_swmr_write'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5F']/member[name='H5Fstop_mdc_logging'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5L']/member[name='H5Literate'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5L']/member[name='H5Literate1'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_alignment'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_alloc_time'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_append_flush'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_attr_creation_order'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_attr_phase_change'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_btree_ratios'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_buffer'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_cache'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_char_encoding'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_chunk'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_chunk_cache'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_chunk_opts'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_class'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_class_parent'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_copy_object'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_core_write_tracking'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_create_intermediate_group'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_data_transform'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_driver'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_driver_info'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_dset_no_attrs_hint'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_dxpl_mpio'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_edc_check'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_efile_prefix'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_elink_acc_flags'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_elink_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_elink_fapl'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_elink_file_cache_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_elink_prefix'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_est_link_info'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_evict_on_close'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_external'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_external_count'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_family_offset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fapl_core'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fapl_family'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fapl_hdfs'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fapl_multi'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fapl_splitter'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fapl_ros3'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fclose_degree'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_file_image'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_file_image_callbacks'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_file_locking'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_file_space'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_file_space_page_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_file_space_strategy'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fill_time'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_fill_value'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_filter2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_filter_by_id2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_gc_references'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_hyper_vector_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_istore_k'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_layout'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_libver_bounds'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_link_creation_order'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_link_phase_change'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_local_heap_size_hint'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_mcdt_search_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_mdc_config'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_mdc_image_config'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_mdc_log_options'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_meta_block_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_metadata_read_attempts'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_multi_type'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_nfilters'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_nlinks'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_nprops'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_obj_track_times'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_object_flush_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_page_buffer_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_preserve'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_shared_mesg_index'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_shared_mesg_nindexes'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_shared_mesg_phase_change'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_sieve_buf_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_sizes'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_small_data_block_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_sym_k'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_type_conv_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_userblock'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_version'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_count'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_dsetname'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_filename'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_prefix'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_printf_gap'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_srcspace'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_view'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_virtual_vspace'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_vlen_mem_manager'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_vol_id'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pget_vol_info'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_alignment'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_alloc_time'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_append_flush'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_attr_creation_order'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_attr_phase_change'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_btree_ratios'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_buffer'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_cache'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_char_encoding'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_chunk'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_chunk_cache'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_chunk_opts'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_copy_object'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_core_write_tracking'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_create_intermediate_group'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_data_transform'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_deflate'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_driver'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_dset_no_attrs_hint'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_dxpl_mpio'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_edc_check'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_efile_prefix'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_elink_acc_flags'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_elink_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_elink_fapl'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_elink_file_cache_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_elink_prefix'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_est_link_info'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_evict_on_close'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_external'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_family_offset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_core'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_family'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_hdfs'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_log'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_multi'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_sec2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_ros3'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_split'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_splitter'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_stdio'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fapl_windows'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fclose_degree'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_file_image'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_file_image_callbacks'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_file_locking'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_file_space'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_file_space_page_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_file_space_strategy'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fill_time'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fill_value'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_filter'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_filter_callback'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_fletcher32'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_gc_references'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_hyper_vector_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_istore_k'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_layout'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_libver_bounds'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_link_creation_order'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_link_phase_change'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_local_heap_size_hint'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_mcdt_search_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_mdc_config'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_mdc_image_config'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_mdc_log_options'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_meta_block_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_metadata_read_attempts'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_multi_type'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_nbit'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_nlinks'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_obj_track_times'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_object_flush_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_page_buffer_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_preserve'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_scaleoffset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_shared_mesg_index'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_shared_mesg_nindexes'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_shared_mesg_phase_change'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_shuffle'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_sieve_buf_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_sizes'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_small_data_block_size'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_sym_k'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_szip'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_type_conv_cb'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_userblock'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_virtual'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_virtual_prefix'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_virtual_printf_gap'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_virtual_view'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_vlen_mem_manager'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pset_vol'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Padd_merge_committed_dtype_path'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pall_filters_avail'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pclose'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pclose_class'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pcopy'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pcopy_prop'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pcreate'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pcreate_class'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pdecode'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pencode1'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pencode2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pequal'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pexist'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pfill_value_defined'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pfree_merge_committed_dtype_paths'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pinsert1'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pinsert2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pisa_class'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Piterate'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pmodify_filter'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pregister1'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Pregister2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Premove'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Premove_filter'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5P']/member[name='H5Punregister'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tarray_create2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tenum_insert'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_array_dims2'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_array_ndims'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_cset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_ebias'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_fields'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_member_class'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_member_index'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_member_offset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_member_type'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_nmembers'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_offset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_order'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_precision'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_sign'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tget_strpad'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tinsert'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tis_variable_str'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_cset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_ebias'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_fields'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_offset'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_order'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_precision'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_strpad'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tset_tag'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ┌ Warning: No node for /tagfile/compound[name='H5T']/member[name='H5Tvlen_create'] └ @ Main ~/.julia/dev/HDF5/docs/doxygen.jl:45 ```
mkitti commented 1 year ago

Here we are doing a new query for each function thay we are trying to lookup. This means that we are likely O(N^2) with the number of XML elements.

My current thinking here is that we should just do a single XPath query to allow us to iterate over the members once and build a lookup table like I do in #1043. Basically refactor my for loop into a single iteration over findall call with a XPath.

We should check in the hdf5.tag file but not the intermediate lookup tables. The package should be able to be regenerated from the git repo alone without an active Internet connection.

I'm still not seeing the advantage of tying the URL construction with Documenter, especially because it would be useful to have the URLs available outside of docker.

simonbyrne commented 1 year ago

I'm still not seeing the advantage of tying the URL construction with Documenter, especially because it would be useful to have the URLs available outside of docker.

I think you're right, there's probably not much to be gained in this case. The main thing I wanted to avoid was making the XML parser an actual package dependency.

The only downside with doing it in the gen scripts is that you can't use it elsewhere (e.g. link to sections of the manual). Not sure the best way to do that.

mkitti commented 1 year ago

The only downside with doing it in the gen scripts is that you can't use it elsewhere (e.g. link to sections of the manual). Not sure the best way to do that.

We could retain file such as the group URLs linked below in git.

https://github.com/JuliaIO/HDF5.jl/blob/900517b2a4f82ba69806e9afb7fde21ff5fd5ae3/gen/DoxygenTagParser/hdf5_group_urls.tsv

We could then load this into a global Dict at the top level during precompile time, interpolate the needed values, and then empty the table Dict at the end of precomp.

mkitti commented 1 year ago

My exploratory diff to this branch is currently here: https://github.com/JuliaIO/HDF5.jl/compare/sb/doxygen-tag...mkitti:HDF5.jl:mk/doxygen-tag?expand=1

mkitti commented 1 year ago

One thing about the xpath approach is that we do end up iterating over the tags more than once since each query starts a new iteration. It's not a very big deal in terms of performance though, which is not a huge consideration here.

mkitti commented 1 year ago

Merged #1043 over this one. We should revisit this later though, especially with a pure-Julia XML parser. See #1043 comments.