{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms   #-}
{-# LANGUAGE Strict            #-}
module Tokstyle.Common.Patterns where

import           Data.Fix        (Fix (..))
import           Data.Text       (Text)
import           Language.Cimple (Lexeme (..), LexemeClass (..), Node,
                                  NodeF (..))

pattern TY_uint8_t, TY_uint16_t, TY_uint32_t, TY_uint64_t, TY_uint8_t_ptr, TY_void_ptr :: Node (Lexeme Text)
pattern $mTY_uint8_t :: forall r. Node (Lexeme Text) -> (Void# -> r) -> (Void# -> r) -> r
TY_uint8_t  <- Fix (TyStd (L _ IdStdType "uint8_t"))
pattern $mTY_uint16_t :: forall r. Node (Lexeme Text) -> (Void# -> r) -> (Void# -> r) -> r
TY_uint16_t <- Fix (TyStd (L _ IdStdType "uint16_t"))
pattern $mTY_uint32_t :: forall r. Node (Lexeme Text) -> (Void# -> r) -> (Void# -> r) -> r
TY_uint32_t <- Fix (TyStd (L _ IdStdType "uint32_t"))
pattern $mTY_uint64_t :: forall r. Node (Lexeme Text) -> (Void# -> r) -> (Void# -> r) -> r
TY_uint64_t <- Fix (TyStd (L _ IdStdType "uint64_t"))

pattern $mTY_uint8_t_ptr :: forall r. Node (Lexeme Text) -> (Void# -> r) -> (Void# -> r) -> r
TY_uint8_t_ptr <- Fix (TyPointer (Fix (TyStd (L _ IdStdType "uint8_t"))))
pattern $mTY_void_ptr :: forall r. Node (Lexeme Text) -> (Void# -> r) -> (Void# -> r) -> r
TY_void_ptr <- Fix (TyPointer (Fix (TyStd (L _ KwVoid "void"))))