Home | History | Annotate | Download | only in props
      1 /*
      2 *******************************************************************************
      3 *
      4 *    2016 and later: Unicode, Inc. and others.
      5 *   License & terms of use: http://www.unicode.org/copyright.html#License
      6 *
      7 *******************************************************************************
      8 *******************************************************************************
      9 *
     10 *   Copyright (C) 2000, International Business Machines
     11 *   Corporation and others.  All Rights Reserved.
     12 *
     13 *******************************************************************************
     14 *   file name:  props.cpp
     15 *   encoding:   UTF-8
     16 *   tab size:   8 (not used)
     17 *   indentation:4
     18 *
     19 *   created on: 2000sep22
     20 *   created by: Markus W. Scherer
     21 *
     22 *   This file contains sample code that illustrates the use of the ICU APIs
     23 *   for Unicode character properties.
     24 */
     25 
     26 #include <stdio.h>
     27 #include "unicode/utypes.h"
     28 #include "unicode/uchar.h"
     29 #include "unicode/uclean.h"
     30 
     31 static void
     32 printProps(UChar32 codePoint) {
     33     char buffer[100];
     34     UErrorCode errorCode;
     35 
     36     /* get the character name */
     37     errorCode=U_ZERO_ERROR;
     38     u_charName(codePoint, U_UNICODE_CHAR_NAME, buffer, sizeof(buffer), &errorCode);
     39 
     40     /* print the code point and the character name */
     41     printf("U+%04lx\t%s\n", codePoint, buffer);
     42 
     43     /* print some properties */
     44     printf("  general category (numeric enum value): %u\n", u_charType(codePoint));
     45 
     46     /* note: these APIs do not provide the data from SpecialCasing.txt */
     47     printf("  is lowercase: %d  uppercase: U+%04lx\n", u_islower(codePoint), u_toupper(codePoint));
     48 
     49     printf("  is digit: %d  decimal digit value: %d\n", u_isdigit(codePoint), u_charDigitValue(codePoint));
     50 
     51     printf("  BiDi directional category (numeric enum value): %u\n", u_charDirection(codePoint));
     52 }
     53 
     54 /* Note: In ICU 2.0, the Unicode class is deprecated - it is a pure wrapper around the C APIs above. */
     55 
     56 extern int
     57 main(int argc, const char *argv[]) {
     58     static const UChar32
     59     codePoints[]={
     60         0xd, 0x20, 0x2d, 0x35, 0x65, 0x284, 0x665, 0x5678, 0x23456, 0x10317, 0x1D01F, 0x10fffd
     61     };
     62     int i;
     63 
     64     for(i=0; i<sizeof(codePoints)/sizeof(codePoints[0]); ++i) {
     65         printProps(codePoints[i]);
     66         puts("");
     67     }
     68 
     69     u_cleanup();
     70     return 0;
     71 }
     72