{-# OPTIONS_GHC -Wno-orphans #-}
{-|
Module      : Parsley.Internal.Common.Queue
Description : Queue operations.
License     : BSD-3-Clause
Maintainer  : Jamie Willis
Stability   : experimental

Exposes the instance of `QueueLike` for `Queue`.

@since 1.5.0.0
-}
module Parsley.Internal.Common.Queue (module Queue) where

import Parsley.Internal.Common.Queue.Impl as Queue (
    Queue, empty, enqueue, dequeue, null, size, foldr, enqueueAll
  )
import Parsley.Internal.Common.QueueLike  (QueueLike(empty, null, size, enqueue, dequeue, enqueueAll))

instance QueueLike Queue where
  empty :: Queue a
empty      = Queue a
forall a. Queue a
Queue.empty
  null :: Queue a -> Bool
null       = Queue a -> Bool
forall a. Queue a -> Bool
Queue.null
  size :: Queue a -> Int
size       = Queue a -> Int
forall a. Queue a -> Int
Queue.size
  enqueue :: a -> Queue a -> Queue a
enqueue    = a -> Queue a -> Queue a
forall a. a -> Queue a -> Queue a
Queue.enqueue
  dequeue :: Queue a -> (a, Queue a)
dequeue    = Queue a -> (a, Queue a)
forall a. Queue a -> (a, Queue a)
Queue.dequeue
  enqueueAll :: [a] -> Queue a -> Queue a
enqueueAll = [a] -> Queue a -> Queue a
forall a. [a] -> Queue a -> Queue a
Queue.enqueueAll