tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ustack.cpp (1379B)


      1 // © 2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /*
      4 **********************************************************************
      5 *   Copyright (C) 2003-2011, International Business Machines
      6 *   Corporation and others.  All Rights Reserved.
      7 **********************************************************************
      8 */
      9 
     10 #include "uvector.h"
     11 
     12 U_NAMESPACE_BEGIN
     13 
     14 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(UStack)
     15 
     16 UStack::UStack(UErrorCode &status) :
     17    UVector(status)
     18 {
     19 }
     20 
     21 UStack::UStack(int32_t initialCapacity, UErrorCode &status) :
     22    UVector(initialCapacity, status)
     23 {
     24 }
     25 
     26 UStack::UStack(UObjectDeleter *d, UElementsAreEqual *c, UErrorCode &status) :
     27    UVector(d, c, status)
     28 {
     29 }
     30 
     31 UStack::UStack(UObjectDeleter *d, UElementsAreEqual *c, int32_t initialCapacity, UErrorCode &status) :
     32    UVector(d, c, initialCapacity, status)
     33 {
     34 }
     35 
     36 UStack::~UStack() {}
     37 
     38 void* UStack::pop() {
     39    int32_t n = size() - 1;
     40    void* result = nullptr;
     41    if (n >= 0) {
     42        result = orphanElementAt(n);
     43    }
     44    return result;
     45 }
     46 
     47 int32_t UStack::popi() {
     48    int32_t n = size() - 1;
     49    int32_t result = 0;
     50    if (n >= 0) {
     51        result = elementAti(n);
     52        removeElementAt(n);
     53    }
     54    return result;
     55 }
     56 
     57 int32_t UStack::search(void* obj) const {
     58    int32_t i = indexOf(obj);
     59    return (i >= 0) ? size() - i : i;
     60 }
     61 
     62 U_NAMESPACE_END