Commit | Line | Data |
---|---|---|
e4598559 MW |
1 | /* |
2 | * ports-internal.h - internal-only declarations for ports. | |
3 | * | |
4 | * Copyright (C) 2013 Free Software Foundation, Inc. | |
5 | * | |
6 | * This library is free software; you can redistribute it and/or | |
7 | * modify it under the terms of the GNU Lesser General Public License | |
8 | * as published by the Free Software Foundation; either version 3 of | |
9 | * the License, or (at your option) any later version. | |
10 | * | |
11 | * This library is distributed in the hope that it will be useful, but | |
12 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | * Lesser General Public License for more details. | |
15 | * | |
16 | * You should have received a copy of the GNU Lesser General Public | |
17 | * License along with this library; if not, write to the Free Software | |
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | |
19 | * 02110-1301 USA | |
20 | */ | |
21 | ||
22 | #ifndef SCM_PORTS_INTERNAL | |
23 | #define SCM_PORTS_INTERNAL | |
24 | ||
25 | #include "libguile/_scm.h" | |
26 | #include "libguile/ports.h" | |
27 | ||
337edc59 MW |
28 | enum scm_port_encoding_mode { |
29 | SCM_PORT_ENCODING_MODE_UTF8, | |
30 | SCM_PORT_ENCODING_MODE_ICONV | |
31 | }; | |
32 | ||
33 | typedef enum scm_port_encoding_mode scm_t_port_encoding_mode; | |
34 | ||
35 | /* This is a separate object so that only those ports that use iconv | |
36 | cause finalizers to be registered (FIXME: although currently in 2.0 | |
37 | finalizers are always registered for ports anyway). */ | |
38 | struct scm_iconv_descriptors | |
e4598559 MW |
39 | { |
40 | /* input/output iconv conversion descriptors */ | |
41 | void *input_cd; | |
42 | void *output_cd; | |
43 | }; | |
44 | ||
337edc59 MW |
45 | typedef struct scm_iconv_descriptors scm_t_iconv_descriptors; |
46 | ||
47 | struct scm_port_internal | |
48 | { | |
49 | scm_t_port_encoding_mode encoding_mode; | |
50 | scm_t_iconv_descriptors *iconv_descriptors; | |
51 | }; | |
52 | ||
e4598559 MW |
53 | typedef struct scm_port_internal scm_t_port_internal; |
54 | ||
55 | #define SCM_PORT_GET_INTERNAL(x) \ | |
56 | ((scm_t_port_internal *) (SCM_PTAB_ENTRY(x)->input_cd)) | |
57 | ||
337edc59 MW |
58 | SCM_INTERNAL scm_t_iconv_descriptors *scm_i_port_iconv_descriptors (SCM port); |
59 | ||
e4598559 | 60 | #endif |