/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * Copyright by the Board of Trustees of the University of Illinois. * * All rights reserved. * * * * This file is part of HDF. The full HDF copyright notice, including * * terms governing use, modification, and redistribution, is contained in * * the files COPYING and Copyright.html. COPYING can be found at the root * * of the source code distribution tree; Copyright.html can be found at * * http://hdfgroup.org/products/hdf4/doc/Copyright.html. If you do not have * * access to either file, you may request a copy from help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* $Id: hcompi.h 4932 2007-09-07 17:17:23Z bmribler $ */ /*----------------------------------------------------------------------------- * File: hcompi.h * Purpose: Internal library header file for compression information * Dependencies: should be included after hdf.h * Invokes: * Contents: * Structure definitions: * Constant definitions: *---------------------------------------------------------------------------*/ /* avoid re-inclusion */ #ifndef __HCOMPI_H #define __HCOMPI_H #include "hfile.h" /* Modeling information */ /* structure for storing modeling information */ /* only allow modeling and master compression routines access */ #include "mstdio.h" /* stdio modeling header */ typedef struct comp_model_info_tag { comp_model_t model_type; /* model this stream is using */ union { /* union of all the different types of model information */ comp_model_stdio_info_t stdio_info; /* stdio model info */ } model_info; funclist_t model_funcs; /* functions to perform modeling */ } comp_model_info_t; /* Coding information */ /* structure for storing modeling information */ /* only allow encoding and master compression routines access */ #include "cnone.h" /* no encoding header */ #include "crle.h" /* run-length encoding header */ #include "cnbit.h" /* N-bit encoding header */ #include "cskphuff.h" /* Skipping huffman encoding header */ #include "cdeflate.h" /* gzip 'deflate' encoding header */ #include "cszip.h" /* szip encoding header */ typedef struct comp_coder_info_tag { comp_coder_t coder_type; /* coding scheme this stream is using */ union { /* union of all the different types of coding information */ comp_coder_none_info_t none_info; /* "None" coding info */ comp_coder_rle_info_t rle_info; /* RLE coding info */ comp_coder_nbit_info_t nbit_info; /* N-bit coding info */ comp_coder_skphuff_info_t skphuff_info; /* Skipping huffman coding info */ comp_coder_deflate_info_t deflate_info; /* gzip 'deflate' coding info */ comp_coder_szip_info_t szip_info; /* szip coding info */ } coder_info; funclist_t coder_funcs; /* functions to perform encoding */ } comp_coder_info_t; /* structure for storing a state */ typedef struct comp_stateinfo_tag { uint32 d_offset; /* the offset of the state in the dataset */ uint32 c_offset; /* offset of the state in the compressed data */ comp_model_info_t minfo; /* modeling information */ comp_coder_info_t cinfo; /* coding information */ } comp_stateinfo_t; /* structure for storing state caching information */ typedef struct comp_state_cache_tag { intn num_states; /* the number of states cached */ comp_stateinfo_t **comp_state; /* pointer to an array of pointers to compression states */ } comp_state_cache_t; /* compinfo_t -- compressed element information structure */ typedef struct compinfo_tag { intn attached; /* number of access records attached to this information structure */ int32 length; /* the actual length of the data elt */ uint16 comp_ref; /* compressed info ref. number */ int32 aid; /* AID of the compressed info */ comp_model_info_t minfo; /* modeling information */ comp_coder_info_t cinfo; /* coding information */ intn caching; /* whether caching is turned on */ comp_state_cache_t sinfo; /* state information for caching */ } compinfo_t; #endif /* __HCOMPI_H */