1*91e1e26aSAlexander Pyhalov /* 2*91e1e26aSAlexander Pyhalov * CDDL HEADER START 3*91e1e26aSAlexander Pyhalov * 4*91e1e26aSAlexander Pyhalov * The contents of this file are subject to the terms of the 5*91e1e26aSAlexander Pyhalov * Common Development and Distribution License (the "License"). 6*91e1e26aSAlexander Pyhalov * You may not use this file except in compliance with the License. 7*91e1e26aSAlexander Pyhalov * 8*91e1e26aSAlexander Pyhalov * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE 9*91e1e26aSAlexander Pyhalov * or http://www.opensolaris.org/os/licensing. 10*91e1e26aSAlexander Pyhalov * See the License for the specific language governing permissions 11*91e1e26aSAlexander Pyhalov * and limitations under the License. 12*91e1e26aSAlexander Pyhalov * 13*91e1e26aSAlexander Pyhalov * When distributing Covered Code, include this CDDL HEADER in each 14*91e1e26aSAlexander Pyhalov * file and include the License file at src/OPENSOLARIS.LICENSE. 15*91e1e26aSAlexander Pyhalov * If applicable, add the following below this CDDL HEADER, with the 16*91e1e26aSAlexander Pyhalov * fields enclosed by brackets "[]" replaced with your own identifying 17*91e1e26aSAlexander Pyhalov * information: Portions Copyright [yyyy] [name of copyright owner] 18*91e1e26aSAlexander Pyhalov * 19*91e1e26aSAlexander Pyhalov * CDDL HEADER END 20*91e1e26aSAlexander Pyhalov */ 21*91e1e26aSAlexander Pyhalov 22*91e1e26aSAlexander Pyhalov /* 23*91e1e26aSAlexander Pyhalov * Copyright 1998 Sun Microsystems, Inc. All rights reserved. 24*91e1e26aSAlexander Pyhalov * Use is subject to license terms. 25*91e1e26aSAlexander Pyhalov */ 26*91e1e26aSAlexander Pyhalov 27*91e1e26aSAlexander Pyhalov #ifndef UCS4_H 28*91e1e26aSAlexander Pyhalov #define UCS4_H 29*91e1e26aSAlexander Pyhalov #include <sys/isa_defs.h> 30*91e1e26aSAlexander Pyhalov #include <sys/types.h> 31*91e1e26aSAlexander Pyhalov #include "ucs2.h" 32*91e1e26aSAlexander Pyhalov #include "gentypes.h" 33*91e1e26aSAlexander Pyhalov 34*91e1e26aSAlexander Pyhalov #define UCS4_NBYTE 4 35*91e1e26aSAlexander Pyhalov #define UCS4_MAXVAL 0x7fffffff 36*91e1e26aSAlexander Pyhalov #define UCS4_PPRC_MAXVAL 0xfffd /* PPRC: Per Plane Row Column */ 37*91e1e26aSAlexander Pyhalov 38*91e1e26aSAlexander Pyhalov #define room_for_ucs4_cnv(p1,p2) (((p1)+sizeof(ucs4_t))<=(p2)) 39*91e1e26aSAlexander Pyhalov #define no_room_for_ucs4_cnv(p1,p2) (((p1)+sizeof(ucs4_t))>(p2)) 40*91e1e26aSAlexander Pyhalov #define incomplete_ucs4_seq(p1,p2) (((p1)+sizeof(ucs4_t))>(p2)) 41*91e1e26aSAlexander Pyhalov 42*91e1e26aSAlexander Pyhalov #define valid_ucs4_value(n) (_valid_ucs4_value(n)) 43*91e1e26aSAlexander Pyhalov 44*91e1e26aSAlexander Pyhalov #define ext_ucs4_lsw(n) ((ucs2_t)((((ucs4_t)(n))&((ucs4_t)0x0000ffff)))) 45*91e1e26aSAlexander Pyhalov #define ext_ucs4_msw(n) ((ucs2_t)((((ucs4_t)(n))&((ucs4_t)0xffff0000))>>16)) 46*91e1e26aSAlexander Pyhalov 47*91e1e26aSAlexander Pyhalov #define get_ucs4_word(p) (*((ucs4_t*)(p))) 48*91e1e26aSAlexander Pyhalov #define set_ucs4_word(p,n) ((*((ucs4_t*)(p)))=n) 49*91e1e26aSAlexander Pyhalov 50*91e1e26aSAlexander Pyhalov #if defined(_BIG_ENDIAN) 51*91e1e26aSAlexander Pyhalov #define get_ucs4_word_BB(p) (((ucs4_t)(get_ucs2_word_BB((p))<<16))|\ 52*91e1e26aSAlexander Pyhalov ((ucs4_t)(get_ucs2_word_BB((p)+2)))) 53*91e1e26aSAlexander Pyhalov 54*91e1e26aSAlexander Pyhalov #define set_ucs4_word_BB(p,n) (set_ucs2_word_BB((p),ext_ucs4_msw(n)),\ 55*91e1e26aSAlexander Pyhalov set_ucs2_word_BB((p)+2,ext_ucs4_lsw(n))) 56*91e1e26aSAlexander Pyhalov #else 57*91e1e26aSAlexander Pyhalov #define get_ucs4_word_BB(p) (((ucs4_t)(get_ucs2_word_BB((p)+2)<<16))|\ 58*91e1e26aSAlexander Pyhalov ((ucs4_t)(get_ucs2_word_BB(p)))) 59*91e1e26aSAlexander Pyhalov 60*91e1e26aSAlexander Pyhalov #define set_ucs4_word_BB(p,n) (set_ucs2_word_BB((p)+2,ext_ucs4_msw(n)),\ 61*91e1e26aSAlexander Pyhalov set_ucs2_word_BB((p),ext_ucs4_lsw(n))) 62*91e1e26aSAlexander Pyhalov #endif 63*91e1e26aSAlexander Pyhalov 64*91e1e26aSAlexander Pyhalov int _valid_ucs4_value(ucs4_t); 65*91e1e26aSAlexander Pyhalov #endif 66