{-# OPTIONS_GHC -optc-D__GLASGOW_HASKELL__=606 #-} {-# OPTIONS_GHC -optc-DDARWIN #-} {-# OPTIONS_GHC -optc-DSIGPROCMASK_SETS_THREAD_MASK #-} {-# INCLUDE "HsSVN.h" #-} {-# LINE 1 "Subversion/Types.hsc" #-} {- -*- haskell -*- -} {-# LINE 2 "Subversion/Types.hsc" #-} -- #prune -- |Some type definitions for Subversion. {-# LINE 8 "Subversion/Types.hsc" #-} module Subversion.Types ( RevNum , APR_SIZE_T , APR_SSIZE_T , APR_STATUS_T , SVN_BOOLEAN_T , SVN_FILESIZE_T , SVN_NODE_KIND_T , SVN_REVNUM_T , SVN_VERSION_T , marshalBool , unmarshalBool , NodeKind(..) -- public , unmarshalNodeKind , Version(..) -- public , peekVersion ) where import Data.Int import Data.Word import Foreign.C.String import Foreign.Ptr import Foreign.Storable -- |@'RevNum'@ represents a revision number. type RevNum = Int type APR_SIZE_T = Word32 {-# LINE 43 "Subversion/Types.hsc" #-} type APR_SSIZE_T = Int32 {-# LINE 44 "Subversion/Types.hsc" #-} type APR_STATUS_T = Int32 {-# LINE 45 "Subversion/Types.hsc" #-} type SVN_BOOLEAN_T = Int32 {-# LINE 47 "Subversion/Types.hsc" #-} type SVN_FILESIZE_T = Int64 {-# LINE 48 "Subversion/Types.hsc" #-} type SVN_NODE_KIND_T = Word32 {-# LINE 49 "Subversion/Types.hsc" #-} type SVN_REVNUM_T = Int32 {-# LINE 50 "Subversion/Types.hsc" #-} data SVN_VERSION_T marshalBool :: Bool -> SVN_BOOLEAN_T marshalBool True = (1) {-# LINE 55 "Subversion/Types.hsc" #-} marshalBool False = (0) {-# LINE 56 "Subversion/Types.hsc" #-} unmarshalBool :: SVN_BOOLEAN_T -> Bool unmarshalBool (1) = True {-# LINE 59 "Subversion/Types.hsc" #-} unmarshalBool (0) = False {-# LINE 60 "Subversion/Types.hsc" #-} -- |@'NodeKind'@ represents a type of node in Subversion filesystem. data NodeKind = NoNode -- ^ The node is absent. | FileNode -- ^ The node is a file. | DirNode -- ^ The node is a directory. deriving (Show, Eq) unmarshalNodeKind :: SVN_NODE_KIND_T -> NodeKind unmarshalNodeKind (0) = NoNode {-# LINE 70 "Subversion/Types.hsc" #-} unmarshalNodeKind (1) = FileNode {-# LINE 71 "Subversion/Types.hsc" #-} unmarshalNodeKind (2) = DirNode {-# LINE 72 "Subversion/Types.hsc" #-} -- |@'Version'@ is version. data Version = Version { verMajor :: Int -- ^ Major version number. , verMinor :: Int -- ^ Minor version number. , verPatch :: Int -- ^ Patch number. , verTag :: String -- ^ The version tag. } deriving (Show, Eq) peekVersion :: Ptr SVN_VERSION_T -> IO Version peekVersion obj = do major <- peekVerMajor obj minor <- peekVerMinor obj patch <- peekVerPatch obj tag <- peekVerTag obj >>= peekCString return Version { verMajor = major , verMinor = minor , verPatch = patch , verTag = tag } peekVerMajor :: Ptr SVN_VERSION_T -> IO Int peekVerMajor = ((\hsc_ptr -> peekByteOff hsc_ptr 0)) {-# LINE 98 "Subversion/Types.hsc" #-} peekVerMinor :: Ptr SVN_VERSION_T -> IO Int peekVerMinor = ((\hsc_ptr -> peekByteOff hsc_ptr 4)) {-# LINE 101 "Subversion/Types.hsc" #-} peekVerPatch :: Ptr SVN_VERSION_T -> IO Int peekVerPatch = ((\hsc_ptr -> peekByteOff hsc_ptr 8)) {-# LINE 104 "Subversion/Types.hsc" #-} peekVerTag :: Ptr SVN_VERSION_T -> IO CString peekVerTag = ((\hsc_ptr -> peekByteOff hsc_ptr 12))