[svn-r743] Added H5I_type_t type to H5_trace and added H5Iget_type function call. Also

checked in H5R skeleton files.
This commit is contained in:
Quincey Koziol 1998-10-07 16:04:51 -05:00
parent fe135c15da
commit c4f1dfcf17
9 changed files with 355 additions and 104 deletions

View File

@ -1,34 +1,3 @@
H5.o: \
H5.c \
H5private.h \
H5public.h \
H5config.h \
H5ACprivate.h \
H5ACpublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Ipublic.h \
H5Dpublic.h \
H5Bprivate.h \
H5Bpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5Iprivate.h \
H5MMprivate.h \
H5MMpublic.h \
H5Pprivate.h \
H5Ppublic.h \
H5Zpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Oprivate.h \
H5Opublic.h \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5A.o: \
H5A.c \
H5private.h \
@ -324,6 +293,39 @@ H5Fstdio.o: \
H5Dpublic.h \
H5MMprivate.h \
H5MMpublic.h
H5G.o: \
H5G.c \
H5private.h \
H5public.h \
H5config.h \
H5Aprivate.h \
H5Apublic.h \
H5Ipublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Bprivate.h \
H5Bpublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Dpublic.h \
H5Dprivate.h \
H5Oprivate.h \
H5Opublic.h \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5Gpkg.h \
H5ACprivate.h \
H5ACpublic.h \
H5HLprivate.h \
H5HLpublic.h
H5Gent.o: \
H5Gent.c \
H5private.h \
@ -440,14 +442,6 @@ H5HL.o: \
H5MFprivate.h \
H5MFpublic.h \
H5MMprivate.h
H5I.o: \
H5I.c \
H5private.h \
H5public.h \
H5config.h \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5MF.o: \
H5MF.c \
H5private.h \
@ -824,6 +818,42 @@ H5P.o: \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.h
H5R.o: \
H5R.c \
H5private.h \
H5public.h \
H5config.h \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5RA.o: \
H5RA.c \
H5RAprivate.h \
H5RApublic.h \
H5Ipublic.h \
H5public.h \
H5config.h \
H5Dprivate.h \
H5Dpublic.h \
H5private.h \
H5Fprivate.h \
H5Fpublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Bprivate.h \
H5Bpublic.h \
H5Oprivate.h \
H5Opublic.h \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.h \
H5Eprivate.h \
H5Epublic.h
H5S.o: \
H5S.c \
H5private.h \
@ -1122,64 +1152,42 @@ H5Z.o: \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.h
H5G.o: \
H5G.c \
H5.o: \
H5.c \
H5private.h \
H5public.h \
H5config.h \
H5Aprivate.h \
H5Apublic.h \
H5Ipublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Bprivate.h \
H5Bpublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Dpublic.h \
H5Dprivate.h \
H5Oprivate.h \
H5Opublic.h \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5Gpkg.h \
H5ACprivate.h \
H5ACpublic.h \
H5HLprivate.h \
H5HLpublic.h
H5RA.o: \
H5RA.c \
H5RAprivate.h \
H5RApublic.h \
H5Ipublic.h \
H5public.h \
H5config.h \
H5Dprivate.h \
H5Dpublic.h \
H5private.h \
H5Fprivate.h \
H5Fpublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Ipublic.h \
H5Dpublic.h \
H5Bprivate.h \
H5Bpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5Iprivate.h \
H5MMprivate.h \
H5MMpublic.h \
H5Pprivate.h \
H5Ppublic.h \
H5Zpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Oprivate.h \
H5Opublic.h \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.h \
H5Eprivate.h \
H5Epublic.h
H5Tpublic.h
H5I.o: \
H5I.c \
H5private.h \
H5public.h \
H5config.h \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h

View File

