HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
H5Ipublic.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group. *
3  * Copyright by the Board of Trustees of the University of Illinois. *
4  * All rights reserved. *
5  * *
6  * This file is part of HDF5. The full HDF5 copyright notice, including *
7  * terms governing use, modification, and redistribution, is contained in *
8  * the files COPYING and Copyright.html. COPYING can be found at the root *
9  * of the source code distribution tree; Copyright.html can be found at the *
10  * root level of an installed copy of the electronic HDF5 document set and *
11  * is linked from the top-level documents page. It can also be found at *
12  * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have *
13  * access to either file, you may request a copy from help@hdfgroup.org. *
14  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /*
17  * This file contains function prototypes for each exported function in
18  * the H5I module.
19  */
20 #ifndef _H5Ipublic_H
21 #define _H5Ipublic_H
22 
23 /* Public headers needed by this file */
24 #include "H5public.h"
25 
26 /*
27  * Library type values. Start with `1' instead of `0' because it makes the
28  * tracing output look better when hid_t values are large numbers. Change the
29  * TYPE_BITS in H5I.c if the MAXID gets larger than 32 (an assertion will
30  * fail otherwise).
31  *
32  * When adding types here, add a section to the 'misc19' test in test/tmisc.c
33  * to verify that the H5I{inc|dec|get}_ref() routines work correctly with in.
34  *
35  */
36 typedef enum H5I_type_t {
37  H5I_UNINIT = (-2), /*uninitialized type */
38  H5I_BADID = (-1), /*invalid Type */
39  H5I_FILE = 1, /*type ID for File objects */
40  H5I_GROUP, /*type ID for Group objects */
41  H5I_DATATYPE, /*type ID for Datatype objects */
42  H5I_DATASPACE, /*type ID for Dataspace objects */
43  H5I_DATASET, /*type ID for Dataset objects */
44  H5I_ATTR, /*type ID for Attribute objects */
45  H5I_REFERENCE, /*type ID for Reference objects */
46  H5I_VFL, /*type ID for virtual file layer */
47  H5I_GENPROP_CLS, /*type ID for generic property list classes */
48  H5I_GENPROP_LST, /*type ID for generic property lists */
49  H5I_ERROR_CLASS, /*type ID for error classes */
50  H5I_ERROR_MSG, /*type ID for error messages */
51  H5I_ERROR_STACK, /*type ID for error stacks */
52  H5I_NTYPES /*number of library types, MUST BE LAST! */
53 } H5I_type_t;
54 
55 /* Type of atoms to return to users */
56 typedef int hid_t;
57 #define H5_SIZEOF_HID_T H5_SIZEOF_INT
58 
59 /* An invalid object ID. This is also negative for error return. */
60 #define H5I_INVALID_HID (-1)
61 
62 /*
63  * Function for freeing objects. This function will be called with an object
64  * ID type number and a pointer to the object. The function should free the
65  * object and return non-negative to indicate that the object
66  * can be removed from the ID type. If the function returns negative
67  * (failure) then the object will remain in the ID type.
68  */
69 typedef herr_t (*H5I_free_t)(void*);
70 
71 /* Type of the function to compare objects & keys */
72 typedef int (*H5I_search_func_t)(void *obj, hid_t id, void *key);
73 
74 #ifdef __cplusplus
75 extern "C" {
76 #endif
77 
78 /* Public API functions */
79 
80 H5_DLL hid_t H5Iregister(H5I_type_t type, const void *object);
81 H5_DLL void *H5Iobject_verify(hid_t id, H5I_type_t id_type);
82 H5_DLL void *H5Iremove_verify(hid_t id, H5I_type_t id_type);
83 H5_DLL H5I_type_t H5Iget_type(hid_t id);
84 H5_DLL hid_t H5Iget_file_id(hid_t id);
85 H5_DLL ssize_t H5Iget_name(hid_t id, char *name/*out*/, size_t size);
86 H5_DLL int H5Iinc_ref(hid_t id);
87 H5_DLL int H5Idec_ref(hid_t id);
88 H5_DLL int H5Iget_ref(hid_t id);
89 H5_DLL H5I_type_t H5Iregister_type(size_t hash_size, unsigned reserved, H5I_free_t free_func);
95 H5_DLL void *H5Isearch(H5I_type_t type, H5I_search_func_t func, void *key);
96 H5_DLL herr_t H5Inmembers(H5I_type_t type, hsize_t *num_members);
98 H5_DLL htri_t H5Iis_valid(hid_t id);
99 
100 #ifdef __cplusplus
101 }
102 #endif
103 #endif /* _H5Ipublic_H */
104 
H5_DLL int H5Iget_type_ref(H5I_type_t type)
H5_DLL int H5Iget_ref(hid_t id)
unsigned int hbool_t
Definition: H5public.h:125
#define H5_DLL
Definition: H5api_adpt.h:406
H5_DLL void * H5Isearch(H5I_type_t type, H5I_search_func_t func, void *key)
int herr_t
Definition: H5public.h:107
H5_DLL hid_t H5Iregister(H5I_type_t type, const void *object)
herr_t(* H5I_free_t)(void *)
Definition: H5Ipublic.h:69
unsigned long long hsize_t
Definition: H5public.h:151
H5_DLL void * H5Iremove_verify(hid_t id, H5I_type_t id_type)
H5_DLL herr_t H5Idestroy_type(H5I_type_t type)
GLsizeiptr size
Definition: glcorearb.h:663
H5_DLL herr_t H5Inmembers(H5I_type_t type, hsize_t *num_members)
GLuint id
Definition: glcorearb.h:654
H5_DLL htri_t H5Iis_valid(hid_t id)
H5I_type_t
Definition: H5Ipublic.h:36
int(* H5I_search_func_t)(void *obj, hid_t id, void *key)
Definition: H5Ipublic.h:72
H5_DLL int H5Iinc_ref(hid_t id)
int hid_t
Definition: H5Ipublic.h:56
GLuint const GLchar * name
Definition: glcorearb.h:785
H5_DLL void * H5Iobject_verify(hid_t id, H5I_type_t id_type)
H5_DLL int H5Idec_type_ref(H5I_type_t type)
H5_DLL ssize_t H5Iget_name(hid_t id, char *name, size_t size)
H5_DLL herr_t H5Iclear_type(H5I_type_t type, hbool_t force)
H5_DLL hid_t H5Iget_file_id(hid_t id)
GLenum func
Definition: glcorearb.h:782
typedef int
Definition: png.h:1175
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:107
H5_DLL int H5Idec_ref(hid_t id)
H5_DLL int H5Iinc_type_ref(H5I_type_t type)
H5_DLL htri_t H5Itype_exists(H5I_type_t type)
int htri_t
Definition: H5public.h:126
H5_DLL H5I_type_t H5Iregister_type(size_t hash_size, unsigned reserved, H5I_free_t free_func)
H5_DLL H5I_type_t H5Iget_type(hid_t id)