Fix cimpiled ruby library system
This commit is contained in:
+13
-10
@@ -1,20 +1,11 @@
|
||||
{-# LANGUAGE CApiFFI #-}
|
||||
{-# LANGUAGE ForeignFunctionInterface #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module WM.Mruby where
|
||||
|
||||
import Data.FileEmbed (embedFile)
|
||||
import Data.Text qualified as T
|
||||
import Data.Text.Encoding qualified as TE
|
||||
import Data.Text.Encoding.Error qualified as TEE
|
||||
import Foreign.C (CString, withCString)
|
||||
import Foreign.C (CChar, CInt (CInt), CString, withCString)
|
||||
import Foreign.Ptr
|
||||
|
||||
runtimeRb :: String
|
||||
runtimeRb =
|
||||
T.unpack (TE.decodeUtf8With TEE.lenientDecode $(embedFile "./app/ruby/lib.rb"))
|
||||
|
||||
data MrbState
|
||||
|
||||
foreign import capi "mruby.h mrb_open"
|
||||
@@ -30,3 +21,15 @@ runRuby :: Ptr MrbState -> String -> IO ()
|
||||
runRuby mrb code =
|
||||
withCString code $ \cstr ->
|
||||
c_mrb_load_string mrb cstr
|
||||
|
||||
foreign import capi "ruby_compiled.h value mgems"
|
||||
c_mgems :: Ptr CChar
|
||||
|
||||
foreign import capi "ruby_compiled.h value mgems_len"
|
||||
c_mgems_len :: CInt
|
||||
|
||||
foreign import capi "mruby/irep.h mrb_load_irep_buf"
|
||||
c_mrb_load_irep_buf :: Ptr MrbState -> Ptr CChar -> CInt -> IO ()
|
||||
|
||||
loadRubyLibs :: Ptr MrbState -> IO ()
|
||||
loadRubyLibs mrb = c_mrb_load_irep_buf mrb c_mgems c_mgems_len
|
||||
|
||||
Reference in New Issue
Block a user