1 /* $FreeBSD$ */ 2 /* $NetBSD: citrus_iconv_std_local.h,v 1.2 2003/07/01 09:42:16 tshiozak Exp $ */ 3 4 /*- 5 * Copyright (c)2003 Citrus Project, 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30 #ifndef _CITRUS_ICONV_STD_LOCAL_H_ 31 #define _CITRUS_ICONV_STD_LOCAL_H_ 32 33 /* 34 * encoding 35 */ 36 struct _citrus_iconv_std_encoding { 37 struct _citrus_stdenc *se_handle; 38 void *se_ps; 39 void *se_pssaved; 40 }; 41 42 /* 43 * dst 44 */ 45 struct _citrus_iconv_std_dst { 46 TAILQ_ENTRY(_citrus_iconv_std_dst) sd_entry; 47 struct _citrus_csmapper *sd_mapper; 48 _citrus_csid_t sd_csid; 49 unsigned long sd_norm; 50 }; 51 TAILQ_HEAD(_citrus_iconv_std_dst_list, _citrus_iconv_std_dst); 52 53 /* 54 * src 55 */ 56 struct _citrus_iconv_std_src { 57 TAILQ_ENTRY(_citrus_iconv_std_src) ss_entry; 58 struct _citrus_iconv_std_dst_list ss_dsts; 59 _citrus_csid_t ss_csid; 60 }; 61 TAILQ_HEAD(_citrus_iconv_std_src_list, _citrus_iconv_std_src); 62 63 /* 64 * iconv_std handle 65 */ 66 struct _citrus_iconv_std_shared { 67 struct _citrus_stdenc *is_dst_encoding; 68 struct _citrus_stdenc *is_src_encoding; 69 struct _citrus_iconv_std_src_list is_srcs; 70 _citrus_wc_t is_invalid; 71 int is_use_invalid; 72 }; 73 74 /* 75 * iconv_std context 76 */ 77 struct _citrus_iconv_std_context { 78 struct _citrus_iconv_std_encoding sc_dst_encoding; 79 struct _citrus_iconv_std_encoding sc_src_encoding; 80 }; 81 82 #endif 83