    -- |
    -- Module      : Data.Text.Internal.Encoding.Utf32
    -- Copyright   : (c) 2008, 2009 Tom Harper,
    --               (c) 2009, 2010 Bryan O'Sullivan,
    --               (c) 2009 Duncan Coutts
    --
    -- License     : BSD-style
    -- Maintainer  : bos@serpentine.com
    -- Stability   : experimental
    -- Portability : portable
    --
    -- /Warning/: this is an internal module, and does not have a stable
    -- API or name. Functions in this module may not check or enforce
    -- preconditions expected by public modules. Use at your own risk!
    --
    -- Basic UTF-32 validation.
    module Data.Text.Internal.Encoding.Utf32
        (
          validate
        ) where

    import Data.Word (Word32)

    validate    :: Word32 -> Bool
    validate :: Word32 -> Bool
    validate Word32
    x1 = Word32
    x1 Word32 -> Word32 -> Bool
    forall a. Ord a => a -> a -> Bool
    < Word32
    0xD800 Bool -> Bool -> Bool
    || (Word32
    x1 Word32 -> Word32 -> Bool
    forall a. Ord a => a -> a -> Bool
    > Word32
    0xDFFF Bool -> Bool -> Bool
    && Word32
    x1 Word32 -> Word32 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word32
    0x10FFFF)
    {-# INLINE validate #-}