• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 *******************************************************************************
3 *
4 *   © 2016 and later: Unicode, Inc. and others.
5 *   License & terms of use: http://www.unicode.org/copyright.html
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 #define __STDC_FORMAT_MACROS 1
27 #include <inttypes.h>
28 
29 #include <stdio.h>
30 #include "unicode/utypes.h"
31 #include "unicode/uchar.h"
32 #include "unicode/uclean.h"
33 
34 static void
printProps(UChar32 codePoint)35 printProps(UChar32 codePoint) {
36     char buffer[100];
37     UErrorCode errorCode;
38 
39     /* get the character name */
40     errorCode=U_ZERO_ERROR;
41     u_charName(codePoint, U_UNICODE_CHAR_NAME, buffer, sizeof(buffer), &errorCode);
42 
43     /* print the code point and the character name */
44     printf("U+%04" PRId32 "\t%s\n", codePoint, buffer);
45 
46     /* print some properties */
47     printf("  general category (numeric enum value): %u\n", u_charType(codePoint));
48 
49     /* note: these APIs do not provide the data from SpecialCasing.txt */
50     printf("  is lowercase: %d  uppercase: U+%04" PRId32 "\n", u_islower(codePoint), u_toupper(codePoint));
51 
52     printf("  is digit: %d  decimal digit value: %d\n", u_isdigit(codePoint), u_charDigitValue(codePoint));
53 
54     printf("  BiDi directional category (numeric enum value): %u\n", u_charDirection(codePoint));
55 }
56 
57 /* Note: In ICU 2.0, the Unicode class is deprecated - it is a pure wrapper around the C APIs above. */
58 
59 extern int
main(int argc,const char * argv[])60 main(int argc, const char *argv[]) {
61     static const UChar32
62     codePoints[]={
63         0xd, 0x20, 0x2d, 0x35, 0x65, 0x284, 0x665, 0x5678, 0x23456, 0x10317, 0x1D01F, 0x10fffd
64     };
65     int i;
66 
67     for(i=0; i<sizeof(codePoints)/sizeof(codePoints[0]); ++i) {
68         printProps(codePoints[i]);
69         puts("");
70     }
71 
72     u_cleanup();
73     return 0;
74 }
75