--------------------------------------------------------------------------------
-- Copyright © 2011 National Institute of Aerospace / Galois, Inc.
--------------------------------------------------------------------------------

-- | External variables, arrays, and functions.

{-# LANGUAGE Safe #-}

module Copilot.Language.Operators.Extern
  ( extern
  , externB
  , externW8
  , externW16
  , externW32
  , externW64
  , externI8
  , externI16
  , externI32
  , externI64
  , externD
  , funArg -- * Deprecated.
  ) where

import Copilot.Core (Typed)
import Copilot.Language.Stream
import Data.Word
import Data.Int

type Size = Int

--------------------------------------------------------------------------------

extern :: Typed a => String -> Maybe [a] -> Stream a
extern :: String -> Maybe [a] -> Stream a
extern = String -> Maybe [a] -> Stream a
forall a. Typed a => String -> Maybe [a] -> Stream a
Extern

-- | Deprecated.
funArg :: Typed a => Stream a -> Arg
funArg :: Stream a -> Arg
funArg = Stream a -> Arg
forall a. Typed a => Stream a -> Arg
Arg

--------------------------------------------------------------------------------

externB   :: String -> Maybe [Bool] -> Stream Bool
externB :: String -> Maybe [Bool] -> Stream Bool
externB   = String -> Maybe [Bool] -> Stream Bool
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externW8  :: String -> Maybe [Word8] -> Stream Word8
externW8 :: String -> Maybe [Word8] -> Stream Word8
externW8  = String -> Maybe [Word8] -> Stream Word8
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externW16 :: String -> Maybe [Word16] -> Stream Word16
externW16 :: String -> Maybe [Word16] -> Stream Word16
externW16 = String -> Maybe [Word16] -> Stream Word16
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externW32 :: String -> Maybe [Word32] -> Stream Word32
externW32 :: String -> Maybe [Word32] -> Stream Word32
externW32 = String -> Maybe [Word32] -> Stream Word32
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externW64 :: String -> Maybe [Word64] -> Stream Word64
externW64 :: String -> Maybe [Word64] -> Stream Word64
externW64 = String -> Maybe [Word64] -> Stream Word64
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externI8  :: String -> Maybe [Int8] -> Stream Int8
externI8 :: String -> Maybe [Int8] -> Stream Int8
externI8  = String -> Maybe [Int8] -> Stream Int8
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externI16 :: String -> Maybe [Int16] -> Stream Int16
externI16 :: String -> Maybe [Int16] -> Stream Int16
externI16 = String -> Maybe [Int16] -> Stream Int16
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externI32 :: String -> Maybe [Int32] -> Stream Int32
externI32 :: String -> Maybe [Int32] -> Stream Int32
externI32 = String -> Maybe [Int32] -> Stream Int32
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externI64 :: String -> Maybe [Int64] -> Stream Int64
externI64 :: String -> Maybe [Int64] -> Stream Int64
externI64 = String -> Maybe [Int64] -> Stream Int64
forall a. Typed a => String -> Maybe [a] -> Stream a
extern
externD   :: String -> Maybe [Double] -> Stream Double
externD :: String -> Maybe [Double] -> Stream Double
externD   = String -> Maybe [Double] -> Stream Double
forall a. Typed a => String -> Maybe [a] -> Stream a
extern