tor-browser

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

ustrenum.h (2605B)


      1 // © 2016 and later: Unicode, Inc. and others.
      2 // License & terms of use: http://www.unicode.org/copyright.html
      3 /*
      4 **********************************************************************
      5 * Copyright (c) 2002-2014, International Business Machines
      6 * Corporation and others.  All Rights Reserved.
      7 **********************************************************************
      8 * Author: Alan Liu
      9 * Created: November 11 2002
     10 * Since: ICU 2.4
     11 **********************************************************************
     12 */
     13 #ifndef _USTRENUM_H_
     14 #define _USTRENUM_H_
     15 
     16 #include "unicode/uenum.h"
     17 #include "unicode/strenum.h"
     18 
     19 //----------------------------------------------------------------------
     20 U_NAMESPACE_BEGIN
     21 
     22 /**
     23 * A wrapper to make a UEnumeration into a StringEnumeration.  The
     24 * wrapper adopts the UEnumeration is wraps.
     25 */
     26 class U_COMMON_API UStringEnumeration : public StringEnumeration {
     27 
     28 public:
     29    /**
     30     * Constructor.  This constructor adopts its UEnumeration
     31     * argument.
     32     * @param uenum a UEnumeration object.  This object takes
     33     * ownership of 'uenum' and will close it in its destructor.  The
     34     * caller must not call uenum_close on 'uenum' after calling this
     35     * constructor.
     36     */
     37    UStringEnumeration(UEnumeration* uenum);
     38 
     39    /**
     40     * Destructor.  This closes the UEnumeration passed in to the
     41     * constructor.
     42     */
     43    virtual ~UStringEnumeration();
     44 
     45    /**
     46     * Return the number of elements that the iterator traverses.
     47     * @param status the error code.
     48     * @return number of elements in the iterator.
     49     */
     50    virtual int32_t count(UErrorCode& status) const override;
     51 
     52    virtual const char* next(int32_t *resultLength, UErrorCode& status) override;
     53 
     54    /**
     55     * Returns the next element a UnicodeString*.  If there are no
     56     * more elements, returns nullptr.
     57     * @param status the error code.
     58     * @return a pointer to the string, or nullptr.
     59     */
     60    virtual const UnicodeString* snext(UErrorCode& status) override;
     61 
     62    /**
     63     * Resets the iterator.
     64     * @param status the error code.
     65     */
     66    virtual void reset(UErrorCode& status) override;
     67 
     68    /**
     69     * ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
     70     */
     71    virtual UClassID getDynamicClassID() const override;
     72 
     73    /**
     74     * ICU4C "poor man's RTTI", returns a UClassID for this ICU class.
     75     */
     76    static UClassID U_EXPORT2 getStaticClassID();
     77 
     78    static UStringEnumeration * U_EXPORT2 fromUEnumeration(
     79            UEnumeration *enumToAdopt, UErrorCode &status);
     80 private:
     81    UEnumeration *uenum; // owned
     82 };
     83 
     84 U_NAMESPACE_END
     85 
     86 #endif