{-# LINE 1 "src/Libjwt/FFI/Jsmn.hsc" #-}
--   This Source Code Form is subject to the terms of the Mozilla Public
--   License, v. 2.0. If a copy of the MPL was not distributed with this
--   file, You can obtain one at http://mozilla.org/MPL/2.0/.

{-# LANGUAGE CPP, ForeignFunctionInterface #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

module Libjwt.FFI.Jsmn where

import Foreign
import Foreign.C.Types

data JsmnTokT = Token { JsmnTokT -> JsmnTypeT
jsmnType :: JsmnTypeT, JsmnTokT -> CInt
start :: CInt, JsmnTokT -> CInt
end :: CInt, JsmnTokT -> CInt
size :: CInt, JsmnTokT -> CInt
parent :: CInt }

peekType :: Ptr JsmnTokT -> IO JsmnTypeT
peekType :: Ptr JsmnTokT -> IO JsmnTypeT
peekType Ptr JsmnTokT
ptr = Ptr JsmnTokT -> Int -> IO JsmnTypeT
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr JsmnTokT
ptr ((Int
0))
{-# LINE 18 "src/Libjwt/FFI/Jsmn.hsc" #-}

peekParent :: Ptr JsmnTokT -> IO CInt
peekParent :: Ptr JsmnTokT -> IO CInt
peekParent Ptr JsmnTokT
ptr = Ptr JsmnTokT -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr JsmnTokT
ptr ((Int
16))
{-# LINE 21 "src/Libjwt/FFI/Jsmn.hsc" #-}

instance Storable JsmnTokT where
  sizeOf :: JsmnTokT -> Int
sizeOf    JsmnTokT
_ = ((Int
20))
{-# LINE 24 "src/Libjwt/FFI/Jsmn.hsc" #-}
  alignment _ = (4)
{-# LINE 25 "src/Libjwt/FFI/Jsmn.hsc" #-}

  peek :: Ptr JsmnTokT -> IO JsmnTokT
peek Ptr JsmnTokT
ptr = JsmnTypeT -> CInt -> CInt -> CInt -> CInt -> JsmnTokT
Token 
    (JsmnTypeT -> CInt -> CInt -> CInt -> CInt -> JsmnTokT)
-> IO JsmnTypeT -> IO (CInt -> CInt -> CInt -> CInt -> JsmnTokT)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((\Ptr JsmnTokT
hsc_ptr -> Ptr JsmnTokT -> Int -> IO JsmnTypeT
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr JsmnTokT
hsc_ptr Int
0)) Ptr JsmnTokT
ptr 
{-# LINE 28 "src/Libjwt/FFI/Jsmn.hsc" #-}
    <*> ((\Ptr JsmnTokT
hsc_ptr -> Ptr JsmnTokT -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr JsmnTokT
hsc_ptr Int
4)) Ptr JsmnTokT
ptr 
{-# LINE 29 "src/Libjwt/FFI/Jsmn.hsc" #-}
    <*> ((\Ptr JsmnTokT
hsc_ptr -> Ptr JsmnTokT -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr JsmnTokT
hsc_ptr Int
8)) Ptr JsmnTokT
ptr
{-# LINE 30 "src/Libjwt/FFI/Jsmn.hsc" #-}
    <*> ((\Ptr JsmnTokT
hsc_ptr -> Ptr JsmnTokT -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr JsmnTokT
hsc_ptr Int
12)) Ptr JsmnTokT
ptr
{-# LINE 31 "src/Libjwt/FFI/Jsmn.hsc" #-}
    <*> ((\Ptr JsmnTokT
hsc_ptr -> Ptr JsmnTokT -> Int -> IO CInt
forall a b. Storable a => Ptr b -> Int -> IO a
peekByteOff Ptr JsmnTokT
hsc_ptr Int
16)) Ptr JsmnTokT
ptr
{-# LINE 32 "src/Libjwt/FFI/Jsmn.hsc" #-}

  poke :: Ptr JsmnTokT -> JsmnTokT -> IO ()
poke Ptr JsmnTokT
ptr (Token (JsmnType CInt
t) CInt
st CInt
e CInt
sz CInt
p) = do
    ((\Ptr JsmnTokT
hsc_ptr -> Ptr JsmnTokT -> Int -> CInt -> IO ()
forall a b. Storable a => Ptr b -> Int -> a -> IO ()
pokeByteOff Ptr JsmnTokT
hsc_ptr Int
0)) Ptr JsmnTokT
ptr CInt
t
{-# LINE 35 "src/Libjwt/FFI/Jsmn.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 4)) ptr st
{-# LINE 36 "src/Libjwt/FFI/Jsmn.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 8)) ptr e
{-# LINE 37 "src/Libjwt/FFI/Jsmn.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 12)) ptr sz
{-# LINE 38 "src/Libjwt/FFI/Jsmn.hsc" #-}
    ((\hsc_ptr -> pokeByteOff hsc_ptr 16)) ptr p
{-# LINE 39 "src/Libjwt/FFI/Jsmn.hsc" #-}

newtype JsmnTypeT = JsmnType CInt
  deriving stock JsmnTypeT -> JsmnTypeT -> Bool
(JsmnTypeT -> JsmnTypeT -> Bool)
-> (JsmnTypeT -> JsmnTypeT -> Bool) -> Eq JsmnTypeT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JsmnTypeT -> JsmnTypeT -> Bool
$c/= :: JsmnTypeT -> JsmnTypeT -> Bool
== :: JsmnTypeT -> JsmnTypeT -> Bool
$c== :: JsmnTypeT -> JsmnTypeT -> Bool
Eq
  deriving newtype Ptr b -> Int -> IO JsmnTypeT
Ptr b -> Int -> JsmnTypeT -> IO ()
Ptr JsmnTypeT -> IO JsmnTypeT
Ptr JsmnTypeT -> Int -> IO JsmnTypeT
Ptr JsmnTypeT -> Int -> JsmnTypeT -> IO ()
Ptr JsmnTypeT -> JsmnTypeT -> IO ()
JsmnTypeT -> Int
(JsmnTypeT -> Int)
-> (JsmnTypeT -> Int)
-> (Ptr JsmnTypeT -> Int -> IO JsmnTypeT)
-> (Ptr JsmnTypeT -> Int -> JsmnTypeT -> IO ())
-> (forall b. Ptr b -> Int -> IO JsmnTypeT)
-> (forall b. Ptr b -> Int -> JsmnTypeT -> IO ())
-> (Ptr JsmnTypeT -> IO JsmnTypeT)
-> (Ptr JsmnTypeT -> JsmnTypeT -> IO ())
-> Storable JsmnTypeT
forall b. Ptr b -> Int -> IO JsmnTypeT
forall b. Ptr b -> Int -> JsmnTypeT -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr JsmnTypeT -> JsmnTypeT -> IO ()
$cpoke :: Ptr JsmnTypeT -> JsmnTypeT -> IO ()
peek :: Ptr JsmnTypeT -> IO JsmnTypeT
$cpeek :: Ptr JsmnTypeT -> IO JsmnTypeT
pokeByteOff :: Ptr b -> Int -> JsmnTypeT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> JsmnTypeT -> IO ()
peekByteOff :: Ptr b -> Int -> IO JsmnTypeT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO JsmnTypeT
pokeElemOff :: Ptr JsmnTypeT -> Int -> JsmnTypeT -> IO ()
$cpokeElemOff :: Ptr JsmnTypeT -> Int -> JsmnTypeT -> IO ()
peekElemOff :: Ptr JsmnTypeT -> Int -> IO JsmnTypeT
$cpeekElemOff :: Ptr JsmnTypeT -> Int -> IO JsmnTypeT
alignment :: JsmnTypeT -> Int
$calignment :: JsmnTypeT -> Int
sizeOf :: JsmnTypeT -> Int
$csizeOf :: JsmnTypeT -> Int
Storable



jsmnUndefined :: JsmnTypeT
jsmnUndefined :: JsmnTypeT
jsmnUndefined = CInt -> JsmnTypeT
JsmnType CInt
0
jsmnObject :: JsmnTypeT
jsmnObject :: JsmnTypeT
jsmnObject = CInt -> JsmnTypeT
JsmnType CInt
1
jsmnArray :: JsmnTypeT
jsmnArray :: JsmnTypeT
jsmnArray = CInt -> JsmnTypeT
JsmnType CInt
2
jsmnString :: JsmnTypeT
jsmnString :: JsmnTypeT
jsmnString = CInt -> JsmnTypeT
JsmnType CInt
3
jsmnPrimitive  :: JsmnTypeT
jsmnPrimitive :: JsmnTypeT
jsmnPrimitive  = CInt -> JsmnTypeT
JsmnType CInt
4

{-# LINE 47 "src/Libjwt/FFI/Jsmn.hsc" #-}