intl/icu/source/common/uenumimp.h

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 /*
     2 *******************************************************************************
     3 *
     4 *   Copyright (C) 2002-2006, International Business Machines
     5 *   Corporation and others.  All Rights Reserved.
     6 *
     7 *******************************************************************************
     8 *   file name:  uenumimp.h
     9 *   encoding:   US-ASCII
    10 *   tab size:   8 (not used)
    11 *   indentation:2
    12 *
    13 *   created on: 2002jul08
    14 *   created by: Vladimir Weinstein
    15 */
    17 #ifndef __UENUMIMP_H
    18 #define __UENUMIMP_H
    20 #include "unicode/uenum.h"
    22 U_CDECL_BEGIN
    24 /** 
    25  * following are the type declarations for 
    26  * implementations of APIs. If any of these
    27  * functions are NULL, U_UNSUPPORTED_ERROR
    28  * is returned. If close is NULL, the enumeration
    29  * object is going to be released.
    30  * Initial error checking is done in the body
    31  * of API function, so the implementations 
    32  * need not to check the initial error condition.
    33  */
    35 /**
    36  * Function type declaration for uenum_close().
    37  *
    38  * This function should cleanup the enumerator object
    39  *
    40  * @param en enumeration to be closed
    41  */
    42 typedef void U_CALLCONV
    43 UEnumClose(UEnumeration *en);
    45 /**
    46  * Function type declaration for uenum_count().
    47  *
    48  * This function should count the number of elements
    49  * in this enumeration
    50  *
    51  * @param en enumeration to be counted
    52  * @param status pointer to UErrorCode variable
    53  * @return number of elements in enumeration
    54  */
    55 typedef int32_t U_CALLCONV
    56 UEnumCount(UEnumeration *en, UErrorCode *status);
    58 /**
    59  * Function type declaration for uenum_unext().
    60  *
    61  * This function returns the next element as a UChar *,
    62  * or NULL after all elements haven been enumerated.
    63  *
    64  * @param en enumeration 
    65  * @param resultLength pointer to result length
    66  * @param status pointer to UErrorCode variable
    67  * @return next element as UChar *,
    68  *         or NULL after all elements haven been enumerated
    69  */
    70 typedef const UChar* U_CALLCONV 
    71 UEnumUNext(UEnumeration* en,
    72             int32_t* resultLength,
    73             UErrorCode* status);
    75 /**
    76  * Function type declaration for uenum_next().
    77  *
    78  * This function returns the next element as a char *,
    79  * or NULL after all elements haven been enumerated.
    80  *
    81  * @param en enumeration 
    82  * @param resultLength pointer to result length
    83  * @param status pointer to UErrorCode variable
    84  * @return next element as char *,
    85  *         or NULL after all elements haven been enumerated
    86  */
    87 typedef const char* U_CALLCONV 
    88 UEnumNext(UEnumeration* en,
    89            int32_t* resultLength,
    90            UErrorCode* status);
    92 /**
    93  * Function type declaration for uenum_reset().
    94  *
    95  * This function should reset the enumeration 
    96  * object
    97  *
    98  * @param en enumeration 
    99  * @param status pointer to UErrorCode variable
   100  */
   101 typedef void U_CALLCONV 
   102 UEnumReset(UEnumeration* en, 
   103             UErrorCode* status);
   106 struct UEnumeration {
   107     /* baseContext. For the base class only. Don't touch! */
   108     void *baseContext;
   110     /* context. Use it for what you need */
   111     void *context;
   113     /** 
   114      * these are functions that will 
   115      * be used for APIs
   116      */
   117     /* called from uenum_close */
   118     UEnumClose *close;
   119     /* called from uenum_count */
   120     UEnumCount *count;
   121     /* called from uenum_unext */
   122     UEnumUNext *uNext;
   123     /* called from uenum_next */
   124     UEnumNext  *next;
   125     /* called from uenum_reset */
   126     UEnumReset *reset;
   127 };
   129 U_CDECL_END
   131 /* This is the default implementation for uenum_unext().
   132  * It automatically converts the char * string to UChar *.
   133  * Don't call this directly.  This is called internally by uenum_unext
   134  * when a UEnumeration is defined with 'uNext' pointing to this
   135  * function.
   136  */
   137 U_CAPI const UChar* U_EXPORT2
   138 uenum_unextDefault(UEnumeration* en,
   139             int32_t* resultLength,
   140             UErrorCode* status);
   142 /* This is the default implementation for uenum_next().
   143  * It automatically converts the UChar * string to char *.
   144  * Don't call this directly.  This is called internally by uenum_next
   145  * when a UEnumeration is defined with 'next' pointing to this
   146  * function.
   147  */
   148 U_CAPI const char* U_EXPORT2
   149 uenum_nextDefault(UEnumeration* en,
   150             int32_t* resultLength,
   151             UErrorCode* status);
   153 #endif

mercurial