xref: /netbsd-src/lib/libc/citrus/modules/citrus_mapper_none.c (revision 82d5554eda1fb0a9554b7ea57242c962683c0ca1)
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