1219019Sgabor/* $FreeBSD: releng/11.0/lib/libiconv_modules/iconv_std/citrus_iconv_std_local.h 219019 2011-02-25 00:04:39Z gabor $ */
2219019Sgabor/*	$NetBSD: citrus_iconv_std_local.h,v 1.2 2003/07/01 09:42:16 tshiozak Exp $	*/
3219019Sgabor
4219019Sgabor/*-
5219019Sgabor * Copyright (c)2003 Citrus Project,
6219019Sgabor * All rights reserved.
7219019Sgabor *
8219019Sgabor * Redistribution and use in source and binary forms, with or without
9219019Sgabor * modification, are permitted provided that the following conditions
10219019Sgabor * are met:
11219019Sgabor * 1. Redistributions of source code must retain the above copyright
12219019Sgabor *    notice, this list of conditions and the following disclaimer.
13219019Sgabor * 2. Redistributions in binary form must reproduce the above copyright
14219019Sgabor *    notice, this list of conditions and the following disclaimer in the
15219019Sgabor *    documentation and/or other materials provided with the distribution.
16219019Sgabor *
17219019Sgabor * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18219019Sgabor * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19219019Sgabor * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20219019Sgabor * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21219019Sgabor * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22219019Sgabor * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23219019Sgabor * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24219019Sgabor * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25219019Sgabor * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26219019Sgabor * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27219019Sgabor * SUCH DAMAGE.
28219019Sgabor */
29219019Sgabor
30219019Sgabor#ifndef _CITRUS_ICONV_STD_LOCAL_H_
31219019Sgabor#define _CITRUS_ICONV_STD_LOCAL_H_
32219019Sgabor
33219019Sgabor/*
34219019Sgabor * encoding
35219019Sgabor */
36219019Sgaborstruct _citrus_iconv_std_encoding {
37219019Sgabor	struct _citrus_stdenc	*se_handle;
38219019Sgabor	void			*se_ps;
39219019Sgabor	void			*se_pssaved;
40219019Sgabor};
41219019Sgabor
42219019Sgabor/*
43219019Sgabor * dst
44219019Sgabor */
45219019Sgaborstruct _citrus_iconv_std_dst {
46219019Sgabor	TAILQ_ENTRY(_citrus_iconv_std_dst)	 sd_entry;
47219019Sgabor	struct _citrus_csmapper			*sd_mapper;
48219019Sgabor	_citrus_csid_t				 sd_csid;
49219019Sgabor	unsigned long				 sd_norm;
50219019Sgabor};
51219019SgaborTAILQ_HEAD(_citrus_iconv_std_dst_list, _citrus_iconv_std_dst);
52219019Sgabor
53219019Sgabor/*
54219019Sgabor * src
55219019Sgabor */
56219019Sgaborstruct _citrus_iconv_std_src {
57219019Sgabor	TAILQ_ENTRY(_citrus_iconv_std_src)	 ss_entry;
58219019Sgabor	struct _citrus_iconv_std_dst_list	 ss_dsts;
59219019Sgabor	_citrus_csid_t				 ss_csid;
60219019Sgabor};
61219019SgaborTAILQ_HEAD(_citrus_iconv_std_src_list, _citrus_iconv_std_src);
62219019Sgabor
63219019Sgabor/*
64219019Sgabor * iconv_std handle
65219019Sgabor */
66219019Sgaborstruct _citrus_iconv_std_shared {
67219019Sgabor	struct _citrus_stdenc			*is_dst_encoding;
68219019Sgabor	struct _citrus_stdenc			*is_src_encoding;
69219019Sgabor	struct _citrus_iconv_std_src_list	 is_srcs;
70219019Sgabor	_citrus_wc_t				 is_invalid;
71219019Sgabor	int					 is_use_invalid;
72219019Sgabor};
73219019Sgabor
74219019Sgabor/*
75219019Sgabor * iconv_std context
76219019Sgabor */
77219019Sgaborstruct _citrus_iconv_std_context {
78219019Sgabor	struct _citrus_iconv_std_encoding	 sc_dst_encoding;
79219019Sgabor	struct _citrus_iconv_std_encoding	 sc_src_encoding;
80219019Sgabor};
81219019Sgabor
82219019Sgabor#endif
83