sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

utf.h (2402B)


      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 char *utfrune(const char *, Rune);
     42 char *utfrrune(const char *, Rune);
     43 char *utfutf(const char *, const char *);
     44 
     45 int isalnumrune(Rune);
     46 int isalpharune(Rune);
     47 int isblankrune(Rune);
     48 int iscntrlrune(Rune);
     49 int isdigitrune(Rune);
     50 int isgraphrune(Rune);
     51 int islowerrune(Rune);
     52 int isprintrune(Rune);
     53 int ispunctrune(Rune);
     54 int isspacerune(Rune);
     55 int istitlerune(Rune);
     56 int isupperrune(Rune);
     57 int isxdigitrune(Rune);
     58 
     59 Rune tolowerrune(Rune);
     60 Rune toupperrune(Rune);
     61 
     62 int utftorunestr(const char*, Rune *);
     63 
     64 int fgetrune(Rune *, FILE *);
     65 int efgetrune(Rune *, FILE *, const char *);
     66 int fputrune(const Rune *, FILE *);
     67 int efputrune(const Rune *, FILE *, const char *);