content: {-# LANGUAGE OverloadedStrings, DeriveDataTypeable #-}
  module Ros.Internal.Log where
  import qualified Prelude as P
  import Prelude ((.))
  import qualified Data.Typeable as T
  import Control.Applicative
  import Ros.Internal.RosBinary
  import Ros.Internal.Msg.MsgInfo
  import Ros.Internal.Msg.HeaderSupport
  import qualified Data.Word as Word
  import qualified Ros.Internal.Header as Header
  
  data Log = Log { header   :: Header.Header
                 , level    :: Word.Word8
                 , name     :: P.String
                 , msg      :: P.String
                 , file     :: P.String
                 , function :: P.String
                 , line     :: Word.Word32
                 , topics   :: [P.String]
                 } deriving (P.Show, P.Eq, P.Ord, T.Typeable)
  
  instance RosBinary Log where
    put obj' = put (header obj') *> put (level obj') *> put (name obj') *> put (msg obj') *> put (file obj') *> put (function obj') *> put (line obj') *> putList (topics obj')
    get = Log <$> get <*> get <*> get <*> get <*> get <*> get <*> get <*> getList
    putMsg = putStampedMsg
  
  instance HasHeader Log where
    getSequence = Header.seq . header
    getFrame = Header.frame_id . header
    getStamp = Header.stamp . header
    setSequence seq x' = x' { header = (header x') { Header.seq = seq } }
  
  instance MsgInfo Log where
    sourceMD5 _ = "acffd30cd6b6de30f120938c17c593fb"
    msgTypeName _ = "rosgraph_msgs/Log"
  
  dEBUG :: Word.Word8
  dEBUG = 1
  
  iNFO :: Word.Word8
  iNFO = 2
  
  wARN :: Word.Word8
  wARN = 4
  
  eRROR :: Word.Word8
  eRROR = 8
  
  fATAL :: Word.Word8
  fATAL = 16
  