{-# LINE 1 "src/Menoh/Base.hsc" #-}
{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE ForeignFunctionInterface #-}
-----------------------------------------------------------------------------
-- |
-- Module      :  Menoh.Base
-- Copyright   :  Copyright (c) 2018 Preferred Networks, Inc.
-- License     :  MIT (see the file LICENSE)
--
-- Maintainer  :  Masahiro Sakai <sakai@preferred.jp>
-- Stability   :  experimental
-- Portability :  non-portable
--
-- FFI imports of Menoh library.
--
-- See https://pfnet-research.github.io/menoh/ for details of those API.
--
-----------------------------------------------------------------------------
module Menoh.Base where

import Data.Int
import Foreign
import Foreign.C






type MenohDType = Int32
{-# LINE 33 "src/Menoh/Base.hsc" #-}

type MenohErrorCode = Int32
{-# LINE 35 "src/Menoh/Base.hsc" #-}

menohDtypeFloat :: MenohDType
menohDtypeFloat =  0

{-# LINE 37 "src/Menoh/Base.hsc" #-}

menohErrorCodeSuccess :: MenohErrorCode
menohErrorCodeSuccess =  0
menohErrorCodeStdError :: MenohErrorCode
menohErrorCodeStdError =  1
menohErrorCodeUnknownError :: MenohErrorCode
menohErrorCodeUnknownError =  2
menohErrorCodeInvalidFilename :: MenohErrorCode
menohErrorCodeInvalidFilename =  3
menohErrorCodeOnnxParseError :: MenohErrorCode
menohErrorCodeOnnxParseError =  5
menohErrorCodeInvalidDtype :: MenohErrorCode
menohErrorCodeInvalidDtype =  6
menohErrorCodeInvalidAttributeType :: MenohErrorCode
menohErrorCodeInvalidAttributeType =  7
menohErrorCodeUnsupportedOperatorAttribute :: MenohErrorCode
menohErrorCodeUnsupportedOperatorAttribute =  8
menohErrorCodeDimensionMismatch :: MenohErrorCode
menohErrorCodeDimensionMismatch =  9
menohErrorCodeVariableNotFound :: MenohErrorCode
menohErrorCodeVariableNotFound =  10
menohErrorCodeIndexOutOfRange :: MenohErrorCode
menohErrorCodeIndexOutOfRange =  11
menohErrorCodeJsonParseError :: MenohErrorCode
menohErrorCodeJsonParseError =  12
menohErrorCodeInvalidBackendName :: MenohErrorCode
menohErrorCodeInvalidBackendName =  13
menohErrorCodeUnsupportedOperator :: MenohErrorCode
menohErrorCodeUnsupportedOperator =  14
menohErrorCodeFailedToConfigureOperator :: MenohErrorCode
menohErrorCodeFailedToConfigureOperator =  15
menohErrorCodeBackendError :: MenohErrorCode
menohErrorCodeBackendError =  16
menohErrorCodeSameNamedVariableAlreadyExist :: MenohErrorCode
menohErrorCodeSameNamedVariableAlreadyExist =  17
menohErrorCodeUnsupportedInputDims :: MenohErrorCode
menohErrorCodeUnsupportedInputDims =  18
menohErrorCodeSameNamedParameterAlreadyExist :: MenohErrorCode
menohErrorCodeSameNamedParameterAlreadyExist =  19
menohErrorCodeSameNamedAttributeAlreadyExist :: MenohErrorCode
menohErrorCodeSameNamedAttributeAlreadyExist =  20
menohErrorCodeInvalidBackendConfigError :: MenohErrorCode
menohErrorCodeInvalidBackendConfigError =  21
menohErrorCodeInputNotFoundError :: MenohErrorCode
menohErrorCodeInputNotFoundError =  22
menohErrorCodeOutputNotFoundError :: MenohErrorCode
menohErrorCodeOutputNotFoundError =  23

{-# LINE 62 "src/Menoh/Base.hsc" #-}

foreign import ccall unsafe menoh_get_last_error_message
  :: IO CString

data MenohModelData
type MenohModelDataHandle = Ptr MenohModelData

foreign import ccall safe menoh_make_model_data_from_onnx
  :: CString -> Ptr MenohModelDataHandle -> IO MenohErrorCode

foreign import ccall safe menoh_make_model_data_from_onnx_data_on_memory
  :: Ptr a -> Int32 -> Ptr MenohModelDataHandle -> IO MenohErrorCode

foreign import ccall "&menoh_delete_model_data" menoh_delete_model_data_funptr
  :: FunPtr (MenohModelDataHandle -> IO ())

data MenohVariableProfileTableBuilder
type MenohVariableProfileTableBuilderHandle = Ptr MenohVariableProfileTableBuilder

foreign import ccall unsafe menoh_make_variable_profile_table_builder
  :: Ptr MenohVariableProfileTableBuilderHandle -> IO MenohErrorCode

foreign import ccall "&menoh_delete_variable_profile_table_builder"
  menoh_delete_variable_profile_table_builder_funptr
  :: FunPtr (MenohVariableProfileTableBuilderHandle -> IO ())

foreign import ccall unsafe menoh_variable_profile_table_builder_add_input_profile
  :: MenohVariableProfileTableBuilderHandle -> CString -> MenohDType -> Int32 -> Ptr Int32 -> IO MenohErrorCode

foreign import ccall unsafe menoh_variable_profile_table_builder_add_input_profile_dims_2
  :: MenohVariableProfileTableBuilderHandle -> CString -> MenohDType -> Int32 -> Int32 -> IO MenohErrorCode

foreign import ccall unsafe menoh_variable_profile_table_builder_add_input_profile_dims_4
  :: MenohVariableProfileTableBuilderHandle -> CString -> MenohDType -> Int32 -> Int32 -> Int32 -> Int32 -> IO MenohErrorCode

foreign import ccall unsafe menoh_variable_profile_table_builder_add_output_profile
  :: MenohVariableProfileTableBuilderHandle -> CString -> MenohDType -> IO MenohErrorCode

foreign import ccall unsafe menoh_variable_profile_table_builder_add_output_name
  :: MenohVariableProfileTableBuilderHandle -> CString -> IO MenohErrorCode

data MenohVariableProfileTable
type MenohVariableProfileTableHandle = Ptr MenohVariableProfileTable

foreign import ccall safe menoh_build_variable_profile_table
  :: MenohVariableProfileTableBuilderHandle -> MenohModelDataHandle
  -> Ptr MenohVariableProfileTableHandle -> IO MenohErrorCode

foreign import ccall "&menoh_delete_variable_profile_table"
  menoh_delete_variable_profile_table_funptr
  :: FunPtr (MenohVariableProfileTableHandle -> IO ())

foreign import ccall unsafe menoh_variable_profile_table_get_dtype
 :: MenohVariableProfileTableHandle -> CString -> Ptr MenohDType -> IO MenohErrorCode

foreign import ccall unsafe menoh_variable_profile_table_get_dims_size
 :: MenohVariableProfileTableHandle -> CString -> Ptr Int32 -> IO MenohErrorCode

foreign import ccall unsafe menoh_variable_profile_table_get_dims_at
 :: MenohVariableProfileTableHandle -> CString -> Int32 -> Ptr Int32 -> IO MenohErrorCode

foreign import ccall safe menoh_model_data_optimize
  :: MenohModelDataHandle -> MenohVariableProfileTableHandle -> IO MenohErrorCode

data MenohModelBuilder
type MenohModelBuilderHandle = Ptr MenohModelBuilder

foreign import ccall unsafe menoh_make_model_builder
  :: MenohVariableProfileTableHandle -> Ptr MenohModelBuilderHandle -> IO MenohErrorCode

foreign import ccall "&menoh_delete_model_builder" menoh_delete_model_builder_funptr
  :: FunPtr (MenohModelBuilderHandle -> IO ())

foreign import ccall unsafe menoh_model_builder_attach_external_buffer
  :: MenohModelBuilderHandle -> CString -> Ptr a -> IO MenohErrorCode

data MenohModel
type MenohModelHandle = Ptr MenohModel

foreign import ccall safe menoh_build_model
  :: MenohModelBuilderHandle -> MenohModelDataHandle -> CString -> CString
  -> Ptr MenohModelHandle -> IO MenohErrorCode

foreign import ccall "&menoh_delete_model" menoh_delete_model_funptr
  :: FunPtr (MenohModelHandle -> IO ())

foreign import ccall unsafe menoh_model_get_variable_buffer_handle
  :: MenohModelHandle -> CString -> Ptr (Ptr a) -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_get_variable_dtype
  :: MenohModelHandle -> CString -> Ptr MenohDType -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_get_variable_dims_size
  :: MenohModelHandle -> CString -> Ptr Int32 -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_get_variable_dims_at
  :: MenohModelHandle -> CString -> Int32 -> Ptr Int32 -> IO MenohErrorCode

foreign import ccall safe menoh_model_run
  :: MenohModelHandle -> IO MenohErrorCode

foreign import ccall unsafe menoh_make_model_data
  :: Ptr MenohModelDataHandle -> IO MenohErrorCode

foreign import ccall safe menoh_model_data_add_parameter
  :: MenohModelDataHandle -> CString -> MenohDType -> Int32 -> Ptr Int32 -> Ptr a -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_data_add_new_node
  :: MenohModelDataHandle -> CString -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_data_add_input_name_to_current_node
  :: MenohModelDataHandle -> CString -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_data_add_output_name_to_current_node
  :: MenohModelDataHandle -> CString -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_data_add_attribute_int_to_current_node
  :: MenohModelDataHandle -> CString -> Int32 -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_data_add_attribute_float_to_current_node
  :: MenohModelDataHandle -> CString -> CFloat -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_data_add_attribute_ints_to_current_node
  :: MenohModelDataHandle -> CString -> Int32 -> Ptr CInt -> IO MenohErrorCode

foreign import ccall unsafe menoh_model_data_add_attribute_floats_to_current_node
  :: MenohModelDataHandle -> CString -> Int32 -> Ptr CFloat -> IO MenohErrorCode

menoh_major_version :: Int
menoh_major_version = 1
{-# LINE 192 "src/Menoh/Base.hsc" #-}

menoh_minor_version :: Int
menoh_minor_version = 1
{-# LINE 195 "src/Menoh/Base.hsc" #-}

menoh_patch_version :: Int
menoh_patch_version = 1
{-# LINE 198 "src/Menoh/Base.hsc" #-}

menoh_version_string :: String
menoh_version_string = "1.1.1"
{-# LINE 201 "src/Menoh/Base.hsc" #-}