PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LTP GCOV extension - code coverage report
Current view: directory - usr/include/unicode - utypes.h
Test: PHP Code Coverage
Date: 2009-11-21 Instrumented lines: 1
Code covered: 100.0 % Executed lines: 1
Legend: not executed executed

       1                 : /*
       2                 : **********************************************************************
       3                 : *   Copyright (C) 1996-2006, International Business Machines
       4                 : *   Corporation and others.  All Rights Reserved.
       5                 : **********************************************************************
       6                 : *
       7                 : *  FILE NAME : UTYPES.H (formerly ptypes.h)
       8                 : *
       9                 : *   Date        Name        Description
      10                 : *   12/11/96    helena      Creation.
      11                 : *   02/27/97    aliu        Added typedefs for UClassID, int8, int16, int32,
      12                 : *                           uint8, uint16, and uint32.
      13                 : *   04/01/97    aliu        Added XP_CPLUSPLUS and modified to work under C as
      14                 : *                            well as C++.
      15                 : *                           Modified to use memcpy() for uprv_arrayCopy() fns.
      16                 : *   04/14/97    aliu        Added TPlatformUtilities.
      17                 : *   05/07/97    aliu        Added import/export specifiers (replacing the old
      18                 : *                           broken EXT_CLASS).  Added version number for our
      19                 : *                           code.  Cleaned up header.
      20                 : *    6/20/97    helena      Java class name change.
      21                 : *   08/11/98    stephen     UErrorCode changed from typedef to enum
      22                 : *   08/12/98    erm         Changed T_ANALYTIC_PACKAGE_VERSION to 3
      23                 : *   08/14/98    stephen     Added uprv_arrayCopy() for int8_t, int16_t, int32_t
      24                 : *   12/09/98    jfitz       Added BUFFER_OVERFLOW_ERROR (bug 1100066)
      25                 : *   04/20/99    stephen     Cleaned up & reworked for autoconf.
      26                 : *                           Renamed to utypes.h.
      27                 : *   05/05/99    stephen     Changed to use <inttypes.h>
      28                 : *   12/07/99    helena      Moved copyright notice string from ucnv_bld.h here.
      29                 : *******************************************************************************
      30                 : */
      31                 : 
      32                 : #ifndef UTYPES_H
      33                 : #define UTYPES_H
      34                 : 
      35                 : 
      36                 : #include "unicode/umachine.h"
      37                 : #include "unicode/utf.h"
      38                 : #include "unicode/uversion.h"
      39                 : #include "unicode/uconfig.h"
      40                 : 
      41                 : #if !U_DEFAULT_SHOW_DRAFT && !defined(U_SHOW_DRAFT_API)
      42                 : #define U_HIDE_DRAFT_API 1
      43                 : #endif
      44                 : 
      45                 : #ifdef U_HIDE_DRAFT_API
      46                 : #include "unicode/udraft.h"
      47                 : #endif
      48                 : 
      49                 : #ifdef U_HIDE_DEPRECATED_API
      50                 : #include "unicode/udeprctd.h"
      51                 : #endif
      52                 : 
      53                 : #ifdef U_HIDE_DEPRECATED_API
      54                 : #include "unicode/uobslete.h"
      55                 : #endif
      56                 : 
      57                 : #ifdef U_HIDE_INTERNAL_API
      58                 : #include "unicode/uintrnal.h"
      59                 : #endif
      60                 : 
      61                 : #ifdef U_HIDE_SYSTEM_API
      62                 : #include "unicode/usystem.h"
      63                 : #endif
      64                 : 
      65                 : /*!
      66                 :  * \file
      67                 :  * \brief Basic definitions for ICU, for both C and C++ APIs
      68                 :  *
      69                 :  * This file defines basic types, constants, and enumerations directly or
      70                 :  * indirectly by including other header files, especially utf.h for the
      71                 :  * basic character and string definitions and umachine.h for consistent
      72                 :  * integer and other types.
      73                 :  */
      74                 : 
      75                 : /*===========================================================================*/
      76                 : /* char Character set family                                                 */
      77                 : /*===========================================================================*/
      78                 : 
      79                 : /**
      80                 :  * U_CHARSET_FAMILY is equal to this value when the platform is an ASCII based platform.
      81                 :  * @stable ICU 2.0
      82                 :  */
      83                 : #define U_ASCII_FAMILY 0
      84                 : 
      85                 : /**
      86                 :  * U_CHARSET_FAMILY is equal to this value when the platform is an EBCDIC based platform.
      87                 :  * @stable ICU 2.0
      88                 :  */
      89                 : #define U_EBCDIC_FAMILY 1
      90                 : 
      91                 : /**
      92                 :  * \def U_CHARSET_FAMILY
      93                 :  *
      94                 :  * <p>These definitions allow to specify the encoding of text
      95                 :  * in the char data type as defined by the platform and the compiler.
      96                 :  * It is enough to determine the code point values of "invariant characters",
      97                 :  * which are the ones shared by all encodings that are in use
      98                 :  * on a given platform.</p>
      99                 :  *
     100                 :  * <p>Those "invariant characters" should be all the uppercase and lowercase
     101                 :  * latin letters, the digits, the space, and "basic punctuation".
     102                 :  * Also, '\\n', '\\r', '\\t' should be available.</p>
     103                 :  *
     104                 :  * <p>The list of "invariant characters" is:<br>
     105                 :  * \code
     106                 :  *    A-Z  a-z  0-9  SPACE  "  %  &amp;  '  (  )  *  +  ,  -  .  /  :  ;  <  =  >  ?  _
     107                 :  * \endcode
     108                 :  * <br>
     109                 :  * (52 letters + 10 numbers + 20 punc/sym/space = 82 total)</p>
     110                 :  *
     111                 :  * <p>This matches the IBM Syntactic Character Set (CS 640).</p>
     112                 :  *
     113                 :  * <p>In other words, all the graphic characters in 7-bit ASCII should
     114                 :  * be safely accessible except the following:</p>
     115                 :  *
     116                 :  * \code
     117                 :  *    '\' <backslash>
     118                 :  *    '[' <left bracket>
     119                 :  *    ']' <right bracket>
     120                 :  *    '{' <left brace>
     121                 :  *    '}' <right brace>
     122                 :  *    '^' <circumflex>
     123                 :  *    '~' <tilde>
     124                 :  *    '!' <exclamation mark>
     125                 :  *    '#' <number sign>
     126                 :  *    '|' <vertical line>
     127                 :  *    '$' <dollar sign>
     128                 :  *    '@' <commercial at>
     129                 :  *    '`' <grave accent>
     130                 :  * \endcode
     131                 :  * @stable ICU 2.0
     132                 :  */
     133                 : 
     134                 : #ifndef U_CHARSET_FAMILY
     135                 : #   define U_CHARSET_FAMILY 0
     136                 : #endif
     137                 : 
     138                 : /*===========================================================================*/
     139                 : /* ICUDATA naming scheme                                                     */
     140                 : /*===========================================================================*/
     141                 : 
     142                 : /**
     143                 :  * \def U_ICUDATA_TYPE_LETTER
     144                 :  *
     145                 :  * This is a platform-dependent string containing one letter:
     146                 :  * - b for big-endian, ASCII-family platforms
     147                 :  * - l for little-endian, ASCII-family platforms
     148                 :  * - e for big-endian, EBCDIC-family platforms
     149                 :  * This letter is part of the common data file name.
     150                 :  * @stable ICU 2.0
     151                 :  */
     152                 : 
     153                 : /**
     154                 :  * \def U_ICUDATA_TYPE_LITLETTER
     155                 :  * The non-string form of U_ICUDATA_TYPE_LETTER
     156                 :  * @stable ICU 2.0
     157                 :  */
     158                 : #if U_CHARSET_FAMILY
     159                 : #   if U_IS_BIG_ENDIAN
     160                 :    /* EBCDIC - should always be BE */
     161                 : #     define U_ICUDATA_TYPE_LETTER "e"
     162                 : #     define U_ICUDATA_TYPE_LITLETTER e
     163                 : #   else
     164                 : #     error "Don't know what to do with little endian EBCDIC!"
     165                 : #     define U_ICUDATA_TYPE_LETTER "x"
     166                 : #     define U_ICUDATA_TYPE_LITLETTER x
     167                 : #   endif
     168                 : #else
     169                 : #   if U_IS_BIG_ENDIAN
     170                 :       /* Big-endian ASCII */
     171                 : #     define U_ICUDATA_TYPE_LETTER "b"
     172                 : #     define U_ICUDATA_TYPE_LITLETTER b
     173                 : #   else
     174                 :       /* Little-endian ASCII */
     175                 : #     define U_ICUDATA_TYPE_LETTER "l"
     176                 : #     define U_ICUDATA_TYPE_LITLETTER l
     177                 : #   endif
     178                 : #endif
     179                 : 
     180                 : /**
     181                 :  * A single string literal containing the icudata stub name. i.e. 'icudt18e' for
     182                 :  * ICU 1.8.x on EBCDIC, etc..
     183                 :  * @stable ICU 2.0
     184                 :  */
     185                 : #define U_ICUDATA_NAME    "icudt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER
     186                 : 
     187                 : 
     188                 : /**
     189                 :  *  U_ICU_ENTRY_POINT is the name of the DLL entry point to the ICU data library.
     190                 :  *    Defined as a literal, not a string.
     191                 :  *    Tricky Preprocessor use - ## operator replaces macro paramters with the literal string
     192                 :  *                              from the corresponding macro invocation, _before_ other macro substitutions.
     193                 :  *                              Need a nested #defines to get the actual version numbers rather than
     194                 :  *                              the literal text U_ICU_VERSION_MAJOR_NUM into the name.
     195                 :  *                              The net result will be something of the form
     196                 :  *                                  #define U_ICU_ENTRY_POINT icudt19_dat
     197                 :  * @stable ICU 2.4
     198                 :  */
     199                 : #define U_ICUDATA_ENTRY_POINT  U_DEF2_ICUDATA_ENTRY_POINT(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM)
     200                 : 
     201                 : /**
     202                 :  * Do not use.
     203                 :  * @internal
     204                 :  */
     205                 : #define U_DEF2_ICUDATA_ENTRY_POINT(major, minor) U_DEF_ICUDATA_ENTRY_POINT(major, minor)
     206                 : /**
     207                 :  * Do not use.
     208                 :  * @internal
     209                 :  */
     210                 : #define U_DEF_ICUDATA_ENTRY_POINT(major, minor) icudt##major##minor##_dat
     211                 : 
     212                 : /**
     213                 :  * \def U_CALLCONV
     214                 :  * Similar to U_CDECL_BEGIN/U_CDECL_END, this qualifier is necessary
     215                 :  * in callback function typedefs to make sure that the calling convention
     216                 :  * is compatible.
     217                 :  *
     218                 :  * This is only used for non-ICU-API functions.
     219                 :  * When a function is a public ICU API,
     220                 :  * you must use the U_CAPI and U_EXPORT2 qualifiers.
     221                 :  * @stable ICU 2.0
     222                 :  */
     223                 : #if defined(OS390) && (__COMPILER_VER__ < 0x41020000) && defined(XP_CPLUSPLUS)
     224                 : #    define U_CALLCONV __cdecl
     225                 : #else
     226                 : #    define U_CALLCONV U_EXPORT2
     227                 : #endif
     228                 : 
     229                 : /**
     230                 :  * \def NULL
     231                 :  * Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
     232                 :  * @stable ICU 2.0
     233                 :  */
     234                 : #ifndef NULL
     235                 : #ifdef XP_CPLUSPLUS
     236                 : #define NULL    0
     237                 : #else
     238                 : #define NULL    ((void *)0)
     239                 : #endif
     240                 : #endif
     241                 : 
     242                 : /*===========================================================================*/
     243                 : /* Calendar/TimeZone data types                                              */
     244                 : /*===========================================================================*/
     245                 : 
     246                 : /**
     247                 :  * Date and Time data type.
     248                 :  * This is a primitive data type that holds the date and time
     249                 :  * as the number of milliseconds since 1970-jan-01, 00:00 UTC.
     250                 :  * UTC leap seconds are ignored.
     251                 :  * @stable ICU 2.0
     252                 :  */
     253                 : typedef double UDate;
     254                 : 
     255                 : /** The number of milliseconds per second @stable ICU 2.0 */
     256                 : #define U_MILLIS_PER_SECOND        (1000)
     257                 : /** The number of milliseconds per minute @stable ICU 2.0 */
     258                 : #define U_MILLIS_PER_MINUTE       (60000)
     259                 : /** The number of milliseconds per hour @stable ICU 2.0 */
     260                 : #define U_MILLIS_PER_HOUR       (3600000)
     261                 : /** The number of milliseconds per day @stable ICU 2.0 */
     262                 : #define U_MILLIS_PER_DAY       (86400000)
     263                 : 
     264                 : 
     265                 : /*===========================================================================*/
     266                 : /* UClassID-based RTTI */
     267                 : /*===========================================================================*/
     268                 : 
     269                 : /**
     270                 :  * UClassID is used to identify classes without using RTTI, since RTTI
     271                 :  * is not yet supported by all C++ compilers.  Each class hierarchy which needs
     272                 :  * to implement polymorphic clone() or operator==() defines two methods,
     273                 :  * described in detail below.  UClassID values can be compared using
     274                 :  * operator==(). Nothing else should be done with them.
     275                 :  *
     276                 :  * \par
     277                 :  * getDynamicClassID() is declared in the base class of the hierarchy as
     278                 :  * a pure virtual.  Each concrete subclass implements it in the same way:
     279                 :  *
     280                 :  * \code
     281                 :  *      class Base {
     282                 :  *      public:
     283                 :  *          virtual UClassID getDynamicClassID() const = 0;
     284                 :  *      }
     285                 :  *
     286                 :  *      class Derived {
     287                 :  *      public:
     288                 :  *          virtual UClassID getDynamicClassID() const
     289                 :  *            { return Derived::getStaticClassID(); }
     290                 :  *      }
     291                 :  * \endcode
     292                 :  *
     293                 :  * Each concrete class implements getStaticClassID() as well, which allows
     294                 :  * clients to test for a specific type.
     295                 :  *
     296                 :  * \code
     297                 :  *      class Derived {
     298                 :  *      public:
     299                 :  *          static UClassID U_EXPORT2 getStaticClassID();
     300                 :  *      private:
     301                 :  *          static char fgClassID;
     302                 :  *      }
     303                 :  *
     304                 :  *      // In Derived.cpp:
     305                 :  *      UClassID Derived::getStaticClassID()
     306                 :  *        { return (UClassID)&Derived::fgClassID; }
     307                 :  *      char Derived::fgClassID = 0; // Value is irrelevant
     308                 :  * \endcode
     309                 :  * @stable ICU 2.0
     310                 :  */
     311                 : typedef void* UClassID;
     312                 : 
     313                 : /*===========================================================================*/
     314                 : /* Shared library/DLL import-export API control                              */
     315                 : /*===========================================================================*/
     316                 : 
     317                 : /*
     318                 :  * Control of symbol import/export.
     319                 :  * ICU is separated into three libraries.
     320                 :  */
     321                 : 
     322                 : /*
     323                 :  * \def U_COMBINED_IMPLEMENTATION
     324                 :  * Set to export library symbols from inside the ICU library
     325                 :  * when all of ICU is in a single library.
     326                 :  * This can be set as a compiler option while building ICU, and it
     327                 :  * needs to be the first one tested to override U_COMMON_API, U_I18N_API, etc.
     328                 :  * @stable ICU 2.0
     329                 :  */
     330                 : 
     331                 : /**
     332                 :  * \def U_DATA_API
     333                 :  * Set to export library symbols from inside the stubdata library,
     334                 :  * and to import them from outside.
     335                 :  * @stable ICU 3.0
     336                 :  */
     337                 : 
     338                 : /**
     339                 :  * \def U_COMMON_API
     340                 :  * Set to export library symbols from inside the common library,
     341                 :  * and to import them from outside.
     342                 :  * @stable ICU 2.0
     343                 :  */
     344                 : 
     345                 : /**
     346                 :  * \def U_I18N_API
     347                 :  * Set to export library symbols from inside the i18n library,
     348                 :  * and to import them from outside.
     349                 :  * @stable ICU 2.0
     350                 :  */
     351                 : 
     352                 : /**
     353                 :  * \def U_LAYOUT_API
     354                 :  * Set to export library symbols from inside the layout engine library,
     355                 :  * and to import them from outside.
     356                 :  * @stable ICU 2.0
     357                 :  */
     358                 : 
     359                 : /**
     360                 :  * \def U_LAYOUTEX_API
     361                 :  * Set to export library symbols from inside the layout extensions library,
     362                 :  * and to import them from outside.
     363                 :  * @stable ICU 2.6
     364                 :  */
     365                 : 
     366                 : /**
     367                 :  * \def U_IO_API
     368                 :  * Set to export library symbols from inside the ustdio library,
     369                 :  * and to import them from outside.
     370                 :  * @stable ICU 2.0
     371                 :  */
     372                 : 
     373                 : /**
     374                 :  * \def U_TOOLUTIL_API
     375                 :  * Set to export library symbols from inside the toolutil library,
     376                 :  * and to import them from outside.
     377                 :  * @draft ICU 3.4
     378                 :  */
     379                 : 
     380                 : #if defined(U_COMBINED_IMPLEMENTATION)
     381                 : #define U_DATA_API     U_EXPORT
     382                 : #define U_COMMON_API   U_EXPORT
     383                 : #define U_I18N_API     U_EXPORT
     384                 : #define U_LAYOUT_API   U_EXPORT
     385                 : #define U_LAYOUTEX_API U_EXPORT
     386                 : #define U_IO_API       U_EXPORT
     387                 : #define U_TOOLUTIL_API U_EXPORT
     388                 : #elif defined(U_STATIC_IMPLEMENTATION)
     389                 : #define U_DATA_API
     390                 : #define U_COMMON_API
     391                 : #define U_I18N_API
     392                 : #define U_LAYOUT_API
     393                 : #define U_LAYOUTEX_API
     394                 : #define U_IO_API
     395                 : #define U_TOOLUTIL_API
     396                 : #elif defined(U_COMMON_IMPLEMENTATION)
     397                 : #define U_DATA_API     U_IMPORT
     398                 : #define U_COMMON_API   U_EXPORT
     399                 : #define U_I18N_API     U_IMPORT
     400                 : #define U_LAYOUT_API   U_IMPORT
     401                 : #define U_LAYOUTEX_API U_IMPORT
     402                 : #define U_IO_API       U_IMPORT
     403                 : #define U_TOOLUTIL_API U_IMPORT
     404                 : #elif defined(U_I18N_IMPLEMENTATION)
     405                 : #define U_DATA_API     U_IMPORT
     406                 : #define U_COMMON_API   U_IMPORT
     407                 : #define U_I18N_API     U_EXPORT
     408                 : #define U_LAYOUT_API   U_IMPORT
     409                 : #define U_LAYOUTEX_API U_IMPORT
     410                 : #define U_IO_API       U_IMPORT
     411                 : #define U_TOOLUTIL_API U_IMPORT
     412                 : #elif defined(U_LAYOUT_IMPLEMENTATION)
     413                 : #define U_DATA_API     U_IMPORT
     414                 : #define U_COMMON_API   U_IMPORT
     415                 : #define U_I18N_API     U_IMPORT
     416                 : #define U_LAYOUT_API   U_EXPORT
     417                 : #define U_LAYOUTEX_API U_IMPORT
     418                 : #define U_IO_API       U_IMPORT
     419                 : #define U_TOOLUTIL_API U_IMPORT
     420                 : #elif defined(U_LAYOUTEX_IMPLEMENTATION)
     421                 : #define U_DATA_API     U_IMPORT
     422                 : #define U_COMMON_API   U_IMPORT
     423                 : #define U_I18N_API     U_IMPORT
     424                 : #define U_LAYOUT_API   U_IMPORT
     425                 : #define U_LAYOUTEX_API U_EXPORT
     426                 : #define U_IO_API       U_IMPORT
     427                 : #define U_TOOLUTIL_API U_IMPORT
     428                 : #elif defined(U_IO_IMPLEMENTATION)
     429                 : #define U_DATA_API     U_IMPORT
     430                 : #define U_COMMON_API   U_IMPORT
     431                 : #define U_I18N_API     U_IMPORT
     432                 : #define U_LAYOUT_API   U_IMPORT
     433                 : #define U_LAYOUTEX_API U_IMPORT
     434                 : #define U_IO_API       U_EXPORT
     435                 : #define U_TOOLUTIL_API U_IMPORT
     436                 : #elif defined(U_TOOLUTIL_IMPLEMENTATION)
     437                 : #define U_DATA_API     U_IMPORT
     438                 : #define U_COMMON_API   U_IMPORT
     439                 : #define U_I18N_API     U_IMPORT
     440                 : #define U_LAYOUT_API   U_IMPORT
     441                 : #define U_LAYOUTEX_API U_IMPORT
     442                 : #define U_IO_API       U_IMPORT
     443                 : #define U_TOOLUTIL_API U_EXPORT
     444                 : #else
     445                 : #define U_DATA_API     U_IMPORT
     446                 : #define U_COMMON_API   U_IMPORT
     447                 : #define U_I18N_API     U_IMPORT
     448                 : #define U_LAYOUT_API   U_IMPORT
     449                 : #define U_LAYOUTEX_API U_IMPORT
     450                 : #define U_IO_API       U_IMPORT
     451                 : #define U_TOOLUTIL_API U_IMPORT
     452                 : #endif
     453                 : 
     454                 : /**
     455                 :  * \def U_STANDARD_CPP_NAMESPACE
     456                 :  * Control of C++ Namespace
     457                 :  * @stable ICU 2.0
     458                 :  */
     459                 : #ifdef __cplusplus
     460                 : #define U_STANDARD_CPP_NAMESPACE        ::
     461                 : #else
     462                 : #define U_STANDARD_CPP_NAMESPACE
     463                 : #endif
     464                 : 
     465                 : 
     466                 : /*===========================================================================*/
     467                 : /* Global delete operator                                                    */
     468                 : /*===========================================================================*/
     469                 : 
     470                 : /*
     471                 :  * The ICU4C library must not use the global new and delete operators.
     472                 :  * These operators here are defined to enable testing for this.
     473                 :  * See Jitterbug 2581 for details of why this is necessary.
     474                 :  *
     475                 :  * Verification that ICU4C's memory usage is correct, i.e.,
     476                 :  * that global new/delete are not used:
     477                 :  *
     478                 :  * a) Check for imports of global new/delete (see uobject.cpp for details)
     479                 :  * b) Verify that new is never imported.
     480                 :  * c) Verify that delete is only imported from object code for interface/mixin classes.
     481                 :  * d) Add global delete and delete[] only for the ICU4C library itself
     482                 :  *    and define them in a way that crashes or otherwise easily shows a problem.
     483                 :  *
     484                 :  * The following implements d).
     485                 :  * The operator implementations crash; this is intentional and used for library debugging.
     486                 :  *
     487                 :  * Note: This is currently only done on Windows because
     488                 :  * some Linux/Unix compilers have problems with defining global new/delete.
     489                 :  * On Windows, WIN32 is defined, and it is _MSC_VER>=1200 for MSVC 6.0 and higher.
     490                 :  */
     491                 : #if defined(XP_CPLUSPLUS) && defined(U_WINDOWS) && (_MSC_VER>=1200) && U_DEBUG && (defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || defined(U_LAYOUT_IMPLEMENTATION) || defined(U_USTDIO_IMPLEMENTATION))
     492                 : 
     493                 : #ifndef U_HIDE_INTERNAL_API
     494                 : /**
     495                 :  * Global operator new, defined only inside ICU4C, must not be used.
     496                 :  * Crashes intentionally.
     497                 :  * @internal
     498                 :  */
     499                 : inline void *
     500                 : operator new(size_t /*size*/) {
     501                 :     char *q=NULL;
     502                 :     *q=5; /* break it */
     503                 :     return q;
     504                 : }
     505                 : 
     506                 : /**
     507                 :  * Global operator new[], defined only inside ICU4C, must not be used.
     508                 :  * Crashes intentionally.
     509                 :  * @internal
     510                 :  */
     511                 : inline void *
     512                 : operator new[](size_t /*size*/) {
     513                 :     char *q=NULL;
     514                 :     *q=5; /* break it */
     515                 :     return q;
     516                 : }
     517                 : 
     518                 : /**
     519                 :  * Global operator delete, defined only inside ICU4C, must not be used.
     520                 :  * Crashes intentionally.
     521                 :  * @internal
     522                 :  */
     523                 : inline void
     524                 : operator delete(void * /*p*/) {
     525                 :     char *q=NULL;
     526                 :     *q=5; /* break it */
     527                 : }
     528                 : 
     529                 : /**
     530                 :  * Global operator delete[], defined only inside ICU4C, must not be used.
     531                 :  * Crashes intentionally.
     532                 :  * @internal
     533                 :  */
     534                 : inline void
     535                 : operator delete[](void * /*p*/) {
     536                 :     char *q=NULL;
     537                 :     *q=5; /* break it */
     538                 : }
     539                 : 
     540                 : #endif /* U_HIDE_INTERNAL_API */
     541                 : #endif
     542                 : 
     543                 : /*===========================================================================*/
     544                 : /* UErrorCode */
     545                 : /*===========================================================================*/
     546                 : 
     547                 : /**
     548                 :  * Error code to replace exception handling, so that the code is compatible with all C++ compilers,
     549                 :  * and to use the same mechanism for C and C++.
     550                 :  *
     551                 :  * \par
     552                 :  * ICU functions that take a reference (C++) or a pointer (C) to a UErrorCode
     553                 :  * first test if(U_FAILURE(errorCode)) { return immediately; }
     554                 :  * so that in a chain of such functions the first one that sets an error code
     555                 :  * causes the following ones to not perform any operations.
     556                 :  *
     557                 :  * \par
     558                 :  * Error codes should be tested using U_FAILURE() and U_SUCCESS().
     559                 :  * @stable ICU 2.0
     560                 :  */
     561                 : typedef enum UErrorCode {
     562                 :     /* The ordering of U_ERROR_INFO_START Vs U_USING_FALLBACK_WARNING looks weird
     563                 :      * and is that way because VC++ debugger displays first encountered constant,
     564                 :      * which is not the what the code is used for
     565                 :      */
     566                 : 
     567                 :     U_USING_FALLBACK_WARNING  = -128,   /**< A resource bundle lookup returned a fallback result (not an error) */
     568                 : 
     569                 :     U_ERROR_WARNING_START     = -128,   /**< Start of information results (semantically successful) */
     570                 : 
     571                 :     U_USING_DEFAULT_WARNING   = -127,   /**< A resource bundle lookup returned a result from the root locale (not an error) */
     572                 : 
     573                 :     U_SAFECLONE_ALLOCATED_WARNING = -126, /**< A SafeClone operation required allocating memory (informational only) */
     574                 : 
     575                 :     U_STATE_OLD_WARNING       = -125,   /**< ICU has to use compatibility layer to construct the service. Expect performance/memory usage degradation. Consider upgrading */
     576                 : 
     577                 :     U_STRING_NOT_TERMINATED_WARNING = -124,/**< An output string could not be NUL-terminated because output length==destCapacity. */
     578                 : 
     579                 :     U_SORT_KEY_TOO_SHORT_WARNING = -123, /**< Number of levels requested in getBound is higher than the number of levels in the sort key */
     580                 : 
     581                 :     U_AMBIGUOUS_ALIAS_WARNING = -122,   /**< This converter alias can go to different converter implementations */
     582                 : 
     583                 :     U_DIFFERENT_UCA_VERSION = -121,     /**< ucol_open encountered a mismatch between UCA version and collator image version, so the collator was constructed from rules. No impact to further function */
     584                 : 
     585                 :     U_ERROR_WARNING_LIMIT,              /**< This must always be the last warning value to indicate the limit for UErrorCode warnings (last warning code +1) */
     586                 : 
     587                 : 
     588                 :     U_ZERO_ERROR              =  0,     /**< No error, no warning. */
     589                 : 
     590                 :     U_ILLEGAL_ARGUMENT_ERROR  =  1,     /**< Start of codes indicating failure */
     591                 :     U_MISSING_RESOURCE_ERROR  =  2,     /**< The requested resource cannot be found */
     592                 :     U_INVALID_FORMAT_ERROR    =  3,     /**< Data format is not what is expected */
     593                 :     U_FILE_ACCESS_ERROR       =  4,     /**< The requested file cannot be found */
     594                 :     U_INTERNAL_PROGRAM_ERROR  =  5,     /**< Indicates a bug in the library code */
     595                 :     U_MESSAGE_PARSE_ERROR     =  6,     /**< Unable to parse a message (message format) */
     596                 :     U_MEMORY_ALLOCATION_ERROR =  7,     /**< Memory allocation error */
     597                 :     U_INDEX_OUTOFBOUNDS_ERROR =  8,     /**< Trying to access the index that is out of bounds */
     598                 :     U_PARSE_ERROR             =  9,     /**< Equivalent to Java ParseException */
     599                 :     U_INVALID_CHAR_FOUND      = 10,     /**< Character conversion: Unmappable input sequence. In other APIs: Invalid character. */
     600                 :     U_TRUNCATED_CHAR_FOUND    = 11,     /**< Character conversion: Incomplete input sequence. */
     601                 :     U_ILLEGAL_CHAR_FOUND      = 12,     /**< Character conversion: Illegal input sequence/combination of input units. */
     602                 :     U_INVALID_TABLE_FORMAT    = 13,     /**< Conversion table file found, but corrupted */
     603                 :     U_INVALID_TABLE_FILE      = 14,     /**< Conversion table file not found */
     604                 :     U_BUFFER_OVERFLOW_ERROR   = 15,     /**< A result would not fit in the supplied buffer */
     605                 :     U_UNSUPPORTED_ERROR       = 16,     /**< Requested operation not supported in current context */
     606                 :     U_RESOURCE_TYPE_MISMATCH  = 17,     /**< an operation is requested over a resource that does not support it */
     607                 :     U_ILLEGAL_ESCAPE_SEQUENCE = 18,     /**< ISO-2022 illlegal escape sequence */
     608                 :     U_UNSUPPORTED_ESCAPE_SEQUENCE = 19, /**< ISO-2022 unsupported escape sequence */
     609                 :     U_NO_SPACE_AVAILABLE      = 20,     /**< No space available for in-buffer expansion for Arabic shaping */
     610                 :     U_CE_NOT_FOUND_ERROR      = 21,     /**< Currently used only while setting variable top, but can be used generally */
     611                 :     U_PRIMARY_TOO_LONG_ERROR  = 22,     /**< User tried to set variable top to a primary that is longer than two bytes */
     612                 :     U_STATE_TOO_OLD_ERROR     = 23,     /**< ICU cannot construct a service from this state, as it is no longer supported */
     613                 :     U_TOO_MANY_ALIASES_ERROR  = 24,     /**< There are too many aliases in the path to the requested resource.
     614                 :                                              It is very possible that a circular alias definition has occured */
     615                 :     U_ENUM_OUT_OF_SYNC_ERROR  = 25,     /**< UEnumeration out of sync with underlying collection */
     616                 :     U_INVARIANT_CONVERSION_ERROR = 26,  /**< Unable to convert a UChar* string to char* with the invariant converter. */
     617                 :     U_INVALID_STATE_ERROR     = 27,     /**< Requested operation can not be completed with ICU in its current state */
     618                 :     U_COLLATOR_VERSION_MISMATCH = 28,   /**< Collator version is not compatible with the base version */
     619                 :     U_USELESS_COLLATOR_ERROR  = 29,     /**< Collator is options only and no base is specified */
     620                 :     U_NO_WRITE_PERMISSION     = 30,     /**< Attempt to modify read-only or constant data. */
     621                 : 
     622                 :     U_STANDARD_ERROR_LIMIT,             /**< This must always be the last value to indicate the limit for standard errors */
     623                 :     /*
     624                 :      * the error code range 0x10000 0x10100 are reserved for Transliterator
     625                 :      */
     626                 :     U_BAD_VARIABLE_DEFINITION=0x10000,/**< Missing '$' or duplicate variable name */
     627                 :     U_PARSE_ERROR_START = 0x10000,    /**< Start of Transliterator errors */
     628                 :     U_MALFORMED_RULE,                 /**< Elements of a rule are misplaced */
     629                 :     U_MALFORMED_SET,                  /**< A UnicodeSet pattern is invalid*/
     630                 :     U_MALFORMED_SYMBOL_REFERENCE,     /**< UNUSED as of ICU 2.4 */
     631                 :     U_MALFORMED_UNICODE_ESCAPE,       /**< A Unicode escape pattern is invalid*/
     632                 :     U_MALFORMED_VARIABLE_DEFINITION,  /**< A variable definition is invalid */
     633                 :     U_MALFORMED_VARIABLE_REFERENCE,   /**< A variable reference is invalid */
     634                 :     U_MISMATCHED_SEGMENT_DELIMITERS,  /**< UNUSED as of ICU 2.4 */
     635                 :     U_MISPLACED_ANCHOR_START,         /**< A start anchor appears at an illegal position */
     636                 :     U_MISPLACED_CURSOR_OFFSET,        /**< A cursor offset occurs at an illegal position */
     637                 :     U_MISPLACED_QUANTIFIER,           /**< A quantifier appears after a segment close delimiter */
     638                 :     U_MISSING_OPERATOR,               /**< A rule contains no operator */
     639                 :     U_MISSING_SEGMENT_CLOSE,          /**< UNUSED as of ICU 2.4 */
     640                 :     U_MULTIPLE_ANTE_CONTEXTS,         /**< More than one ante context */
     641                 :     U_MULTIPLE_CURSORS,               /**< More than one cursor */
     642                 :     U_MULTIPLE_POST_CONTEXTS,         /**< More than one post context */
     643                 :     U_TRAILING_BACKSLASH,             /**< A dangling backslash */
     644                 :     U_UNDEFINED_SEGMENT_REFERENCE,    /**< A segment reference does not correspond to a defined segment */
     645                 :     U_UNDEFINED_VARIABLE,             /**< A variable reference does not correspond to a defined variable */
     646                 :     U_UNQUOTED_SPECIAL,               /**< A special character was not quoted or escaped */
     647                 :     U_UNTERMINATED_QUOTE,             /**< A closing single quote is missing */
     648                 :     U_RULE_MASK_ERROR,                /**< A rule is hidden by an earlier more general rule */
     649                 :     U_MISPLACED_COMPOUND_FILTER,      /**< A compound filter is in an invalid location */
     650                 :     U_MULTIPLE_COMPOUND_FILTERS,      /**< More than one compound filter */
     651                 :     U_INVALID_RBT_SYNTAX,             /**< A "::id" rule was passed to the RuleBasedTransliterator parser */
     652                 :     U_INVALID_PROPERTY_PATTERN,       /**< UNUSED as of ICU 2.4 */
     653                 :     U_MALFORMED_PRAGMA,               /**< A 'use' pragma is invlalid */
     654                 :     U_UNCLOSED_SEGMENT,               /**< A closing ')' is missing */
     655                 :     U_ILLEGAL_CHAR_IN_SEGMENT,        /**< UNUSED as of ICU 2.4 */
     656                 :     U_VARIABLE_RANGE_EXHAUSTED,       /**< Too many stand-ins generated for the given variable range */
     657                 :     U_VARIABLE_RANGE_OVERLAP,         /**< The variable range overlaps characters used in rules */
     658                 :     U_ILLEGAL_CHARACTER,              /**< A special character is outside its allowed context */
     659                 :     U_INTERNAL_TRANSLITERATOR_ERROR,  /**< Internal transliterator system error */
     660                 :     U_INVALID_ID,                     /**< A "::id" rule specifies an unknown transliterator */
     661                 :     U_INVALID_FUNCTION,               /**< A "&fn()" rule specifies an unknown transliterator */
     662                 :     U_PARSE_ERROR_LIMIT,              /**< The limit for Transliterator errors */
     663                 : 
     664                 :     /*
     665                 :      * the error code range 0x10100 0x10200 are reserved for formatting API parsing error
     666                 :      */
     667                 :     U_UNEXPECTED_TOKEN=0x10100,       /**< Syntax error in format pattern */
     668                 :     U_FMT_PARSE_ERROR_START=0x10100,  /**< Start of format library errors */
     669                 :     U_MULTIPLE_DECIMAL_SEPARATORS,    /**< More than one decimal separator in number pattern */
     670                 :     U_MULTIPLE_DECIMAL_SEPERATORS = U_MULTIPLE_DECIMAL_SEPARATORS, /**< Typo: kept for backward compatibility. Use U_MULTIPLE_DECIMAL_SEPARATORS */
     671                 :     U_MULTIPLE_EXPONENTIAL_SYMBOLS,   /**< More than one exponent symbol in number pattern */
     672                 :     U_MALFORMED_EXPONENTIAL_PATTERN,  /**< Grouping symbol in exponent pattern */
     673                 :     U_MULTIPLE_PERCENT_SYMBOLS,       /**< More than one percent symbol in number pattern */
     674                 :     U_MULTIPLE_PERMILL_SYMBOLS,       /**< More than one permill symbol in number pattern */
     675                 :     U_MULTIPLE_PAD_SPECIFIERS,        /**< More than one pad symbol in number pattern */
     676                 :     U_PATTERN_SYNTAX_ERROR,           /**< Syntax error in format pattern */
     677                 :     U_ILLEGAL_PAD_POSITION,           /**< Pad symbol misplaced in number pattern */
     678                 :     U_UNMATCHED_BRACES,               /**< Braces do not match in message pattern */
     679                 :     U_UNSUPPORTED_PROPERTY,           /**< UNUSED as of ICU 2.4 */
     680                 :     U_UNSUPPORTED_ATTRIBUTE,          /**< UNUSED as of ICU 2.4 */
     681                 :     U_FMT_PARSE_ERROR_LIMIT,          /**< The limit for format library errors */
     682                 : 
     683                 :     /*
     684                 :      * the error code range 0x10200 0x102ff are reserved for Break Iterator related error
     685                 :      */
     686                 :     U_BRK_INTERNAL_ERROR=0x10200,          /**< An internal error (bug) was detected.             */
     687                 :     U_BRK_ERROR_START=0x10200,             /**< Start of codes indicating Break Iterator failures */
     688                 :     U_BRK_HEX_DIGITS_EXPECTED,             /**< Hex digits expected as part of a escaped char in a rule. */
     689                 :     U_BRK_SEMICOLON_EXPECTED,              /**< Missing ';' at the end of a RBBI rule.            */
     690                 :     U_BRK_RULE_SYNTAX,                     /**< Syntax error in RBBI rule.                        */
     691                 :     U_BRK_UNCLOSED_SET,                    /**< UnicodeSet witing an RBBI rule missing a closing ']'.  */
     692                 :     U_BRK_ASSIGN_ERROR,                    /**< Syntax error in RBBI rule assignment statement.   */
     693                 :     U_BRK_VARIABLE_REDFINITION,            /**< RBBI rule $Variable redefined.                    */
     694                 :     U_BRK_MISMATCHED_PAREN,                /**< Mis-matched parentheses in an RBBI rule.          */
     695                 :     U_BRK_NEW_LINE_IN_QUOTED_STRING,       /**< Missing closing quote in an RBBI rule.            */
     696                 :     U_BRK_UNDEFINED_VARIABLE,              /**< Use of an undefined $Variable in an RBBI rule.    */
     697                 :     U_BRK_INIT_ERROR,                      /**< Initialization failure.  Probable missing ICU Data. */
     698                 :     U_BRK_RULE_EMPTY_SET,                  /**< Rule contains an empty Unicode Set.               */
     699                 :     U_BRK_UNRECOGNIZED_OPTION,             /**< !!option in RBBI rules not recognized.            */
     700                 :     U_BRK_MALFORMED_RULE_TAG,              /**< The {nnn} tag on a rule is mal formed             */
     701                 :     U_BRK_ERROR_LIMIT,                     /**< This must always be the last value to indicate the limit for Break Iterator failures */
     702                 : 
     703                 :     /*
     704                 :      * The error codes in the range 0x10300-0x103ff are reserved for regular expression related errrs
     705                 :      */
     706                 :     U_REGEX_INTERNAL_ERROR=0x10300,       /**< An internal error (bug) was detected.              */
     707                 :     U_REGEX_ERROR_START=0x10300,          /**< Start of codes indicating Regexp failures          */
     708                 :     U_REGEX_RULE_SYNTAX,                  /**< Syntax error in regexp pattern.                    */
     709                 :     U_REGEX_INVALID_STATE,                /**< RegexMatcher in invalid state for requested operation */
     710                 :     U_REGEX_BAD_ESCAPE_SEQUENCE,          /**< Unrecognized backslash escape sequence in pattern  */
     711                 :     U_REGEX_PROPERTY_SYNTAX,              /**< Incorrect Unicode property                         */
     712                 :     U_REGEX_UNIMPLEMENTED,                /**< Use of regexp feature that is not yet implemented. */
     713                 :     U_REGEX_MISMATCHED_PAREN,             /**< Incorrectly nested parentheses in regexp pattern.  */
     714                 :     U_REGEX_NUMBER_TOO_BIG,               /**< Decimal number is too large.                       */
     715                 :     U_REGEX_BAD_INTERVAL,                 /**< Error in {min,max} interval                        */
     716                 :     U_REGEX_MAX_LT_MIN,                   /**< In {min,max}, max is less than min.                */
     717                 :     U_REGEX_INVALID_BACK_REF,             /**< Back-reference to a non-existent capture group.    */
     718                 :     U_REGEX_INVALID_FLAG,                 /**< Invalid value for match mode flags.                */
     719                 :     U_REGEX_LOOK_BEHIND_LIMIT,            /**< Look-Behind pattern matches must have a bounded maximum length.    */
     720                 :     U_REGEX_SET_CONTAINS_STRING,          /**< Regexps cannot have UnicodeSets containing strings.*/
     721                 :     U_REGEX_ERROR_LIMIT,                  /**< This must always be the last value to indicate the limit for regexp errors */
     722                 : 
     723                 :     /*
     724                 :      * The error code in the range 0x10400-0x104ff are reserved for IDNA related error codes
     725                 :      */
     726                 :     U_IDNA_PROHIBITED_ERROR=0x10400,
     727                 :     U_IDNA_ERROR_START=0x10400,
     728                 :     U_IDNA_UNASSIGNED_ERROR,
     729                 :     U_IDNA_CHECK_BIDI_ERROR,
     730                 :     U_IDNA_STD3_ASCII_RULES_ERROR,
     731                 :     U_IDNA_ACE_PREFIX_ERROR,
     732                 :     U_IDNA_VERIFICATION_ERROR,
     733                 :     U_IDNA_LABEL_TOO_LONG_ERROR,
     734                 :     U_IDNA_ZERO_LENGTH_LABEL_ERROR,
     735                 :     U_IDNA_ERROR_LIMIT,
     736                 :     /*
     737                 :      * Aliases for StringPrep
     738                 :      */
     739                 :     U_STRINGPREP_PROHIBITED_ERROR = U_IDNA_PROHIBITED_ERROR,
     740                 :     U_STRINGPREP_UNASSIGNED_ERROR = U_IDNA_UNASSIGNED_ERROR,
     741                 :     U_STRINGPREP_CHECK_BIDI_ERROR = U_IDNA_CHECK_BIDI_ERROR,
     742                 : 
     743                 : 
     744                 :     U_ERROR_LIMIT=U_IDNA_ERROR_LIMIT      /**< This must always be the last value to indicate the limit for UErrorCode (last error code +1) */
     745                 : } UErrorCode;
     746                 : 
     747                 : /* Use the following to determine if an UErrorCode represents */
     748                 : /* operational success or failure. */
     749                 : 
     750                 : #ifdef XP_CPLUSPLUS
     751                 :     /**
     752                 :      * Does the error code indicate success?
     753                 :      * @stable ICU 2.0
     754                 :      */
     755                 :     static
     756                 :     inline UBool U_SUCCESS(UErrorCode code) { return (UBool)(code<=U_ZERO_ERROR); }
     757                 :     /**
     758                 :      * Does the error code indicate a failure?
     759                 :      * @stable ICU 2.0
     760                 :      */
     761                 :     static
     762              46 :     inline UBool U_FAILURE(UErrorCode code) { return (UBool)(code>U_ZERO_ERROR); }
     763                 : #else
     764                 :     /**
     765                 :      * Does the error code indicate success?
     766                 :      * @stable ICU 2.0
     767                 :      */
     768                 : #   define U_SUCCESS(x) ((x)<=U_ZERO_ERROR)
     769                 :     /**
     770                 :      * Does the error code indicate a failure?
     771                 :      * @stable ICU 2.0
     772                 :      */
     773                 : #   define U_FAILURE(x) ((x)>U_ZERO_ERROR)
     774                 : #endif
     775                 : 
     776                 : /**
     777                 :  * Return a string for a UErrorCode value.
     778                 :  * The string will be the same as the name of the error code constant
     779                 :  * in the UErrorCode enum above.
     780                 :  * @stable ICU 2.0
     781                 :  */
     782                 : U_STABLE const char * U_EXPORT2
     783                 : u_errorName(UErrorCode code);
     784                 : 
     785                 : 
     786                 : #endif /* _UTYPES */

Generated by: LTP GCOV extension version 1.5

Generated at Sat, 21 Nov 2009 12:26:53 +0000 (3 days ago)

Copyright © 2005-2009 The PHP Group
All rights reserved.