1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * All rights reserved. * * * * This file is part of HDF5. The full HDF5 copyright notice, including * * terms governing use, modification, and redistribution, is contained in * * the LICENSE file, which can be found at the root of the source code * * distribution tree, or in https://www.hdfgroup.org/licenses. * * If you do not have access to either file, you may request a copy from * * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * This file contains public declarations for the HDF5 module. */ #ifndef H5public_H #define H5public_H /* Configure options */ #include "H5pubconf.h" /* API Version macro wrapper definitions */ #include "H5version.h" /* C library header files for things that appear in HDF5 public headers */ #ifdef __cplusplus #include #else #include #endif #include #include #include #include #include /* Unlike most sys/ headers, which are POSIX-only, sys/types.h is available * on Windows, though it doesn't necessarily contain all the POSIX types * we need for HDF5 (e.g. ssize_t). */ #include #ifdef H5_HAVE_PARALLEL /* Don't link against MPI C++ bindings */ #ifndef MPICH_SKIP_MPICXX #define MPICH_SKIP_MPICXX 1 #endif #ifndef OMPI_SKIP_MPICXX #define OMPI_SKIP_MPICXX 1 #endif #include #ifndef MPI_FILE_NULL /* MPIO may be defined in mpi.h already */ #include #endif #endif /* Macro to hide a symbol from further preprocessor substitutions */ #define H5_NO_EXPAND(x) (x) /* Version numbers */ /** * For major interface/format changes */ #define H5_VERS_MAJOR 2 /** * For minor interface/format changes */ #define H5_VERS_MINOR 1 /** * For tweaks, bug-fixes, or development */ #define H5_VERS_RELEASE 1 /** * For pre-releases like \c snap0. Empty string for official releases. */ /* * IMPORTANT: This MUST be a string literal (quoted), not an unquoted value. * * Valid: #define H5_VERS_SUBRELEASE "" * Valid: #define H5_VERS_SUBRELEASE "-snap0" * Invalid: #define H5_VERS_SUBRELEASE -snap0 * */ #define H5_VERS_SUBRELEASE "" /* Derived version strings - automatically generated from the above */ /** * Short version string - automatically derived from H5_VERS_MAJOR/MINOR/RELEASE/SUBRELEASE * * This macro uses C preprocessor string concatenation. The H5_VERS_MAJOR, H5_VERS_MINOR, * and H5_VERS_RELEASE values are stringified and concatenated with dots, then concatenated * with H5_VERS_SUBRELEASE (which must already be a string literal). */ #define H5_VERS_STR_HELPER(major, minor, release) #major "." #minor "." #release #define H5_VERS_STR_CONCAT(major, minor, release, sub) H5_VERS_STR_HELPER(major, minor, release) sub #define H5_VERS_STR H5_VERS_STR_CONCAT(H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE, H5_VERS_SUBRELEASE) /** * Full version string - automatically derived from H5_VERS_STR */ #define H5_VERS_INFO "HDF5 library version: " H5_VERS_STR #define H5check() H5check_version(H5_VERS_MAJOR, H5_VERS_MINOR, H5_VERS_RELEASE) /* macros for comparing the version */ /** * \brief Determines whether the version of the library being used is greater * than or equal to the specified version * * \param[in] Maj Major version number - A non-negative integer value * \param[in] Min Minor version number - A non-negative integer value * \param[in] Rel Release version number - A non-negative integer value * \return A value of 1 is returned if the library version is greater than * or equal to the version number specified.\n * A value of 0 is returned if the library version is less than the * version number specified.\n * A library version is greater than the specified version number if * its major version is larger than the specified major version * number. If the major version numbers are the same, it is greater * than the specified version number if its minor version is larger * than the specified minor version number. If the minor version * numbers are the same, then a library version would be greater than * the specified version number if its release number is larger than * the specified release number. * * \details The #H5_VERSION_GE and #H5_VERSION_LE macros are used at compile * time to conditionally include or exclude code based on the version * of the HDF5 library against which an application will be linked. * * The #H5_VERSION_GE macro compares the version of the HDF5 library * being used against the version number specified in the parameters. * * For more information about release versioning, see \ref RELVERSION. * * \since 1.8.7 * */ #define H5_VERSION_GE(Maj, Min, Rel) \ (((H5_VERS_MAJOR == Maj) && (H5_VERS_MINOR == Min) && (H5_VERS_RELEASE >= Rel)) || \ ((H5_VERS_MAJOR == Maj) && (H5_VERS_MINOR > Min)) || (H5_VERS_MAJOR > Maj)) /** * \brief Determines whether the version of the library being used is less * than or equal to the specified version * * \param[in] Maj Major version number - A non-negative integer value * \param[in] Min Minor version number - A non-negative integer value * \param[in] Rel Release version number - A non-negative integer value * \return A value of 1 is returned if the library version is less than * or equal to the version number specified.\n * A value of 0 is returned if the library version is greater than the * version number specified.\n * A library version is less than the specified version number if * its major version is smaller than the specified major version * number. If the major version numbers are the same, it is smaller * than the specified version number if its minor version is smaller * than the specified minor version number. If the minor version * numbers are the same, then a library version would be smaller than * the specified version number if its release number is smaller than * the specified release number. * * \details The #H5_VERSION_GE and #H5_VERSION_LE macros are used at compile * time to conditionally include or exclude code based on the version * of the HDF5 library against which an application will be linked. * * The #H5_VERSION_LE macro compares the version of the HDF5 library * being used against the version number specified in the parameters. * * For more information about release versioning, see \ref RELVERSION. * * \since 1.8.7 * */ #define H5_VERSION_LE(Maj, Min, Rel) \ (((H5_VERS_MAJOR == Maj) && (H5_VERS_MINOR == Min) && (H5_VERS_RELEASE <= Rel)) || \ ((H5_VERS_MAJOR == Maj) && (H5_VERS_MINOR < Min)) || (H5_VERS_MAJOR < Maj)) /* Macros for various environment variables that HDF5 interprets */ /** * Used to specify the name of an HDF5 Virtual File Driver to use as * the default file driver for file access. Setting this environment * variable overrides the default file driver for File Access Property * Lists. * * \since 1.14.0 */ #define HDF5_DRIVER "HDF5_DRIVER" /** * Used to specify a configuration string for the HDF5 Virtual File * Driver being used for file access. * * \since 1.14.0 */ #define HDF5_DRIVER_CONFIG "HDF5_DRIVER_CONFIG" /** * Used to specify the name of an HDF5 Virtual Object Layer Connector * to use as the default VOL connector for file access. Setting this * environment variable overrides the default VOL connector for File * Access Property Lists. * * \since 1.14.0 */ #define HDF5_VOL_CONNECTOR "HDF5_VOL_CONNECTOR" /** * Used to specify a delimiter-separated (currently, ';' for Windows * and ':' for other systems) list of paths that HDF5 should search * when loading plugins. * * \since 1.14.0 */ #define HDF5_PLUGIN_PATH "HDF5_PLUGIN_PATH" /** * Used to control the loading of HDF5 plugins at runtime. If this * environment variable is set to the special string "::" (defined * in H5PLpublic.h as H5PL_NO_PLUGIN), then dynamic loading of any * HDF5 plugins will be disabled. No other values are valid for this * environment variable. * * \since 1.14.0 */ #define HDF5_PLUGIN_PRELOAD "HDF5_PLUGIN_PRELOAD" /** * Used to control whether HDF5 uses file locking when creating or * opening a file. Valid values for this environment variable are * as follows: * * "TRUE" or "1" - Request that file locks should be used
* "FALSE" or "0" - Request that file locks should NOT be used
* "BEST_EFFORT" - Request that file locks should be used and * that any locking errors caused by file * locking being disabled on the system * should be ignored * * \since 1.14.0 */ #define HDF5_USE_FILE_LOCKING "HDF5_USE_FILE_LOCKING" /** * Used to instruct HDF5 not to cleanup files created during testing. * * \since 1.14.0 */ #define HDF5_NOCLEANUP "HDF5_NOCLEANUP" /** * Macro for environment variable used to instruct HDF5 to prefer * Windows code pages over UTF-8 for functions that accept 'char *' * parameters. Valid values for this environment variable are as * follows (case-insensitive): * * "TRUE" or "1" - Request that Windows code pages be preferred
* "FALSE" or "0" - Request that UTF-8 be preferred
* * \since 2.0.0 */ #define HDF5_PREFER_WINDOWS_CODE_PAGE "HDF5_PREFER_WINDOWS_CODE_PAGE" /** * Status return values. Failed integer functions in HDF5 result almost * always in a negative value (unsigned failing functions sometimes return * zero for failure) while successful return is non-negative (often zero). * The negative failure value is most commonly -1, but don't bet on it. * * The proper way to detect failure is something like: * \code * if((dset = H5Dopen2(file, name)) < 0) * fprintf(stderr, "unable to open the requested dataset\n"); * \endcode */ typedef int herr_t; /** * C99-style Boolean type. Successful return values are zero (false) or positive * (true). The typical true value is 1 but don't bet on it. * * \deprecated Now that we require C99, hbool_t is typedef'd to C99's bool * and hbool_t is considered deprecated. Due to its long-standing, * widespread use, we have no plans to remove the hbool_t typedef * from the public API, though it is otherwise unused in the library. * \attention Boolean functions cannot fail. */ #include typedef bool hbool_t; /** * Three-valued Boolean type. Functions that return #htri_t however return zero * (false), positive (true), or negative (failure). * * The proper way to test for truth from a #htri_t function is: * \code * if ((retval = H5Tcommitted(type)) > 0) { * printf("data type is committed\n"); * } else if (!retval) { * printf("data type is not committed\n"); * } else { * printf("error determining whether data type is committed\n"); * } * \endcode */ typedef int htri_t; /* The signed version of size_t * * ssize_t is POSIX and not defined in any C standard. It's used in some * public HDF5 API calls so this work-around will define it if it's not * present. * * Use of ssize_t should be discouraged in new code. */ #if defined(_WIN32) && !defined(__MINGW32__) #include typedef SSIZE_T ssize_t; /* This will have been defined to 0 in configure */ #define H5_SIZEOF_SSIZE_T H5_SIZEOF_SIZE_T #endif /** * The size of file objects. * * \internal Defined as a (minimum) 64-bit integer type. */ typedef uint64_t hsize_t; /* off_t exists on Windows, but is always a 32-bit long, even on 64-bit Windows, * so on Windows we define HDoff_t to be int64_t, which is equivalent to __int64, * the type of the st_size field of the _stati64 struct. */ #ifdef H5_HAVE_WIN32_API /** * Platform-independent offset */ typedef int64_t HDoff_t; #else /** * Platform-independent offset */ typedef off_t HDoff_t; #endif #ifdef H5_HAVE_PARALLEL #define HSIZE_AS_MPI_TYPE MPI_UINT64_T #endif /** * The size of file objects. Used when negative values are needed to indicate errors. * * \internal Defined as a (minimum) 64-bit integer type. Use of hssize_t * should be discouraged in new code. */ typedef int64_t hssize_t; /** d print conversion specifier for signed integer type \since 1.10.8 */ #define PRIdHSIZE PRId64 /** i print conversion specifier for signed integer type \since 1.10.8 */ #define PRIiHSIZE PRIi64 /** o print conversion specifier for signed integer type \since 1.10.8 */ #define PRIoHSIZE PRIo64 /** u print conversion specifier for signed integer type \since 1.10.8 */ #define PRIuHSIZE PRIu64 /** x print conversion specifier for signed integer type \since 1.10.8 */ #define PRIxHSIZE PRIx64 /** X print conversion specifier for signed integer type \since 1.10.8 */ #define PRIXHSIZE PRIX64 #define H5_SIZEOF_HSIZE_T 8 #define H5_SIZEOF_HSSIZE_T 8 /** Represents the largest possible value of uint64_t \since 1.10.0 */ #define HSIZE_UNDEF UINT64_MAX /** * The address of an object in the file. * * \internal Defined as a (minimum) 64-bit unsigned integer type. */ typedef uint64_t haddr_t; /** d print conversion specifier for unsigned integer type \since 1.8.23 */ #define PRIdHADDR PRId64 /** o print conversion specifier for unsigned integer type \since 1.8.23 */ #define PRIoHADDR PRIo64 /** u print conversion specifier for unsigned integer type \since 1.8.23 */ #define PRIuHADDR PRIu64 /** x print conversion specifier for unsigned integer type \since 1.8.23 */ #define PRIxHADDR PRIx64 /** X print conversion specifier for unsigned integer type \since 1.8.23 */ #define PRIXHADDR PRIX64 #define H5_SIZEOF_HADDR_T 8 #define HADDR_UNDEF UINT64_MAX #define H5_PRINTF_HADDR_FMT "%" PRIuHADDR #define HADDR_MAX (HADDR_UNDEF - 1) #ifdef H5_HAVE_PARALLEL #define HADDR_AS_MPI_TYPE MPI_UINT64_T #endif //! /** * Common iteration orders */ typedef enum { H5_ITER_UNKNOWN = -1, /**< Unknown order */ H5_ITER_INC, /**< Increasing order */ H5_ITER_DEC, /**< Decreasing order */ H5_ITER_NATIVE, /**< No particular order, whatever is fastest */ H5_ITER_N /**< Number of iteration orders */ } H5_iter_order_t; //! /* Iteration callback values */ /* (Actually, any positive value will cause the iterator to stop and pass back * that positive value to the function that called the iterator) */ #define H5_ITER_ERROR (-1) /**< Error, stop iteration */ #define H5_ITER_CONT (0) /**< Continue iteration */ #define H5_ITER_STOP (1) /**< Stop iteration, short-circuit success */ //! /** * The types of indices on links in groups/attributes on objects. * Primarily used for " by index" routines and for iterating over * links in groups/attributes on objects. */ typedef enum H5_index_t { H5_INDEX_UNKNOWN = -1, /**< Unknown index type */ H5_INDEX_NAME, /**< Index on names */ H5_INDEX_CRT_ORDER, /**< Index on creation order */ H5_INDEX_N /**< Number of indices defined */ } H5_index_t; //! /** * Storage info struct used by H5O_info_t and H5F_info_t */ //! typedef struct H5_ih_info_t { hsize_t index_size; /**< btree and/or list */ hsize_t heap_size; } H5_ih_info_t; //! /** * The maximum size allowed for tokens * \details Tokens are unique and permanent identifiers that are * used to reference HDF5 objects in a container. This allows * for 128-bit tokens * * \since 1.12.0 */ #define H5O_MAX_TOKEN_SIZE (16) //! /** * Type for object tokens * * \internal (Hoisted here, since it's used by both the * H5Lpublic.h and H5Opublic.h headers) */ typedef struct H5O_token_t { uint8_t __data[H5O_MAX_TOKEN_SIZE]; } H5O_token_t; //! /** * Library shutdown callback, used by H5atclose(). */ typedef void (*H5_atclose_func_t)(void *ctx); /* API adapter header (defines H5_DLL, etc.) */ #include "H5api_adpt.h" /* * Does the compiler support the __builtin_expect() syntax? * It's not a problem if not. */ /* clang-format off */ #if defined(__has_builtin) /* clang extension to check for builtins. Do this first, because clang * also defines __GNUC__ and didn't support __builtin_expect() until * more recently. */ # if __has_builtin(__builtin_expect) # define H5_HAVE_BUILTIN_EXPECT 1 # endif #elif defined(__GNUC__) /* __builtin_expect() has been supported since 2.95 or 2.96 (circa 2000) */ # define H5_HAVE_BUILTIN_EXPECT 1 #endif /* clang-format on */ #if H5_HAVE_BUILTIN_EXPECT #define H5_LIKELY(expression) __builtin_expect(!!(expression), 1) #define H5_UNLIKELY(expression) __builtin_expect(!!(expression), 0) #else #define H5_LIKELY(expression) (expression) #define H5_UNLIKELY(expression) (expression) #endif /* Definition of H5OPEN macro used for returning library defined IDs to * applications with macros, e.g. H5FD_SEC2. Will only call H5open() for * the application once per library init/term epoch, and will not call * H5open() when a macro that uses it is used within the library. * Note: for library source, this coding pattern requires that H5private.h * is the first library private header file included in the source file. */ #undef H5OPEN #ifndef H5private_H #define H5OPEN (H5_UNLIKELY(!H5_libinit_g && !H5_libterm_g) ? H5open() : 0), #else /* H5private_H */ #define H5OPEN #endif /* H5private_H */ #ifdef __cplusplus extern "C" { #endif /** @private * * \brief Library init / term status (global) */ H5_DLLVAR bool H5_libinit_g; /* Has the library been initialized? */ H5_DLLVAR bool H5_libterm_g; /* Is the library being shutdown? */ /* Functions in H5.c */ /** * \ingroup H5 * \brief Initializes the HDF5 library * \return \herr_t * * \details H5open() initializes the HDF5 library. * * \details When the HDF5 library is used in a C application, the library is * automatically initialized when the first HDF5 function call is * issued. If one finds that an HDF5 library function is failing * inexplicably, H5open() can be called first. It is safe to call * H5open() before an application issues any other function calls to * the HDF5 library, as there are no damaging side effects in calling * it more than once. * * \since 1.0.0 * */ H5_DLL herr_t H5open(void); /** * \ingroup H5 * \brief Registers a callback for the library to invoke when it's closing. * \param[in] func The function pointer to invoke * \param[in] ctx Context to pass to \p func when invoked * \return \herr_t * * \details H5atclose() registers a callback that the HDF5 library will invoke * when closing. The full capabilities of the HDF5 library are * available to callbacks invoked through this mechanism, and library * shutdown will only begin in earnest when all callbacks have been * invoked and have returned. * * Registered callbacks are invoked in LIFO order, similar to the * Standard C 'atexit' routine. For example, if 'func1' is registered, * then 'func2', when the library is closing 'func2', will * be invoked first, then 'func1'. * * The \p ctx pointer will be passed to \p func when it's invoked. * NULL is allowed for \p ctx. * * If the HDF5 library is initialized and closed more than once, the * \p func callback must be registered within each open/close cycle. * * \since 1.14.0 */ H5_DLL herr_t H5atclose(H5_atclose_func_t func, void *ctx); /** * \ingroup H5 * \brief Flushes all data to disk, closes all open objects, and releases memory * \return \herr_t * * \details H5close() flushes all data to disk, closes all open HDF5 objects, * and cleans up all memory used by the HDF5 library. This function is * generally called when the application calls exit(), but may be * called earlier in the event of an emergency shutdown or out of a * desire to free all resources used by the HDF5 library. * * \since 1.0.0 * */ H5_DLL herr_t H5close(void); /** * \ingroup H5 * \brief Instructs library not to install atexit() cleanup routine * \return \herr_t * * \details H5dont_atexit() indicates to the library that an atexit() cleanup * routine should not be installed. The major purpose for using this * function is in situations where the library is dynamically linked * into an application and is un-linked from the application before * exit() gets called. In those situations, a routine installed with * atexit() would jump to a routine that was no longer in memory, * causing errors. * * \attention In order to be effective, this routine \Emph{must} be called * before any other HDF5 function calls, and must be called each * time the library is loaded/linked into the application (the first * time and after it's been unloaded). * * \since 1.0.0 * */ H5_DLL herr_t H5dont_atexit(void); /** * \ingroup H5 * \brief Garbage collects on all free-lists of all types * \return \herr_t * * \details H5garbage_collect() walks through all garbage collection routines * of the library, freeing any unused memory. * * It is not required that H5garbage_collect() be called at any * particular time; it is only necessary for certain situations where * the application has performed actions that cause the library to * allocate many objects. The application should call * H5garbage_collect() if it eventually releases those objects and * wants to reduce the memory used by the library from the peak usage * required. * * \note The library automatically garbage collects all the free lists when the * application ends. * * \since 1.4.0 * */ H5_DLL herr_t H5garbage_collect(void); /** * \ingroup H5 * \brief Sets free-list size limits * * \param[in] reg_global_lim The cumulative limit, in bytes, on memory used for * all regular free lists (Default: 1MB) * \param[in] reg_list_lim The limit, in bytes, on memory used for each regular * free list (Default: 64KB) * \param[in] arr_global_lim The cumulative limit, in bytes, on memory used for * all array free lists (Default: 4MB) * \param[in] arr_list_lim The limit, in bytes, on memory used for each array * free list (Default: 256KB) * \param[in] blk_global_lim The cumulative limit, in bytes, on memory used for * all block free lists and, separately, for all * factory free lists (Default: 16MB) * \param[in] blk_list_lim The limit, in bytes, on memory used for each block * or factory free list (Default: 1MB) * \return \herr_t * * \details H5set_free_list_limits() sets size limits on all types of free * lists. The HDF5 library uses free lists internally to manage * memory. The types of free lists used are as follows: * \li Regular free lists manage memory for single internal data * structures. * \li Array free lists manage memory for arrays of internal * data structures. * \li Block free lists manage memory for arbitrarily-sized blocks * of bytes. * \li Factory free lists manage memory for fixed-size blocks of * bytes. * * The parameters specify global and per-list limits; for example, \p * reg_global_limit and \p reg_list_limit limit the accumulated size * of all regular free lists and the size of each individual regular * free list, respectively. Therefore, if an application sets a 1Mb * limit on each of the global lists, up to 4Mb of total storage might * be allocated, 1Mb for each of the regular, array, block, and * factory type lists. * * The settings specified for block free lists are duplicated for * factory free lists. Therefore, increasing the global limit on block * free lists by x bytes will increase the potential free list memory * usage by 2x bytes. * * Using a value of -1 for a limit means that no limit is set for the * specified type of free list. * * \version 1.8.3 Function changed in this release to set factory free list * memory limits. * * \since 1.4.0 */ H5_DLL herr_t H5set_free_list_limits(int reg_global_lim, int reg_list_lim, int arr_global_lim, int arr_list_lim, int blk_global_lim, int blk_list_lim); /** * \ingroup H5 * \brief Gets the current size of the free lists used to manage memory * * \param[out] reg_size The current size of all "regular" free list memory used * \param[out] arr_size The current size of all "array" free list memory used * \param[out] blk_size The current size of all "block" free list memory used * \param[out] fac_size The current size of all "factory" free list memory used * \return \herr_t * * \details H5get_free_list_sizes() obtains the current size of the different * kinds of free lists that the library uses to manage memory. The * free list sizes can be set with H5set_free_list_limits() and * garbage collected with H5garbage_collect(). These lists are global * for the entire library. * * \since 1.10.7 */ H5_DLL herr_t H5get_free_list_sizes(size_t *reg_size, size_t *arr_size, size_t *blk_size, size_t *fac_size); /** * \ingroup H5 * \brief Returns the HDF library release number * * \param[out] majnum The major version number of the library * \param[out] minnum The minor version number of the library * \param[out] relnum The release version number of the library * \return \herr_t * * \details H5get_libversion() retrieves the major, minor, and release numbers * of the version of the HDF5 library which is linked to the * application. * * \since 1.0.0 * */ H5_DLL herr_t H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum); /** * \ingroup H5 * \brief Verifies that HDF5 library versions are consistent * * \param[in] majnum HDF5 library major version number * \param[in] minnum HDF5 library minor version number * \param[in] relnum HDF5 library release number * \return \herr_t * * \details H5check_version() verifies that the version of the HDF5 library * with which an application was compiled, as indicated by the passed * parameters, matches the version of the HDF5 library against which * the application is currently linked. * * \p majnum is the major version number of the HDF library with which * the application was compiled, \p minnum is the minor version * number, and \p relnum is the release number. Consider the following * example: * * An official HDF5 release is labelled as follows: * HDF5 Release \TText{\.\.\}\n * For example, in HDF5 Release 1.8.5: * \li 1 is the major version number, \p majnum. * \li 8 is the minor version number, \p minnum. * \li 5 is the release number, \p relnum. * * As stated above, H5check_version() first verifies that the version * of the HDF5 library with which an application was compiled matches * the version of the HDF5 library against which the application is * currently linked. If this check fails, H5check_version() causes the * application to abort (by means of a standard C abort() call) and * prints information that is usually useful for debugging. This * precaution is taken to avoid the risks of data corruption or * segmentation faults. * * The most common cause of this failure is that an application was * compiled with one version of HDF5 and is dynamically linked with a * different version different version. * * If the above test passes, H5check_version() proceeds to verify the * consistency of additional library version information. This is * designed to catch source code inconsistencies that do not normally * cause failures; if this check reveals an inconsistency, an * informational warning is printed but the application is allowed to * run. * * \since 1.0.0 * */ H5_DLL herr_t H5check_version(unsigned majnum, unsigned minnum, unsigned relnum); /** * \ingroup H5 * \brief Checks whether the HDF5 library is closing. * \param[out] is_terminating Flag indicating whether library is shutting down * \return \herr_t * * \details H5is_library_terminating() queries whether the HDF5 library is in * the process of shutting down. The \p is_terminating flag will only * be set to true after shutdown starts, it will be false before the * library has been initialized, while the library is initialized, and * after it has been closed. The value of \p is_terminating is * undefined if this routine fails. * * \since 1.14.0 */ H5_DLL herr_t H5is_library_terminating(bool *is_terminating); /** * \ingroup H5 * \brief Determines whether the HDF5 library was built with the thread-safety * feature enabled * * \param[out] is_ts Boolean value indicating whether the library was built * with thread-safety enabled * \return \herr_t * * \details The HDF5 library, although not internally multi-threaded, can be * built with a thread-safety feature enabled that protects internal * data structures with a mutex. In certain circumstances, it may be * useful to determine, at run-time, whether the linked HDF5 library * was built with the thread-safety feature enabled. * * \since 1.10.0 * */ H5_DLL herr_t H5is_library_threadsafe(bool *is_ts); /** * \ingroup H5 * \brief Frees memory allocated by the HDF5 library * * \param[in] mem Buffer to be freed. Can be NULL * \return \herr_t * * \details H5free_memory() frees the memory that has been allocated by the caller * with H5allocate_memory() or by the HDF5 library on behalf of the * caller. * * H5Tget_member_name() provides an example of memory allocation on * behalf of the caller: The function returns a buffer containing the * name of a compound datatype member. It is the caller's * responsibility to eventually free that buffer with H5free_memory(). * * \attention It is especially important to use this function to free memory * allocated by the library on Windows. The C standard library is * implemented in dynamic link libraries (DLLs) known as the C * run-time (CRT). Each version of Visual Studio comes with two CRT * DLLs (debug and release) and allocating and freeing across DLL * boundaries can cause resource leaks and subtle bugs due to heap * corruption.\n * Only use this function to free memory allocated by the HDF5 * Library. It will generally not be safe to use this function to * free memory allocated by any other means.\n * Even when using this function, it is still best to ensure that * all components of a C application are built with the same version * of Visual Studio and build (debug or release) and thus linked * against the same CRT. * * \see H5allocate_memory(), H5resize_memory() * * \since 1.8.13 * */ H5_DLL herr_t H5free_memory(void *mem); /** * \ingroup H5 * \brief Allocates memory that will be freed later internally. * * \param[in] size The size in bytes of the buffer to be allocated * \param[in] clear Flag whether the new buffer is to be initialized with 0 * * \return On success, returns pointer to newly allocated buffer or returns * NULL if size is 0 (zero).\n * Returns NULL on failure. * * \details H5allocate_memory() allocates a memory buffer of size bytes that * will later be freed internally by the HDF5 library. * * The boolean \p clear parameter specifies whether the buffer should * be initialized. If clear is \c true, all bits in the buffer are to be * set to 0 (zero); if clear is \c false, the buffer will not be * initialized. * * This function is intended to have the semantics of malloc() and * calloc(). However, unlike malloc() and calloc(), which allow for a * "special" pointer to be returned instead of NULL, this function * always returns NULL on failure or when size is set to 0 (zero). * * \note At this time, the only intended use for this function is to allocate * memory that will be returned to the library as a data buffer from a * third-party filter. * * \attention To avoid heap corruption, allocated memory should be freed using * the same library that initially allocated it. In most cases, the * HDF5 API uses resources that are allocated and freed either * entirely by the user or entirely by the library, so this is not a * problem. In rare cases, however, HDF5 API calls will free the memory * that the user allocated. This function allows the user to safely * allocate this memory.\n * It is particularly important to use this function to allocate * memory in Microsoft Windows environments. In Windows, the C * standard library is implemented in dynamic link libraries (DLLs) * known as the C run-time (CRT). Each version of Visual Studio * comes with multiple versions of the CRT DLLs (debug, release, et * cetera) and allocating and freeing memory across DLL boundaries * can cause resource leaks and subtle bugs due to heap corruption.\n * Even when using this function, it is best where possible to * ensure that all components of a C application are built with the * same version of Visual Studio and configuration (Debug or * Release), and thus linked against the same CRT.\n * Use this function only to allocate memory inside third-party HDF5 * filters. It will generally not be safe to use this function to * allocate memory for any other purpose. * * \see H5free_memory(), H5resize_memory() * * \since 1.8.15 * */ H5_DLL void *H5allocate_memory(size_t size, bool clear); /** * \ingroup H5 * \brief Resizes and, if required, re-allocates memory that will later be * freed internally by the HDF5 library * * \param[in] mem Pointer to a buffer to be resized. May be NULL * \param[in] size New size of the buffer, in bytes * * \return On success, returns pointer to resized or reallocated buffer * or returns NULL if size is 0 (zero).\n * Returns NULL on failure. * * \details H5resize_memory() takes a pointer to an existing buffer and resizes * the buffer to match the value in \p size. If necessary, the buffer * is reallocated. If \p size is 0, the buffer is released. * * The input buffer must either be NULL or have been allocated by * H5allocate_memory() since the input buffer may be freed by the * library. * * For certain behaviors, the pointer \p mem may be passed in as NULL. * * This function is intended to have the semantics of realloc(): * * * * * * * * * * *
\TText{H5resize_memory(buffer, size)}Resizes buffer. Returns pointer to resized buffer.
\TText{H5resize_memory(NULL, size)}Allocates memory using HDF5 Library allocator. * Returns pointer to new buffer
\TText{H5resize_memory(buffer, 0)}Frees memory using HDF5 Library allocator. * Returns NULL.
\TText{H5resize_memory(NULL, 0)}Returns NULL (undefined in C standard).
* * Unlike realloc(), which allows for a "special pointer to be * returned instead of NULL, this function always returns NULL on * failure or when size is 0 (zero). * * \note At this time, the only intended use for this function is to resize or * reallocate memory that will be returned to the library (and eventually * to the user) as a data buffer from a third-party HDF5 filter. * * \attention To avoid heap corruption, allocated memory should be freed using * the same library that initially allocated it. In most cases, the * HDF5 API uses resources that are allocated and freed either * entirely by the user or entirely by the library, so this is not a * problem. In rare cases, however, HDF5 API calls will free memory * that the user allocated. This function allows the user to safely * allocate this memory.\n * It is particularly important to use this function to resize * memory on Microsoft Windows systems. In Windows, the C standard * library is implemented in dynamic link libraries (DLLs) known as * the C run-time (CRT). Each version of Visual Studio comes with * multiple versions of the CRT DLLs (debug, release, et cetera) and * allocating and freeing memory across DLL boundaries can cause * resource leaks and subtle bugs due to heap corruption.\n * Even when using this function, it is still best to ensure that * all components of a C application are built with the same version * of Visual Studio and the same configuration (Debug or Release), * and thus linked against the same CRT.\n * Only use this function to resize memory inside third-party HDF5 * filters. It will generally not be safe to use this function to * resize memory for any other purpose. * * \see H5allocate_memory(), H5free_memory() * * \since 1.8.15 * */ H5_DLL void *H5resize_memory(void *mem, size_t size); #ifdef __cplusplus } #endif #endif /* H5public_H */