packages feed

crucible-llvm-0.6: src/Lang/Crucible/LLVM/Extension.hs

-----------------------------------------------------------------------
-- |
-- Module           : Lang.Crucible.LLVM.Extension
-- Description      : LLVM interface for Crucible
-- Copyright        : (c) Galois, Inc 2015-2016
-- License          : BSD3
-- Maintainer       : rdockins@galois.com
-- Stability        : provisional
--
-- Syntax extension definitions for LLVM
------------------------------------------------------------------------

{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE EmptyDataDeriving #-}
{-# LANGUAGE TypeFamilies #-}

module Lang.Crucible.LLVM.Extension
  ( module Lang.Crucible.LLVM.Extension.Arch
  , module Lang.Crucible.LLVM.Extension.Syntax
  , LLVM
  ) where

import Data.Data (Data)
import Data.Typeable (Typeable)
import GHC.Generics ( Generic )

import Lang.Crucible.CFG.Extension

import Lang.Crucible.LLVM.Extension.Arch
import Lang.Crucible.LLVM.Extension.Syntax

-- | The Crucible extension type marker for LLVM.
data LLVM
  deriving (Data, Eq, Generic , Ord, Typeable)

-- -----------------------------------------------------------------------
-- ** Syntax

type instance ExprExtension LLVM = LLVMExtensionExpr
type instance StmtExtension LLVM = LLVMStmt

instance IsSyntaxExtension LLVM