{-# LINE 1 "src/Foreign/R/Parse.hsc" #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 13 "src/Foreign/R/Parse.hsc" #-}
{-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-}
{-# LINE 15 "src/Foreign/R/Parse.hsc" #-}
module Foreign.R.Parse
( parseVector
, ParseStatus(..)
) where
import Foreign.R.Constraints
import qualified Foreign.R as R
import Foreign
import Foreign.C
data ParseStatus
= PARSE_NULL
| PARSE_OK
| PARSE_INCOMPLETE
| PARSE_ERROR
| PARSE_EOF
deriving (ParseStatus -> ParseStatus -> Bool
(ParseStatus -> ParseStatus -> Bool)
-> (ParseStatus -> ParseStatus -> Bool) -> Eq ParseStatus
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ParseStatus -> ParseStatus -> Bool
$c/= :: ParseStatus -> ParseStatus -> Bool
== :: ParseStatus -> ParseStatus -> Bool
$c== :: ParseStatus -> ParseStatus -> Bool
Eq, Int -> ParseStatus -> ShowS
[ParseStatus] -> ShowS
ParseStatus -> String
(Int -> ParseStatus -> ShowS)
-> (ParseStatus -> String)
-> ([ParseStatus] -> ShowS)
-> Show ParseStatus
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ParseStatus] -> ShowS
$cshowList :: [ParseStatus] -> ShowS
show :: ParseStatus -> String
$cshow :: ParseStatus -> String
showsPrec :: Int -> ParseStatus -> ShowS
$cshowsPrec :: Int -> ParseStatus -> ShowS
Show)
instance Enum ParseStatus where
fromEnum :: ParseStatus -> Int
fromEnum PARSE_NULL = 0
{-# LINE 41 "src/Foreign/R/Parse.hsc" #-}
fromEnum PARSE_OK = 1
{-# LINE 42 "src/Foreign/R/Parse.hsc" #-}
fromEnum PARSE_INCOMPLETE = 2
{-# LINE 43 "src/Foreign/R/Parse.hsc" #-}
fromEnum PARSE_ERROR = 3
{-# LINE 44 "src/Foreign/R/Parse.hsc" #-}
fromEnum PARSE_EOF = 4
{-# LINE 45 "src/Foreign/R/Parse.hsc" #-}
toEnum i = case i of
(0) -> PARSE_NULL
{-# LINE 47 "src/Foreign/R/Parse.hsc" #-}
(1) -> PARSE_OK
{-# LINE 48 "src/Foreign/R/Parse.hsc" #-}
(2) -> PARSE_INCOMPLETE
{-# LINE 49 "src/Foreign/R/Parse.hsc" #-}
(3) -> PARSE_ERROR
{-# LINE 50 "src/Foreign/R/Parse.hsc" #-}
(4) -> PARSE_EOF
{-# LINE 51 "src/Foreign/R/Parse.hsc" #-}
_ -> error "ParseStatus.fromEnum: can't mach value"
parseVector
:: (In a [R.Nil, R.String])
=> R.SEXP s R.String
-> Int
-> Ptr CInt
-> R.SEXP s a
-> IO (R.SEXP s R.Expr)
parseVector :: SEXP s 'String -> Int -> Ptr CInt -> SEXP s a -> IO (SEXP s 'Expr)
parseVector (SEXP s 'String -> SEXP0
forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
R.unsexp -> SEXP0
s) (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral -> CInt
cnt) reti :: Ptr CInt
reti (SEXP s a -> SEXP0
forall s (a :: SEXPTYPE). SEXP s a -> SEXP0
R.unsexp -> SEXP0
input) =
SEXP0 -> SEXP s 'Expr
forall s (a :: SEXPTYPE). SEXP0 -> SEXP s a
R.sexp (SEXP0 -> SEXP s 'Expr) -> IO SEXP0 -> IO (SEXP s 'Expr)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> SEXP0 -> CInt -> Ptr CInt -> SEXP0 -> IO SEXP0
c_parseVector SEXP0
s CInt
cnt Ptr CInt
reti SEXP0
input
foreign import ccall "R_ext/Parse.h R_ParseVector" c_parseVector
:: R.SEXP0 -> CInt -> Ptr CInt -> R.SEXP0 -> IO R.SEXP0