{-|
Copyright        : (c) Galois, Inc. 2025
Maintainer       : Langston Barrett <langston@galois.com>
-}

{-# LANGUAGE ImportQualifiedPost #-}

module Lang.Crucible.Debug.Breakpoint
  ( Breakpoint(..)
  , toString
  , toText
  ) where

import Data.Text qualified as Text
import Data.Text (Text)
import What4.FunctionName qualified as W4

newtype Breakpoint
  = BreakFunction W4.FunctionName
  deriving (Breakpoint -> Breakpoint -> Bool
(Breakpoint -> Breakpoint -> Bool)
-> (Breakpoint -> Breakpoint -> Bool) -> Eq Breakpoint
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Breakpoint -> Breakpoint -> Bool
== :: Breakpoint -> Breakpoint -> Bool
$c/= :: Breakpoint -> Breakpoint -> Bool
/= :: Breakpoint -> Breakpoint -> Bool
Eq, Eq Breakpoint
Eq Breakpoint =>
(Breakpoint -> Breakpoint -> Ordering)
-> (Breakpoint -> Breakpoint -> Bool)
-> (Breakpoint -> Breakpoint -> Bool)
-> (Breakpoint -> Breakpoint -> Bool)
-> (Breakpoint -> Breakpoint -> Bool)
-> (Breakpoint -> Breakpoint -> Breakpoint)
-> (Breakpoint -> Breakpoint -> Breakpoint)
-> Ord Breakpoint
Breakpoint -> Breakpoint -> Bool
Breakpoint -> Breakpoint -> Ordering
Breakpoint -> Breakpoint -> Breakpoint
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 :: Breakpoint -> Breakpoint -> Ordering
compare :: Breakpoint -> Breakpoint -> Ordering
$c< :: Breakpoint -> Breakpoint -> Bool
< :: Breakpoint -> Breakpoint -> Bool
$c<= :: Breakpoint -> Breakpoint -> Bool
<= :: Breakpoint -> Breakpoint -> Bool
$c> :: Breakpoint -> Breakpoint -> Bool
> :: Breakpoint -> Breakpoint -> Bool
$c>= :: Breakpoint -> Breakpoint -> Bool
>= :: Breakpoint -> Breakpoint -> Bool
$cmax :: Breakpoint -> Breakpoint -> Breakpoint
max :: Breakpoint -> Breakpoint -> Breakpoint
$cmin :: Breakpoint -> Breakpoint -> Breakpoint
min :: Breakpoint -> Breakpoint -> Breakpoint
Ord)

toString :: Breakpoint -> String
toString :: Breakpoint -> String
toString = Text -> String
Text.unpack (Text -> String) -> (Breakpoint -> Text) -> Breakpoint -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Breakpoint -> Text
toText
{-# INLINE toString #-}

toText :: Breakpoint -> Text
toText :: Breakpoint -> Text
toText (BreakFunction FunctionName
fNm) = FunctionName -> Text
W4.functionName FunctionName
fNm
{-# INLINE toText #-}