@ -1745,6 +1745,66 @@ H5_trace (hbool_t returning, const char *func, const char *type, ...)
}
break;
case 't':
if (ptr) {
if (vp) {
fprintf (out, "0x%lx", (unsigned long)vp);
} else {
fprintf(out, "NULL");
}
} else {
H5I_type_t id_type = va_arg (ap, H5I_type_t);
switch (id_type) {
case H5I_BADID:
fprintf (out, "H5I_BADID");
break;
case H5I_FILE:
fprintf (out, "H5I_FILE");
break;
case H5I_TEMPLATE_0:
case H5I_TEMPLATE_1:
case H5I_TEMPLATE_2:
case H5I_TEMPLATE_3:
case H5I_TEMPLATE_4:
case H5I_TEMPLATE_5:
case H5I_TEMPLATE_6:
case H5I_TEMPLATE_7:
fprintf (out, "H5I_TEMPLATE_%d",(int)(id_type-H5I_TEMPLATE_0));
break;
case H5I_GROUP:
fprintf (out, "H5I_GROUP");
break;
case H5I_DATATYPE:
fprintf (out, "H5I_DATATYPE");
break;
case H5I_DATASPACE:
fprintf (out, "H5I_DATASPACE");
break;
case H5I_DATASET:
fprintf (out, "H5I_DATASET");
break;
case H5I_ATTR:
fprintf (out, "H5I_ATTR");
break;
case H5I_TEMPBUF:
fprintf (out, "H5I_TEMPBUF");
break;
case H5I_RAGGED:
fprintf (out, "H5I_RAGGED");
break;
case H5I_REFERENCE:
fprintf (out, "H5I_REFERENCE");
break;
case H5I_MAXID:
fprintf (out, "H5I_MAXID");
break;
default:
fprintf (out, "%ld", (long)id_type);
break;
}
}
break;
default:
fprintf (out, "BADTYPE(I%c)", type[1]);
goto error;

View File

@ -84,13 +84,13 @@ static herr_t H5I_init_interface(void);
# define ID_CACHE_SIZE 4 /*# of previous atoms cached */
#endif
/* # of bits to use for Group ID in each atom (change if H5I_MAXID>16) */
#define GROUP_BITS 8
#define GROUP_MASK 0xFF
/* # of bits to use for Group ID in each atom (change if H5I_MAXID>32) */
#define GROUP_BITS 5
#define GROUP_MASK 0x1F
/* # of bits to use for the Atom index in each atom (assumes 8-bit bytes) */
#define ID_BITS ((sizeof(hid_t)*8)-GROUP_BITS)
#define ID_MASK 0x0FFFFFFF
#define ID_MASK 0x07FFFFFF
/* Map an atom to a Group number */
#define H5I_GROUP(a) ((H5I_type_t) \
@ -148,6 +148,9 @@ H5I_init_interface(void)
herr_t ret_value = SUCCEED;
FUNC_ENTER(H5I_init_interface, FAIL);
/* Make certain the ID types don't overflow the number of bits allocated for them in an ID */
assert((int)H5I_MAXID<=(int)pow((double)2.0,(double)GROUP_BITS));
/* Registers the cleanup routine with the exit chain */
ret_value = H5_add_exit(&H5I_term_interface);
@ -551,13 +554,38 @@ H5I_get_type(hid_t id)
FUNC_ENTER(H5I_get_type, H5I_BADID);
ret_value = H5I_GROUP(id);
if (ret_value <= H5I_BADID || ret_value >= H5I_MAXID) {
HGOTO_DONE(H5I_BADID);
}
assert(id>H5I_BADID && id<H5I_MAXID);
done:
ret_value = H5I_GROUP(id);
FUNC_LEAVE(ret_value);
}
/******************************************************************************
NAME
H5Iget_type - Returns the type of an ID
DESCRIPTION
Retrieves the type of an ID.
RETURNS
Returns group if successful and H5I_BADID otherwise
*******************************************************************************/
H5I_type_t
H5Iget_type(hid_t id)
{
H5I_type_t ret_value = H5I_BADID;
FUNC_ENTER(H5Iget_type, H5I_BADID);
H5TRACE1("It","i",id);
if (ret_value <= H5I_BADID || ret_value >= H5I_MAXID)
HGOTO_DONE(H5I_BADID);
ret_value = H5I_get_type(id);
done:
FUNC_LEAVE(ret_value);
}

View File

