1 /*===========================================================================
2 *
3 *                            PUBLIC DOMAIN NOTICE
4 *               National Center for Biotechnology Information
5 *
6 *  This software/database is a "United States Government Work" under the
7 *  terms of the United States Copyright Act.  It was written as part of
8 *  the author's official duties as a United States Government employee and
9 *  thus cannot be copyrighted.  This software/database is freely available
10 *  to the public for use. The National Library of Medicine and the U.S.
11 *  Government have not placed any restriction on its use or reproduction.
12 *
13 *  Although all reasonable efforts have been taken to ensure the accuracy
14 *  and reliability of the software and data, the NLM and the U.S.
15 *  Government do not and cannot warrant the performance or results that
16 *  may be obtained by using this software or data. The NLM and the U.S.
17 *  Government disclaim all warranties, express or implied, including
18 *  warranties of performance, merchantability or fitness for any particular
19 *  purpose.
20 *
21 *  Please cite the author in any work or product based on this material.
22 *
23 * ===========================================================================
24 *
25 */
26 
27 #ifndef _h_kdbfmt_priv_
28 #define _h_kdbfmt_priv_
29 
30 #ifndef _h_klib_defs_
31 #include <klib/defs.h>
32 #endif
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 
39 /*--------------------------------------------------------------------------
40  * KDBHdr
41  *  the various file types used:
42  *
43  *  a) metadata
44  *  b) key => id
45  *  c) id => key
46  *
47  * will begin with a standard header to tag format
48  */
49 #define eByteOrderTag 0x05031988
50 #define eByteOrderReverse 0x88190305
51 
52 typedef struct KDBHdr KDBHdr;
53 struct KDBHdr
54 {
55     uint32_t endian;
56     uint32_t version;
57 };
58 
59 /* KDBHdrInit
60  *  simple initialization
61  */
62 #define KDBHdrInit( hdr, vers ) \
63     ( void ) ( ( hdr ) -> endian = eByteOrderTag, ( hdr ) -> version = vers )
64 
65 /* KDBHdrValidate
66  *  validates that a header sports a supported byte order
67  *  and that the version is within range
68  */
69 rc_t KDBHdrValidate ( const KDBHdr *hdr, size_t size,
70     uint32_t min_vers, uint32_t max_vers );
71 
72 #ifdef __cplusplus
73 }
74 #endif
75 
76 #endif /* _h_kdbfmt_priv_ */
77