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/Context.h"
217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/String.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 bbs_Context_init( struct bbs_Context* cpA )
427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint32 iL;
447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < bbs_CONTEXT_MAX_ERRORS; iL++ )
457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].errorE = bbs_ERR_OK;
477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].fileE[ 0 ] = 0;
487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].lineE = 0;
497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].textE[ 0 ] = 0;
507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->errIndexE = 0;
537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_MemTbl_init( cpA, &cpA->memTblE );
557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < bbs_CONTEXT_MAX_MEM_MANAGERS; iL++ )
577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_DynMemManager_init( cpA, &cpA->dynMemManagerArrE[ iL ] );
597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->dynMemManagerArrSizeE = 0;
627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->errorHandlerE = NULL;
637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->callbackHandlerE = NULL;
647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->userPtrE = NULL;
657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_Context_exit( struct bbs_Context* cpA )
707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	uint32 iL;
727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < bbs_CONTEXT_MAX_ERRORS; iL++ )
737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].errorE = bbs_ERR_OK;
757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].fileE[ 0 ] = 0;
767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].lineE = 0;
777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ iL ].textE[ 0 ] = 0;
787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->errIndexE = 0;
817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_MemTbl_exit( cpA, &cpA->memTblE );
837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < cpA->dynMemManagerArrSizeE; iL++ )
857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_DynMemManager_freeAll( cpA, &cpA->dynMemManagerArrE[ iL ] );
877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	for( iL = 0; iL < bbs_CONTEXT_MAX_MEM_MANAGERS; iL++ )
907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_DynMemManager_exit( cpA, &cpA->dynMemManagerArrE[ iL ] );
927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->dynMemManagerArrSizeE = 0;
957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->errorHandlerE = NULL;
967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->callbackHandlerE = NULL;
977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->userPtrE = NULL;
987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ operators } -------------------------------------------------- */
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
1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_Context_copy( struct bbs_Context* cpA, const struct bbs_Context* srcPtrA )
1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_ERROR0( "void bbs_Context_copy( struct bbs_Context* cpA, const struct bbs_Context* srcPtrA ):\n"
1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		        "A comtext object cannot be copied" );
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 Project/*                                                                           */
1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ query functions } -------------------------------------------- */
1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ modify functions } ------------------------------------------- */
1297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_Error bbs_Error_create( uint32 errorA,
1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								   uint32 lineA,
1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								   const char* fileA,
1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								   const char* textA,
1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								   ... )
1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bbs_Error errorL;
1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	errorL.errorE = errorA;
1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	errorL.lineE = lineA;
1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( fileA != NULL )
1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		uint32 lenL = bbs_strlen( fileA );
1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		uint32 ofsL = ( lenL + 1 > bbs_ERROR_MAX_FILE_CHARS ) ? lenL + 1 - bbs_ERROR_MAX_FILE_CHARS : 0;
1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_strcpy( errorL.fileE, fileA + ofsL );
1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else
1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		errorL.fileE[ 0 ] = 0;
1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( textA != NULL )
1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		va_list argsL;
1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		va_start( argsL, textA );
1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_vsnprintf( errorL.textE, bbs_ERROR_MAX_TEXT_CHARS, textA, argsL );
1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		va_end( argsL );
1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else
1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		errorL.textE[ 0 ] = 0;
1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return errorL;
1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ I/O } -------------------------------------------------------- */
1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ exec functions } --------------------------------------------- */
1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/*                                                                           */
1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbs_Context_pushError( struct bbs_Context* cpA, struct bbs_Error errorA )
1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	flag returnL = FALSE;
1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( cpA->errIndexE < bbs_CONTEXT_MAX_ERRORS )
1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errStackE[ cpA->errIndexE++ ] = errorA;
1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		returnL = TRUE;
1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( cpA->errorHandlerE != NULL )
1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->errorHandlerE( cpA );
2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return returnL;
2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectstruct bbs_Error bbs_Context_popError( struct bbs_Context* cpA )
2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( cpA->errIndexE > 0 )
2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return cpA->errStackE[ --( cpA->errIndexE ) ];
2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else
2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return cpA->errStackE[ 0 ];
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 Projectstruct bbs_Error bbs_Context_peekError( struct bbs_Context* cpA )
2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( cpA->errIndexE > 0 )
2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return cpA->errStackE[ cpA->errIndexE - 1 ];
2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else
2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return cpA->errStackE[ 0 ];
2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectflag bbs_Context_error( struct bbs_Context* cpA )
2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return cpA->errIndexE > 0;
2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectbbs_errorFPtr bbs_Context_setErrorHandler( struct bbs_Context* cpA,
2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project									       bbs_errorFPtr errorHandlerA )
2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_errorFPtr oldErrorHandlerL = cpA->errorHandlerE;
2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->errorHandlerE = errorHandlerA;
2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return oldErrorHandlerL;
2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_Context_doCallback( struct bbs_Context* cpA )
2537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( cpA->callbackHandlerE != NULL )
2557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		uint32 errorL = ( *cpA->callbackHandlerE )( cpA );
2577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		if( errorL != bbs_ERR_OK )
2587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		{
2597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project			bbs_Context_pushError( cpA, bbs_Error_create( errorL, 0, NULL, NULL ) );
2607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		}
2617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectbbs_callbackFPtr bbs_Context_setCallbackHandler( struct bbs_Context* cpA,
2677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project									       bbs_callbackFPtr callbackHandlerA )
2687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_callbackFPtr oldCallbackHandlerL = cpA->callbackHandlerE;
2707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->callbackHandlerE = callbackHandlerA;
2717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return oldCallbackHandlerL;
2727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
2737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
2757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/** adds a static memory segment to memory table of context */
2777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_Context_addStaticSeg(	struct bbs_Context* cpA,
2787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project							    uint16* memPtrA, /* pointer to memory */
2797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								uint32 sizeA,    /* size of memory segment in 16 bit units */
2807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								flag sharedA,    /* Indicates that this segment is to be shared among multiple objects */
2817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								uint32 idA )     /* ID of segment, id=0: unspecified */
2827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
2837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bbs_MemSeg memSegL;
2847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_DEF_fNameL( "void bbs_Context_addStaticSeg(....)" )
2857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	/* checks */
2887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( sharedA && cpA->memTblE.ssSizeE == bbs_MAX_MEM_SEGS )
2897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_ERROR1( "%s:\nShared Memory Table is full! Increase bbs_MAX_MEM_SEGS", fNameL );
2917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return;
2927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( sharedA && cpA->memTblE.esSizeE == bbs_MAX_MEM_SEGS )
2947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
2957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_ERROR1( "%s:\nExclusive Memory Table is full! Increase bbs_MAX_MEM_SEGS", fNameL );
2967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return;
2977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
2987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
2997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_MemSeg_init( cpA, &memSegL );
3017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.memPtrE = memPtrA;
3027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.sizeE = sizeA;
3037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.allocIndexE = 0;
3047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.sharedE = sharedA;
3057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.idE = idA;
3067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.dynMemManagerPtrE = NULL;
3077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( sharedA )
3097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
3107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.ssArrE[ cpA->memTblE.ssSizeE++ ] = memSegL;
3117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
3127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else
3137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
3147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.esArrE[ cpA->memTblE.esSizeE ] = memSegL;
3157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.espArrE[ cpA->memTblE.esSizeE ] = &cpA->memTblE.esArrE[ cpA->memTblE.esSizeE ];
3167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.esSizeE++;
3177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
3187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
3197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
3217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* adds a dynamic memory segment to memory table of context
3237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Upon destruction of the context object any residual will be freed automatically
3247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */
3257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_Context_addDynamicSeg(	struct bbs_Context* cpA,
3267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								bbs_mallocFPtr mallocFPtrA,	/* function pointer to external mem alloc function (s. comment of type declaration)*/
3277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								bbs_freeFPtr freeFPtrA,     /* function pointer to external mem free function */
3287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								flag sharedA,    /* Indicates that this segment is to be shared among multiple objects */
3297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project								uint32 idA )     /* ID of segment, id=0: unspecified */
3307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
3317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bbs_DynMemManager memManagerL;
3327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	struct bbs_MemSeg memSegL;
3337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_DEF_fNameL( "void bbs_Context_addDynamicSeg(....)" )
3347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	/* checks */
3377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( cpA->dynMemManagerArrSizeE == bbs_CONTEXT_MAX_MEM_MANAGERS )
3387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
3397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_ERROR1( "%s:\nMemory Manager Table is full! Increase bbs_CONTEXT_MAX_MEM_MANAGERS", fNameL );
3407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return;
3417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
3427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( sharedA && cpA->memTblE.ssSizeE == bbs_MAX_MEM_SEGS )
3437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
3447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_ERROR1( "%s:\nShared Memory Table is full! Increase bbs_MAX_MEM_SEGS", fNameL );
3457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return;
3467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
3477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( sharedA && cpA->memTblE.esSizeE == bbs_MAX_MEM_SEGS )
3487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
3497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		bbs_ERROR1( "%s:\nExclusive Memory Table is full! Increase bbs_MAX_MEM_SEGS", fNameL );
3507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		return;
3517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
3527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_DynMemManager_init( cpA, &memManagerL );
3547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memManagerL.mallocFPtrE = mallocFPtrA;
3557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memManagerL.freeFPtrE = freeFPtrA;
3567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memManagerL.memPtrE = NULL;
3577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	cpA->dynMemManagerArrE[ cpA->dynMemManagerArrSizeE++ ] = memManagerL;
3587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_MemSeg_init( cpA, &memSegL );
3607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.memPtrE = NULL;
3617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.sizeE = 0;
3627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.allocIndexE = 0;
3637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.sharedE = sharedA;
3647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.idE = idA;
3657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	memSegL.dynMemManagerPtrE = &cpA->dynMemManagerArrE[ cpA->dynMemManagerArrSizeE - 1 ];
3667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	if( sharedA )
3687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
3697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.ssArrE[ cpA->memTblE.ssSizeE++ ] = memSegL;
3707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
3717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	else
3727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	{
3737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.esArrE[ cpA->memTblE.esSizeE ] = memSegL;
3747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.espArrE[ cpA->memTblE.esSizeE ] = &cpA->memTblE.esArrE[ cpA->memTblE.esSizeE ];
3757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project		cpA->memTblE.esSizeE++;
3767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	}
3777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
3787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
3807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_Context_exclAllocSize( struct bbs_Context* cpA, uint32 segIndexA )
3827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
3837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return bbs_MemSeg_allocatedSize( cpA, &cpA->memTblE.esArrE[ segIndexA ] );
3847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
3857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
3877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_Context_shrdAllocSize( struct bbs_Context* cpA, uint32 segIndexA )
3897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
3907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	return bbs_MemSeg_allocatedSize( cpA, &cpA->memTblE.ssArrE[ segIndexA ] );
3917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
3927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
3947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
3957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectvoid bbs_Context_quickInit( struct bbs_Context* cpA,
3967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	 					    bbs_mallocFPtr mallocFPtrA,	/* function pointer to external mem alloc function (s. comment of type declaration)*/
3977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						    bbs_freeFPtr freeFPtrA,
3987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project						    bbs_errorFPtr errorHandlerA )
3997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{
4007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_Context_init( cpA );
4017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_Context_addDynamicSeg( cpA, mallocFPtrA, freeFPtrA, FALSE, 0 );
4027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_Context_addDynamicSeg( cpA, mallocFPtrA, freeFPtrA, TRUE, 0 );
4037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project	bbs_Context_setErrorHandler( cpA, errorHandlerA );
4047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project}
4057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
4067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */
4077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
4087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */
4097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
4107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project
411