1*82d5554eStshiozak /* $NetBSD: citrus_mapper_none.c,v 1.2 2003/06/27 17:53:31 tshiozak Exp $ */
204e58308Stshiozak
304e58308Stshiozak /*-
404e58308Stshiozak * Copyright (c)2003 Citrus Project,
504e58308Stshiozak * All rights reserved.
604e58308Stshiozak *
704e58308Stshiozak * Redistribution and use in source and binary forms, with or without
804e58308Stshiozak * modification, are permitted provided that the following conditions
904e58308Stshiozak * are met:
1004e58308Stshiozak * 1. Redistributions of source code must retain the above copyright
1104e58308Stshiozak * notice, this list of conditions and the following disclaimer.
1204e58308Stshiozak * 2. Redistributions in binary form must reproduce the above copyright
1304e58308Stshiozak * notice, this list of conditions and the following disclaimer in the
1404e58308Stshiozak * documentation and/or other materials provided with the distribution.
1504e58308Stshiozak *
1604e58308Stshiozak * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1704e58308Stshiozak * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1804e58308Stshiozak * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1904e58308Stshiozak * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2004e58308Stshiozak * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2104e58308Stshiozak * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2204e58308Stshiozak * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2304e58308Stshiozak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2404e58308Stshiozak * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2504e58308Stshiozak * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2604e58308Stshiozak * SUCH DAMAGE.
2704e58308Stshiozak */
2804e58308Stshiozak
2904e58308Stshiozak #include <sys/cdefs.h>
3004e58308Stshiozak #if defined(LIBC_SCCS) && !defined(lint)
31*82d5554eStshiozak __RCSID("$NetBSD: citrus_mapper_none.c,v 1.2 2003/06/27 17:53:31 tshiozak Exp $");
3204e58308Stshiozak #endif /* LIBC_SCCS and not lint */
3304e58308Stshiozak
3404e58308Stshiozak #include <assert.h>
3504e58308Stshiozak #include <errno.h>
3604e58308Stshiozak #include <stdlib.h>
3704e58308Stshiozak #include <string.h>
38*82d5554eStshiozak #include <sys/queue.h>
3904e58308Stshiozak
4004e58308Stshiozak #include "citrus_namespace.h"
4104e58308Stshiozak #include "citrus_types.h"
4204e58308Stshiozak #include "citrus_module.h"
4304e58308Stshiozak #include "citrus_hash.h"
4404e58308Stshiozak #include "citrus_mapper.h"
4504e58308Stshiozak #include "citrus_mapper_none.h"
4604e58308Stshiozak
4704e58308Stshiozak /* ---------------------------------------------------------------------- */
4804e58308Stshiozak
4904e58308Stshiozak _CITRUS_MAPPER_DECLS(mapper_none);
5004e58308Stshiozak _CITRUS_MAPPER_DEF_OPS(mapper_none);
5104e58308Stshiozak
5204e58308Stshiozak
5304e58308Stshiozak /* ---------------------------------------------------------------------- */
5404e58308Stshiozak
5504e58308Stshiozak int
_citrus_mapper_none_mapper_getops(struct _citrus_mapper_ops * ops,size_t lenops,uint32_t expected_version)5604e58308Stshiozak _citrus_mapper_none_mapper_getops(struct _citrus_mapper_ops *ops,
5704e58308Stshiozak size_t lenops, uint32_t expected_version)
5804e58308Stshiozak {
5904e58308Stshiozak if (expected_version<_CITRUS_MAPPER_ABI_VERSION || lenops<sizeof(*ops))
6004e58308Stshiozak return (EINVAL);
6104e58308Stshiozak
6204e58308Stshiozak memcpy(ops, &_citrus_mapper_none_mapper_ops,
6304e58308Stshiozak sizeof(_citrus_mapper_none_mapper_ops));
6404e58308Stshiozak
6504e58308Stshiozak return 0;
6604e58308Stshiozak }
6704e58308Stshiozak
6804e58308Stshiozak static int
6904e58308Stshiozak /*ARGSUSED*/
_citrus_mapper_none_mapper_init(struct _citrus_mapper_area * __restrict ma,struct _citrus_mapper * __restrict cm,const char * __restrict dir,const void * __restrict var,size_t lenvar,struct _citrus_mapper_traits * __restrict mt,size_t lenmt)7004e58308Stshiozak _citrus_mapper_none_mapper_init(struct _citrus_mapper_area *__restrict ma,
7104e58308Stshiozak struct _citrus_mapper * __restrict cm,
7204e58308Stshiozak const char * __restrict dir,
7304e58308Stshiozak const void * __restrict var, size_t lenvar,
7404e58308Stshiozak struct _citrus_mapper_traits * __restrict mt,
7504e58308Stshiozak size_t lenmt)
7604e58308Stshiozak {
7704e58308Stshiozak
7804e58308Stshiozak _DIAGASSERT(cm && dir && mt);
7904e58308Stshiozak
8004e58308Stshiozak if (lenmt<sizeof(*mt))
8104e58308Stshiozak return (EINVAL);
8204e58308Stshiozak
8304e58308Stshiozak cm->cm_closure = NULL;
8404e58308Stshiozak mt->mt_src_max = mt->mt_dst_max = 1; /* 1:1 converter */
8504e58308Stshiozak mt->mt_state_size = 0; /* stateless */
8604e58308Stshiozak
8704e58308Stshiozak return 0;
8804e58308Stshiozak }
8904e58308Stshiozak
9004e58308Stshiozak static void
9104e58308Stshiozak /*ARGSUSED*/
_citrus_mapper_none_mapper_uninit(struct _citrus_mapper * cm)9204e58308Stshiozak _citrus_mapper_none_mapper_uninit(struct _citrus_mapper *cm)
9304e58308Stshiozak {
9404e58308Stshiozak }
9504e58308Stshiozak
9604e58308Stshiozak static int
9704e58308Stshiozak /*ARGSUSED*/
_citrus_mapper_none_mapper_convert(struct _citrus_mapper * __restrict cm,_citrus_index_t * __restrict dst,_citrus_index_t src,void * __restrict ps)9804e58308Stshiozak _citrus_mapper_none_mapper_convert(struct _citrus_mapper * __restrict cm,
9904e58308Stshiozak _citrus_index_t * __restrict dst,
10004e58308Stshiozak _citrus_index_t src, void * __restrict ps)
10104e58308Stshiozak {
10204e58308Stshiozak *dst = src;
10304e58308Stshiozak return _CITRUS_MAPPER_CONVERT_SUCCESS;
10404e58308Stshiozak }
10504e58308Stshiozak
10604e58308Stshiozak static void
10704e58308Stshiozak /*ARGSUSED*/
_citrus_mapper_none_mapper_init_state(struct _citrus_mapper * __restrict cm,void * __restrict ps)10804e58308Stshiozak _citrus_mapper_none_mapper_init_state(struct _citrus_mapper * __restrict cm,
10904e58308Stshiozak void * __restrict ps)
11004e58308Stshiozak {
11104e58308Stshiozak }
112