Annotation of XNU/bsd/hfs/hfscommon/Unicode/ConvertUTF.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /* ================================================================ */
        !            23: /*
        !            24: File:  ConvertUTF.h
        !            25: Author: Mark E. Davis
        !            26: Copyright (C) 1994 Taligent, Inc. All rights reserved.
        !            27: 
        !            28: This code is copyrighted. Under the copyright laws, this code may not
        !            29: be copied, in whole or part, without prior written consent of Taligent. 
        !            30: 
        !            31: Taligent grants the right to use or reprint this code as long as this
        !            32: ENTIRE copyright notice is reproduced in the code or reproduction.
        !            33: The code is provided AS-IS, AND TALIGENT DISCLAIMS ALL WARRANTIES,
        !            34: EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO IMPLIED
        !            35: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  IN
        !            36: NO EVENT WILL TALIGENT BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING,
        !            37: WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
        !            38: INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
        !            39: LOSS) ARISING OUT OF THE USE OR INABILITY TO USE THIS CODE, EVEN
        !            40: IF TALIGENT HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
        !            41: BECAUSE SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF
        !            42: LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, THE ABOVE
        !            43: LIMITATION MAY NOT APPLY TO YOU.
        !            44: 
        !            45: RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the
        !            46: government is subject to restrictions as set forth in subparagraph
        !            47: (c)(l)(ii) of the Rights in Technical Data and Computer Software
        !            48: clause at DFARS 252.227-7013 and FAR 52.227-19.
        !            49: 
        !            50: This code may be protected by one or more U.S. and International
        !            51: Patents.
        !            52: 
        !            53: TRADEMARKS: Taligent and the Taligent Design Mark are registered
        !            54: trademarks of Taligent, Inc.
        !            55: */
        !            56: /* ================================================================ */
        !            57: 
        !            58: // #include <types.h>
        !            59: 
        !            60: /* ================================================================ */
        !            61: /*     The following 4 definitions are compiler-specific.
        !            62:        I would use wchar_t for UCS2/UTF16, except that the C standard
        !            63:        does not guarantee that it has at least 16 bits, so wchar_t is
        !            64:        no less portable than unsigned short!
        !            65: */
        !            66: 
        !            67: typedef unsigned long  UCS4;
        !            68: typedef unsigned short UCS2;
        !            69: typedef unsigned short UTF16;
        !            70: typedef unsigned char  UTF8;
        !            71: 
        !            72: /*
        !            73: const UCS4 kReplacementCharacter =     0x0000FFFDUL;
        !            74: const UCS4 kMaximumUCS2 =                      0x0000FFFFUL;
        !            75: const UCS4 kMaximumUTF16 =                     0x0010FFFFUL;
        !            76: const UCS4 kMaximumUCS4 =                      0x7FFFFFFFUL;
        !            77: */
        !            78: 
        !            79: /* ================================================================ */
        !            80: /*     Each of these routines converts the text between *sourceStart and 
        !            81: sourceEnd, putting the result into the buffer between *targetStart and
        !            82: targetEnd. Note: the end pointers are *after* the last item: e.g. 
        !            83: *(sourceEnd - 1) is the last item.
        !            84: 
        !            85:        The return result indicates whether the conversion was successful,
        !            86: and if not, whether the problem was in the source or target buffers.
        !            87: 
        !            88:        After the conversion, *sourceStart and *targetStart are both
        !            89: updated to point to the end of last text successfully converted in
        !            90: the respective buffers.
        !            91: */
        !            92: 
        !            93: typedef enum {
        !            94:        ok,                             /* conversion successful */
        !            95:        sourceExhausted,        /* partial character in source, but hit end */
        !            96:        targetExhausted         /* insuff. room in target for conversion */
        !            97: } ConversionResult;
        !            98: 
        !            99: ConversionResult       ConvertUTF16toUTF8 (
        !           100:                UTF16** sourceStart, const UTF16* sourceEnd, 
        !           101:                UTF8** targetStart, const UTF8* targetEnd);
        !           102:                
        !           103: ConversionResult       ConvertUTF8toUTF16 (
        !           104:                UTF8** sourceStart, UTF8* sourceEnd, 
        !           105:                UTF16** targetStart, const UTF16* targetEnd);
        !           106: 
        !           107: /* ================================================================ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.