summaryrefslogtreecommitdiffstats
path: root/src/H5Tprivate.h
blob: c780b0b3a859074f0bb0ebe0375eb5889e93f796 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/****************************************************************************
 * 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.                                                        *
 *                                                                          *
 ****************************************************************************/

/* $Id$ */

/*
 * This file contains private information about the H5T module
 */

#ifndef _H5Tprivate_H
#define _H5Tprivate_H
#include <H5Tpublic.h>

/* Private headers needed by this file */
#include <H5private.h>
#include <H5Cprivate.h>		/*for hobjtype_t defn*/

#define H5T_RESERVED_ATOMS  8

/* Structure for storing information about a field in a compound datatype */
typedef struct {
    char *name;         /* Name of the field */
    uintn name_off;     /* Offset of name in global small-data heap */
    uintn struct_off;   /* Offset of field within structure */
    h5_atomic_type_t dt;  /* Datatype of the field */
    hatom_t dim_id;     /* dimensionality ID of the field */
  } h5_field_info_t;

/* Structure for storing information about a compound datatype */
typedef struct {
    uintn n;            /* Number of fields */
    uintn mem_size;     /* Size of the compound structure in memory */
    uintn disk_size;    /* Size of the compound structure on disk */
    h5_field_info_t *flist;   /* List of fields in the compound object */
  } h5_compound_info_t;

/* Structure for storing information any datatype */
typedef struct {
    h5_atomic_type_t  dt;     /* Base type of this object */
    char *name;               /* Name of datatype */
    h5_compound_info_t *ci;   /* Information for compound datatypes */
  } h5_datatype_t;

/* Private functions */
hatom_t H5T_create(hatom_t owner_id, hobjtype_t type, const char *name);
hbool_t H5T_is_atomic(h5_datatype_t *type);
herr_t H5T_release(hatom_t oid);

#endif