utf.h - sbase - suckless unix tools
 (HTM) git clone git://git.suckless.org/sbase
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       utf.h (2498B)
       ---
            1 /* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <cls@lubutu.com>
            2  *
            3  * Permission is hereby granted, free of charge, to any person obtaining a
            4  * copy of this software and associated documentation files (the "Software"),
            5  * to deal in the Software without restriction, including without limitation
            6  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
            7  * and/or sell copies of the Software, and to permit persons to whom the
            8  * Software is furnished to do so, subject to the following conditions:
            9  *
           10  * The above copyright notice and this permission notice shall be included in
           11  * all copies or substantial portions of the Software.
           12  *
           13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
           14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
           15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
           16  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
           17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
           18  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
           19  * DEALINGS IN THE SOFTWARE.
           20  */
           21 #include <stdio.h>
           22 
           23 typedef int Rune;
           24 
           25 enum {
           26         UTFmax    = 6,       /* maximum bytes per rune */
           27         Runeself  = 0x80,    /* rune and utf are equal (<) */
           28         Runeerror = 0xFFFD,  /* decoding error in utf */
           29         Runemax   = 0x10FFFF /* maximum rune value */
           30 };
           31 
           32 int runetochar(char *, const Rune *);
           33 int chartorune(Rune *, const char *);
           34 int charntorune(Rune *, const char *, size_t);
           35 int runelen(Rune);
           36 size_t runenlen(const Rune *, size_t);
           37 int fullrune(const char *, size_t);
           38 char *utfecpy(char *, char *, const char *);
           39 size_t utflen(const char *);
           40 size_t utfnlen(const char *, size_t);
           41 size_t utfmemlen(const char *, size_t);
           42 char *utfrune(const char *, Rune);
           43 char *utfrrune(const char *, Rune);
           44 char *utfutf(const char *, const char *);
           45 
           46 int isalnumrune(Rune);
           47 int isalpharune(Rune);
           48 int isblankrune(Rune);
           49 int iscntrlrune(Rune);
           50 int isdigitrune(Rune);
           51 int isgraphrune(Rune);
           52 int islowerrune(Rune);
           53 int isprintrune(Rune);
           54 int ispunctrune(Rune);
           55 int isspacerune(Rune);
           56 int istitlerune(Rune);
           57 int isupperrune(Rune);
           58 int isxdigitrune(Rune);
           59 
           60 Rune tolowerrune(Rune);
           61 Rune toupperrune(Rune);
           62 
           63 size_t utftorunestr(const char *, Rune *);
           64 size_t utfntorunestr(const char *, size_t, Rune *);
           65 
           66 int fgetrune(Rune *, FILE *);
           67 int efgetrune(Rune *, FILE *, const char *);
           68 int fputrune(const Rune *, FILE *);
           69 int efputrune(const Rune *, FILE *, const char *);