module Graphics.QML.Internal.Types where

import Data.Map (Map)
import Data.Typeable
import Data.Unique
import Foreign.Ptr

newtype TypeId = TypeId Int deriving (TypeId -> TypeId -> Bool
(TypeId -> TypeId -> Bool)
-> (TypeId -> TypeId -> Bool) -> Eq TypeId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TypeId -> TypeId -> Bool
== :: TypeId -> TypeId -> Bool
$c/= :: TypeId -> TypeId -> Bool
/= :: TypeId -> TypeId -> Bool
Eq, Eq TypeId
Eq TypeId =>
(TypeId -> TypeId -> Ordering)
-> (TypeId -> TypeId -> Bool)
-> (TypeId -> TypeId -> Bool)
-> (TypeId -> TypeId -> Bool)
-> (TypeId -> TypeId -> Bool)
-> (TypeId -> TypeId -> TypeId)
-> (TypeId -> TypeId -> TypeId)
-> Ord TypeId
TypeId -> TypeId -> Bool
TypeId -> TypeId -> Ordering
TypeId -> TypeId -> TypeId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: TypeId -> TypeId -> Ordering
compare :: TypeId -> TypeId -> Ordering
$c< :: TypeId -> TypeId -> Bool
< :: TypeId -> TypeId -> Bool
$c<= :: TypeId -> TypeId -> Bool
<= :: TypeId -> TypeId -> Bool
$c> :: TypeId -> TypeId -> Bool
> :: TypeId -> TypeId -> Bool
$c>= :: TypeId -> TypeId -> Bool
>= :: TypeId -> TypeId -> Bool
$cmax :: TypeId -> TypeId -> TypeId
max :: TypeId -> TypeId -> TypeId
$cmin :: TypeId -> TypeId -> TypeId
min :: TypeId -> TypeId -> TypeId
Ord)

type UniformFunc = Ptr () -> Ptr (Ptr ()) -> IO ()

data MemberKey
    = TypeKey TypeRep
    | DataKey Unique
    deriving (MemberKey -> MemberKey -> Bool
(MemberKey -> MemberKey -> Bool)
-> (MemberKey -> MemberKey -> Bool) -> Eq MemberKey
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MemberKey -> MemberKey -> Bool
== :: MemberKey -> MemberKey -> Bool
$c/= :: MemberKey -> MemberKey -> Bool
/= :: MemberKey -> MemberKey -> Bool
Eq, Eq MemberKey
Eq MemberKey =>
(MemberKey -> MemberKey -> Ordering)
-> (MemberKey -> MemberKey -> Bool)
-> (MemberKey -> MemberKey -> Bool)
-> (MemberKey -> MemberKey -> Bool)
-> (MemberKey -> MemberKey -> Bool)
-> (MemberKey -> MemberKey -> MemberKey)
-> (MemberKey -> MemberKey -> MemberKey)
-> Ord MemberKey
MemberKey -> MemberKey -> Bool
MemberKey -> MemberKey -> Ordering
MemberKey -> MemberKey -> MemberKey
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: MemberKey -> MemberKey -> Ordering
compare :: MemberKey -> MemberKey -> Ordering
$c< :: MemberKey -> MemberKey -> Bool
< :: MemberKey -> MemberKey -> Bool
$c<= :: MemberKey -> MemberKey -> Bool
<= :: MemberKey -> MemberKey -> Bool
$c> :: MemberKey -> MemberKey -> Bool
> :: MemberKey -> MemberKey -> Bool
$c>= :: MemberKey -> MemberKey -> Bool
>= :: MemberKey -> MemberKey -> Bool
$cmax :: MemberKey -> MemberKey -> MemberKey
max :: MemberKey -> MemberKey -> MemberKey
$cmin :: MemberKey -> MemberKey -> MemberKey
min :: MemberKey -> MemberKey -> MemberKey
Ord)

data ClassInfo = ClassInfo {
    ClassInfo -> TypeRep
cinfoObjType :: TypeRep,
    ClassInfo -> Map MemberKey Int
cinfoSignals :: Map MemberKey Int
}

data Strength = Strong | Weak