xref: /netbsd-src/external/gpl3/binutils/dist/libsframe/sframe-impl.h (revision cb63e24e8d6aae7ddac1859a9015f48b1d8bd90e)
1 /* Implementation header.
2 
3    Copyright (C) 2022-2024 Free Software Foundation, Inc.
4 
5    This file is part of libsframe.
6 
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 #ifndef _SFRAME_IMPL_H
21 #define _SFRAME_IMPL_H
22 
23 #include "sframe-api.h"
24 
25 #ifdef  __cplusplus
26 extern "C"
27 {
28 #endif
29 
30 #include <assert.h>
31 #define sframe_assert(expr) (assert (expr))
32 
33 struct sframe_decoder_ctx
34 {
35   /* SFrame header.  */
36   sframe_header sfd_header;
37   /* SFrame function desc entries table.  */
38   sframe_func_desc_entry *sfd_funcdesc;
39   /* SFrame FRE table.  */
40   char *sfd_fres;
41   /* Number of bytes needed for SFrame FREs.  */
42   int sfd_fre_nbytes;
43   /* Reference to the internally malloc'd buffer, if any, for endian flipping
44      the original input buffer before decoding.  */
45   void *sfd_buf;
46 };
47 
48 typedef struct sf_fde_tbl sf_fde_tbl;
49 typedef struct sf_fre_tbl sf_fre_tbl;
50 
51 struct sframe_encoder_ctx
52 {
53   /* SFrame header.  */
54   sframe_header sfe_header;
55   /* SFrame function desc entries table.  */
56   sf_fde_tbl *sfe_funcdesc;
57   /* SFrame FRE table.  */
58   sf_fre_tbl *sfe_fres;
59   /* Number of bytes needed for SFrame FREs.  */
60   uint32_t sfe_fre_nbytes;
61   /* SFrame output data buffer.  */
62   char *sfe_data;
63   /* Size of the SFrame output data buffer.  */
64   size_t sfe_data_size;
65 };
66 
67 #ifdef  __cplusplus
68 }
69 #endif
70 
71 #endif /* _SFRAME_IMPL_H */
72