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/Math.h" 207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_TensorEm/IdCluster2D.h" 217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 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/* ---- \ghd{ auxiliary functions } ---------------------------------------- */ 277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 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/* ---- \ghd{ constructor / destructor } ----------------------------------- */ 357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_init( struct bbs_Context* cpA, 417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA ) 427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_init( cpA, &ptrA->clusterE ); 447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_Int16Arr_init( cpA, &ptrA->idArrE ); 457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_exit( struct bbs_Context* cpA, 507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA ) 517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_exit( cpA, &ptrA->clusterE ); 537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_Int16Arr_exit( cpA, &ptrA->idArrE ); 547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ operators } -------------------------------------------------- */ 617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_copy( struct bbs_Context* cpA, 677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA, 687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* srcPtrA ) 697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_copy( cpA, &ptrA->clusterE, &srcPtrA->clusterE ); 717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_Int16Arr_copy( cpA, &ptrA->idArrE, &srcPtrA->idArrE ); 727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bts_IdCluster2D_equal( struct bbs_Context* cpA, 777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* ptrA, 787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* srcPtrA ) 797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( !bts_Cluster2D_equal( cpA, &ptrA->clusterE, &srcPtrA->clusterE ) ) return FALSE; 817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( !bbs_Int16Arr_equal( cpA, &ptrA->idArrE, &srcPtrA->idArrE ) ) return FALSE; 827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return TRUE; 837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ query functions } -------------------------------------------- */ 907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Vec2D bts_IdCluster2D_center( struct bbs_Context* cpA, 967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* ptrA ) 977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bts_Cluster2D_center( cpA, &ptrA->clusterE ); 997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Int16Rect bts_IdCluster2D_boundingBox( struct bbs_Context* cpA, 1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* ptrA ) 1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bts_Cluster2D_boundingBox( cpA, &ptrA->clusterE ); 1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ modify functions } ------------------------------------------- */ 1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_create( struct bbs_Context* cpA, 1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA, 1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, 1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemSeg* mspA ) 1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_Context_error( cpA ) ) return; 1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_create( cpA, &ptrA->clusterE, sizeA, mspA ); 1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_Int16Arr_create( cpA, &ptrA->idArrE, sizeA, mspA ); 1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_size( struct bbs_Context* cpA, 1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA, 1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA ) 1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_size( cpA, &ptrA->clusterE, sizeA ); 1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_Int16Arr_size( cpA, &ptrA->idArrE, sizeA ); 1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_transform( struct bbs_Context* cpA, 1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA, 1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Flt16Alt2D altA ) 1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_transform( cpA, &ptrA->clusterE, altA ); 1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_copyTransform( struct bbs_Context* cpA, 1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA, 1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* srcPtrA, 1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Flt16Alt2D altA, 1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 dstBbpA ) 1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_copyTransform( cpA, &ptrA->clusterE, &srcPtrA->clusterE, altA, dstBbpA ); 1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_Int16Arr_copy( cpA, &ptrA->idArrE, &srcPtrA->idArrE ); 1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ I/O } -------------------------------------------------------- */ 1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_IdCluster2D_memSize( struct bbs_Context* cpA, 1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D *ptrA ) 1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( uint32 ) 1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project + bbs_SIZEOF16( uint32 ) /* version */ 1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project + bts_Cluster2D_memSize( cpA, &ptrA->clusterE ) 1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project + bbs_Int16Arr_memSize( cpA, &ptrA->idArrE ); 1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_IdCluster2D_memWrite( struct bbs_Context* cpA, 1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* ptrA, 1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* memPtrA ) 1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 memSizeL = bts_IdCluster2D_memSize( cpA, ptrA ); 1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memWrite32( &memSizeL, memPtrA ); 1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memWriteUInt32( bts_ID_CLUSTER2D_VERSION, memPtrA ); 1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bts_Cluster2D_memWrite( cpA, &ptrA->clusterE, memPtrA ); 1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_Int16Arr_memWrite( cpA, &ptrA->idArrE, memPtrA ); 1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return memSizeL; 1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bts_IdCluster2D_memRead( struct bbs_Context* cpA, 1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* ptrA, 1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA, 1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bbs_MemSeg* mspA ) 1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 memSizeL; 2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 versionL; 2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_Context_error( cpA ) ) return 0; 2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memRead32( &memSizeL, memPtrA ); 2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memReadVersion32( cpA, &versionL, bts_ID_CLUSTER2D_VERSION, memPtrA ); 2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bts_Cluster2D_memRead( cpA, &ptrA->clusterE, memPtrA, mspA ); 2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_Int16Arr_memRead( cpA, &ptrA->idArrE, memPtrA, mspA ); 2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( memSizeL != bts_IdCluster2D_memSize( cpA, ptrA ) ) 2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERR0( bbs_ERR_CORRUPT_DATA, "uint32 bts_IdCluster2D_memRead( const struct bts_IdCluster2D* ptrA, const void* memPtrA ):\n" 2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "size mismatch" ); 2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return 0; 2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return memSizeL; 2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 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/* ---- \ghd{ exec functions } --------------------------------------------- */ 2217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bts_IdCluster2D_convertToEqivalentClusters( struct bbs_Context* cpA, 2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* inCluster1PtrA, 2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* inCluster2PtrA, 2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Cluster2D* outCluster1PtrA, 2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Cluster2D* outCluster2PtrA ) 2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL, jL; 2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 countL = 0; 2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 size1L = inCluster1PtrA->clusterE.sizeE; 2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 size2L = inCluster2PtrA->clusterE.sizeE; 2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const int16* idArr1L = inCluster1PtrA->idArrE.arrPtrE; 2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const int16* idArr2L = inCluster2PtrA->idArrE.arrPtrE; 2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Int16Vec2D* srcVecArr1E = inCluster1PtrA->clusterE.vecArrE; 2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_Int16Vec2D* srcVecArr2E = inCluster2PtrA->clusterE.vecArrE; 2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Int16Vec2D* dstVecArr1E = outCluster1PtrA->vecArrE; 2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Int16Vec2D* dstVecArr2E = outCluster2PtrA->vecArrE; 2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 maxOutSizeL = bbs_min( outCluster1PtrA->allocatedSizeE, outCluster2PtrA->allocatedSizeE ); 2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_size( cpA, outCluster1PtrA, maxOutSizeL ); 2497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_size( cpA, outCluster2PtrA, maxOutSizeL ); 2507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < size1L; iL++ ) 2527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project int32 idL = idArr1L[ iL ]; 2547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( idL >= 0 ) 2557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( jL = 0; jL < size2L; jL++ ) 2577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( idL == idArr2L[ jL ] ) break; 2597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( jL < size2L ) 2627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( countL == maxOutSizeL ) 2647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERROR0( "void bts_IdCluster2D_convertToEqivalentClusters( .... ):\n" 2667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Destination clusters are insufficiently allocated" ); 2677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return; 2687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project dstVecArr1E[ countL ] = srcVecArr1E[ iL ]; 2717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project dstVecArr2E[ countL ] = srcVecArr2E[ jL ]; 2727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project countL++; 2737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_size( cpA, outCluster1PtrA, countL ); 2787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_Cluster2D_size( cpA, outCluster2PtrA, countL ); 2797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project outCluster1PtrA->bbpE = inCluster1PtrA->clusterE.bbpE; 2817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project outCluster2PtrA->bbpE = inCluster2PtrA->clusterE.bbpE; 2827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bts_Flt16Alt2D bts_IdCluster2D_alt( struct bbs_Context* cpA, 2877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const struct bts_IdCluster2D* srcPtrA, 2887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_IdCluster2D* dstPtrA, 2897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project enum bts_AltType altTypeA, 2907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Cluster2D* tmpPtr1A, /* temporary cluster 1 */ 2917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project struct bts_Cluster2D* tmpPtr2A ) /* temporary cluster 2 */ 2927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bts_IdCluster2D_convertToEqivalentClusters( cpA, srcPtrA, dstPtrA, tmpPtr1A, tmpPtr2A ); 2947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bts_Cluster2D_alt( cpA, tmpPtr1A, tmpPtr2A, altTypeA ); 2957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 3007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 3017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 302