@ -33,9 +33,10 @@
#define H5I_DATASETID_HASHSIZE 64
#define H5I_OID_HASHSIZE 64
#define H5I_GROUPID_HASHSIZE 64
#define H5I_ATTRID_HASHSIZE 64
#define H5I_TEMPBUFID_HASHSIZE 64
#define H5I_RAGGED_HASHSIZE 64
#define H5I_ATTRID_HASHSIZE 64
#define H5I_TEMPBUFID_HASHSIZE 64
#define H5I_RAGGED_HASHSIZE 64
#define H5I_REFID_HASHSIZE 64
/* Atom information structure used */
typedef struct H5I_id_info_t {

View File

@ -44,8 +44,10 @@ typedef enum {
H5I_DATASET, /*group ID for Dataset objects */
H5I_ATTR, /*group ID for Attribute objects */
H5I_TEMPBUF, /*group ID for Temporary buffer objects */
H5I_RAGGED, /*group ID for Ragged array objects */
H5I_RAGGED, /*group ID for Ragged array objects */
H5I_REFERENCE, /*group ID for Reference objects */
H5I_MAXID /*highest group in group_t (Invalid as true group)*/
/* Change the GROUP_BITS in H5I.c if the MAXID gets larger than 32 */
} H5I_type_t;
/* Type of atoms to return to users */
@ -55,6 +57,8 @@ typedef int hid_t;
extern "C" {
#endif
H5I_type_t H5Iget_type(hid_t id);
#ifdef __cplusplus
}

83
src/H5R.c Normal file
View File

@ -0,0 +1,83 @@
/****************************************************************************
* NCSA HDF *
* Software Development Group *
* National Center for Supercomputing Applications *
* University of Illinois at Urbana-Champaign *
* 605 E. Springfield, Champaign IL 61820 *
* *
* For conditions of distribution and use, see the accompanying *
* hdf/COPYING file. *
* *
****************************************************************************/
#ifdef RCSID
static char RcsId[] = "@(#)$Revision$";
#endif
/* $Id$ */
#include <H5private.h> /* Generic Functions */
#include <H5Iprivate.h> /* ID Functions */
#include <H5Eprivate.h> /* Error handling */
#include <H5Rprivate.h> /* Data-space functions */
/* Interface initialization */
#define PABLO_MASK H5R_mask
#define INTERFACE_INIT H5R_init_interface
static intn interface_initialize_g = FALSE;
static herr_t H5R_init_interface(void);
static void H5R_term_interface(void);
/*--------------------------------------------------------------------------
NAME
H5R_init_interface -- Initialize interface-specific information
USAGE
herr_t H5R_init_interface()
RETURNS
SUCCEED/FAIL
DESCRIPTION
Initializes any interface-specific data or routines.
--------------------------------------------------------------------------*/
static herr_t
H5R_init_interface(void)
{
herr_t ret_value = SUCCEED;
FUNC_ENTER(H5R_init_interface, FAIL);
/* Initialize the atom group for the file IDs */
if ((ret_value = H5I_init_group(H5I_REFERENCE, H5I_REFID_HASHSIZE,
H5R_RESERVED_ATOMS, (herr_t (*)(void *)) NULL)) != FAIL) {
ret_value = H5_add_exit(&H5R_term_interface);
}
FUNC_LEAVE(ret_value);
} /* end H5R_init_interface() */
/*--------------------------------------------------------------------------
NAME
H5R_term_interface
PURPOSE
Terminate various H5R objects
USAGE
void H5R_term_interface()
RETURNS
SUCCEED/FAIL
DESCRIPTION
Release the atom group and any other resources allocated.
GLOBAL VARIABLES
COMMENTS, BUGS, ASSUMPTIONS
Can't report errors...
EXAMPLES
REVISION LOG
--------------------------------------------------------------------------*/
static void
H5R_term_interface(void)
{
/* Free ID group */
H5I_destroy_group(H5I_REFERENCE);
} /* end H5R_term_interface() */

31
src/H5Rprivate.h Normal file
View File

@ -0,0 +1,31 @@
/****************************************************************************
* NCSA HDF *
* Software Development Group *
* National Center for Supercomputing Applications *
* University of Illinois at Urbana-Champaign *
* 605 E. Springfield, Champaign IL 61820 *
* *
* For conditions of distribution and use, see the accompanying *
* hdf/COPYING file. *
* *
****************************************************************************/
/*
* This file contains private information about the H5S module
*/
#ifndef _H5Rprivate_H
#define _H5Rprivate_H
#include <H5Rpublic.h>
/* Private headers needed by this file */
#include <H5private.h>
#define H5R_RESERVED_ATOMS 0
/* Internal data structures */
/* Private functions */
#endif /* _H5Rprivate_H */

35
src/H5Rpublic.h Normal file
View File

@ -0,0 +1,35 @@
/****************************************************************************
* NCSA HDF *
* Software Development Group *
* National Center for Supercomputing Applications *
* University of Illinois at Urbana-Champaign *
* 605 E. Springfield, Champaign IL 61820 *
* *
* For conditions of distribution and use, see the accompanying *
* hdf/COPYING file. *
* *
****************************************************************************/
/*
* This file contains public declarations for the H5S module.
*/
#ifndef _H5Rpublic_H
#define _H5Rpublic_H
/* Public headers needed by this file */
#include <H5public.h>
#include <H5Ipublic.h>
/* Publicly visible datastructures */
#ifdef __cplusplus
extern "C" {
#endif
/* Functions in H5R.c */
#ifdef __cplusplus
}
#endif
#endif /* _H5Rpublic_H */

View File

@ -19,7 +19,7 @@ LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5D.c H5E.c H5F.c H5Farray.c H5Fcore.c \
H5Fstdio.c H5G.c H5Gent.c H5Gnode.c H5Gstab.c H5HG.c H5HL.c H5I.c H5MF.c \
H5MM.c H5O.c H5Oattr.c H5Ocomp.c H5Ocont.c H5Odtype.c H5Oefl.c H5Ofill.c \
H5Olayout.c H5Omtime.c H5Oname.c H5Onull.c H5Osdspace.c H5Oshared.c \
H5Ostab.c H5P.c H5RA.c H5S.c H5Sall.c H5Shyper.c H5Smpio.c H5Spoint.c \
H5Ostab.c H5P.c H5R.c H5RA.c H5S.c H5Sall.c H5Shyper.c H5Smpio.c H5Spoint.c \
H5Sselect.c H5T.c H5Tbit.c H5Tconv.c H5Tinit.c H5TB.c H5V.c H5Z.c
LIB_OBJ=$(LIB_SRC:.c=.o)
@ -31,14 +31,15 @@ MOSTLYCLEAN=H5detect.o H5detect H5Tinit.o H5Tinit.c
PUB_HDR=H5public.h H5Apublic.h H5ACpublic.h H5Bpublic.h H5Dpublic.h \
H5Epublic.h H5Fpublic.h H5Gpublic.h H5HGpublic.h H5HLpublic.h \
H5Ipublic.h H5MFpublic.h H5MMpublic.h H5Opublic.h H5Ppublic.h \
H5RApublic.h H5Spublic.h H5Tpublic.h H5Zpublic.h H5config.h hdf5.h
H5Rpublic.h H5RApublic.h H5Spublic.h H5Tpublic.h H5Zpublic.h H5config.h \
hdf5.h
# Other header files (not to be installed)...
PRIVATE_HDR=H5private.h H5Aprivate.h H5Apkg.h H5ACprivate.h H5Bprivate.h \
H5Dprivate.h H5Eprivate.h H5Fprivate.h H5Gprivate.h H5Gpkg.h \
H5HGprivate.h H5HLprivate.h H5Iprivate.h H5MFprivate.h H5MMprivate.h \
H5Oprivate.h H5Pprivate.h H5RAprivate.h H5Sprivate.h H5Tprivate.h \
H5TBprivate.h H5Tpkg.h H5Vprivate.h H5Zprivate.h
H5Oprivate.h H5Pprivate.h H5Rprivate.h H5RAprivate.h H5Sprivate.h \
H5Tprivate.h H5TBprivate.h H5Tpkg.h H5Vprivate.h H5Zprivate.h
# Number format detection
H5Tinit.c: H5detect