michael@0: /* michael@0: ********************************************************************** michael@0: * Copyright (C) 2003-2011, International Business Machines michael@0: * Corporation and others. All Rights Reserved. michael@0: ********************************************************************** michael@0: */ michael@0: michael@0: #include "uvector.h" michael@0: michael@0: U_NAMESPACE_BEGIN michael@0: michael@0: UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UStack) michael@0: michael@0: UStack::UStack(UErrorCode &status) : michael@0: UVector(status) michael@0: { michael@0: } michael@0: michael@0: UStack::UStack(int32_t initialCapacity, UErrorCode &status) : michael@0: UVector(initialCapacity, status) michael@0: { michael@0: } michael@0: michael@0: UStack::UStack(UObjectDeleter *d, UElementsAreEqual *c, UErrorCode &status) : michael@0: UVector(d, c, status) michael@0: { michael@0: } michael@0: michael@0: UStack::UStack(UObjectDeleter *d, UElementsAreEqual *c, int32_t initialCapacity, UErrorCode &status) : michael@0: UVector(d, c, initialCapacity, status) michael@0: { michael@0: } michael@0: michael@0: UStack::~UStack() {} michael@0: michael@0: void* UStack::pop(void) { michael@0: int32_t n = size() - 1; michael@0: void* result = 0; michael@0: if (n >= 0) { michael@0: result = elementAt(n); michael@0: removeElementAt(n); michael@0: } michael@0: return result; michael@0: } michael@0: michael@0: int32_t UStack::popi(void) { michael@0: int32_t n = size() - 1; michael@0: int32_t result = 0; michael@0: if (n >= 0) { michael@0: result = elementAti(n); michael@0: removeElementAt(n); michael@0: } michael@0: return result; michael@0: } michael@0: michael@0: int32_t UStack::search(void* obj) const { michael@0: int32_t i = indexOf(obj); michael@0: return (i >= 0) ? size() - i : i; michael@0: } michael@0: michael@0: U_NAMESPACE_END