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