17f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*
27f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
37f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *
47f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
57f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * you may not use this file except in compliance with the License.
67f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * You may obtain a copy of the License at
77f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *
87f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
97f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *
107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * See the License for the specific language governing permissions and
147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * limitations under the License.
157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */
167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- includes ----------------------------------------------------------- */
187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Functions.h"
207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Math.h"
217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_TensorEm/MapSequence.h"
227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ auxiliary functions } ---------------------------------------- */
287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ constructor / destructor } ----------------------------------- */
367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_MapSequence_init( struct bbs_Context* cpA,
427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project					       struct bts_MapSequence* ptrA )
437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->ptrArrE = NULL;
457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bts_Flt16Vec_init( cpA, &ptrA->vecE );
467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bts_VectorMap_init( cpA, &ptrA->baseE );
477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->baseE.typeE = ( uint32 )bts_VM_MAP_SEQUENCE;
487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->baseE.vpMapE = bts_MapSequence_map;
497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->sizeE = 0;
507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->vecSizeE = 0;
517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_UInt16Arr_init( cpA, &ptrA->objBufE );
527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_MapSequence_exit( struct bbs_Context* cpA,
577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project					       struct bts_MapSequence* ptrA )
587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint16 iL;
607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < ptrA->sizeE; iL++ ) bts_vectorMapExit( cpA, ptrA->ptrArrE[ iL ] );
617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->ptrArrE = NULL;
627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bts_Flt16Vec_exit( cpA, &ptrA->vecE );
637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->sizeE = 0;
647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	ptrA->vecSizeE = 0;
657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_UInt16Arr_exit( cpA, &ptrA->objBufE );
667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bts_VectorMap_exit( cpA, &ptrA->baseE );
687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ operators } -------------------------------------------------- */
757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_MapSequence_copy( struct bbs_Context* cpA,
817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						   struct bts_MapSequence* ptrA,
827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project					       const struct bts_MapSequence* srcPtrA )
837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_ERROR0( "bts_MapSequence_copy:\n Function is not available" );
857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bts_MapSequence_equal( struct bbs_Context* cpA,
907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						    const struct bts_MapSequence* ptrA,
917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						    const struct bts_MapSequence* srcPtrA )
927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_ERROR0( "bts_MapSequence_equal:\n Function is not available" );
947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return TRUE;
957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ query functions } -------------------------------------------- */
1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ modify functions } ------------------------------------------- */
1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ I/O } -------------------------------------------------------- */
1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_MapSequence_memSize( struct bbs_Context* cpA,
1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								const struct bts_MapSequence* ptrA )
1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint16 iL;
1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint32 memSizeL = bbs_SIZEOF16( uint32 ) +
1287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project					  bbs_SIZEOF16( uint32 ); /* version */
1297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSizeL += bts_VectorMap_memSize( cpA, &ptrA->baseE );
1317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSizeL += bbs_SIZEOF16( ptrA->sizeE );
1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSizeL += bbs_SIZEOF16( ptrA->vecSizeE );
1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < ptrA->sizeE; iL++ ) memSizeL += bts_vectorMapMemSize( cpA, ptrA->ptrArrE[ iL ] );
1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return memSizeL;
1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_MapSequence_memWrite( struct bbs_Context* cpA,
1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								 const struct bts_MapSequence* ptrA,
1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								 uint16* memPtrA )
1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint16 iL;
1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint32 memSizeL = bts_MapSequence_memSize( cpA, ptrA );
1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memWrite32( &memSizeL, memPtrA );
1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memWriteUInt32( bts_MAP_SEQUENCE_VERSION, memPtrA );
1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bts_VectorMap_memWrite( cpA, &ptrA->baseE, memPtrA );
1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memWrite32( &ptrA->sizeE, memPtrA );
1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memWrite32( &ptrA->vecSizeE, memPtrA );
1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < ptrA->sizeE; iL++ ) memPtrA += bts_vectorMapMemWrite( cpA, ptrA->ptrArrE[ iL ], memPtrA );
1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return memSizeL;
1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_MapSequence_memRead( struct bbs_Context* cpA,
1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								struct bts_MapSequence* ptrA,
1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								const uint16* memPtrA,
1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								struct bbs_MemTbl* mtpA )
1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint16 iL;
1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint32 memSizeL, versionL;
1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bbs_MemTbl memTblL = *mtpA;
1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bbs_MemSeg* espL = bbs_MemTbl_segPtr( cpA, &memTblL, 0 );
1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bbs_MemSeg* sspL = bbs_MemTbl_sharedSegPtr( cpA, &memTblL, 0 );
1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( bbs_Context_error( cpA ) ) return 0;
1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memRead32( &memSizeL, memPtrA );
1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memReadVersion32( cpA, &versionL, bts_MAP_SEQUENCE_VERSION, memPtrA );
1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bts_VectorMap_memRead( cpA, &ptrA->baseE, memPtrA );
1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memRead32( &ptrA->sizeE, memPtrA );
1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memPtrA += bbs_memRead32( &ptrA->vecSizeE, memPtrA );
1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	/* put buffer vector on shared memory */
1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bts_Flt16Vec_create( cpA, &ptrA->vecE, ptrA->vecSizeE, sspL );
1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	/* check maps & allocate data buffer */
1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		const uint16* memPtrL = memPtrA;
1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		uint32 dataSizeL = ptrA->sizeE * bbs_SIZEOF16( struct bts_VectorMap* );
1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		for( iL = 0; iL < ptrA->sizeE; iL++ )
1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		{
1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			enum bts_VectorMapType typeL = ( enum bts_VectorMapType )bbs_memPeek32( memPtrL + 4 );
1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			dataSizeL += bts_vectorMapSizeOf16( cpA, typeL );
1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			memPtrL += bbs_memPeek32( memPtrL );
1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		}
1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_UInt16Arr_create( cpA, &ptrA->objBufE, dataSizeL, espL );
1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		if( bbs_Context_error( cpA ) ) return 0;
1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	/* load maps & initialize pointers */
1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		uint16* dataPtrL = ptrA->objBufE.arrPtrE;
1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		ptrA->ptrArrE = ( struct bts_VectorMap** )dataPtrL;
1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		dataPtrL += ptrA->sizeE * bbs_SIZEOF16( struct bts_VectorMap* );
1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		for( iL = 0; iL < ptrA->sizeE; iL++ )
1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		{
2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			enum bts_VectorMapType typeL = ( enum bts_VectorMapType )bbs_memPeek32( memPtrA + 4 );
2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			ptrA->ptrArrE[ iL ] = ( struct bts_VectorMap* )dataPtrL;
2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			bts_vectorMapInit( cpA, ptrA->ptrArrE[ iL ], typeL );
2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			memPtrA += bts_vectorMapMemRead( cpA, ptrA->ptrArrE[ iL ], memPtrA, &memTblL );
2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			dataPtrL += bts_vectorMapSizeOf16( cpA, typeL );
2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		}
2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( memSizeL != bts_MapSequence_memSize( cpA, ptrA ) )
2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_ERR0( bbs_ERR_CORRUPT_DATA, "uint32 bts_MapSequence_memRead( struct bem_ScanGradientMove* ptrA, const uint16* memPtrA ):\n"
2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			        "size mismatch" );
2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return 0;
2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return memSizeL;
2167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
2217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ exec functions } --------------------------------------------- */
2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_MapSequence_map( struct bbs_Context* cpA,
2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						  const struct bts_VectorMap* ptrA,
2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						  const struct bts_Flt16Vec* inVecPtrA,
2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						  struct bts_Flt16Vec* outVecPtrA )
2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bts_MapSequence* ptrL = ( struct bts_MapSequence* )ptrA;
2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( ptrL->sizeE == 0 )
2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bts_Flt16Vec_copy( cpA, outVecPtrA, inVecPtrA );
2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else if( ptrL->sizeE == 1 )
2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		struct bts_VectorMap* mapPtrL = ptrL->ptrArrE[ 0 ];
2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		mapPtrL->vpMapE( cpA, mapPtrL, inVecPtrA, outVecPtrA );
2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else
2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		uint32 iL;
2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		struct bts_Flt16Vec* vp1L = &ptrL->vecE;
2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		struct bts_Flt16Vec* vp2L = outVecPtrA;
2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		struct bts_VectorMap* mapPtrL = ptrL->ptrArrE[ 0 ];
2497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		mapPtrL->vpMapE( cpA, mapPtrL, inVecPtrA, vp1L );
2507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		for( iL = 1; iL < ptrL->sizeE; iL++ )
2527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		{
2537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			mapPtrL = ptrL->ptrArrE[ iL ];
2547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			mapPtrL->vpMapE( cpA, mapPtrL, vp1L, vp2L );
2557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			/* swap vectors */
2577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			{
2587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project				struct bts_Flt16Vec* vpL = vp1L;
2597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project				vp1L = vp2L;
2607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project				vp2L = vpL;
2617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			}
2627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		}
2637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		/* vp1 holds output */
2657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		if( vp1L != outVecPtrA ) bts_Flt16Vec_copy( cpA, outVecPtrA, vp1L );
2667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
2727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
273