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 HDF.  The full HDF copyright notice, including       *
7  * terms governing use, modification, and redistribution, is contained in    *
8  * the COPYING file, which can be found at the root of the source code       *
9  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF/releases/.  *
10  * If you do not have access to either file, you may request a copy from     *
11  * help@hdfgroup.org.                                                        *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /* $Id$ */
15 
16 /*------------------------------------------------------------------------------
17  * File:    dfan.h
18  * Purpose: header file for the Annotations set
19  * Invokes: df.h
20  * Contents:
21  *  Structure definitions: DFANdirentry, DFANdirhead
22  *  Constant definitions: DFAN_LABEL, DFAN_DESC
23  * Remarks: none
24  *----------------------------------------------------------------------------*/
25 
26 #ifndef DFAN_H  /* avoid re-inclusion */
27 #define DFAN_H
28 
29 #include "hdf.h"
30 
31 #define DFAN_LABEL  0
32 #define DFAN_DESC   1
33 
34 #define DFAN_LAB_BLKSIZE   64   /* default blksize to use for labels */
35 #define DFAN_DESC_BLKSIZE 512   /* default blksize to use for descriptions */
36 
37 #define DFAN_DEFENTRIES 16  /* no of dir entries to add at a time */
38 
39 /*
40  * This structure stores an entry in the label/desc directory
41  * for a label/desc in the file, it gives the ref of the label/desc,
42  * and the tag/ref of the data item to which the label/desc relates
43  */
44 typedef struct
45   {
46       uint16      annref;       /* ref of annotation */
47       uint16      datatag;      /* tag of data */
48       uint16      dataref;      /* ref of data */
49   }
50 DFANdirentry;
51 
52 /*
53  * This structure is a head node for the directory, which is organized as
54  * as a linked list of arrays.  DFANdirentry is the structure of an
55  * array element, while DFANdirhead is the list element
56  */
57 typedef struct DFANdirhead
58   {
59       struct DFANdirhead *next; /* list element */
60       int32       nentries;     /* Numer of entries */
61       DFANdirentry *entries;  /* actually an arbitrary size array */
62   }
63 DFANdirhead;
64 
65 #endif /* DFAN_H */
66