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