module Foreign.JNI.Internal where

import qualified Foreign.JNI.String as JNI

-- | A reference type name is not just any 'JNI.String', but a fully qualified
-- identifier well-formed by construction.
newtype ReferenceTypeName = ReferenceTypeName JNI.String
  deriving (ReferenceTypeName -> ReferenceTypeName -> Bool
(ReferenceTypeName -> ReferenceTypeName -> Bool)
-> (ReferenceTypeName -> ReferenceTypeName -> Bool)
-> Eq ReferenceTypeName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReferenceTypeName -> ReferenceTypeName -> Bool
$c/= :: ReferenceTypeName -> ReferenceTypeName -> Bool
== :: ReferenceTypeName -> ReferenceTypeName -> Bool
$c== :: ReferenceTypeName -> ReferenceTypeName -> Bool
Eq, Eq ReferenceTypeName
Eq ReferenceTypeName
-> (ReferenceTypeName -> ReferenceTypeName -> Ordering)
-> (ReferenceTypeName -> ReferenceTypeName -> Bool)
-> (ReferenceTypeName -> ReferenceTypeName -> Bool)
-> (ReferenceTypeName -> ReferenceTypeName -> Bool)
-> (ReferenceTypeName -> ReferenceTypeName -> Bool)
-> (ReferenceTypeName -> ReferenceTypeName -> ReferenceTypeName)
-> (ReferenceTypeName -> ReferenceTypeName -> ReferenceTypeName)
-> Ord ReferenceTypeName
ReferenceTypeName -> ReferenceTypeName -> Bool
ReferenceTypeName -> ReferenceTypeName -> Ordering
ReferenceTypeName -> ReferenceTypeName -> ReferenceTypeName
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
min :: ReferenceTypeName -> ReferenceTypeName -> ReferenceTypeName
$cmin :: ReferenceTypeName -> ReferenceTypeName -> ReferenceTypeName
max :: ReferenceTypeName -> ReferenceTypeName -> ReferenceTypeName
$cmax :: ReferenceTypeName -> ReferenceTypeName -> ReferenceTypeName
>= :: ReferenceTypeName -> ReferenceTypeName -> Bool
$c>= :: ReferenceTypeName -> ReferenceTypeName -> Bool
> :: ReferenceTypeName -> ReferenceTypeName -> Bool
$c> :: ReferenceTypeName -> ReferenceTypeName -> Bool
<= :: ReferenceTypeName -> ReferenceTypeName -> Bool
$c<= :: ReferenceTypeName -> ReferenceTypeName -> Bool
< :: ReferenceTypeName -> ReferenceTypeName -> Bool
$c< :: ReferenceTypeName -> ReferenceTypeName -> Bool
compare :: ReferenceTypeName -> ReferenceTypeName -> Ordering
$ccompare :: ReferenceTypeName -> ReferenceTypeName -> Ordering
$cp1Ord :: Eq ReferenceTypeName
Ord)

instance Show ReferenceTypeName where
  show :: ReferenceTypeName -> String
show (ReferenceTypeName String
str) = String -> String
forall a. Show a => a -> String
show String
str

-- | A string representing a signature, well-formed by construction.
newtype Signature = Signature JNI.String
  deriving (Signature -> Signature -> Bool
(Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool) -> Eq Signature
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Signature -> Signature -> Bool
$c/= :: Signature -> Signature -> Bool
== :: Signature -> Signature -> Bool
$c== :: Signature -> Signature -> Bool
Eq, Eq Signature
Eq Signature
-> (Signature -> Signature -> Ordering)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Bool)
-> (Signature -> Signature -> Signature)
-> (Signature -> Signature -> Signature)
-> Ord Signature
Signature -> Signature -> Bool
Signature -> Signature -> Ordering
Signature -> Signature -> Signature
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
min :: Signature -> Signature -> Signature
$cmin :: Signature -> Signature -> Signature
max :: Signature -> Signature -> Signature
$cmax :: Signature -> Signature -> Signature
>= :: Signature -> Signature -> Bool
$c>= :: Signature -> Signature -> Bool
> :: Signature -> Signature -> Bool
$c> :: Signature -> Signature -> Bool
<= :: Signature -> Signature -> Bool
$c<= :: Signature -> Signature -> Bool
< :: Signature -> Signature -> Bool
$c< :: Signature -> Signature -> Bool
compare :: Signature -> Signature -> Ordering
$ccompare :: Signature -> Signature -> Ordering
$cp1Ord :: Eq Signature
Ord)

instance Show Signature where
  show :: Signature -> String
show (Signature String
str) = String -> String
forall a. Show a => a -> String
show String
str

-- | A string representing a method signature, well-formed by construction.
newtype MethodSignature = MethodSignature JNI.String
  deriving (MethodSignature -> MethodSignature -> Bool
(MethodSignature -> MethodSignature -> Bool)
-> (MethodSignature -> MethodSignature -> Bool)
-> Eq MethodSignature
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MethodSignature -> MethodSignature -> Bool
$c/= :: MethodSignature -> MethodSignature -> Bool
== :: MethodSignature -> MethodSignature -> Bool
$c== :: MethodSignature -> MethodSignature -> Bool
Eq, Eq MethodSignature
Eq MethodSignature
-> (MethodSignature -> MethodSignature -> Ordering)
-> (MethodSignature -> MethodSignature -> Bool)
-> (MethodSignature -> MethodSignature -> Bool)
-> (MethodSignature -> MethodSignature -> Bool)
-> (MethodSignature -> MethodSignature -> Bool)
-> (MethodSignature -> MethodSignature -> MethodSignature)
-> (MethodSignature -> MethodSignature -> MethodSignature)
-> Ord MethodSignature
MethodSignature -> MethodSignature -> Bool
MethodSignature -> MethodSignature -> Ordering
MethodSignature -> MethodSignature -> MethodSignature
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
min :: MethodSignature -> MethodSignature -> MethodSignature
$cmin :: MethodSignature -> MethodSignature -> MethodSignature
max :: MethodSignature -> MethodSignature -> MethodSignature
$cmax :: MethodSignature -> MethodSignature -> MethodSignature
>= :: MethodSignature -> MethodSignature -> Bool
$c>= :: MethodSignature -> MethodSignature -> Bool
> :: MethodSignature -> MethodSignature -> Bool
$c> :: MethodSignature -> MethodSignature -> Bool
<= :: MethodSignature -> MethodSignature -> Bool
$c<= :: MethodSignature -> MethodSignature -> Bool
< :: MethodSignature -> MethodSignature -> Bool
$c< :: MethodSignature -> MethodSignature -> Bool
compare :: MethodSignature -> MethodSignature -> Ordering
$ccompare :: MethodSignature -> MethodSignature -> Ordering
$cp1Ord :: Eq MethodSignature
Ord)

instance Show MethodSignature where
  show :: MethodSignature -> String
show (MethodSignature String
str) = String -> String
forall a. Show a => a -> String
show String
str