1/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
2   This file is part of the GNU C Library.
3   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library; if not, write to the Free
17   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18   02111-1307 USA.  */
19
20#include <limits.h>
21
22#include <locale/localeinfo.h>
23#include <wcsmbsload.h>
24#include <iconv/gconv_int.h>
25
26
27/* These are the descriptions for the default conversion functions.  */
28static struct __gconv_step to_wc =
29{
30  .__shlib_handle = NULL,
31  .__modname = NULL,
32  .__counter = INT_MAX,
33  .__from_name = (char *) "MULTIBYTE",
34  .__to_name = (char *) "WCHAR",
35  .__fct = __gconv_transform_multibyte_wchar,
36  .__init_fct = NULL,
37  .__end_fct = NULL,
38  .__min_needed_from = 1,
39  .__max_needed_from = MB_LEN_MAX,
40  .__min_needed_to = 4,
41  .__max_needed_to = 4,
42  .__stateful = 0,
43  .__data = NULL
44};
45
46static struct __gconv_step to_mb =
47{
48  .__shlib_handle = NULL,
49  .__modname = NULL,
50  .__counter = INT_MAX,
51  .__from_name = (char *) "WCHAR",
52  .__to_name = (char *) "MULTIBYTE",
53  .__fct = __gconv_transform_wchar_multibyte,
54  .__init_fct = NULL,
55  .__end_fct = NULL,
56  .__min_needed_from = 4,
57  .__max_needed_from = 4,
58  .__min_needed_to = 1,
59  .__max_needed_to = MB_LEN_MAX,
60  .__stateful = 0,
61  .__data = NULL
62};
63
64
65/* For the default locale we only have to handle ANSI_X3.4-1968.  */
66struct gconv_fcts __wcsmbs_gconv_fcts =
67{
68  .towc = &to_wc,
69  .towc_nsteps = 1,
70  .tomb = &to_mb,
71  .tomb_nsteps = 1
72};
73
74
75/* Clone the current conversion function set.  */
76void
77internal_function
78__wcsmbs_clone_conv (struct gconv_fcts *copy)
79{
80  /* Copy the data.  */
81  *copy = __wcsmbs_gconv_fcts;
82}
83