HsSVN-0.2: Subversion/Types.hs
{-# 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))