13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* module: XLT Decoder Stack */ 33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* file: XLTUtilStack.c */ 43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target system: all */ 53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* target OS: all */ 63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* 93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright Notice 103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (c) Ericsson, IBM, Lotus, Matsushita Communication 113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Industrial Co., Ltd., Motorola, Nokia, Openwave Systems, Inc., 123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Palm, Inc., Psion, Starfish Software, Symbian, Ltd. (2001). 133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * All Rights Reserved. 143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Implementation of all or part of any Specification may require 153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * licenses under third party intellectual property rights, 163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * including without limitation, patent rights (such a third party 173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * may or may not be a Supporter). The Sponsors of the Specification 183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * are not responsible and shall not be held responsible in any 193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * manner for identifying or failing to identify any or all such 203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * third party intellectual property rights. 213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN ARE PROVIDED 233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND AND ERICSSON, IBM, 243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO. LTD, MOTOROLA, 253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * NOKIA, PALM INC., PSION, STARFISH SOFTWARE AND ALL OTHER SYNCML 263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SPONSORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING 273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION 283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF 293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT 303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * SHALL ERICSSON, IBM, LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO., 313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * LTD, MOTOROLA, NOKIA, PALM INC., PSION, STARFISH SOFTWARE OR ANY 323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OTHER SYNCML SPONSOR BE LIABLE TO ANY PARTY FOR ANY LOSS OF 333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF 343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * BUSINESS, OR FOR DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, 353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND IN CONNECTION WITH 363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED 373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE. 383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * The above notice and this paragraph must be included on all copies 403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * of this document that are made. 413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * 423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/** 453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * A simple array-based stack implementation. 463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */ 473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Definitions */ 503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xltdeccom.h" 533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xltutilstack.h" 543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <smlerr.h> 563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include <libmem.h> 583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystruct ArrayStack_s; 603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef struct ArrayStack_s *ArrayStackPtr_t, ArrayStack_t; 613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystruct ArrayStack_s 623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* public */ 643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Ret_t (*top)(const XltUtilStackPtr_t, XltUtilStackItem_t *); 653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Ret_t (*pop)(XltUtilStackPtr_t, XltUtilStackItem_t *); 663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Ret_t (*push)(XltUtilStackPtr_t, const XltUtilStackItem_t); 673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Ret_t (*destroy)(XltUtilStackPtr_t); 683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby /* private */ 703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Long_t topidx; // index of the top of the stack 713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Long_t size; // size of the stack (multiple of chunksize) 723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Long_t chunksize; // size of memory chunks allocated at a time 733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XltUtilStackItem_t *array; // the stack itself 743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}; 753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t _top(const XltUtilStackPtr_t, XltUtilStackItem_t *); 773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t _pop(XltUtilStackPtr_t, XltUtilStackItem_t *); 783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t _push(XltUtilStackPtr_t, const XltUtilStackItem_t); 793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t _destroy(XltUtilStackPtr_t); 803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* External Functions */ 833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyRet_t 863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyxltUtilCreateStack(XltUtilStackPtr_t *ppStack, const Long_t size) 873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ArrayStackPtr_t pStack; 893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (size <= 0) 913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_WRONG_PARAM; 923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ((pStack = (ArrayStackPtr_t)smlLibMalloc(sizeof(ArrayStack_t))) == NULL) { 933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *ppStack = NULL; 943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_NOT_ENOUGH_SPACE; 953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->top = _top; 983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->pop = _pop; 993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->push = _push; 1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->destroy = _destroy; 1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->topidx = -1; 1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->size = size; 1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->chunksize = size; 1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStack->array = NULL; 1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ((pStack->array = (XltUtilStackItem_t*)smlLibMalloc(size * sizeof(XltUtilStackItem_t))) == NULL) { 1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *ppStack = NULL; 1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby smlLibFree(pStack); 1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_NOT_ENOUGH_SPACE; 1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *ppStack = (XltUtilStackPtr_t)pStack; 1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_OK; 1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/* Internal Functions */ 1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*************************************************************************/ 1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t 1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby_top(const XltUtilStackPtr_t pStack, XltUtilStackItem_t *itemPtr) 1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ArrayStackPtr_t pStackPriv = (ArrayStackPtr_t)pStack; 1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (pStackPriv->topidx == -1) 1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_WRONG_USAGE; 1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *itemPtr = pStackPriv->array[pStackPriv->topidx]; 1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_OK; 1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t 1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby_pop(XltUtilStackPtr_t pStack, XltUtilStackItem_t *itemPtr) 1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ArrayStackPtr_t pStackPriv = (ArrayStackPtr_t)pStack; 1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XltUtilStackItem_t item; 1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (pStackPriv->topidx == -1) 1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_WRONG_USAGE; 1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby item = pStackPriv->array[pStackPriv->topidx]; 1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv->topidx--; 1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ((pStackPriv->topidx >= 0) && 1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby (pStackPriv->topidx < pStackPriv->size - pStackPriv->chunksize)) { 1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Long_t newsize; 1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XltUtilStackItem_t *newarray; 1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby newsize = pStackPriv->size - pStackPriv->chunksize; 1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ((newarray = (XltUtilStackItem_t*)smlLibRealloc(pStackPriv->array, 1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby newsize * sizeof(XltUtilStackItem_t))) != NULL) { 1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv->size = newsize; 1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv->array = newarray; 1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } else { 1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_NOT_ENOUGH_SPACE; 1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *itemPtr = item; 1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_OK; 1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t 1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby_push(XltUtilStackPtr_t pStack, const XltUtilStackItem_t item) 1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ArrayStackPtr_t pStackPriv = (ArrayStackPtr_t)pStack; 1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (pStackPriv->topidx == pStackPriv->size - 1) { 1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby Long_t newsize; 1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby XltUtilStackItem_t *newarray; 1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby newsize = pStackPriv->size + pStackPriv->chunksize; 1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if ((newarray = (XltUtilStackItem_t*)smlLibRealloc(pStackPriv->array, 1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby newsize * sizeof(XltUtilStackItem_t))) != NULL) { 1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv->size = newsize; 1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv->array = newarray; 1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } else { 1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_NOT_ENOUGH_SPACE; 1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby } 1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv->topidx++; 1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv->array[pStackPriv->topidx] = item; 1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_OK; 1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambystatic Ret_t 1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby_destroy(XltUtilStackPtr_t pStack) 1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{ 1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby ArrayStackPtr_t pStackPriv; 1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby if (pStack == NULL) 1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_OK; 1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby pStackPriv = (ArrayStackPtr_t)pStack; 2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby 2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby smlLibFree(pStackPriv->array); 2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby smlLibFree(pStackPriv); 2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby return SML_ERR_OK; 2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby} 206