Hi Alek, I recognise your name from this posting ;-). //www.freelists.org/post/luajit/gccpythonplugin-LuaJIT-FFI-defs-collectingcoordination On Tue, Oct 23, 2012 at 08:04:29AM +0300, Alek Paunov wrote: > I am thinking of a variation of the same approach: LuaJIT plugin for GCC, The Lua plugin for GCC is almost finished (documentation still has to be written, and tests completed before publishing), so I came up with the idea to prove its usefulness by bootstrapping a gcc-luajit plugin using the gcc-lua plugin. I quickly gave up that idea, since GCC uses non-standard extensions for the AST itself, which I honestly did not grasp yet. In particular, I have no idea what the GTY(â) constructs translate to in the AST. Further, changing a single variable (asm_file_name = HOST_BIT_BUCKET) would have meant the generation of large structs for ffi.cdef, only to access one field in a struct of structs. After this experiment, I was very glad to leave it at using the Lua C API for this task. Basically all the plugin does is export part of the macros in tree.h as Lua functions, and map the polymorphic tree type onto a distinct metatable for each tree code. This allows walking the tree from a Lua script loaded into the interpreter within the plugin. > resulting type information stored in SQLite(*) db (possibly > accumulating several different variants of the ABI - > lib-version/arch/OS variations) and lazy runtime generation of the > concrete ffi.cdefs (based on LuaJIT module/function requirement > annotations as example). > > As eventual secondary step, loading the appropriate Lua code > (predefined specific lib shim bits or AST-macros where is suitable) > also from the same db. > > Maybe with such a metadata-centric/runtime-depsolving approach we > would have a chance to reuse other already available typelib sources > too (GIR, windows typelibs, etc.) plus the accuracy of loading only > the necessary minimum cdefs and Lua code into the engine at runtime. Could you explain the database/catalog aspect in more detail, maybe with a short example? What are the steps from input to generated ffi.cdef code? So far I could keep the script for code generation generic. The script acquires a list of global variables, and deduces a type or function or variable declaration, which is passed to the C code generator (roughly 200 lines of Lua code, but too messy to release yet). I attached an example for the HDF5 C API, of the input code, and the generated output code. Note that the output code has minor flaws, since I need to figure out a good way to tell the code generator when to expand a type_decl (substitute a type with its main variant). Regards, Peter
/* * Define HDF5 C ABI for LuaJIT FFI. * Copyright © 2012 Peter Colberg. * For conditions of distribution and use, see copyright notice in LICENSE. */ #define _H5private_H #include <hdf5.h> #define FFI_C_CONST(name) void *const FFI_C_ ## name = (void *const)((intptr_t)(name)) #define FFI_C_VAR(name) void *const FFI_C_ ## name = (void *const)(&name) #define FFI_C_NAMED_VAR(name, value) void *const FFI_C_ ## name = (void *const)(&value) #define FFI_C_FUNC(name) void (*const FFI_C_ ## name)() = (void (*const)())(name) #define FFI_C_TYPE(name) name *const FFI_C_ ## name #define FFI_C_ENUM(name) enum name *const FFI_C_ ## name #define FFI_C_STRUCT(name) struct name *const FFI_C_ ## name #define FFI_C_UNION(name) union name *const FFI_C_ ## name #ifndef H5_VERSION_GE #define H5_VERSION_GE(maj, min, rel) H5_VERS_MAJOR > maj || H5_VERS_MAJOR == maj && (H5_VERS_MINOR > min || H5_VERS_MINOR == min && H5_VERS_RELEASE >= rel) #endif /* POSIX */ FFI_C_TYPE(ssize_t); FFI_C_TYPE(time_t); /* General Library Functions */ FFI_C_TYPE(herr_t); FFI_C_TYPE(hbool_t); FFI_C_TYPE(htri_t); FFI_C_TYPE(hsize_t); FFI_C_TYPE(hssize_t); FFI_C_TYPE(haddr_t); FFI_C_CONST(H5_VERS_MAJOR); FFI_C_CONST(H5_VERS_MINOR); FFI_C_CONST(H5_VERS_RELEASE); FFI_C_CONST(H5P_DEFAULT); FFI_C_TYPE(H5_iter_order_t); FFI_C_CONST(H5_ITER_ERROR); FFI_C_CONST(H5_ITER_CONT); FFI_C_CONST(H5_ITER_STOP); FFI_C_TYPE(H5_index_t); FFI_C_TYPE(H5_ih_info_t); FFI_C_FUNC(H5open); FFI_C_FUNC(H5close); FFI_C_FUNC(H5dont_atexit); FFI_C_FUNC(H5garbage_collect); FFI_C_FUNC(H5set_free_list_limits); FFI_C_FUNC(H5get_libversion); FFI_C_FUNC(H5check_version); /* Identifier Interface */ FFI_C_TYPE(hid_t); FFI_C_CONST(H5I_INVALID_HID); FFI_C_TYPE(H5I_type_t); FFI_C_TYPE(H5I_free_t); FFI_C_TYPE(H5I_search_func_t); FFI_C_FUNC(H5Iregister); FFI_C_FUNC(H5Iobject_verify); FFI_C_FUNC(H5Iremove_verify); FFI_C_FUNC(H5Iget_type); FFI_C_FUNC(H5Iget_file_id); FFI_C_FUNC(H5Iget_name); FFI_C_FUNC(H5Iinc_ref); FFI_C_FUNC(H5Idec_ref); FFI_C_FUNC(H5Iget_ref); FFI_C_FUNC(H5Iregister_type); FFI_C_FUNC(H5Iclear_type); FFI_C_FUNC(H5Idestroy_type); FFI_C_FUNC(H5Iinc_type_ref); FFI_C_FUNC(H5Idec_type_ref); FFI_C_FUNC(H5Iget_type_ref); FFI_C_FUNC(H5Isearch); FFI_C_FUNC(H5Inmembers); FFI_C_FUNC(H5Itype_exists); #if H5_VERSION_GE(1, 8, 3) FFI_C_FUNC(H5Iis_valid); #endif /* Error Interface */ FFI_C_CONST(H5E_DEFAULT); FFI_C_TYPE(H5E_type_t); FFI_C_TYPE(H5E_error_t); FFI_C_VAR(H5E_ERR_CLS); FFI_C_VAR(H5E_DATASET); FFI_C_VAR(H5E_FUNC); FFI_C_VAR(H5E_STORAGE); FFI_C_VAR(H5E_FILE); FFI_C_VAR(H5E_SOHM); FFI_C_VAR(H5E_SYM); FFI_C_VAR(H5E_VFL); FFI_C_VAR(H5E_INTERNAL); FFI_C_VAR(H5E_BTREE); FFI_C_VAR(H5E_REFERENCE); FFI_C_VAR(H5E_DATASPACE); FFI_C_VAR(H5E_RESOURCE); FFI_C_VAR(H5E_PLIST); FFI_C_VAR(H5E_LINK); FFI_C_VAR(H5E_DATATYPE); FFI_C_VAR(H5E_RS); FFI_C_VAR(H5E_HEAP); FFI_C_VAR(H5E_OHDR); FFI_C_VAR(H5E_ATOM); FFI_C_VAR(H5E_ATTR); FFI_C_VAR(H5E_NONE_MAJOR); FFI_C_VAR(H5E_IO); FFI_C_VAR(H5E_SLIST); FFI_C_VAR(H5E_EFL); FFI_C_VAR(H5E_TST); FFI_C_VAR(H5E_ARGS); FFI_C_VAR(H5E_ERROR); FFI_C_VAR(H5E_PLINE); FFI_C_VAR(H5E_FSPACE); FFI_C_VAR(H5E_CACHE); FFI_C_VAR(H5E_SEEKERROR); FFI_C_VAR(H5E_READERROR); FFI_C_VAR(H5E_WRITEERROR); FFI_C_VAR(H5E_CLOSEERROR); FFI_C_VAR(H5E_OVERFLOW); FFI_C_VAR(H5E_FCNTL); FFI_C_VAR(H5E_NOSPACE); FFI_C_VAR(H5E_CANTALLOC); FFI_C_VAR(H5E_CANTCOPY); FFI_C_VAR(H5E_CANTFREE); FFI_C_VAR(H5E_ALREADYEXISTS); FFI_C_VAR(H5E_CANTLOCK); FFI_C_VAR(H5E_CANTUNLOCK); FFI_C_VAR(H5E_CANTGC); FFI_C_VAR(H5E_CANTGETSIZE); FFI_C_VAR(H5E_OBJOPEN); FFI_C_VAR(H5E_CANTRESTORE); FFI_C_VAR(H5E_CANTCOMPUTE); FFI_C_VAR(H5E_CANTEXTEND); FFI_C_VAR(H5E_CANTATTACH); FFI_C_VAR(H5E_CANTUPDATE); FFI_C_VAR(H5E_CANTOPERATE); FFI_C_VAR(H5E_CANTINIT); FFI_C_VAR(H5E_ALREADYINIT); FFI_C_VAR(H5E_CANTRELEASE); FFI_C_VAR(H5E_CANTGET); FFI_C_VAR(H5E_CANTSET); FFI_C_VAR(H5E_DUPCLASS); FFI_C_VAR(H5E_SETDISALLOWED); FFI_C_VAR(H5E_CANTMERGE); FFI_C_VAR(H5E_CANTREVIVE); FFI_C_VAR(H5E_CANTSHRINK); FFI_C_VAR(H5E_LINKCOUNT); FFI_C_VAR(H5E_VERSION); FFI_C_VAR(H5E_ALIGNMENT); FFI_C_VAR(H5E_BADMESG); FFI_C_VAR(H5E_CANTDELETE); FFI_C_VAR(H5E_BADITER); FFI_C_VAR(H5E_CANTPACK); FFI_C_VAR(H5E_CANTRESET); FFI_C_VAR(H5E_CANTRENAME); FFI_C_VAR(H5E_SYSERRSTR); FFI_C_VAR(H5E_NOFILTER); FFI_C_VAR(H5E_CALLBACK); FFI_C_VAR(H5E_CANAPPLY); FFI_C_VAR(H5E_SETLOCAL); FFI_C_VAR(H5E_NOENCODER); FFI_C_VAR(H5E_CANTFILTER); FFI_C_VAR(H5E_CANTOPENOBJ); FFI_C_VAR(H5E_CANTCLOSEOBJ); FFI_C_VAR(H5E_COMPLEN); FFI_C_VAR(H5E_PATH); FFI_C_VAR(H5E_NONE_MINOR); FFI_C_VAR(H5E_FILEEXISTS); FFI_C_VAR(H5E_FILEOPEN); FFI_C_VAR(H5E_CANTCREATE); FFI_C_VAR(H5E_CANTOPENFILE); FFI_C_VAR(H5E_CANTCLOSEFILE); FFI_C_VAR(H5E_NOTHDF5); FFI_C_VAR(H5E_BADFILE); FFI_C_VAR(H5E_TRUNCATED); FFI_C_VAR(H5E_MOUNT); FFI_C_VAR(H5E_BADATOM); FFI_C_VAR(H5E_BADGROUP); FFI_C_VAR(H5E_CANTREGISTER); FFI_C_VAR(H5E_CANTINC); FFI_C_VAR(H5E_CANTDEC); FFI_C_VAR(H5E_NOIDS); FFI_C_VAR(H5E_CANTFLUSH); FFI_C_VAR(H5E_CANTSERIALIZE); FFI_C_VAR(H5E_CANTLOAD); FFI_C_VAR(H5E_PROTECT); FFI_C_VAR(H5E_NOTCACHED); FFI_C_VAR(H5E_SYSTEM); FFI_C_VAR(H5E_CANTINS); FFI_C_VAR(H5E_CANTPROTECT); FFI_C_VAR(H5E_CANTUNPROTECT); FFI_C_VAR(H5E_CANTPIN); FFI_C_VAR(H5E_CANTUNPIN); FFI_C_VAR(H5E_CANTMARKDIRTY); FFI_C_VAR(H5E_CANTDIRTY); FFI_C_VAR(H5E_CANTEXPUNGE); FFI_C_VAR(H5E_CANTRESIZE); FFI_C_VAR(H5E_TRAVERSE); FFI_C_VAR(H5E_NLINKS); FFI_C_VAR(H5E_NOTREGISTERED); FFI_C_VAR(H5E_CANTMOVE); FFI_C_VAR(H5E_CANTSORT); FFI_C_VAR(H5E_MPI); FFI_C_VAR(H5E_MPIERRSTR); FFI_C_VAR(H5E_CANTRECV); FFI_C_VAR(H5E_CANTCLIP); FFI_C_VAR(H5E_CANTCOUNT); FFI_C_VAR(H5E_CANTSELECT); FFI_C_VAR(H5E_CANTNEXT); FFI_C_VAR(H5E_BADSELECT); FFI_C_VAR(H5E_CANTCOMPARE); FFI_C_VAR(H5E_UNINITIALIZED); FFI_C_VAR(H5E_UNSUPPORTED); FFI_C_VAR(H5E_BADTYPE); FFI_C_VAR(H5E_BADRANGE); FFI_C_VAR(H5E_BADVALUE); FFI_C_VAR(H5E_NOTFOUND); FFI_C_VAR(H5E_EXISTS); FFI_C_VAR(H5E_CANTENCODE); FFI_C_VAR(H5E_CANTDECODE); FFI_C_VAR(H5E_CANTSPLIT); FFI_C_VAR(H5E_CANTREDISTRIBUTE); FFI_C_VAR(H5E_CANTSWAP); FFI_C_VAR(H5E_CANTINSERT); FFI_C_VAR(H5E_CANTLIST); FFI_C_VAR(H5E_CANTMODIFY); FFI_C_VAR(H5E_CANTREMOVE); FFI_C_VAR(H5E_CANTCONVERT); FFI_C_VAR(H5E_BADSIZE); FFI_C_TYPE(H5E_direction_t); FFI_C_TYPE(H5E_walk_t); FFI_C_TYPE(H5E_auto_t); FFI_C_FUNC(H5Eregister_class); FFI_C_FUNC(H5Eunregister_class); FFI_C_FUNC(H5Eclose_msg); FFI_C_FUNC(H5Ecreate_msg); FFI_C_FUNC(H5Ecreate_stack); FFI_C_FUNC(H5Eget_current_stack); FFI_C_FUNC(H5Eclose_stack); FFI_C_FUNC(H5Eget_class_name); FFI_C_FUNC(H5Eset_current_stack); FFI_C_FUNC(H5Epush); FFI_C_FUNC(H5Epop); FFI_C_FUNC(H5Eprint); FFI_C_FUNC(H5Ewalk); FFI_C_FUNC(H5Eget_auto); FFI_C_FUNC(H5Eset_auto); FFI_C_FUNC(H5Eclear); FFI_C_FUNC(H5Eget_msg); FFI_C_FUNC(H5Eget_num); /* File Interface */ FFI_C_ENUM(H5C_cache_incr_mode); FFI_C_ENUM(H5C_cache_flash_incr_mode); FFI_C_ENUM(H5C_cache_decr_mode); FFI_C_CONST(H5AC__CURR_CACHE_CONFIG_VERSION); FFI_C_CONST(H5AC__MAX_TRACE_FILE_NAME_LEN); #if H5_VERSION_GE(1, 8, 6) FFI_C_CONST(H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY); FFI_C_CONST(H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED); #endif FFI_C_TYPE(H5AC_cache_config_t); FFI_C_CONST(H5F_ACC_RDONLY); FFI_C_CONST(H5F_ACC_RDWR); FFI_C_CONST(H5F_ACC_TRUNC); FFI_C_CONST(H5F_ACC_EXCL); FFI_C_CONST(H5F_ACC_DEBUG); FFI_C_CONST(H5F_ACC_CREAT); #if H5_VERSION_GE(1, 8, 3) FFI_C_CONST(H5F_ACC_DEFAULT); #endif FFI_C_CONST(H5F_OBJ_FILE); FFI_C_CONST(H5F_OBJ_DATASET); FFI_C_CONST(H5F_OBJ_GROUP); FFI_C_CONST(H5F_OBJ_DATATYPE); FFI_C_CONST(H5F_OBJ_ATTR); FFI_C_CONST(H5F_OBJ_ALL); FFI_C_CONST(H5F_OBJ_LOCAL); FFI_C_CONST(H5F_FAMILY_DEFAULT); FFI_C_TYPE(H5F_scope_t); FFI_C_CONST(H5F_UNLIMITED); FFI_C_TYPE(H5F_close_degree_t); FFI_C_TYPE(H5F_info_t); FFI_C_TYPE(H5F_mem_t); FFI_C_TYPE(H5F_libver_t); #if H5_VERSION_GE(1, 8, 6) FFI_C_CONST(H5F_LIBVER_18); #endif FFI_C_FUNC(H5Fis_hdf5); FFI_C_FUNC(H5Fcreate); FFI_C_FUNC(H5Fopen); FFI_C_FUNC(H5Freopen); FFI_C_FUNC(H5Fflush); FFI_C_FUNC(H5Fclose); FFI_C_FUNC(H5Fget_create_plist); FFI_C_FUNC(H5Fget_access_plist); FFI_C_FUNC(H5Fget_intent); #if H5_VERSION_GE(1, 8, 2) FFI_C_FUNC(H5Fget_obj_count); FFI_C_FUNC(H5Fget_obj_ids); #else FFI_C_FUNC(H5Fget_obj_count); FFI_C_FUNC(H5Fget_obj_ids); #endif FFI_C_FUNC(H5Fget_vfd_handle); FFI_C_FUNC(H5Fmount); FFI_C_FUNC(H5Funmount); FFI_C_FUNC(H5Fget_freespace); FFI_C_FUNC(H5Fget_filesize); #if H5_VERSION_GE(1, 8, 9) FFI_C_FUNC(H5Fget_file_image); #endif FFI_C_FUNC(H5Fget_mdc_config); FFI_C_FUNC(H5Fset_mdc_config); FFI_C_FUNC(H5Fget_mdc_hit_rate); FFI_C_FUNC(H5Fget_mdc_size); FFI_C_FUNC(H5Freset_mdc_hit_rate_stats); FFI_C_FUNC(H5Fget_name); FFI_C_FUNC(H5Fget_info); #if H5_VERSION_GE(1, 8, 7) FFI_C_FUNC(H5Fclear_elink_file_cache); #endif #if H5_HAVE_PARALLEL && H5_VERSION_GE(1, 8, 9) FFI_C_FUNC(H5Fset_mpi_atomicity); FFI_C_FUNC(H5Fget_mpi_atomicity); #endif /* Dataspace Interface */ FFI_C_CONST(H5S_ALL); FFI_C_CONST(H5S_UNLIMITED); FFI_C_CONST(H5S_MAX_RANK); FFI_C_TYPE(H5S_class_t); FFI_C_TYPE(H5S_seloper_t); FFI_C_TYPE(H5S_sel_type); FFI_C_FUNC(H5Screate); FFI_C_FUNC(H5Screate_simple); FFI_C_FUNC(H5Sset_extent_simple); FFI_C_FUNC(H5Scopy); FFI_C_FUNC(H5Sclose); FFI_C_FUNC(H5Sencode); FFI_C_FUNC(H5Sdecode); FFI_C_FUNC(H5Sget_simple_extent_npoints); FFI_C_FUNC(H5Sget_simple_extent_ndims); FFI_C_FUNC(H5Sget_simple_extent_dims); FFI_C_FUNC(H5Sis_simple); FFI_C_FUNC(H5Sget_select_npoints); FFI_C_FUNC(H5Sselect_hyperslab); #ifdef NEW_HYPERSLAB_API FFI_C_FUNC(H5Scombine_hyperslab); FFI_C_FUNC(H5Sselect_select); FFI_C_FUNC(H5Scombine_select); #endif FFI_C_FUNC(H5Sselect_elements); FFI_C_FUNC(H5Sget_simple_extent_type); FFI_C_FUNC(H5Sset_extent_none); FFI_C_FUNC(H5Sextent_copy); FFI_C_FUNC(H5Sextent_equal); FFI_C_FUNC(H5Sselect_all); FFI_C_FUNC(H5Sselect_none); FFI_C_FUNC(H5Soffset_simple); FFI_C_FUNC(H5Sselect_valid); FFI_C_FUNC(H5Sget_select_hyper_nblocks); FFI_C_FUNC(H5Sget_select_elem_npoints); FFI_C_FUNC(H5Sget_select_hyper_blocklist); FFI_C_FUNC(H5Sget_select_elem_pointlist); FFI_C_FUNC(H5Sget_select_bounds); FFI_C_FUNC(H5Sget_select_type); /* Datatype Interface */ FFI_C_TYPE(H5T_class_t); FFI_C_TYPE(H5T_order_t); FFI_C_TYPE(H5T_sign_t); FFI_C_TYPE(H5T_norm_t); FFI_C_TYPE(H5T_cset_t); FFI_C_TYPE(H5T_str_t); FFI_C_TYPE(H5T_pad_t); FFI_C_TYPE(H5T_cmd_t); FFI_C_TYPE(H5T_bkg_t); FFI_C_TYPE(H5T_pers_t); FFI_C_TYPE(H5T_direction_t); FFI_C_TYPE(H5T_conv_except_t); FFI_C_TYPE(H5T_conv_ret_t); FFI_C_TYPE(H5T_cdata_t); FFI_C_TYPE(hvl_t); FFI_C_CONST(H5T_VARIABLE); FFI_C_CONST(H5T_OPAQUE_TAG_MAX); FFI_C_VAR(H5T_IEEE_F32BE); FFI_C_VAR(H5T_IEEE_F32LE); FFI_C_VAR(H5T_IEEE_F64BE); FFI_C_VAR(H5T_IEEE_F64LE); FFI_C_VAR(H5T_STD_I8BE); FFI_C_VAR(H5T_STD_I8LE); FFI_C_VAR(H5T_STD_I16BE); FFI_C_VAR(H5T_STD_I16LE); FFI_C_VAR(H5T_STD_I32BE); FFI_C_VAR(H5T_STD_I32LE); FFI_C_VAR(H5T_STD_I64BE); FFI_C_VAR(H5T_STD_I64LE); FFI_C_VAR(H5T_STD_U8BE); FFI_C_VAR(H5T_STD_U8LE); FFI_C_VAR(H5T_STD_U16BE); FFI_C_VAR(H5T_STD_U16LE); FFI_C_VAR(H5T_STD_U32BE); FFI_C_VAR(H5T_STD_U32LE); FFI_C_VAR(H5T_STD_U64BE); FFI_C_VAR(H5T_STD_U64LE); FFI_C_VAR(H5T_STD_B8BE); FFI_C_VAR(H5T_STD_B8LE); FFI_C_VAR(H5T_STD_B16BE); FFI_C_VAR(H5T_STD_B16LE); FFI_C_VAR(H5T_STD_B32BE); FFI_C_VAR(H5T_STD_B32LE); FFI_C_VAR(H5T_STD_B64BE); FFI_C_VAR(H5T_STD_B64LE); FFI_C_VAR(H5T_STD_REF_OBJ); FFI_C_VAR(H5T_STD_REF_DSETREG); FFI_C_VAR(H5T_UNIX_D32BE); FFI_C_VAR(H5T_UNIX_D32LE); FFI_C_VAR(H5T_UNIX_D64BE); FFI_C_VAR(H5T_UNIX_D64LE); FFI_C_VAR(H5T_C_S1); FFI_C_VAR(H5T_FORTRAN_S1); FFI_C_VAR(H5T_INTEL_I8); FFI_C_VAR(H5T_INTEL_I16); FFI_C_VAR(H5T_INTEL_I32); FFI_C_VAR(H5T_INTEL_I64); FFI_C_VAR(H5T_INTEL_U8); FFI_C_VAR(H5T_INTEL_U16); FFI_C_VAR(H5T_INTEL_U32); FFI_C_VAR(H5T_INTEL_U64); FFI_C_VAR(H5T_INTEL_B8); FFI_C_VAR(H5T_INTEL_B16); FFI_C_VAR(H5T_INTEL_B32); FFI_C_VAR(H5T_INTEL_B64); FFI_C_VAR(H5T_INTEL_F32); FFI_C_VAR(H5T_INTEL_F64); FFI_C_VAR(H5T_ALPHA_I8); FFI_C_VAR(H5T_ALPHA_I16); FFI_C_VAR(H5T_ALPHA_I32); FFI_C_VAR(H5T_ALPHA_I64); FFI_C_VAR(H5T_ALPHA_U8); FFI_C_VAR(H5T_ALPHA_U16); FFI_C_VAR(H5T_ALPHA_U32); FFI_C_VAR(H5T_ALPHA_U64); FFI_C_VAR(H5T_ALPHA_B8); FFI_C_VAR(H5T_ALPHA_B16); FFI_C_VAR(H5T_ALPHA_B32); FFI_C_VAR(H5T_ALPHA_B64); FFI_C_VAR(H5T_ALPHA_F32); FFI_C_VAR(H5T_ALPHA_F64); FFI_C_VAR(H5T_MIPS_I8); FFI_C_VAR(H5T_MIPS_I16); FFI_C_VAR(H5T_MIPS_I32); FFI_C_VAR(H5T_MIPS_I64); FFI_C_VAR(H5T_MIPS_U8); FFI_C_VAR(H5T_MIPS_U16); FFI_C_VAR(H5T_MIPS_U32); FFI_C_VAR(H5T_MIPS_U64); FFI_C_VAR(H5T_MIPS_B8); FFI_C_VAR(H5T_MIPS_B16); FFI_C_VAR(H5T_MIPS_B32); FFI_C_VAR(H5T_MIPS_B64); FFI_C_VAR(H5T_MIPS_F32); FFI_C_VAR(H5T_MIPS_F64); FFI_C_VAR(H5T_VAX_F32); FFI_C_VAR(H5T_VAX_F64); #if CHAR_MIN < 0 FFI_C_NAMED_VAR(H5T_NATIVE_CHAR, H5T_NATIVE_SCHAR); #else FFI_C_NAMED_VAR(H5T_NATIVE_CHAR, H5T_NATIVE_UCHAR); #endif FFI_C_VAR(H5T_NATIVE_SCHAR); FFI_C_VAR(H5T_NATIVE_UCHAR); FFI_C_VAR(H5T_NATIVE_SHORT); FFI_C_VAR(H5T_NATIVE_USHORT); FFI_C_VAR(H5T_NATIVE_INT); FFI_C_VAR(H5T_NATIVE_UINT); FFI_C_VAR(H5T_NATIVE_LONG); FFI_C_VAR(H5T_NATIVE_ULONG); FFI_C_VAR(H5T_NATIVE_LLONG); FFI_C_VAR(H5T_NATIVE_ULLONG); FFI_C_VAR(H5T_NATIVE_FLOAT); FFI_C_VAR(H5T_NATIVE_DOUBLE); FFI_C_VAR(H5T_NATIVE_LDOUBLE); FFI_C_VAR(H5T_NATIVE_B8); FFI_C_VAR(H5T_NATIVE_B16); FFI_C_VAR(H5T_NATIVE_B32); FFI_C_VAR(H5T_NATIVE_B64); FFI_C_VAR(H5T_NATIVE_OPAQUE); FFI_C_VAR(H5T_NATIVE_HADDR); FFI_C_VAR(H5T_NATIVE_HSIZE); FFI_C_VAR(H5T_NATIVE_HSSIZE); FFI_C_VAR(H5T_NATIVE_HERR); FFI_C_VAR(H5T_NATIVE_HBOOL); FFI_C_VAR(H5T_NATIVE_INT8); FFI_C_VAR(H5T_NATIVE_UINT8); FFI_C_VAR(H5T_NATIVE_INT_LEAST8); FFI_C_VAR(H5T_NATIVE_UINT_LEAST8); FFI_C_VAR(H5T_NATIVE_INT_FAST8); FFI_C_VAR(H5T_NATIVE_UINT_FAST8); FFI_C_VAR(H5T_NATIVE_INT16); FFI_C_VAR(H5T_NATIVE_UINT16); FFI_C_VAR(H5T_NATIVE_INT_LEAST16); FFI_C_VAR(H5T_NATIVE_UINT_LEAST16); FFI_C_VAR(H5T_NATIVE_INT_FAST16); FFI_C_VAR(H5T_NATIVE_UINT_FAST16); FFI_C_VAR(H5T_NATIVE_INT32); FFI_C_VAR(H5T_NATIVE_UINT32); FFI_C_VAR(H5T_NATIVE_INT_LEAST32); FFI_C_VAR(H5T_NATIVE_UINT_LEAST32); FFI_C_VAR(H5T_NATIVE_INT_FAST32); FFI_C_VAR(H5T_NATIVE_UINT_FAST32); FFI_C_VAR(H5T_NATIVE_INT64); FFI_C_VAR(H5T_NATIVE_UINT64); FFI_C_VAR(H5T_NATIVE_INT_LEAST64); FFI_C_VAR(H5T_NATIVE_UINT_LEAST64); FFI_C_VAR(H5T_NATIVE_INT_FAST64); FFI_C_VAR(H5T_NATIVE_UINT_FAST64); FFI_C_TYPE(H5T_conv_t); FFI_C_TYPE(H5T_conv_except_func_t); FFI_C_FUNC(H5Tcreate); FFI_C_FUNC(H5Tcopy); FFI_C_FUNC(H5Tclose); FFI_C_FUNC(H5Tequal); FFI_C_FUNC(H5Tlock); FFI_C_FUNC(H5Tcommit); FFI_C_FUNC(H5Topen); FFI_C_FUNC(H5Tcommit_anon); FFI_C_FUNC(H5Tget_create_plist); FFI_C_FUNC(H5Tcommitted); FFI_C_FUNC(H5Tencode); FFI_C_FUNC(H5Tdecode); FFI_C_FUNC(H5Tinsert); FFI_C_FUNC(H5Tpack); FFI_C_FUNC(H5Tenum_create); FFI_C_FUNC(H5Tenum_insert); FFI_C_FUNC(H5Tenum_nameof); FFI_C_FUNC(H5Tenum_valueof); FFI_C_FUNC(H5Tvlen_create); FFI_C_FUNC(H5Tarray_create); FFI_C_FUNC(H5Tget_array_ndims); FFI_C_FUNC(H5Tget_array_dims); FFI_C_FUNC(H5Tset_tag); FFI_C_FUNC(H5Tget_tag); FFI_C_FUNC(H5Tget_super); FFI_C_FUNC(H5Tget_class); FFI_C_FUNC(H5Tdetect_class); FFI_C_FUNC(H5Tget_size); FFI_C_FUNC(H5Tget_order); FFI_C_FUNC(H5Tget_precision); FFI_C_FUNC(H5Tget_offset); FFI_C_FUNC(H5Tget_pad); FFI_C_FUNC(H5Tget_sign); FFI_C_FUNC(H5Tget_fields); FFI_C_FUNC(H5Tget_ebias); FFI_C_FUNC(H5Tget_norm); FFI_C_FUNC(H5Tget_inpad); FFI_C_FUNC(H5Tget_strpad); FFI_C_FUNC(H5Tget_nmembers); FFI_C_FUNC(H5Tget_member_name); FFI_C_FUNC(H5Tget_member_index); FFI_C_FUNC(H5Tget_member_offset); FFI_C_FUNC(H5Tget_member_class); FFI_C_FUNC(H5Tget_member_type); FFI_C_FUNC(H5Tget_member_value); FFI_C_FUNC(H5Tget_cset); FFI_C_FUNC(H5Tis_variable_str); FFI_C_FUNC(H5Tget_native_type); FFI_C_FUNC(H5Tset_size); FFI_C_FUNC(H5Tset_order); FFI_C_FUNC(H5Tset_precision); FFI_C_FUNC(H5Tset_offset); FFI_C_FUNC(H5Tset_pad); FFI_C_FUNC(H5Tset_sign); FFI_C_FUNC(H5Tset_fields); FFI_C_FUNC(H5Tset_ebias); FFI_C_FUNC(H5Tset_norm); FFI_C_FUNC(H5Tset_inpad); FFI_C_FUNC(H5Tset_cset); FFI_C_FUNC(H5Tset_strpad); FFI_C_FUNC(H5Tregister); FFI_C_FUNC(H5Tunregister); FFI_C_FUNC(H5Tfind); FFI_C_FUNC(H5Tcompiler_conv); FFI_C_FUNC(H5Tconvert); /* Link Interface */ FFI_C_CONST(H5L_SAME_LOC); FFI_C_CONST(H5L_LINK_CLASS_T_VERS); FFI_C_TYPE(H5L_type_t); FFI_C_CONST(H5L_TYPE_UD_MIN); FFI_C_TYPE(H5L_info_t); FFI_C_TYPE(H5L_create_func_t); FFI_C_TYPE(H5L_move_func_t); FFI_C_TYPE(H5L_copy_func_t); FFI_C_TYPE(H5L_traverse_func_t); FFI_C_TYPE(H5L_delete_func_t); FFI_C_TYPE(H5L_query_func_t); FFI_C_TYPE(H5L_class_t); FFI_C_TYPE(H5L_iterate_t); #if H5_VERSION_GE(1, 8, 3) FFI_C_TYPE(H5L_elink_traverse_t); #endif FFI_C_FUNC(H5Lmove); FFI_C_FUNC(H5Lcopy); FFI_C_FUNC(H5Lcreate_hard); FFI_C_FUNC(H5Lcreate_soft); FFI_C_FUNC(H5Ldelete); FFI_C_FUNC(H5Ldelete_by_idx); FFI_C_FUNC(H5Lget_val); FFI_C_FUNC(H5Lget_val_by_idx); FFI_C_FUNC(H5Lexists); FFI_C_FUNC(H5Lget_info); FFI_C_FUNC(H5Lget_info_by_idx); FFI_C_FUNC(H5Lget_name_by_idx); FFI_C_FUNC(H5Literate); FFI_C_FUNC(H5Literate_by_name); FFI_C_FUNC(H5Lvisit); FFI_C_FUNC(H5Lvisit_by_name); FFI_C_FUNC(H5Lcreate_ud); FFI_C_FUNC(H5Lregister); FFI_C_FUNC(H5Lunregister); FFI_C_FUNC(H5Lis_registered); FFI_C_FUNC(H5Lunpack_elink_val); FFI_C_FUNC(H5Lcreate_external); /* Object Interface */ FFI_C_CONST(H5O_COPY_SHALLOW_HIERARCHY_FLAG); FFI_C_CONST(H5O_COPY_EXPAND_SOFT_LINK_FLAG); FFI_C_CONST(H5O_COPY_EXPAND_EXT_LINK_FLAG); FFI_C_CONST(H5O_COPY_EXPAND_REFERENCE_FLAG); FFI_C_CONST(H5O_COPY_WITHOUT_ATTR_FLAG); FFI_C_CONST(H5O_COPY_PRESERVE_NULL_FLAG); #if H5_VERSION_GE(1, 8, 9) FFI_C_CONST(H5O_COPY_MERGE_COMMITTED_DTYPE_FLAG); #endif FFI_C_CONST(H5O_COPY_ALL); FFI_C_CONST(H5O_SHMESG_NONE_FLAG); FFI_C_CONST(H5O_SHMESG_SDSPACE_FLAG); FFI_C_CONST(H5O_SHMESG_DTYPE_FLAG); FFI_C_CONST(H5O_SHMESG_FILL_FLAG); FFI_C_CONST(H5O_SHMESG_PLINE_FLAG); FFI_C_CONST(H5O_SHMESG_ATTR_FLAG); FFI_C_CONST(H5O_SHMESG_ALL_FLAG); FFI_C_CONST(H5O_HDR_CHUNK0_SIZE); FFI_C_CONST(H5O_HDR_ATTR_CRT_ORDER_TRACKED); FFI_C_CONST(H5O_HDR_ATTR_CRT_ORDER_INDEXED); FFI_C_CONST(H5O_HDR_ATTR_STORE_PHASE_CHANGE); FFI_C_CONST(H5O_HDR_STORE_TIMES); FFI_C_CONST(H5O_HDR_ALL_FLAGS); FFI_C_CONST(H5O_SHMESG_MAX_NINDEXES); FFI_C_CONST(H5O_SHMESG_MAX_LIST_SIZE); FFI_C_TYPE(H5O_type_t); FFI_C_TYPE(H5O_hdr_info_t); FFI_C_TYPE(H5O_info_t); FFI_C_TYPE(H5O_msg_crt_idx_t); FFI_C_TYPE(H5O_iterate_t); #if H5_VERSION_GE(1, 8, 9) FFI_C_TYPE(H5O_mcdt_search_ret_t); FFI_C_TYPE(H5O_mcdt_search_cb_t); #endif FFI_C_FUNC(H5Oopen); FFI_C_FUNC(H5Oopen_by_addr); FFI_C_FUNC(H5Oopen_by_idx); #if H5_VERSION_GE(1, 8, 5) FFI_C_FUNC(H5Oexists_by_name); #endif FFI_C_FUNC(H5Oget_info); FFI_C_FUNC(H5Oget_info_by_name); FFI_C_FUNC(H5Oget_info_by_idx); FFI_C_FUNC(H5Olink); FFI_C_FUNC(H5Oincr_refcount); FFI_C_FUNC(H5Odecr_refcount); FFI_C_FUNC(H5Ocopy); FFI_C_FUNC(H5Oset_comment); FFI_C_FUNC(H5Oset_comment_by_name); FFI_C_FUNC(H5Oget_comment); FFI_C_FUNC(H5Oget_comment_by_name); FFI_C_FUNC(H5Ovisit); FFI_C_FUNC(H5Ovisit_by_name); FFI_C_FUNC(H5Oclose); /* Group Interface */ FFI_C_TYPE(H5G_storage_type_t); FFI_C_TYPE(H5G_info_t); FFI_C_FUNC(H5Gcreate); FFI_C_FUNC(H5Gcreate_anon); FFI_C_FUNC(H5Gopen); FFI_C_FUNC(H5Gget_create_plist); FFI_C_FUNC(H5Gget_info); FFI_C_FUNC(H5Gget_info_by_name); FFI_C_FUNC(H5Gget_info_by_idx); FFI_C_FUNC(H5Gclose); /* Attribute Interface */ FFI_C_TYPE(H5A_info_t); FFI_C_TYPE(H5A_operator_t); FFI_C_FUNC(H5Acreate); FFI_C_FUNC(H5Acreate_by_name); FFI_C_FUNC(H5Aopen); FFI_C_FUNC(H5Aopen_by_name); FFI_C_FUNC(H5Aopen_by_idx); FFI_C_FUNC(H5Awrite); FFI_C_FUNC(H5Aread); FFI_C_FUNC(H5Aclose); FFI_C_FUNC(H5Aget_space); FFI_C_FUNC(H5Aget_type); FFI_C_FUNC(H5Aget_create_plist); FFI_C_FUNC(H5Aget_name); FFI_C_FUNC(H5Aget_name_by_idx); FFI_C_FUNC(H5Aget_storage_size); FFI_C_FUNC(H5Aget_info); FFI_C_FUNC(H5Aget_info_by_name); FFI_C_FUNC(H5Aget_info_by_idx); FFI_C_FUNC(H5Arename); FFI_C_FUNC(H5Arename_by_name); FFI_C_FUNC(H5Aiterate); FFI_C_FUNC(H5Aiterate_by_name); FFI_C_FUNC(H5Adelete); FFI_C_FUNC(H5Adelete_by_name); FFI_C_FUNC(H5Adelete_by_idx); FFI_C_FUNC(H5Aexists); FFI_C_FUNC(H5Aexists_by_name); /* Dataset Interface */ FFI_C_CONST(H5D_CHUNK_CACHE_NSLOTS_DEFAULT); FFI_C_CONST(H5D_CHUNK_CACHE_NBYTES_DEFAULT); FFI_C_CONST(H5D_CHUNK_CACHE_W0_DEFAULT); FFI_C_TYPE(H5D_layout_t); FFI_C_TYPE(H5D_chunk_index_t); FFI_C_TYPE(H5D_alloc_time_t); FFI_C_TYPE(H5D_space_status_t); FFI_C_TYPE(H5D_fill_time_t); FFI_C_TYPE(H5D_fill_value_t); FFI_C_TYPE(H5D_operator_t); FFI_C_FUNC(H5Dcreate); FFI_C_FUNC(H5Dcreate_anon); FFI_C_FUNC(H5Dopen); FFI_C_FUNC(H5Dclose); FFI_C_FUNC(H5Dget_space); FFI_C_FUNC(H5Dget_space_status); FFI_C_FUNC(H5Dget_type); FFI_C_FUNC(H5Dget_create_plist); FFI_C_FUNC(H5Dget_access_plist); FFI_C_FUNC(H5Dget_storage_size); FFI_C_FUNC(H5Dget_offset); FFI_C_FUNC(H5Dread); FFI_C_FUNC(H5Dwrite); FFI_C_FUNC(H5Diterate); FFI_C_FUNC(H5Dvlen_reclaim); FFI_C_FUNC(H5Dvlen_get_buf_size); FFI_C_FUNC(H5Dfill); FFI_C_FUNC(H5Dset_extent); FFI_C_FUNC(H5Ddebug); /* Reference Interface */ FFI_C_TYPE(H5R_type_t); FFI_C_CONST(H5R_OBJ_REF_BUF_SIZE); FFI_C_TYPE(hobj_ref_t); FFI_C_CONST(H5R_DSET_REG_REF_BUF_SIZE); FFI_C_TYPE(hdset_reg_ref_t); FFI_C_FUNC(H5Rcreate); FFI_C_FUNC(H5Rdereference); FFI_C_FUNC(H5Rget_region); FFI_C_FUNC(H5Rget_obj_type); FFI_C_FUNC(H5Rget_name); /* Filter and Compression Interface */ FFI_C_TYPE(H5Z_filter_t); FFI_C_CONST(H5Z_FILTER_ERROR); FFI_C_CONST(H5Z_FILTER_NONE); FFI_C_CONST(H5Z_FILTER_DEFLATE); FFI_C_CONST(H5Z_FILTER_SHUFFLE); FFI_C_CONST(H5Z_FILTER_FLETCHER32); FFI_C_CONST(H5Z_FILTER_SZIP); FFI_C_CONST(H5Z_FILTER_NBIT); FFI_C_CONST(H5Z_FILTER_SCALEOFFSET); FFI_C_CONST(H5Z_FILTER_RESERVED); FFI_C_CONST(H5Z_FILTER_MAX); FFI_C_CONST(H5Z_FILTER_ALL); FFI_C_CONST(H5Z_MAX_NFILTERS); FFI_C_CONST(H5Z_FLAG_DEFMASK); FFI_C_CONST(H5Z_FLAG_MANDATORY); FFI_C_CONST(H5Z_FLAG_OPTIONAL); FFI_C_CONST(H5Z_FLAG_INVMASK); FFI_C_CONST(H5Z_FLAG_REVERSE); FFI_C_CONST(H5Z_FLAG_SKIP_EDC); FFI_C_CONST(H5_SZIP_ALLOW_K13_OPTION_MASK); FFI_C_CONST(H5_SZIP_CHIP_OPTION_MASK); FFI_C_CONST(H5_SZIP_EC_OPTION_MASK); FFI_C_CONST(H5_SZIP_NN_OPTION_MASK); FFI_C_CONST(H5_SZIP_MAX_PIXELS_PER_BLOCK); FFI_C_CONST(H5Z_SHUFFLE_USER_NPARMS); FFI_C_CONST(H5Z_SHUFFLE_TOTAL_NPARMS); FFI_C_CONST(H5Z_SZIP_USER_NPARMS); FFI_C_CONST(H5Z_SZIP_TOTAL_NPARMS); FFI_C_CONST(H5Z_SZIP_PARM_MASK); FFI_C_CONST(H5Z_SZIP_PARM_PPB); FFI_C_CONST(H5Z_SZIP_PARM_BPP); FFI_C_CONST(H5Z_SZIP_PARM_PPS); FFI_C_CONST(H5Z_NBIT_USER_NPARMS); FFI_C_CONST(H5Z_SCALEOFFSET_USER_NPARMS); FFI_C_CONST(H5Z_SO_INT_MINBITS_DEFAULT); FFI_C_TYPE(H5Z_SO_scale_type_t); FFI_C_CONST(H5Z_CLASS_T_VERS); FFI_C_TYPE(H5Z_EDC_t); FFI_C_CONST(H5Z_FILTER_CONFIG_ENCODE_ENABLED); FFI_C_CONST(H5Z_FILTER_CONFIG_DECODE_ENABLED); FFI_C_TYPE(H5Z_cb_return_t); FFI_C_TYPE(H5Z_filter_func_t); FFI_C_TYPE(H5Z_cb_t); FFI_C_TYPE(H5Z_can_apply_func_t); FFI_C_TYPE(H5Z_set_local_func_t); FFI_C_TYPE(H5Z_func_t); FFI_C_TYPE(H5Z_class_t); FFI_C_FUNC(H5Zregister); FFI_C_FUNC(H5Zunregister); FFI_C_FUNC(H5Zfilter_avail); FFI_C_FUNC(H5Zget_filter_info); /* Property List Interface */ FFI_C_VAR(H5P_ROOT); FFI_C_VAR(H5P_OBJECT_CREATE); FFI_C_VAR(H5P_FILE_CREATE); FFI_C_VAR(H5P_FILE_ACCESS); FFI_C_VAR(H5P_DATASET_CREATE); FFI_C_VAR(H5P_DATASET_ACCESS); FFI_C_VAR(H5P_DATASET_XFER); FFI_C_VAR(H5P_FILE_MOUNT); FFI_C_VAR(H5P_GROUP_CREATE); FFI_C_VAR(H5P_GROUP_ACCESS); FFI_C_VAR(H5P_DATATYPE_CREATE); FFI_C_VAR(H5P_DATATYPE_ACCESS); FFI_C_VAR(H5P_STRING_CREATE); FFI_C_VAR(H5P_ATTRIBUTE_CREATE); FFI_C_VAR(H5P_OBJECT_COPY); FFI_C_VAR(H5P_LINK_CREATE); FFI_C_VAR(H5P_LINK_ACCESS); FFI_C_VAR(H5P_FILE_CREATE_DEFAULT); FFI_C_VAR(H5P_FILE_ACCESS_DEFAULT); FFI_C_VAR(H5P_DATASET_CREATE_DEFAULT); FFI_C_VAR(H5P_DATASET_ACCESS_DEFAULT); FFI_C_VAR(H5P_DATASET_XFER_DEFAULT); FFI_C_VAR(H5P_FILE_MOUNT_DEFAULT); FFI_C_VAR(H5P_GROUP_CREATE_DEFAULT); FFI_C_VAR(H5P_GROUP_ACCESS_DEFAULT); FFI_C_VAR(H5P_DATATYPE_CREATE_DEFAULT); FFI_C_VAR(H5P_DATATYPE_ACCESS_DEFAULT); FFI_C_VAR(H5P_ATTRIBUTE_CREATE_DEFAULT); FFI_C_VAR(H5P_OBJECT_COPY_DEFAULT); FFI_C_VAR(H5P_LINK_CREATE_DEFAULT); FFI_C_VAR(H5P_LINK_ACCESS_DEFAULT); FFI_C_CONST(H5P_CRT_ORDER_TRACKED); FFI_C_CONST(H5P_CRT_ORDER_INDEXED); FFI_C_TYPE(H5P_cls_create_func_t); FFI_C_TYPE(H5P_cls_copy_func_t); FFI_C_TYPE(H5P_cls_close_func_t); FFI_C_TYPE(H5P_prp_cb1_t); FFI_C_TYPE(H5P_prp_cb2_t); FFI_C_TYPE(H5P_prp_create_func_t); FFI_C_TYPE(H5P_prp_set_func_t); FFI_C_TYPE(H5P_prp_get_func_t); FFI_C_TYPE(H5P_prp_delete_func_t); FFI_C_TYPE(H5P_prp_copy_func_t); FFI_C_TYPE(H5P_prp_compare_func_t); FFI_C_TYPE(H5P_prp_close_func_t); FFI_C_TYPE(H5P_iterate_t); FFI_C_TYPE(H5D_mpio_actual_chunk_opt_mode_t); FFI_C_TYPE(H5D_mpio_actual_io_mode_t); FFI_C_FUNC(H5Pcreate_class); FFI_C_FUNC(H5Pget_class_name); FFI_C_FUNC(H5Pcreate); FFI_C_FUNC(H5Pregister); FFI_C_FUNC(H5Pinsert); FFI_C_FUNC(H5Pset); FFI_C_FUNC(H5Pexist); FFI_C_FUNC(H5Pget_size); FFI_C_FUNC(H5Pget_nprops); FFI_C_FUNC(H5Pget_class); FFI_C_FUNC(H5Pget_class_parent); FFI_C_FUNC(H5Pget); FFI_C_FUNC(H5Pequal); FFI_C_FUNC(H5Pisa_class); FFI_C_FUNC(H5Piterate); FFI_C_FUNC(H5Pcopy_prop); FFI_C_FUNC(H5Premove); FFI_C_FUNC(H5Punregister); FFI_C_FUNC(H5Pclose_class); FFI_C_FUNC(H5Pclose); FFI_C_FUNC(H5Pcopy); FFI_C_FUNC(H5Pset_attr_phase_change); FFI_C_FUNC(H5Pget_attr_phase_change); FFI_C_FUNC(H5Pset_attr_creation_order); FFI_C_FUNC(H5Pget_attr_creation_order); FFI_C_FUNC(H5Pset_obj_track_times); FFI_C_FUNC(H5Pget_obj_track_times); FFI_C_FUNC(H5Pmodify_filter); FFI_C_FUNC(H5Pset_filter); FFI_C_FUNC(H5Pget_nfilters); FFI_C_FUNC(H5Pget_filter); FFI_C_FUNC(H5Pget_filter_by_id); FFI_C_FUNC(H5Pall_filters_avail); FFI_C_FUNC(H5Premove_filter); FFI_C_FUNC(H5Pset_deflate); FFI_C_FUNC(H5Pset_fletcher32); FFI_C_FUNC(H5Pget_version); FFI_C_FUNC(H5Pset_userblock); FFI_C_FUNC(H5Pget_userblock); FFI_C_FUNC(H5Pset_sizes); FFI_C_FUNC(H5Pget_sizes); FFI_C_FUNC(H5Pset_sym_k); FFI_C_FUNC(H5Pget_sym_k); FFI_C_FUNC(H5Pset_istore_k); FFI_C_FUNC(H5Pget_istore_k); FFI_C_FUNC(H5Pset_shared_mesg_nindexes); FFI_C_FUNC(H5Pget_shared_mesg_nindexes); FFI_C_FUNC(H5Pset_shared_mesg_index); FFI_C_FUNC(H5Pget_shared_mesg_index); FFI_C_FUNC(H5Pset_shared_mesg_phase_change); FFI_C_FUNC(H5Pget_shared_mesg_phase_change); FFI_C_FUNC(H5Pset_alignment); FFI_C_FUNC(H5Pget_alignment); FFI_C_FUNC(H5Pset_driver); FFI_C_FUNC(H5Pget_driver); FFI_C_FUNC(H5Pget_driver_info); FFI_C_FUNC(H5Pset_family_offset); FFI_C_FUNC(H5Pget_family_offset); FFI_C_FUNC(H5Pset_multi_type); FFI_C_FUNC(H5Pget_multi_type); FFI_C_FUNC(H5Pset_cache); FFI_C_FUNC(H5Pget_cache); FFI_C_FUNC(H5Pset_mdc_config); FFI_C_FUNC(H5Pget_mdc_config); FFI_C_FUNC(H5Pset_gc_references); FFI_C_FUNC(H5Pget_gc_references); FFI_C_FUNC(H5Pset_fclose_degree); FFI_C_FUNC(H5Pget_fclose_degree); FFI_C_FUNC(H5Pset_meta_block_size); FFI_C_FUNC(H5Pget_meta_block_size); FFI_C_FUNC(H5Pset_sieve_buf_size); FFI_C_FUNC(H5Pget_sieve_buf_size); FFI_C_FUNC(H5Pset_small_data_block_size); FFI_C_FUNC(H5Pget_small_data_block_size); FFI_C_FUNC(H5Pset_libver_bounds); FFI_C_FUNC(H5Pget_libver_bounds); FFI_C_FUNC(H5Pset_elink_file_cache_size); FFI_C_FUNC(H5Pget_elink_file_cache_size); FFI_C_FUNC(H5Pset_file_image); FFI_C_FUNC(H5Pget_file_image); FFI_C_FUNC(H5Pset_file_image_callbacks); FFI_C_FUNC(H5Pget_file_image_callbacks); FFI_C_FUNC(H5Pset_layout); FFI_C_FUNC(H5Pget_layout); FFI_C_FUNC(H5Pset_chunk); FFI_C_FUNC(H5Pget_chunk); FFI_C_FUNC(H5Pset_external); FFI_C_FUNC(H5Pget_external_count); FFI_C_FUNC(H5Pget_external); FFI_C_FUNC(H5Pset_szip); FFI_C_FUNC(H5Pset_shuffle); FFI_C_FUNC(H5Pset_nbit); FFI_C_FUNC(H5Pset_scaleoffset); FFI_C_FUNC(H5Pset_fill_value); FFI_C_FUNC(H5Pget_fill_value); FFI_C_FUNC(H5Pfill_value_defined); FFI_C_FUNC(H5Pset_alloc_time); FFI_C_FUNC(H5Pget_alloc_time); FFI_C_FUNC(H5Pset_fill_time); FFI_C_FUNC(H5Pget_fill_time); FFI_C_FUNC(H5Pset_chunk_cache); FFI_C_FUNC(H5Pget_chunk_cache); FFI_C_FUNC(H5Pset_data_transform); FFI_C_FUNC(H5Pget_data_transform); FFI_C_FUNC(H5Pset_buffer); FFI_C_FUNC(H5Pget_buffer); FFI_C_FUNC(H5Pset_preserve); FFI_C_FUNC(H5Pget_preserve); FFI_C_FUNC(H5Pset_edc_check); FFI_C_FUNC(H5Pget_edc_check); FFI_C_FUNC(H5Pset_filter_callback); FFI_C_FUNC(H5Pset_btree_ratios); FFI_C_FUNC(H5Pget_btree_ratios); FFI_C_FUNC(H5Pset_vlen_mem_manager); FFI_C_FUNC(H5Pget_vlen_mem_manager); FFI_C_FUNC(H5Pset_hyper_vector_size); FFI_C_FUNC(H5Pget_hyper_vector_size); FFI_C_FUNC(H5Pset_type_conv_cb); FFI_C_FUNC(H5Pget_type_conv_cb); #ifdef H5_HAVE_PARALLEL FFI_C_FUNC(H5Pget_mpio_actual_chunk_opt_mode); FFI_C_FUNC(H5Pget_mpio_actual_io_mode); #endif FFI_C_FUNC(H5Pset_create_intermediate_group); FFI_C_FUNC(H5Pget_create_intermediate_group); FFI_C_FUNC(H5Pset_local_heap_size_hint); FFI_C_FUNC(H5Pget_local_heap_size_hint); FFI_C_FUNC(H5Pset_link_phase_change); FFI_C_FUNC(H5Pget_link_phase_change); FFI_C_FUNC(H5Pset_est_link_info); FFI_C_FUNC(H5Pget_est_link_info); FFI_C_FUNC(H5Pset_link_creation_order); FFI_C_FUNC(H5Pget_link_creation_order); FFI_C_FUNC(H5Pset_char_encoding); FFI_C_FUNC(H5Pget_char_encoding); FFI_C_FUNC(H5Pset_nlinks); FFI_C_FUNC(H5Pget_nlinks); FFI_C_FUNC(H5Pset_elink_prefix); FFI_C_FUNC(H5Pget_elink_prefix); FFI_C_FUNC(H5Pget_elink_fapl); FFI_C_FUNC(H5Pset_elink_fapl); FFI_C_FUNC(H5Pset_elink_acc_flags); FFI_C_FUNC(H5Pget_elink_acc_flags); FFI_C_FUNC(H5Pset_elink_cb); FFI_C_FUNC(H5Pget_elink_cb); FFI_C_FUNC(H5Pset_copy_object); FFI_C_FUNC(H5Pget_copy_object); FFI_C_FUNC(H5Padd_merge_committed_dtype_path); FFI_C_FUNC(H5Pfree_merge_committed_dtype_paths); FFI_C_FUNC(H5Pset_mcdt_search_cb); FFI_C_FUNC(H5Pget_mcdt_search_cb);
-- -- HDF5 for LuaJIT. -- Copyright © 2012 Peter Colberg. -- For conditions of distribution and use, see copyright notice in LICENSE. -- local ffi = require("ffi") ffi.cdef[[ typedef long int ssize_t; typedef long int time_t; typedef int herr_t; typedef unsigned int hbool_t; typedef int htri_t; typedef long long unsigned int hsize_t; typedef long long int hssize_t; typedef long unsigned int haddr_t; static const int H5_VERS_MAJOR = 1; static const int H5_VERS_MINOR = 8; static const int H5_VERS_RELEASE = 9; static const int H5P_DEFAULT = 0; typedef enum H5_iter_order_t { H5_ITER_UNKNOWN = -1, H5_ITER_INC = 0, H5_ITER_DEC = 1, H5_ITER_NATIVE = 2, H5_ITER_N = 3, } H5_iter_order_t; static const int H5_ITER_ERROR = -1; static const int H5_ITER_CONT = 0; static const int H5_ITER_STOP = 1; typedef enum H5_index_t { H5_INDEX_UNKNOWN = -1, H5_INDEX_NAME = 0, H5_INDEX_CRT_ORDER = 1, H5_INDEX_N = 2, } H5_index_t; typedef struct H5_ih_info_t { hsize_t index_size; hsize_t heap_size; } H5_ih_info_t; herr_t H5open(void); herr_t H5close(void); herr_t H5dont_atexit(void); herr_t H5garbage_collect(void); herr_t H5set_free_list_limits(int, int, int, int, int, int); herr_t H5get_libversion(unsigned int *, unsigned int *, unsigned int *); herr_t H5check_version(unsigned int, unsigned int, unsigned int); typedef int hid_t; static const int H5I_INVALID_HID = -1; typedef enum H5I_type_t { H5I_UNINIT = -2, H5I_BADID = -1, H5I_FILE = 1, H5I_GROUP = 2, H5I_DATATYPE = 3, H5I_DATASPACE = 4, H5I_DATASET = 5, H5I_ATTR = 6, H5I_REFERENCE = 7, H5I_VFL = 8, H5I_GENPROP_CLS = 9, H5I_GENPROP_LST = 10, H5I_ERROR_CLASS = 11, H5I_ERROR_MSG = 12, H5I_ERROR_STACK = 13, H5I_NTYPES = 14, } H5I_type_t; typedef herr_t (*H5I_free_t)(void *); typedef int (*H5I_search_func_t)(void *, hid_t, void *); hid_t H5Iregister(H5I_type_t, const void *); void *H5Iobject_verify(hid_t, H5I_type_t); void *H5Iremove_verify(hid_t, H5I_type_t); H5I_type_t H5Iget_type(hid_t); hid_t H5Iget_file_id(hid_t); ssize_t H5Iget_name(hid_t, char *, size_t); int H5Iinc_ref(hid_t); int H5Idec_ref(hid_t); int H5Iget_ref(hid_t); H5I_type_t H5Iregister_type(size_t, unsigned int, H5I_free_t); herr_t H5Iclear_type(H5I_type_t, hbool_t); herr_t H5Idestroy_type(H5I_type_t); int H5Iinc_type_ref(H5I_type_t); int H5Idec_type_ref(H5I_type_t); int H5Iget_type_ref(H5I_type_t); void *H5Isearch(H5I_type_t, H5I_search_func_t, void *); herr_t H5Inmembers(H5I_type_t, hsize_t *); htri_t H5Itype_exists(H5I_type_t); htri_t H5Iis_valid(hid_t); static const int H5E_DEFAULT = 0; typedef enum H5E_type_t { H5E_MAJOR = 0, H5E_MINOR = 1, } H5E_type_t; typedef struct H5E_error_t { hid_t cls_id; hid_t maj_num; hid_t min_num; unsigned int line; const char *func_name; const char *file_name; const char *desc; } H5E_error_t; extern hid_t H5E_ERR_CLS asm("H5E_ERR_CLS_g"); extern hid_t H5E_DATASET asm("H5E_DATASET_g"); extern hid_t H5E_FUNC asm("H5E_FUNC_g"); extern hid_t H5E_STORAGE asm("H5E_STORAGE_g"); extern hid_t H5E_FILE asm("H5E_FILE_g"); extern hid_t H5E_SOHM asm("H5E_SOHM_g"); extern hid_t H5E_SYM asm("H5E_SYM_g"); extern hid_t H5E_VFL asm("H5E_VFL_g"); extern hid_t H5E_INTERNAL asm("H5E_INTERNAL_g"); extern hid_t H5E_BTREE asm("H5E_BTREE_g"); extern hid_t H5E_REFERENCE asm("H5E_REFERENCE_g"); extern hid_t H5E_DATASPACE asm("H5E_DATASPACE_g"); extern hid_t H5E_RESOURCE asm("H5E_RESOURCE_g"); extern hid_t H5E_PLIST asm("H5E_PLIST_g"); extern hid_t H5E_LINK asm("H5E_LINK_g"); extern hid_t H5E_DATATYPE asm("H5E_DATATYPE_g"); extern hid_t H5E_RS asm("H5E_RS_g"); extern hid_t H5E_HEAP asm("H5E_HEAP_g"); extern hid_t H5E_OHDR asm("H5E_OHDR_g"); extern hid_t H5E_ATOM asm("H5E_ATOM_g"); extern hid_t H5E_ATTR asm("H5E_ATTR_g"); extern hid_t H5E_NONE_MAJOR asm("H5E_NONE_MAJOR_g"); extern hid_t H5E_IO asm("H5E_IO_g"); extern hid_t H5E_SLIST asm("H5E_SLIST_g"); extern hid_t H5E_EFL asm("H5E_EFL_g"); extern hid_t H5E_TST asm("H5E_TST_g"); extern hid_t H5E_ARGS asm("H5E_ARGS_g"); extern hid_t H5E_ERROR asm("H5E_ERROR_g"); extern hid_t H5E_PLINE asm("H5E_PLINE_g"); extern hid_t H5E_FSPACE asm("H5E_FSPACE_g"); extern hid_t H5E_CACHE asm("H5E_CACHE_g"); extern hid_t H5E_SEEKERROR asm("H5E_SEEKERROR_g"); extern hid_t H5E_READERROR asm("H5E_READERROR_g"); extern hid_t H5E_WRITEERROR asm("H5E_WRITEERROR_g"); extern hid_t H5E_CLOSEERROR asm("H5E_CLOSEERROR_g"); extern hid_t H5E_OVERFLOW asm("H5E_OVERFLOW_g"); extern hid_t H5E_FCNTL asm("H5E_FCNTL_g"); extern hid_t H5E_NOSPACE asm("H5E_NOSPACE_g"); extern hid_t H5E_CANTALLOC asm("H5E_CANTALLOC_g"); extern hid_t H5E_CANTCOPY asm("H5E_CANTCOPY_g"); extern hid_t H5E_CANTFREE asm("H5E_CANTFREE_g"); extern hid_t H5E_ALREADYEXISTS asm("H5E_ALREADYEXISTS_g"); extern hid_t H5E_CANTLOCK asm("H5E_CANTLOCK_g"); extern hid_t H5E_CANTUNLOCK asm("H5E_CANTUNLOCK_g"); extern hid_t H5E_CANTGC asm("H5E_CANTGC_g"); extern hid_t H5E_CANTGETSIZE asm("H5E_CANTGETSIZE_g"); extern hid_t H5E_OBJOPEN asm("H5E_OBJOPEN_g"); extern hid_t H5E_CANTRESTORE asm("H5E_CANTRESTORE_g"); extern hid_t H5E_CANTCOMPUTE asm("H5E_CANTCOMPUTE_g"); extern hid_t H5E_CANTEXTEND asm("H5E_CANTEXTEND_g"); extern hid_t H5E_CANTATTACH asm("H5E_CANTATTACH_g"); extern hid_t H5E_CANTUPDATE asm("H5E_CANTUPDATE_g"); extern hid_t H5E_CANTOPERATE asm("H5E_CANTOPERATE_g"); extern hid_t H5E_CANTINIT asm("H5E_CANTINIT_g"); extern hid_t H5E_ALREADYINIT asm("H5E_ALREADYINIT_g"); extern hid_t H5E_CANTRELEASE asm("H5E_CANTRELEASE_g"); extern hid_t H5E_CANTGET asm("H5E_CANTGET_g"); extern hid_t H5E_CANTSET asm("H5E_CANTSET_g"); extern hid_t H5E_DUPCLASS asm("H5E_DUPCLASS_g"); extern hid_t H5E_SETDISALLOWED asm("H5E_SETDISALLOWED_g"); extern hid_t H5E_CANTMERGE asm("H5E_CANTMERGE_g"); extern hid_t H5E_CANTREVIVE asm("H5E_CANTREVIVE_g"); extern hid_t H5E_CANTSHRINK asm("H5E_CANTSHRINK_g"); extern hid_t H5E_LINKCOUNT asm("H5E_LINKCOUNT_g"); extern hid_t H5E_VERSION asm("H5E_VERSION_g"); extern hid_t H5E_ALIGNMENT asm("H5E_ALIGNMENT_g"); extern hid_t H5E_BADMESG asm("H5E_BADMESG_g"); extern hid_t H5E_CANTDELETE asm("H5E_CANTDELETE_g"); extern hid_t H5E_BADITER asm("H5E_BADITER_g"); extern hid_t H5E_CANTPACK asm("H5E_CANTPACK_g"); extern hid_t H5E_CANTRESET asm("H5E_CANTRESET_g"); extern hid_t H5E_CANTRENAME asm("H5E_CANTRENAME_g"); extern hid_t H5E_SYSERRSTR asm("H5E_SYSERRSTR_g"); extern hid_t H5E_NOFILTER asm("H5E_NOFILTER_g"); extern hid_t H5E_CALLBACK asm("H5E_CALLBACK_g"); extern hid_t H5E_CANAPPLY asm("H5E_CANAPPLY_g"); extern hid_t H5E_SETLOCAL asm("H5E_SETLOCAL_g"); extern hid_t H5E_NOENCODER asm("H5E_NOENCODER_g"); extern hid_t H5E_CANTFILTER asm("H5E_CANTFILTER_g"); extern hid_t H5E_CANTOPENOBJ asm("H5E_CANTOPENOBJ_g"); extern hid_t H5E_CANTCLOSEOBJ asm("H5E_CANTCLOSEOBJ_g"); extern hid_t H5E_COMPLEN asm("H5E_COMPLEN_g"); extern hid_t H5E_PATH asm("H5E_PATH_g"); extern hid_t H5E_NONE_MINOR asm("H5E_NONE_MINOR_g"); extern hid_t H5E_FILEEXISTS asm("H5E_FILEEXISTS_g"); extern hid_t H5E_FILEOPEN asm("H5E_FILEOPEN_g"); extern hid_t H5E_CANTCREATE asm("H5E_CANTCREATE_g"); extern hid_t H5E_CANTOPENFILE asm("H5E_CANTOPENFILE_g"); extern hid_t H5E_CANTCLOSEFILE asm("H5E_CANTCLOSEFILE_g"); extern hid_t H5E_NOTHDF5 asm("H5E_NOTHDF5_g"); extern hid_t H5E_BADFILE asm("H5E_BADFILE_g"); extern hid_t H5E_TRUNCATED asm("H5E_TRUNCATED_g"); extern hid_t H5E_MOUNT asm("H5E_MOUNT_g"); extern hid_t H5E_BADATOM asm("H5E_BADATOM_g"); extern hid_t H5E_BADGROUP asm("H5E_BADGROUP_g"); extern hid_t H5E_CANTREGISTER asm("H5E_CANTREGISTER_g"); extern hid_t H5E_CANTINC asm("H5E_CANTINC_g"); extern hid_t H5E_CANTDEC asm("H5E_CANTDEC_g"); extern hid_t H5E_NOIDS asm("H5E_NOIDS_g"); extern hid_t H5E_CANTFLUSH asm("H5E_CANTFLUSH_g"); extern hid_t H5E_CANTSERIALIZE asm("H5E_CANTSERIALIZE_g"); extern hid_t H5E_CANTLOAD asm("H5E_CANTLOAD_g"); extern hid_t H5E_PROTECT asm("H5E_PROTECT_g"); extern hid_t H5E_NOTCACHED asm("H5E_NOTCACHED_g"); extern hid_t H5E_SYSTEM asm("H5E_SYSTEM_g"); extern hid_t H5E_CANTINS asm("H5E_CANTINS_g"); extern hid_t H5E_CANTPROTECT asm("H5E_CANTPROTECT_g"); extern hid_t H5E_CANTUNPROTECT asm("H5E_CANTUNPROTECT_g"); extern hid_t H5E_CANTPIN asm("H5E_CANTPIN_g"); extern hid_t H5E_CANTUNPIN asm("H5E_CANTUNPIN_g"); extern hid_t H5E_CANTMARKDIRTY asm("H5E_CANTMARKDIRTY_g"); extern hid_t H5E_CANTDIRTY asm("H5E_CANTDIRTY_g"); extern hid_t H5E_CANTEXPUNGE asm("H5E_CANTEXPUNGE_g"); extern hid_t H5E_CANTRESIZE asm("H5E_CANTRESIZE_g"); extern hid_t H5E_TRAVERSE asm("H5E_TRAVERSE_g"); extern hid_t H5E_NLINKS asm("H5E_NLINKS_g"); extern hid_t H5E_NOTREGISTERED asm("H5E_NOTREGISTERED_g"); extern hid_t H5E_CANTMOVE asm("H5E_CANTMOVE_g"); extern hid_t H5E_CANTSORT asm("H5E_CANTSORT_g"); extern hid_t H5E_MPI asm("H5E_MPI_g"); extern hid_t H5E_MPIERRSTR asm("H5E_MPIERRSTR_g"); extern hid_t H5E_CANTRECV asm("H5E_CANTRECV_g"); extern hid_t H5E_CANTCLIP asm("H5E_CANTCLIP_g"); extern hid_t H5E_CANTCOUNT asm("H5E_CANTCOUNT_g"); extern hid_t H5E_CANTSELECT asm("H5E_CANTSELECT_g"); extern hid_t H5E_CANTNEXT asm("H5E_CANTNEXT_g"); extern hid_t H5E_BADSELECT asm("H5E_BADSELECT_g"); extern hid_t H5E_CANTCOMPARE asm("H5E_CANTCOMPARE_g"); extern hid_t H5E_UNINITIALIZED asm("H5E_UNINITIALIZED_g"); extern hid_t H5E_UNSUPPORTED asm("H5E_UNSUPPORTED_g"); extern hid_t H5E_BADTYPE asm("H5E_BADTYPE_g"); extern hid_t H5E_BADRANGE asm("H5E_BADRANGE_g"); extern hid_t H5E_BADVALUE asm("H5E_BADVALUE_g"); extern hid_t H5E_NOTFOUND asm("H5E_NOTFOUND_g"); extern hid_t H5E_EXISTS asm("H5E_EXISTS_g"); extern hid_t H5E_CANTENCODE asm("H5E_CANTENCODE_g"); extern hid_t H5E_CANTDECODE asm("H5E_CANTDECODE_g"); extern hid_t H5E_CANTSPLIT asm("H5E_CANTSPLIT_g"); extern hid_t H5E_CANTREDISTRIBUTE asm("H5E_CANTREDISTRIBUTE_g"); extern hid_t H5E_CANTSWAP asm("H5E_CANTSWAP_g"); extern hid_t H5E_CANTINSERT asm("H5E_CANTINSERT_g"); extern hid_t H5E_CANTLIST asm("H5E_CANTLIST_g"); extern hid_t H5E_CANTMODIFY asm("H5E_CANTMODIFY_g"); extern hid_t H5E_CANTREMOVE asm("H5E_CANTREMOVE_g"); extern hid_t H5E_CANTCONVERT asm("H5E_CANTCONVERT_g"); extern hid_t H5E_BADSIZE asm("H5E_BADSIZE_g"); typedef enum H5E_direction_t { H5E_WALK_UPWARD = 0, H5E_WALK_DOWNWARD = 1, } H5E_direction_t; typedef herr_t (*H5E_walk_t)(unsigned int, const H5E_error2_t *, void *); typedef herr_t (*H5E_auto_t)(hid_t, void *); hid_t H5Eregister_class(const char *, const char *, const char *); herr_t H5Eunregister_class(hid_t); herr_t H5Eclose_msg(hid_t); hid_t H5Ecreate_msg(hid_t, H5E_type_t, const char *); hid_t H5Ecreate_stack(void); hid_t H5Eget_current_stack(void); herr_t H5Eclose_stack(hid_t); ssize_t H5Eget_class_name(hid_t, char *, size_t); herr_t H5Eset_current_stack(hid_t); herr_t H5Epush(hid_t, const char *, const char *, unsigned int, hid_t, hid_t, hid_t, const char *, ...) asm("H5Epush2"); herr_t H5Epop(hid_t, size_t); herr_t H5Eprint(hid_t, FILE *) asm("H5Eprint2"); herr_t H5Ewalk(hid_t, H5E_direction_t, H5E_walk2_t, void *) asm("H5Ewalk2"); herr_t H5Eget_auto(hid_t, H5E_auto2_t *, void **) asm("H5Eget_auto2"); herr_t H5Eset_auto(hid_t, H5E_auto2_t, void *) asm("H5Eset_auto2"); herr_t H5Eclear(hid_t) asm("H5Eclear2"); ssize_t H5Eget_msg(hid_t, H5E_type_t *, char *, size_t); ssize_t H5Eget_num(hid_t); typedef enum H5C_cache_incr_mode { H5C_incr__off = 0, H5C_incr__threshold = 1, } H5C_cache_incr_mode; typedef enum H5C_cache_flash_incr_mode { H5C_flash_incr__off = 0, H5C_flash_incr__add_space = 1, } H5C_cache_flash_incr_mode; typedef enum H5C_cache_decr_mode { H5C_decr__off = 0, H5C_decr__threshold = 1, H5C_decr__age_out = 2, H5C_decr__age_out_with_threshold = 3, } H5C_cache_decr_mode; static const int H5AC__CURR_CACHE_CONFIG_VERSION = 1; static const int H5AC__MAX_TRACE_FILE_NAME_LEN = 1024; static const int H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY = 0; static const int H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED = 1; typedef struct H5AC_cache_config_t { int version; hbool_t rpt_fcn_enabled; hbool_t open_trace_file; hbool_t close_trace_file; char trace_file_name[1025]; hbool_t evictions_enabled; hbool_t set_initial_size; size_t initial_size; double min_clean_fraction; size_t max_size; size_t min_size; long int epoch_length; enum H5C_cache_incr_mode incr_mode; double lower_hr_threshold; double increment; hbool_t apply_max_increment; size_t max_increment; enum H5C_cache_flash_incr_mode flash_incr_mode; double flash_multiple; double flash_threshold; enum H5C_cache_decr_mode decr_mode; double upper_hr_threshold; double decrement; hbool_t apply_max_decrement; size_t max_decrement; int epochs_before_eviction; hbool_t apply_empty_reserve; double empty_reserve; int dirty_bytes_threshold; int metadata_write_strategy; } H5AC_cache_config_t; static const int H5F_ACC_RDONLY = 0; static const int H5F_ACC_RDWR = 1; static const int H5F_ACC_TRUNC = 2; static const int H5F_ACC_EXCL = 4; static const int H5F_ACC_DEBUG = 8; static const int H5F_ACC_CREAT = 16; static const int H5F_ACC_DEFAULT = 65535; static const int H5F_OBJ_FILE = 1; static const int H5F_OBJ_DATASET = 2; static const int H5F_OBJ_GROUP = 4; static const int H5F_OBJ_DATATYPE = 8; static const int H5F_OBJ_ATTR = 16; static const int H5F_OBJ_ALL = 31; static const int H5F_OBJ_LOCAL = 32; static const int H5F_FAMILY_DEFAULT = 0; typedef enum H5F_scope_t { H5F_SCOPE_LOCAL = 0, H5F_SCOPE_GLOBAL = 1, } H5F_scope_t; static const int H5F_UNLIMITED = -1; typedef enum H5F_close_degree_t { H5F_CLOSE_DEFAULT = 0, H5F_CLOSE_WEAK = 1, H5F_CLOSE_SEMI = 2, H5F_CLOSE_STRONG = 3, } H5F_close_degree_t; typedef struct H5F_info_t { hsize_t super_ext_size; struct { hsize_t hdr_size; H5_ih_info_t msgs_info; } sohm; } H5F_info_t; typedef enum H5F_mem_t { H5FD_MEM_NOLIST = -1, H5FD_MEM_DEFAULT = 0, H5FD_MEM_SUPER = 1, H5FD_MEM_BTREE = 2, H5FD_MEM_DRAW = 3, H5FD_MEM_GHEAP = 4, H5FD_MEM_LHEAP = 5, H5FD_MEM_OHDR = 6, H5FD_MEM_NTYPES = 7, } H5F_mem_t; typedef enum H5F_libver_t { H5F_LIBVER_EARLIEST = 0, H5F_LIBVER_LATEST = 1, } H5F_libver_t; static const int H5F_LIBVER_18 = 1; htri_t H5Fis_hdf5(const char *); hid_t H5Fcreate(const char *, unsigned int, hid_t, hid_t); hid_t H5Fopen(const char *, unsigned int, hid_t); hid_t H5Freopen(hid_t); herr_t H5Fflush(hid_t, H5F_scope_t); herr_t H5Fclose(hid_t); hid_t H5Fget_create_plist(hid_t); hid_t H5Fget_access_plist(hid_t); herr_t H5Fget_intent(hid_t, unsigned int *); ssize_t H5Fget_obj_count(hid_t, unsigned int); ssize_t H5Fget_obj_ids(hid_t, unsigned int, size_t, hid_t *); herr_t H5Fget_vfd_handle(hid_t, hid_t, void **); herr_t H5Fmount(hid_t, const char *, hid_t, hid_t); herr_t H5Funmount(hid_t, const char *); hssize_t H5Fget_freespace(hid_t); herr_t H5Fget_filesize(hid_t, hsize_t *); ssize_t H5Fget_file_image(hid_t, void *, size_t); herr_t H5Fget_mdc_config(hid_t, H5AC_cache_config_t *); herr_t H5Fset_mdc_config(hid_t, H5AC_cache_config_t *); herr_t H5Fget_mdc_hit_rate(hid_t, double *); herr_t H5Fget_mdc_size(hid_t, size_t *, size_t *, size_t *, int *); herr_t H5Freset_mdc_hit_rate_stats(hid_t); ssize_t H5Fget_name(hid_t, char *, size_t); herr_t H5Fget_info(hid_t, H5F_info_t *); herr_t H5Fclear_elink_file_cache(hid_t); herr_t H5Fset_mpi_atomicity(hid_t, hbool_t); herr_t H5Fget_mpi_atomicity(hid_t, hbool_t *); static const int H5S_ALL = 0; static const int H5S_UNLIMITED = -1; static const int H5S_MAX_RANK = 32; typedef enum H5S_class_t { H5S_NO_CLASS = -1, H5S_SCALAR = 0, H5S_SIMPLE = 1, H5S_NULL = 2, } H5S_class_t; typedef enum H5S_seloper_t { H5S_SELECT_NOOP = -1, H5S_SELECT_SET = 0, H5S_SELECT_OR = 1, H5S_SELECT_AND = 2, H5S_SELECT_XOR = 3, H5S_SELECT_NOTB = 4, H5S_SELECT_NOTA = 5, H5S_SELECT_APPEND = 6, H5S_SELECT_PREPEND = 7, H5S_SELECT_INVALID = 8, } H5S_seloper_t; typedef enum H5S_sel_type { H5S_SEL_ERROR = -1, H5S_SEL_NONE = 0, H5S_SEL_POINTS = 1, H5S_SEL_HYPERSLABS = 2, H5S_SEL_ALL = 3, H5S_SEL_N = 4, } H5S_sel_type; hid_t H5Screate(H5S_class_t); hid_t H5Screate_simple(int, const hsize_t *, const hsize_t *); herr_t H5Sset_extent_simple(hid_t, int, const hsize_t *, const hsize_t *); hid_t H5Scopy(hid_t); herr_t H5Sclose(hid_t); herr_t H5Sencode(hid_t, void *, size_t *); hid_t H5Sdecode(const void *); hssize_t H5Sget_simple_extent_npoints(hid_t); int H5Sget_simple_extent_ndims(hid_t); int H5Sget_simple_extent_dims(hid_t, hsize_t *, hsize_t *); htri_t H5Sis_simple(hid_t); hssize_t H5Sget_select_npoints(hid_t); herr_t H5Sselect_hyperslab(hid_t, H5S_seloper_t, const hsize_t *, const hsize_t *, const hsize_t *, const hsize_t *); herr_t H5Sselect_elements(hid_t, H5S_seloper_t, size_t, const hsize_t *); H5S_class_t H5Sget_simple_extent_type(hid_t); herr_t H5Sset_extent_none(hid_t); herr_t H5Sextent_copy(hid_t, hid_t); htri_t H5Sextent_equal(hid_t, hid_t); herr_t H5Sselect_all(hid_t); herr_t H5Sselect_none(hid_t); herr_t H5Soffset_simple(hid_t, const hssize_t *); htri_t H5Sselect_valid(hid_t); hssize_t H5Sget_select_hyper_nblocks(hid_t); hssize_t H5Sget_select_elem_npoints(hid_t); herr_t H5Sget_select_hyper_blocklist(hid_t, hsize_t, hsize_t, hsize_t *); herr_t H5Sget_select_elem_pointlist(hid_t, hsize_t, hsize_t, hsize_t *); herr_t H5Sget_select_bounds(hid_t, hsize_t *, hsize_t *); H5S_sel_type H5Sget_select_type(hid_t); typedef enum H5T_class_t { H5T_NO_CLASS = -1, H5T_INTEGER = 0, H5T_FLOAT = 1, H5T_TIME = 2, H5T_STRING = 3, H5T_BITFIELD = 4, H5T_OPAQUE = 5, H5T_COMPOUND = 6, H5T_REFERENCE = 7, H5T_ENUM = 8, H5T_VLEN = 9, H5T_ARRAY = 10, H5T_NCLASSES = 11, } H5T_class_t; typedef enum H5T_order_t { H5T_ORDER_ERROR = -1, H5T_ORDER_LE = 0, H5T_ORDER_BE = 1, H5T_ORDER_VAX = 2, H5T_ORDER_MIXED = 3, H5T_ORDER_NONE = 4, } H5T_order_t; typedef enum H5T_sign_t { H5T_SGN_ERROR = -1, H5T_SGN_NONE = 0, H5T_SGN_2 = 1, H5T_NSGN = 2, } H5T_sign_t; typedef enum H5T_norm_t { H5T_NORM_ERROR = -1, H5T_NORM_IMPLIED = 0, H5T_NORM_MSBSET = 1, H5T_NORM_NONE = 2, } H5T_norm_t; typedef enum H5T_cset_t { H5T_CSET_ERROR = -1, H5T_CSET_ASCII = 0, H5T_CSET_UTF8 = 1, H5T_CSET_RESERVED_2 = 2, H5T_CSET_RESERVED_3 = 3, H5T_CSET_RESERVED_4 = 4, H5T_CSET_RESERVED_5 = 5, H5T_CSET_RESERVED_6 = 6, H5T_CSET_RESERVED_7 = 7, H5T_CSET_RESERVED_8 = 8, H5T_CSET_RESERVED_9 = 9, H5T_CSET_RESERVED_10 = 10, H5T_CSET_RESERVED_11 = 11, H5T_CSET_RESERVED_12 = 12, H5T_CSET_RESERVED_13 = 13, H5T_CSET_RESERVED_14 = 14, H5T_CSET_RESERVED_15 = 15, } H5T_cset_t; typedef enum H5T_str_t { H5T_STR_ERROR = -1, H5T_STR_NULLTERM = 0, H5T_STR_NULLPAD = 1, H5T_STR_SPACEPAD = 2, H5T_STR_RESERVED_3 = 3, H5T_STR_RESERVED_4 = 4, H5T_STR_RESERVED_5 = 5, H5T_STR_RESERVED_6 = 6, H5T_STR_RESERVED_7 = 7, H5T_STR_RESERVED_8 = 8, H5T_STR_RESERVED_9 = 9, H5T_STR_RESERVED_10 = 10, H5T_STR_RESERVED_11 = 11, H5T_STR_RESERVED_12 = 12, H5T_STR_RESERVED_13 = 13, H5T_STR_RESERVED_14 = 14, H5T_STR_RESERVED_15 = 15, } H5T_str_t; typedef enum H5T_pad_t { H5T_PAD_ERROR = -1, H5T_PAD_ZERO = 0, H5T_PAD_ONE = 1, H5T_PAD_BACKGROUND = 2, H5T_NPAD = 3, } H5T_pad_t; typedef enum H5T_cmd_t { H5T_CONV_INIT = 0, H5T_CONV_CONV = 1, H5T_CONV_FREE = 2, } H5T_cmd_t; typedef enum H5T_bkg_t { H5T_BKG_NO = 0, H5T_BKG_TEMP = 1, H5T_BKG_YES = 2, } H5T_bkg_t; typedef enum H5T_pers_t { H5T_PERS_DONTCARE = -1, H5T_PERS_HARD = 0, H5T_PERS_SOFT = 1, } H5T_pers_t; typedef enum H5T_direction_t { H5T_DIR_DEFAULT = 0, H5T_DIR_ASCEND = 1, H5T_DIR_DESCEND = 2, } H5T_direction_t; typedef enum H5T_conv_except_t { H5T_CONV_EXCEPT_RANGE_HI = 0, H5T_CONV_EXCEPT_RANGE_LOW = 1, H5T_CONV_EXCEPT_PRECISION = 2, H5T_CONV_EXCEPT_TRUNCATE = 3, H5T_CONV_EXCEPT_PINF = 4, H5T_CONV_EXCEPT_NINF = 5, H5T_CONV_EXCEPT_NAN = 6, } H5T_conv_except_t; typedef enum H5T_conv_ret_t { H5T_CONV_ABORT = -1, H5T_CONV_UNHANDLED = 0, H5T_CONV_HANDLED = 1, } H5T_conv_ret_t; typedef struct H5T_cdata_t { H5T_cmd_t command; H5T_bkg_t need_bkg; hbool_t recalc; void *priv; } H5T_cdata_t; typedef struct hvl_t { size_t len; void *p; } hvl_t; static const int H5T_VARIABLE = -1; static const int H5T_OPAQUE_TAG_MAX = 256; extern hid_t H5T_IEEE_F32BE asm("H5T_IEEE_F32BE_g"); extern hid_t H5T_IEEE_F32LE asm("H5T_IEEE_F32LE_g"); extern hid_t H5T_IEEE_F64BE asm("H5T_IEEE_F64BE_g"); extern hid_t H5T_IEEE_F64LE asm("H5T_IEEE_F64LE_g"); extern hid_t H5T_STD_I8BE asm("H5T_STD_I8BE_g"); extern hid_t H5T_STD_I8LE asm("H5T_STD_I8LE_g"); extern hid_t H5T_STD_I16BE asm("H5T_STD_I16BE_g"); extern hid_t H5T_STD_I16LE asm("H5T_STD_I16LE_g"); extern hid_t H5T_STD_I32BE asm("H5T_STD_I32BE_g"); extern hid_t H5T_STD_I32LE asm("H5T_STD_I32LE_g"); extern hid_t H5T_STD_I64BE asm("H5T_STD_I64BE_g"); extern hid_t H5T_STD_I64LE asm("H5T_STD_I64LE_g"); extern hid_t H5T_STD_U8BE asm("H5T_STD_U8BE_g"); extern hid_t H5T_STD_U8LE asm("H5T_STD_U8LE_g"); extern hid_t H5T_STD_U16BE asm("H5T_STD_U16BE_g"); extern hid_t H5T_STD_U16LE asm("H5T_STD_U16LE_g"); extern hid_t H5T_STD_U32BE asm("H5T_STD_U32BE_g"); extern hid_t H5T_STD_U32LE asm("H5T_STD_U32LE_g"); extern hid_t H5T_STD_U64BE asm("H5T_STD_U64BE_g"); extern hid_t H5T_STD_U64LE asm("H5T_STD_U64LE_g"); extern hid_t H5T_STD_B8BE asm("H5T_STD_B8BE_g"); extern hid_t H5T_STD_B8LE asm("H5T_STD_B8LE_g"); extern hid_t H5T_STD_B16BE asm("H5T_STD_B16BE_g"); extern hid_t H5T_STD_B16LE asm("H5T_STD_B16LE_g"); extern hid_t H5T_STD_B32BE asm("H5T_STD_B32BE_g"); extern hid_t H5T_STD_B32LE asm("H5T_STD_B32LE_g"); extern hid_t H5T_STD_B64BE asm("H5T_STD_B64BE_g"); extern hid_t H5T_STD_B64LE asm("H5T_STD_B64LE_g"); extern hid_t H5T_STD_REF_OBJ asm("H5T_STD_REF_OBJ_g"); extern hid_t H5T_STD_REF_DSETREG asm("H5T_STD_REF_DSETREG_g"); extern hid_t H5T_UNIX_D32BE asm("H5T_UNIX_D32BE_g"); extern hid_t H5T_UNIX_D32LE asm("H5T_UNIX_D32LE_g"); extern hid_t H5T_UNIX_D64BE asm("H5T_UNIX_D64BE_g"); extern hid_t H5T_UNIX_D64LE asm("H5T_UNIX_D64LE_g"); extern hid_t H5T_C_S1 asm("H5T_C_S1_g"); extern hid_t H5T_FORTRAN_S1 asm("H5T_FORTRAN_S1_g"); extern hid_t H5T_INTEL_I8 asm("H5T_STD_I8LE_g"); extern hid_t H5T_INTEL_I16 asm("H5T_STD_I16LE_g"); extern hid_t H5T_INTEL_I32 asm("H5T_STD_I32LE_g"); extern hid_t H5T_INTEL_I64 asm("H5T_STD_I64LE_g"); extern hid_t H5T_INTEL_U8 asm("H5T_STD_U8LE_g"); extern hid_t H5T_INTEL_U16 asm("H5T_STD_U16LE_g"); extern hid_t H5T_INTEL_U32 asm("H5T_STD_U32LE_g"); extern hid_t H5T_INTEL_U64 asm("H5T_STD_U64LE_g"); extern hid_t H5T_INTEL_B8 asm("H5T_STD_B8LE_g"); extern hid_t H5T_INTEL_B16 asm("H5T_STD_B16LE_g"); extern hid_t H5T_INTEL_B32 asm("H5T_STD_B32LE_g"); extern hid_t H5T_INTEL_B64 asm("H5T_STD_B64LE_g"); extern hid_t H5T_INTEL_F32 asm("H5T_IEEE_F32LE_g"); extern hid_t H5T_INTEL_F64 asm("H5T_IEEE_F64LE_g"); extern hid_t H5T_ALPHA_I8 asm("H5T_STD_I8LE_g"); extern hid_t H5T_ALPHA_I16 asm("H5T_STD_I16LE_g"); extern hid_t H5T_ALPHA_I32 asm("H5T_STD_I32LE_g"); extern hid_t H5T_ALPHA_I64 asm("H5T_STD_I64LE_g"); extern hid_t H5T_ALPHA_U8 asm("H5T_STD_U8LE_g"); extern hid_t H5T_ALPHA_U16 asm("H5T_STD_U16LE_g"); extern hid_t H5T_ALPHA_U32 asm("H5T_STD_U32LE_g"); extern hid_t H5T_ALPHA_U64 asm("H5T_STD_U64LE_g"); extern hid_t H5T_ALPHA_B8 asm("H5T_STD_B8LE_g"); extern hid_t H5T_ALPHA_B16 asm("H5T_STD_B16LE_g"); extern hid_t H5T_ALPHA_B32 asm("H5T_STD_B32LE_g"); extern hid_t H5T_ALPHA_B64 asm("H5T_STD_B64LE_g"); extern hid_t H5T_ALPHA_F32 asm("H5T_IEEE_F32LE_g"); extern hid_t H5T_ALPHA_F64 asm("H5T_IEEE_F64LE_g"); extern hid_t H5T_MIPS_I8 asm("H5T_STD_I8BE_g"); extern hid_t H5T_MIPS_I16 asm("H5T_STD_I16BE_g"); extern hid_t H5T_MIPS_I32 asm("H5T_STD_I32BE_g"); extern hid_t H5T_MIPS_I64 asm("H5T_STD_I64BE_g"); extern hid_t H5T_MIPS_U8 asm("H5T_STD_U8BE_g"); extern hid_t H5T_MIPS_U16 asm("H5T_STD_U16BE_g"); extern hid_t H5T_MIPS_U32 asm("H5T_STD_U32BE_g"); extern hid_t H5T_MIPS_U64 asm("H5T_STD_U64BE_g"); extern hid_t H5T_MIPS_B8 asm("H5T_STD_B8BE_g"); extern hid_t H5T_MIPS_B16 asm("H5T_STD_B16BE_g"); extern hid_t H5T_MIPS_B32 asm("H5T_STD_B32BE_g"); extern hid_t H5T_MIPS_B64 asm("H5T_STD_B64BE_g"); extern hid_t H5T_MIPS_F32 asm("H5T_IEEE_F32BE_g"); extern hid_t H5T_MIPS_F64 asm("H5T_IEEE_F64BE_g"); extern hid_t H5T_VAX_F32 asm("H5T_VAX_F32_g"); extern hid_t H5T_VAX_F64 asm("H5T_VAX_F64_g"); extern hid_t H5T_NATIVE_CHAR asm("H5T_NATIVE_SCHAR_g"); extern hid_t H5T_NATIVE_SCHAR asm("H5T_NATIVE_SCHAR_g"); extern hid_t H5T_NATIVE_UCHAR asm("H5T_NATIVE_UCHAR_g"); extern hid_t H5T_NATIVE_SHORT asm("H5T_NATIVE_SHORT_g"); extern hid_t H5T_NATIVE_USHORT asm("H5T_NATIVE_USHORT_g"); extern hid_t H5T_NATIVE_INT asm("H5T_NATIVE_INT_g"); extern hid_t H5T_NATIVE_UINT asm("H5T_NATIVE_UINT_g"); extern hid_t H5T_NATIVE_LONG asm("H5T_NATIVE_LONG_g"); extern hid_t H5T_NATIVE_ULONG asm("H5T_NATIVE_ULONG_g"); extern hid_t H5T_NATIVE_LLONG asm("H5T_NATIVE_LLONG_g"); extern hid_t H5T_NATIVE_ULLONG asm("H5T_NATIVE_ULLONG_g"); extern hid_t H5T_NATIVE_FLOAT asm("H5T_NATIVE_FLOAT_g"); extern hid_t H5T_NATIVE_DOUBLE asm("H5T_NATIVE_DOUBLE_g"); extern hid_t H5T_NATIVE_LDOUBLE asm("H5T_NATIVE_LDOUBLE_g"); extern hid_t H5T_NATIVE_B8 asm("H5T_NATIVE_B8_g"); extern hid_t H5T_NATIVE_B16 asm("H5T_NATIVE_B16_g"); extern hid_t H5T_NATIVE_B32 asm("H5T_NATIVE_B32_g"); extern hid_t H5T_NATIVE_B64 asm("H5T_NATIVE_B64_g"); extern hid_t H5T_NATIVE_OPAQUE asm("H5T_NATIVE_OPAQUE_g"); extern hid_t H5T_NATIVE_HADDR asm("H5T_NATIVE_HADDR_g"); extern hid_t H5T_NATIVE_HSIZE asm("H5T_NATIVE_HSIZE_g"); extern hid_t H5T_NATIVE_HSSIZE asm("H5T_NATIVE_HSSIZE_g"); extern hid_t H5T_NATIVE_HERR asm("H5T_NATIVE_HERR_g"); extern hid_t H5T_NATIVE_HBOOL asm("H5T_NATIVE_HBOOL_g"); extern hid_t H5T_NATIVE_INT8 asm("H5T_NATIVE_INT8_g"); extern hid_t H5T_NATIVE_UINT8 asm("H5T_NATIVE_UINT8_g"); extern hid_t H5T_NATIVE_INT_LEAST8 asm("H5T_NATIVE_INT_LEAST8_g"); extern hid_t H5T_NATIVE_UINT_LEAST8 asm("H5T_NATIVE_UINT_LEAST8_g"); extern hid_t H5T_NATIVE_INT_FAST8 asm("H5T_NATIVE_INT_FAST8_g"); extern hid_t H5T_NATIVE_UINT_FAST8 asm("H5T_NATIVE_UINT_FAST8_g"); extern hid_t H5T_NATIVE_INT16 asm("H5T_NATIVE_INT16_g"); extern hid_t H5T_NATIVE_UINT16 asm("H5T_NATIVE_UINT16_g"); extern hid_t H5T_NATIVE_INT_LEAST16 asm("H5T_NATIVE_INT_LEAST16_g"); extern hid_t H5T_NATIVE_UINT_LEAST16 asm("H5T_NATIVE_UINT_LEAST16_g"); extern hid_t H5T_NATIVE_INT_FAST16 asm("H5T_NATIVE_INT_FAST16_g"); extern hid_t H5T_NATIVE_UINT_FAST16 asm("H5T_NATIVE_UINT_FAST16_g"); extern hid_t H5T_NATIVE_INT32 asm("H5T_NATIVE_INT32_g"); extern hid_t H5T_NATIVE_UINT32 asm("H5T_NATIVE_UINT32_g"); extern hid_t H5T_NATIVE_INT_LEAST32 asm("H5T_NATIVE_INT_LEAST32_g"); extern hid_t H5T_NATIVE_UINT_LEAST32 asm("H5T_NATIVE_UINT_LEAST32_g"); extern hid_t H5T_NATIVE_INT_FAST32 asm("H5T_NATIVE_INT_FAST32_g"); extern hid_t H5T_NATIVE_UINT_FAST32 asm("H5T_NATIVE_UINT_FAST32_g"); extern hid_t H5T_NATIVE_INT64 asm("H5T_NATIVE_INT64_g"); extern hid_t H5T_NATIVE_UINT64 asm("H5T_NATIVE_UINT64_g"); extern hid_t H5T_NATIVE_INT_LEAST64 asm("H5T_NATIVE_INT_LEAST64_g"); extern hid_t H5T_NATIVE_UINT_LEAST64 asm("H5T_NATIVE_UINT_LEAST64_g"); extern hid_t H5T_NATIVE_INT_FAST64 asm("H5T_NATIVE_INT_FAST64_g"); extern hid_t H5T_NATIVE_UINT_FAST64 asm("H5T_NATIVE_UINT_FAST64_g"); typedef herr_t (*H5T_conv_t)(hid_t, hid_t, H5T_cdata_t *, size_t, size_t, size_t, void *, void *, hid_t); typedef H5T_conv_ret_t (*H5T_conv_except_func_t)(H5T_conv_except_t, hid_t, hid_t, void *, void *, void *); hid_t H5Tcreate(H5T_class_t, size_t); hid_t H5Tcopy(hid_t); herr_t H5Tclose(hid_t); htri_t H5Tequal(hid_t, hid_t); herr_t H5Tlock(hid_t); herr_t H5Tcommit(hid_t, const char *, hid_t, hid_t, hid_t, hid_t) asm("H5Tcommit2"); hid_t H5Topen(hid_t, const char *, hid_t) asm("H5Topen2"); herr_t H5Tcommit_anon(hid_t, hid_t, hid_t, hid_t); hid_t H5Tget_create_plist(hid_t); htri_t H5Tcommitted(hid_t); herr_t H5Tencode(hid_t, void *, size_t *); hid_t H5Tdecode(const void *); herr_t H5Tinsert(hid_t, const char *, size_t, hid_t); herr_t H5Tpack(hid_t); hid_t H5Tenum_create(hid_t); herr_t H5Tenum_insert(hid_t, const char *, const void *); herr_t H5Tenum_nameof(hid_t, const void *, char *, size_t); herr_t H5Tenum_valueof(hid_t, const char *, void *); hid_t H5Tvlen_create(hid_t); hid_t H5Tarray_create(hid_t, unsigned int, const hsize_t *) asm("H5Tarray_create2"); int H5Tget_array_ndims(hid_t); int H5Tget_array_dims(hid_t, hsize_t *) asm("H5Tget_array_dims2"); herr_t H5Tset_tag(hid_t, const char *); char *H5Tget_tag(hid_t); hid_t H5Tget_super(hid_t); H5T_class_t H5Tget_class(hid_t); htri_t H5Tdetect_class(hid_t, H5T_class_t); size_t H5Tget_size(hid_t); H5T_order_t H5Tget_order(hid_t); size_t H5Tget_precision(hid_t); int H5Tget_offset(hid_t); herr_t H5Tget_pad(hid_t, H5T_pad_t *, H5T_pad_t *); H5T_sign_t H5Tget_sign(hid_t); herr_t H5Tget_fields(hid_t, size_t *, size_t *, size_t *, size_t *, size_t *); size_t H5Tget_ebias(hid_t); H5T_norm_t H5Tget_norm(hid_t); H5T_pad_t H5Tget_inpad(hid_t); H5T_str_t H5Tget_strpad(hid_t); int H5Tget_nmembers(hid_t); char *H5Tget_member_name(hid_t, unsigned int); int H5Tget_member_index(hid_t, const char *); size_t H5Tget_member_offset(hid_t, unsigned int); H5T_class_t H5Tget_member_class(hid_t, unsigned int); hid_t H5Tget_member_type(hid_t, unsigned int); herr_t H5Tget_member_value(hid_t, unsigned int, void *); H5T_cset_t H5Tget_cset(hid_t); htri_t H5Tis_variable_str(hid_t); hid_t H5Tget_native_type(hid_t, H5T_direction_t); herr_t H5Tset_size(hid_t, size_t); herr_t H5Tset_order(hid_t, H5T_order_t); herr_t H5Tset_precision(hid_t, size_t); herr_t H5Tset_offset(hid_t, size_t); herr_t H5Tset_pad(hid_t, H5T_pad_t, H5T_pad_t); herr_t H5Tset_sign(hid_t, H5T_sign_t); herr_t H5Tset_fields(hid_t, size_t, size_t, size_t, size_t, size_t); herr_t H5Tset_ebias(hid_t, size_t); herr_t H5Tset_norm(hid_t, H5T_norm_t); herr_t H5Tset_inpad(hid_t, H5T_pad_t); herr_t H5Tset_cset(hid_t, H5T_cset_t); herr_t H5Tset_strpad(hid_t, H5T_str_t); herr_t H5Tregister(H5T_pers_t, const char *, hid_t, hid_t, H5T_conv_t); herr_t H5Tunregister(H5T_pers_t, const char *, hid_t, hid_t, H5T_conv_t); H5T_conv_t H5Tfind(hid_t, hid_t, H5T_cdata_t **); htri_t H5Tcompiler_conv(hid_t, hid_t); herr_t H5Tconvert(hid_t, hid_t, size_t, void *, void *, hid_t); static const int H5L_SAME_LOC = 0; static const int H5L_LINK_CLASS_T_VERS = 0; typedef enum H5L_type_t { H5L_TYPE_ERROR = -1, H5L_TYPE_HARD = 0, H5L_TYPE_SOFT = 1, H5L_TYPE_EXTERNAL = 64, H5L_TYPE_MAX = 255, } H5L_type_t; static const int H5L_TYPE_UD_MIN = 64; typedef struct H5L_info_t { H5L_type_t type; hbool_t corder_valid; int64_t corder; H5T_cset_t cset; union { haddr_t address; size_t val_size; } u; } H5L_info_t; typedef herr_t (*H5L_create_func_t)(const char *, hid_t, const void *, size_t, hid_t); typedef herr_t (*H5L_move_func_t)(const char *, hid_t, const void *, size_t); typedef herr_t (*H5L_copy_func_t)(const char *, hid_t, const void *, size_t); typedef herr_t (*H5L_traverse_func_t)(const char *, hid_t, const void *, size_t, hid_t); typedef herr_t (*H5L_delete_func_t)(const char *, hid_t, const void *, size_t); typedef ssize_t (*H5L_query_func_t)(const char *, const void *, size_t, void *, size_t); typedef struct H5L_class_t { int version; H5L_type_t id; const char *comment; H5L_create_func_t create_func; H5L_move_func_t move_func; H5L_copy_func_t copy_func; H5L_traverse_func_t trav_func; H5L_delete_func_t del_func; H5L_query_func_t query_func; } H5L_class_t; typedef herr_t (*H5L_iterate_t)(hid_t, const char *, const H5L_info_t *, void *); typedef herr_t (*H5L_elink_traverse_t)(const char *, const char *, const char *, const char *, unsigned int *, hid_t, void *); herr_t H5Lmove(hid_t, const char *, hid_t, const char *, hid_t, hid_t); herr_t H5Lcopy(hid_t, const char *, hid_t, const char *, hid_t, hid_t); herr_t H5Lcreate_hard(hid_t, const char *, hid_t, const char *, hid_t, hid_t); herr_t H5Lcreate_soft(const char *, hid_t, const char *, hid_t, hid_t); herr_t H5Ldelete(hid_t, const char *, hid_t); herr_t H5Ldelete_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t); herr_t H5Lget_val(hid_t, const char *, void *, size_t, hid_t); herr_t H5Lget_val_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, void *, size_t, hid_t); htri_t H5Lexists(hid_t, const char *, hid_t); herr_t H5Lget_info(hid_t, const char *, H5L_info_t *, hid_t); herr_t H5Lget_info_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, H5L_info_t *, hid_t); ssize_t H5Lget_name_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, char *, size_t, hid_t); herr_t H5Literate(hid_t, H5_index_t, H5_iter_order_t, hsize_t *, H5L_iterate_t, void *); herr_t H5Literate_by_name(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t *, H5L_iterate_t, void *, hid_t); herr_t H5Lvisit(hid_t, H5_index_t, H5_iter_order_t, H5L_iterate_t, void *); herr_t H5Lvisit_by_name(hid_t, const char *, H5_index_t, H5_iter_order_t, H5L_iterate_t, void *, hid_t); herr_t H5Lcreate_ud(hid_t, const char *, H5L_type_t, const void *, size_t, hid_t, hid_t); herr_t H5Lregister(const H5L_class_t *); herr_t H5Lunregister(H5L_type_t); htri_t H5Lis_registered(H5L_type_t); herr_t H5Lunpack_elink_val(const void *, size_t, unsigned int *, const char **, const char **); herr_t H5Lcreate_external(const char *, const char *, hid_t, const char *, hid_t, hid_t); static const int H5O_COPY_SHALLOW_HIERARCHY_FLAG = 1; static const int H5O_COPY_EXPAND_SOFT_LINK_FLAG = 2; static const int H5O_COPY_EXPAND_EXT_LINK_FLAG = 4; static const int H5O_COPY_EXPAND_REFERENCE_FLAG = 8; static const int H5O_COPY_WITHOUT_ATTR_FLAG = 16; static const int H5O_COPY_PRESERVE_NULL_FLAG = 32; static const int H5O_COPY_MERGE_COMMITTED_DTYPE_FLAG = 64; static const int H5O_COPY_ALL = 127; static const int H5O_SHMESG_NONE_FLAG = 0; static const int H5O_SHMESG_SDSPACE_FLAG = 2; static const int H5O_SHMESG_DTYPE_FLAG = 8; static const int H5O_SHMESG_FILL_FLAG = 32; static const int H5O_SHMESG_PLINE_FLAG = 2048; static const int H5O_SHMESG_ATTR_FLAG = 4096; static const int H5O_SHMESG_ALL_FLAG = 6186; static const int H5O_HDR_CHUNK0_SIZE = 3; static const int H5O_HDR_ATTR_CRT_ORDER_TRACKED = 4; static const int H5O_HDR_ATTR_CRT_ORDER_INDEXED = 8; static const int H5O_HDR_ATTR_STORE_PHASE_CHANGE = 16; static const int H5O_HDR_STORE_TIMES = 32; static const int H5O_HDR_ALL_FLAGS = 63; static const int H5O_SHMESG_MAX_NINDEXES = 8; static const int H5O_SHMESG_MAX_LIST_SIZE = 5000; typedef enum H5O_type_t { H5O_TYPE_UNKNOWN = -1, H5O_TYPE_GROUP = 0, H5O_TYPE_DATASET = 1, H5O_TYPE_NAMED_DATATYPE = 2, H5O_TYPE_NTYPES = 3, } H5O_type_t; typedef struct H5O_hdr_info_t { unsigned int version; unsigned int nmesgs; unsigned int nchunks; unsigned int flags; struct { hsize_t total; hsize_t meta; hsize_t mesg; hsize_t free; } space; struct { uint64_t present; uint64_t shared; } mesg; } H5O_hdr_info_t; typedef struct H5O_info_t { long unsigned int fileno; haddr_t addr; H5O_type_t type; unsigned int rc; time_t atime; time_t mtime; time_t ctime; time_t btime; hsize_t num_attrs; H5O_hdr_info_t hdr; struct { H5_ih_info_t obj; H5_ih_info_t attr; } meta_size; } H5O_info_t; typedef unsigned int H5O_msg_crt_idx_t; typedef herr_t (*H5O_iterate_t)(hid_t, const char *, const H5O_info_t *, void *); typedef enum H5O_mcdt_search_ret_t { H5O_MCDT_SEARCH_ERROR = -1, H5O_MCDT_SEARCH_CONT = 0, H5O_MCDT_SEARCH_STOP = 1, } H5O_mcdt_search_ret_t; typedef H5O_mcdt_search_ret_t (*H5O_mcdt_search_cb_t)(void *); hid_t H5Oopen(hid_t, const char *, hid_t); hid_t H5Oopen_by_addr(hid_t, haddr_t); hid_t H5Oopen_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t); htri_t H5Oexists_by_name(hid_t, const char *, hid_t); herr_t H5Oget_info(hid_t, H5O_info_t *); herr_t H5Oget_info_by_name(hid_t, const char *, H5O_info_t *, hid_t); herr_t H5Oget_info_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, H5O_info_t *, hid_t); herr_t H5Olink(hid_t, hid_t, const char *, hid_t, hid_t); herr_t H5Oincr_refcount(hid_t); herr_t H5Odecr_refcount(hid_t); herr_t H5Ocopy(hid_t, const char *, hid_t, const char *, hid_t, hid_t); herr_t H5Oset_comment(hid_t, const char *); herr_t H5Oset_comment_by_name(hid_t, const char *, const char *, hid_t); ssize_t H5Oget_comment(hid_t, char *, size_t); ssize_t H5Oget_comment_by_name(hid_t, const char *, char *, size_t, hid_t); herr_t H5Ovisit(hid_t, H5_index_t, H5_iter_order_t, H5O_iterate_t, void *); herr_t H5Ovisit_by_name(hid_t, const char *, H5_index_t, H5_iter_order_t, H5O_iterate_t, void *, hid_t); herr_t H5Oclose(hid_t); typedef enum H5G_storage_type_t { H5G_STORAGE_TYPE_UNKNOWN = -1, H5G_STORAGE_TYPE_SYMBOL_TABLE = 0, H5G_STORAGE_TYPE_COMPACT = 1, H5G_STORAGE_TYPE_DENSE = 2, } H5G_storage_type_t; typedef struct H5G_info_t { H5G_storage_type_t storage_type; hsize_t nlinks; int64_t max_corder; hbool_t mounted; } H5G_info_t; hid_t H5Gcreate(hid_t, const char *, hid_t, hid_t, hid_t) asm("H5Gcreate2"); hid_t H5Gcreate_anon(hid_t, hid_t, hid_t); hid_t H5Gopen(hid_t, const char *, hid_t) asm("H5Gopen2"); hid_t H5Gget_create_plist(hid_t); herr_t H5Gget_info(hid_t, H5G_info_t *); herr_t H5Gget_info_by_name(hid_t, const char *, H5G_info_t *, hid_t); herr_t H5Gget_info_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, H5G_info_t *, hid_t); herr_t H5Gclose(hid_t); typedef struct H5A_info_t { hbool_t corder_valid; H5O_msg_crt_idx_t corder; H5T_cset_t cset; hsize_t data_size; } H5A_info_t; typedef herr_t (*H5A_operator_t)(hid_t, const char *, const H5A_info_t *, void *); hid_t H5Acreate(hid_t, const char *, hid_t, hid_t, hid_t, hid_t) asm("H5Acreate2"); hid_t H5Acreate_by_name(hid_t, const char *, const char *, hid_t, hid_t, hid_t, hid_t, hid_t); hid_t H5Aopen(hid_t, const char *, hid_t); hid_t H5Aopen_by_name(hid_t, const char *, const char *, hid_t, hid_t); hid_t H5Aopen_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t, hid_t); herr_t H5Awrite(hid_t, hid_t, const void *); herr_t H5Aread(hid_t, hid_t, void *); herr_t H5Aclose(hid_t); hid_t H5Aget_space(hid_t); hid_t H5Aget_type(hid_t); hid_t H5Aget_create_plist(hid_t); ssize_t H5Aget_name(hid_t, size_t, char *); ssize_t H5Aget_name_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, char *, size_t, hid_t); hsize_t H5Aget_storage_size(hid_t); herr_t H5Aget_info(hid_t, H5A_info_t *); herr_t H5Aget_info_by_name(hid_t, const char *, const char *, H5A_info_t *, hid_t); herr_t H5Aget_info_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, H5A_info_t *, hid_t); herr_t H5Arename(hid_t, const char *, const char *); herr_t H5Arename_by_name(hid_t, const char *, const char *, const char *, hid_t); herr_t H5Aiterate(hid_t, H5_index_t, H5_iter_order_t, hsize_t *, H5A_operator2_t, void *) asm("H5Aiterate2"); herr_t H5Aiterate_by_name(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t *, H5A_operator2_t, void *, hid_t); herr_t H5Adelete(hid_t, const char *); herr_t H5Adelete_by_name(hid_t, const char *, const char *, hid_t); herr_t H5Adelete_by_idx(hid_t, const char *, H5_index_t, H5_iter_order_t, hsize_t, hid_t); htri_t H5Aexists(hid_t, const char *); htri_t H5Aexists_by_name(hid_t, const char *, const char *, hid_t); static const int H5D_CHUNK_CACHE_NSLOTS_DEFAULT = -1; static const int H5D_CHUNK_CACHE_NBYTES_DEFAULT = -1; static const int H5D_CHUNK_CACHE_W0_DEFAULT = -1; typedef enum H5D_layout_t { H5D_LAYOUT_ERROR = -1, H5D_COMPACT = 0, H5D_CONTIGUOUS = 1, H5D_CHUNKED = 2, H5D_NLAYOUTS = 3, } H5D_layout_t; typedef enum H5D_chunk_index_t { H5D_CHUNK_BTREE = 0, } H5D_chunk_index_t; typedef enum H5D_alloc_time_t { H5D_ALLOC_TIME_ERROR = -1, H5D_ALLOC_TIME_DEFAULT = 0, H5D_ALLOC_TIME_EARLY = 1, H5D_ALLOC_TIME_LATE = 2, H5D_ALLOC_TIME_INCR = 3, } H5D_alloc_time_t; typedef enum H5D_space_status_t { H5D_SPACE_STATUS_ERROR = -1, H5D_SPACE_STATUS_NOT_ALLOCATED = 0, H5D_SPACE_STATUS_PART_ALLOCATED = 1, H5D_SPACE_STATUS_ALLOCATED = 2, } H5D_space_status_t; typedef enum H5D_fill_time_t { H5D_FILL_TIME_ERROR = -1, H5D_FILL_TIME_ALLOC = 0, H5D_FILL_TIME_NEVER = 1, H5D_FILL_TIME_IFSET = 2, } H5D_fill_time_t; typedef enum H5D_fill_value_t { H5D_FILL_VALUE_ERROR = -1, H5D_FILL_VALUE_UNDEFINED = 0, H5D_FILL_VALUE_DEFAULT = 1, H5D_FILL_VALUE_USER_DEFINED = 2, } H5D_fill_value_t; typedef herr_t (*H5D_operator_t)(void *, hid_t, unsigned int, const hsize_t *, void *); hid_t H5Dcreate(hid_t, const char *, hid_t, hid_t, hid_t, hid_t, hid_t) asm("H5Dcreate2"); hid_t H5Dcreate_anon(hid_t, hid_t, hid_t, hid_t, hid_t); hid_t H5Dopen(hid_t, const char *, hid_t) asm("H5Dopen2"); herr_t H5Dclose(hid_t); hid_t H5Dget_space(hid_t); herr_t H5Dget_space_status(hid_t, H5D_space_status_t *); hid_t H5Dget_type(hid_t); hid_t H5Dget_create_plist(hid_t); hid_t H5Dget_access_plist(hid_t); hsize_t H5Dget_storage_size(hid_t); haddr_t H5Dget_offset(hid_t); herr_t H5Dread(hid_t, hid_t, hid_t, hid_t, hid_t, void *); herr_t H5Dwrite(hid_t, hid_t, hid_t, hid_t, hid_t, const void *); herr_t H5Diterate(void *, hid_t, hid_t, H5D_operator_t, void *); herr_t H5Dvlen_reclaim(hid_t, hid_t, hid_t, void *); herr_t H5Dvlen_get_buf_size(hid_t, hid_t, hid_t, hsize_t *); herr_t H5Dfill(const void *, hid_t, void *, hid_t, hid_t); herr_t H5Dset_extent(hid_t, const hsize_t *); herr_t H5Ddebug(hid_t); typedef enum H5R_type_t { H5R_BADTYPE = -1, H5R_OBJECT = 0, H5R_DATASET_REGION = 1, H5R_MAXTYPE = 2, } H5R_type_t; static const int H5R_OBJ_REF_BUF_SIZE = 8; typedef long unsigned int hobj_ref_t; static const int H5R_DSET_REG_REF_BUF_SIZE = 12; typedef unsigned char hdset_reg_ref_t[12]; herr_t H5Rcreate(void *, hid_t, const char *, H5R_type_t, hid_t); hid_t H5Rdereference(hid_t, H5R_type_t, const void *); hid_t H5Rget_region(hid_t, H5R_type_t, const void *); herr_t H5Rget_obj_type(hid_t, H5R_type_t, const void *, H5O_type_t *) asm("H5Rget_obj_type2"); ssize_t H5Rget_name(hid_t, H5R_type_t, const void *, char *, size_t); typedef int H5Z_filter_t; static const int H5Z_FILTER_ERROR = -1; static const int H5Z_FILTER_NONE = 0; static const int H5Z_FILTER_DEFLATE = 1; static const int H5Z_FILTER_SHUFFLE = 2; static const int H5Z_FILTER_FLETCHER32 = 3; static const int H5Z_FILTER_SZIP = 4; static const int H5Z_FILTER_NBIT = 5; static const int H5Z_FILTER_SCALEOFFSET = 6; static const int H5Z_FILTER_RESERVED = 256; static const int H5Z_FILTER_MAX = 65535; static const int H5Z_FILTER_ALL = 0; static const int H5Z_MAX_NFILTERS = 32; static const int H5Z_FLAG_DEFMASK = 255; static const int H5Z_FLAG_MANDATORY = 0; static const int H5Z_FLAG_OPTIONAL = 1; static const int H5Z_FLAG_INVMASK = 65280; static const int H5Z_FLAG_REVERSE = 256; static const int H5Z_FLAG_SKIP_EDC = 512; static const int H5_SZIP_ALLOW_K13_OPTION_MASK = 1; static const int H5_SZIP_CHIP_OPTION_MASK = 2; static const int H5_SZIP_EC_OPTION_MASK = 4; static const int H5_SZIP_NN_OPTION_MASK = 32; static const int H5_SZIP_MAX_PIXELS_PER_BLOCK = 32; static const int H5Z_SHUFFLE_USER_NPARMS = 0; static const int H5Z_SHUFFLE_TOTAL_NPARMS = 1; static const int H5Z_SZIP_USER_NPARMS = 2; static const int H5Z_SZIP_TOTAL_NPARMS = 4; static const int H5Z_SZIP_PARM_MASK = 0; static const int H5Z_SZIP_PARM_PPB = 1; static const int H5Z_SZIP_PARM_BPP = 2; static const int H5Z_SZIP_PARM_PPS = 3; static const int H5Z_NBIT_USER_NPARMS = 0; static const int H5Z_SCALEOFFSET_USER_NPARMS = 2; static const int H5Z_SO_INT_MINBITS_DEFAULT = 0; typedef enum H5Z_SO_scale_type_t { H5Z_SO_FLOAT_DSCALE = 0, H5Z_SO_FLOAT_ESCALE = 1, H5Z_SO_INT = 2, } H5Z_SO_scale_type_t; static const int H5Z_CLASS_T_VERS = 1; typedef enum H5Z_EDC_t { H5Z_ERROR_EDC = -1, H5Z_DISABLE_EDC = 0, H5Z_ENABLE_EDC = 1, H5Z_NO_EDC = 2, } H5Z_EDC_t; static const int H5Z_FILTER_CONFIG_ENCODE_ENABLED = 1; static const int H5Z_FILTER_CONFIG_DECODE_ENABLED = 2; typedef enum H5Z_cb_return_t { H5Z_CB_ERROR = -1, H5Z_CB_FAIL = 0, H5Z_CB_CONT = 1, H5Z_CB_NO = 2, } H5Z_cb_return_t; typedef H5Z_cb_return_t (*H5Z_filter_func_t)(H5Z_filter_t, void *, size_t, void *); typedef struct H5Z_cb_t { H5Z_filter_func_t func; void *op_data; } H5Z_cb_t; typedef htri_t (*H5Z_can_apply_func_t)(hid_t, hid_t, hid_t); typedef herr_t (*H5Z_set_local_func_t)(hid_t, hid_t, hid_t); typedef size_t (*H5Z_func_t)(unsigned int, size_t, const unsigned int *, size_t, size_t *, void **); typedef struct H5Z_class_t { int version; H5Z_filter_t id; unsigned int encoder_present; unsigned int decoder_present; const char *name; H5Z_can_apply_func_t can_apply; H5Z_set_local_func_t set_local; H5Z_func_t filter; } H5Z_class_t; herr_t H5Zregister(const void *); herr_t H5Zunregister(H5Z_filter_t); htri_t H5Zfilter_avail(H5Z_filter_t); herr_t H5Zget_filter_info(H5Z_filter_t, unsigned int *); extern hid_t H5P_ROOT asm("H5P_CLS_ROOT_g"); extern hid_t H5P_OBJECT_CREATE asm("H5P_CLS_OBJECT_CREATE_g"); extern hid_t H5P_FILE_CREATE asm("H5P_CLS_FILE_CREATE_g"); extern hid_t H5P_FILE_ACCESS asm("H5P_CLS_FILE_ACCESS_g"); extern hid_t H5P_DATASET_CREATE asm("H5P_CLS_DATASET_CREATE_g"); extern hid_t H5P_DATASET_ACCESS asm("H5P_CLS_DATASET_ACCESS_g"); extern hid_t H5P_DATASET_XFER asm("H5P_CLS_DATASET_XFER_g"); extern hid_t H5P_FILE_MOUNT asm("H5P_CLS_FILE_MOUNT_g"); extern hid_t H5P_GROUP_CREATE asm("H5P_CLS_GROUP_CREATE_g"); extern hid_t H5P_GROUP_ACCESS asm("H5P_CLS_GROUP_ACCESS_g"); extern hid_t H5P_DATATYPE_CREATE asm("H5P_CLS_DATATYPE_CREATE_g"); extern hid_t H5P_DATATYPE_ACCESS asm("H5P_CLS_DATATYPE_ACCESS_g"); extern hid_t H5P_STRING_CREATE asm("H5P_CLS_STRING_CREATE_g"); extern hid_t H5P_ATTRIBUTE_CREATE asm("H5P_CLS_ATTRIBUTE_CREATE_g"); extern hid_t H5P_OBJECT_COPY asm("H5P_CLS_OBJECT_COPY_g"); extern hid_t H5P_LINK_CREATE asm("H5P_CLS_LINK_CREATE_g"); extern hid_t H5P_LINK_ACCESS asm("H5P_CLS_LINK_ACCESS_g"); extern hid_t H5P_FILE_CREATE_DEFAULT asm("H5P_LST_FILE_CREATE_g"); extern hid_t H5P_FILE_ACCESS_DEFAULT asm("H5P_LST_FILE_ACCESS_g"); extern hid_t H5P_DATASET_CREATE_DEFAULT asm("H5P_LST_DATASET_CREATE_g"); extern hid_t H5P_DATASET_ACCESS_DEFAULT asm("H5P_LST_DATASET_ACCESS_g"); extern hid_t H5P_DATASET_XFER_DEFAULT asm("H5P_LST_DATASET_XFER_g"); extern hid_t H5P_FILE_MOUNT_DEFAULT asm("H5P_LST_FILE_MOUNT_g"); extern hid_t H5P_GROUP_CREATE_DEFAULT asm("H5P_LST_GROUP_CREATE_g"); extern hid_t H5P_GROUP_ACCESS_DEFAULT asm("H5P_LST_GROUP_ACCESS_g"); extern hid_t H5P_DATATYPE_CREATE_DEFAULT asm("H5P_LST_DATATYPE_CREATE_g"); extern hid_t H5P_DATATYPE_ACCESS_DEFAULT asm("H5P_LST_DATATYPE_ACCESS_g"); extern hid_t H5P_ATTRIBUTE_CREATE_DEFAULT asm("H5P_LST_ATTRIBUTE_CREATE_g"); extern hid_t H5P_OBJECT_COPY_DEFAULT asm("H5P_LST_OBJECT_COPY_g"); extern hid_t H5P_LINK_CREATE_DEFAULT asm("H5P_LST_LINK_CREATE_g"); extern hid_t H5P_LINK_ACCESS_DEFAULT asm("H5P_LST_LINK_ACCESS_g"); static const int H5P_CRT_ORDER_TRACKED = 1; static const int H5P_CRT_ORDER_INDEXED = 2; typedef herr_t (*H5P_cls_create_func_t)(hid_t, void *); typedef herr_t (*H5P_cls_copy_func_t)(hid_t, hid_t, void *); typedef herr_t (*H5P_cls_close_func_t)(hid_t, void *); typedef herr_t (*H5P_prp_cb1_t)(const char *, size_t, void *); typedef herr_t (*H5P_prp_cb2_t)(hid_t, const char *, size_t, void *); typedef herr_t (*H5P_prp_create_func_t)(const char *, size_t, void *); typedef herr_t (*H5P_prp_set_func_t)(hid_t, const char *, size_t, void *); typedef herr_t (*H5P_prp_get_func_t)(hid_t, const char *, size_t, void *); typedef herr_t (*H5P_prp_delete_func_t)(hid_t, const char *, size_t, void *); typedef herr_t (*H5P_prp_copy_func_t)(const char *, size_t, void *); typedef int (*H5P_prp_compare_func_t)(const void *, const void *, size_t); typedef herr_t (*H5P_prp_close_func_t)(const char *, size_t, void *); typedef herr_t (*H5P_iterate_t)(hid_t, const char *, void *); typedef enum H5D_mpio_actual_chunk_opt_mode_t { H5D_MPIO_NO_CHUNK_OPTIMIZATION = 0, H5D_MPIO_LINK_CHUNK = 1, H5D_MPIO_MULTI_CHUNK = 2, H5D_MPIO_MULTI_CHUNK_NO_OPT = 3, } H5D_mpio_actual_chunk_opt_mode_t; typedef enum H5D_mpio_actual_io_mode_t { H5D_MPIO_NO_COLLECTIVE = 0, H5D_MPIO_CHUNK_INDEPENDENT = 1, H5D_MPIO_CHUNK_COLLECTIVE = 2, H5D_MPIO_CHUNK_MIXED = 3, H5D_MPIO_CONTIGUOUS_COLLECTIVE = 4, } H5D_mpio_actual_io_mode_t; hid_t H5Pcreate_class(hid_t, const char *, H5P_cls_create_func_t, void *, H5P_cls_copy_func_t, void *, H5P_cls_close_func_t, void *); char *H5Pget_class_name(hid_t); hid_t H5Pcreate(hid_t); herr_t H5Pregister(hid_t, const char *, size_t, void *, H5P_prp_create_func_t, H5P_prp_set_func_t, H5P_prp_get_func_t, H5P_prp_delete_func_t, H5P_prp_copy_func_t, H5P_prp_compare_func_t, H5P_prp_close_func_t) asm("H5Pregister2"); herr_t H5Pinsert(hid_t, const char *, size_t, void *, H5P_prp_set_func_t, H5P_prp_get_func_t, H5P_prp_delete_func_t, H5P_prp_copy_func_t, H5P_prp_compare_func_t, H5P_prp_close_func_t) asm("H5Pinsert2"); herr_t H5Pset(hid_t, const char *, void *); htri_t H5Pexist(hid_t, const char *); herr_t H5Pget_size(hid_t, const char *, size_t *); herr_t H5Pget_nprops(hid_t, size_t *); hid_t H5Pget_class(hid_t); hid_t H5Pget_class_parent(hid_t); herr_t H5Pget(hid_t, const char *, void *); htri_t H5Pequal(hid_t, hid_t); htri_t H5Pisa_class(hid_t, hid_t); int H5Piterate(hid_t, int *, H5P_iterate_t, void *); herr_t H5Pcopy_prop(hid_t, hid_t, const char *); herr_t H5Premove(hid_t, const char *); herr_t H5Punregister(hid_t, const char *); herr_t H5Pclose_class(hid_t); herr_t H5Pclose(hid_t); hid_t H5Pcopy(hid_t); herr_t H5Pset_attr_phase_change(hid_t, unsigned int, unsigned int); herr_t H5Pget_attr_phase_change(hid_t, unsigned int *, unsigned int *); herr_t H5Pset_attr_creation_order(hid_t, unsigned int); herr_t H5Pget_attr_creation_order(hid_t, unsigned int *); herr_t H5Pset_obj_track_times(hid_t, hbool_t); herr_t H5Pget_obj_track_times(hid_t, hbool_t *); herr_t H5Pmodify_filter(hid_t, H5Z_filter_t, unsigned int, size_t, const unsigned int *); herr_t H5Pset_filter(hid_t, H5Z_filter_t, unsigned int, size_t, const unsigned int *); int H5Pget_nfilters(hid_t); H5Z_filter_t H5Pget_filter(hid_t, unsigned int, unsigned int *, size_t *, unsigned int *, size_t, char *, unsigned int *) asm("H5Pget_filter2"); herr_t H5Pget_filter_by_id(hid_t, H5Z_filter_t, unsigned int *, size_t *, unsigned int *, size_t, char *, unsigned int *) asm("H5Pget_filter_by_id2"); htri_t H5Pall_filters_avail(hid_t); herr_t H5Premove_filter(hid_t, H5Z_filter_t); herr_t H5Pset_deflate(hid_t, unsigned int); herr_t H5Pset_fletcher32(hid_t); herr_t H5Pget_version(hid_t, unsigned int *, unsigned int *, unsigned int *, unsigned int *); herr_t H5Pset_userblock(hid_t, hsize_t); herr_t H5Pget_userblock(hid_t, hsize_t *); herr_t H5Pset_sizes(hid_t, size_t, size_t); herr_t H5Pget_sizes(hid_t, size_t *, size_t *); herr_t H5Pset_sym_k(hid_t, unsigned int, unsigned int); herr_t H5Pget_sym_k(hid_t, unsigned int *, unsigned int *); herr_t H5Pset_istore_k(hid_t, unsigned int); herr_t H5Pget_istore_k(hid_t, unsigned int *); herr_t H5Pset_shared_mesg_nindexes(hid_t, unsigned int); herr_t H5Pget_shared_mesg_nindexes(hid_t, unsigned int *); herr_t H5Pset_shared_mesg_index(hid_t, unsigned int, unsigned int, unsigned int); herr_t H5Pget_shared_mesg_index(hid_t, unsigned int, unsigned int *, unsigned int *); herr_t H5Pset_shared_mesg_phase_change(hid_t, unsigned int, unsigned int); herr_t H5Pget_shared_mesg_phase_change(hid_t, unsigned int *, unsigned int *); herr_t H5Pset_alignment(hid_t, hsize_t, hsize_t); herr_t H5Pget_alignment(hid_t, hsize_t *, hsize_t *); herr_t H5Pset_driver(hid_t, hid_t, const void *); hid_t H5Pget_driver(hid_t); void *H5Pget_driver_info(hid_t); herr_t H5Pset_family_offset(hid_t, hsize_t); herr_t H5Pget_family_offset(hid_t, hsize_t *); herr_t H5Pset_multi_type(hid_t, H5FD_mem_t); herr_t H5Pget_multi_type(hid_t, H5FD_mem_t *); herr_t H5Pset_cache(hid_t, int, size_t, size_t, double); herr_t H5Pget_cache(hid_t, int *, size_t *, size_t *, double *); herr_t H5Pset_mdc_config(hid_t, H5AC_cache_config_t *); herr_t H5Pget_mdc_config(hid_t, H5AC_cache_config_t *); herr_t H5Pset_gc_references(hid_t, unsigned int); herr_t H5Pget_gc_references(hid_t, unsigned int *); herr_t H5Pset_fclose_degree(hid_t, H5F_close_degree_t); herr_t H5Pget_fclose_degree(hid_t, H5F_close_degree_t *); herr_t H5Pset_meta_block_size(hid_t, hsize_t); herr_t H5Pget_meta_block_size(hid_t, hsize_t *); herr_t H5Pset_sieve_buf_size(hid_t, size_t); herr_t H5Pget_sieve_buf_size(hid_t, size_t *); herr_t H5Pset_small_data_block_size(hid_t, hsize_t); herr_t H5Pget_small_data_block_size(hid_t, hsize_t *); herr_t H5Pset_libver_bounds(hid_t, H5F_libver_t, H5F_libver_t); herr_t H5Pget_libver_bounds(hid_t, H5F_libver_t *, H5F_libver_t *); herr_t H5Pset_elink_file_cache_size(hid_t, unsigned int); herr_t H5Pget_elink_file_cache_size(hid_t, unsigned int *); herr_t H5Pset_file_image(hid_t, void *, size_t); herr_t H5Pget_file_image(hid_t, void **, size_t *); herr_t H5Pset_file_image_callbacks(hid_t, H5FD_file_image_callbacks_t *); herr_t H5Pget_file_image_callbacks(hid_t, H5FD_file_image_callbacks_t *); herr_t H5Pset_layout(hid_t, H5D_layout_t); H5D_layout_t H5Pget_layout(hid_t); herr_t H5Pset_chunk(hid_t, int, const hsize_t *); int H5Pget_chunk(hid_t, int, hsize_t *); herr_t H5Pset_external(hid_t, const char *, off_t, hsize_t); int H5Pget_external_count(hid_t); herr_t H5Pget_external(hid_t, unsigned int, size_t, char *, off_t *, hsize_t *); herr_t H5Pset_szip(hid_t, unsigned int, unsigned int); herr_t H5Pset_shuffle(hid_t); herr_t H5Pset_nbit(hid_t); herr_t H5Pset_scaleoffset(hid_t, H5Z_SO_scale_type_t, int); herr_t H5Pset_fill_value(hid_t, hid_t, const void *); herr_t H5Pget_fill_value(hid_t, hid_t, void *); herr_t H5Pfill_value_defined(hid_t, H5D_fill_value_t *); herr_t H5Pset_alloc_time(hid_t, H5D_alloc_time_t); herr_t H5Pget_alloc_time(hid_t, H5D_alloc_time_t *); herr_t H5Pset_fill_time(hid_t, H5D_fill_time_t); herr_t H5Pget_fill_time(hid_t, H5D_fill_time_t *); herr_t H5Pset_chunk_cache(hid_t, size_t, size_t, double); herr_t H5Pget_chunk_cache(hid_t, size_t *, size_t *, double *); herr_t H5Pset_data_transform(hid_t, const char *); ssize_t H5Pget_data_transform(hid_t, char *, size_t); herr_t H5Pset_buffer(hid_t, size_t, void *, void *); size_t H5Pget_buffer(hid_t, void **, void **); herr_t H5Pset_preserve(hid_t, hbool_t); int H5Pget_preserve(hid_t); herr_t H5Pset_edc_check(hid_t, H5Z_EDC_t); H5Z_EDC_t H5Pget_edc_check(hid_t); herr_t H5Pset_filter_callback(hid_t, H5Z_filter_func_t, void *); herr_t H5Pset_btree_ratios(hid_t, double, double, double); herr_t H5Pget_btree_ratios(hid_t, double *, double *, double *); herr_t H5Pset_vlen_mem_manager(hid_t, H5MM_allocate_t, void *, H5MM_free_t, void *); herr_t H5Pget_vlen_mem_manager(hid_t, H5MM_allocate_t *, void **, H5MM_free_t *, void **); herr_t H5Pset_hyper_vector_size(hid_t, size_t); herr_t H5Pget_hyper_vector_size(hid_t, size_t *); herr_t H5Pset_type_conv_cb(hid_t, H5T_conv_except_func_t, void *); herr_t H5Pget_type_conv_cb(hid_t, H5T_conv_except_func_t *, void **); herr_t H5Pget_mpio_actual_chunk_opt_mode(hid_t, H5D_mpio_actual_chunk_opt_mode_t *); herr_t H5Pget_mpio_actual_io_mode(hid_t, H5D_mpio_actual_io_mode_t *); herr_t H5Pset_create_intermediate_group(hid_t, unsigned int); herr_t H5Pget_create_intermediate_group(hid_t, unsigned int *); herr_t H5Pset_local_heap_size_hint(hid_t, size_t); herr_t H5Pget_local_heap_size_hint(hid_t, size_t *); herr_t H5Pset_link_phase_change(hid_t, unsigned int, unsigned int); herr_t H5Pget_link_phase_change(hid_t, unsigned int *, unsigned int *); herr_t H5Pset_est_link_info(hid_t, unsigned int, unsigned int); herr_t H5Pget_est_link_info(hid_t, unsigned int *, unsigned int *); herr_t H5Pset_link_creation_order(hid_t, unsigned int); herr_t H5Pget_link_creation_order(hid_t, unsigned int *); herr_t H5Pset_char_encoding(hid_t, H5T_cset_t); herr_t H5Pget_char_encoding(hid_t, H5T_cset_t *); herr_t H5Pset_nlinks(hid_t, size_t); herr_t H5Pget_nlinks(hid_t, size_t *); herr_t H5Pset_elink_prefix(hid_t, const char *); ssize_t H5Pget_elink_prefix(hid_t, char *, size_t); hid_t H5Pget_elink_fapl(hid_t); herr_t H5Pset_elink_fapl(hid_t, hid_t); herr_t H5Pset_elink_acc_flags(hid_t, unsigned int); herr_t H5Pget_elink_acc_flags(hid_t, unsigned int *); herr_t H5Pset_elink_cb(hid_t, H5L_elink_traverse_t, void *); herr_t H5Pget_elink_cb(hid_t, H5L_elink_traverse_t *, void **); herr_t H5Pset_copy_object(hid_t, unsigned int); herr_t H5Pget_copy_object(hid_t, unsigned int *); herr_t H5Padd_merge_committed_dtype_path(hid_t, const char *); herr_t H5Pfree_merge_committed_dtype_paths(hid_t); herr_t H5Pset_mcdt_search_cb(hid_t, H5O_mcdt_search_cb_t, void *); herr_t H5Pget_mcdt_search_cb(hid_t, H5O_mcdt_search_cb_t *, void **); ]] -- If the HDF5 library has been linked to the application, use HDF5 -- symbols from default, global namespace. Otherwise, dynamically load -- the HDF5 library into its own, non-global C library namespace. local C if pcall(function() return ffi.C.H5Open end) then C = ffi.C else C = ffi.load("hdf5") end return C