Sorry, maybe I got it wrong. Are you asking if is there any package that passes ByteArrays via FFI?
On Thu, Oct 10, 2019 at 8:54 PM Csaba Hruska <[email protected]> wrote: > It's a primitive type. > > https://gitlab.haskell.org/ghc/ghc/blob/master/compiler/prelude/primops.txt.pp#L1388 > https://gitlab.haskell.org/ghc/ghc/wikis/commentary/prim-ops > > Cheers, > Csaba > > On Thu, Oct 10, 2019 at 8:16 PM Shao, Cheng <[email protected]> wrote: > >> Hello devs, >> >> I've been trying to figure out how to pass lifted types as foreign >> types, then encountered the following code in the `DsCCall` module >> ( >> https://gitlab.haskell.org/ghc/ghc/blob/master/compiler/deSugar/DsCCall.hs#L172 >> ): >> >> ``` >> -- Byte-arrays, both mutable and otherwise; hack warning >> -- We're looking for values of type ByteArray, MutableByteArray >> -- data ByteArray ix = ByteArray ix ix ByteArray# >> -- data MutableByteArray s ix = MutableByteArray ix ix >> (MutableByteArray# s) >> | is_product_type && >> data_con_arity == 3 && >> isJust maybe_arg3_tycon && >> (arg3_tycon == byteArrayPrimTyCon || >> arg3_tycon == mutableByteArrayPrimTyCon) >> = do case_bndr <- newSysLocalDs arg_ty >> vars@[_l_var, _r_var, arr_cts_var] <- newSysLocalsDs >> data_con_arg_tys >> return (Var arr_cts_var, >> \ body -> Case arg case_bndr (exprType body) [(DataAlt >> data_con,vars,body)] >> ) >> ``` >> >> It seems we allow a "ByteArray" type as a foreign import argument, if >> the third field of the datacon is a ByteArray# or MutableByteArray#. >> But I can't find such a ByteArray type definition in today's common >> packages. What's the rationale for this piece of code? >> >> Cheers, >> Cheng >> _______________________________________________ >> ghc-devs mailing list >> [email protected] >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >> >
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
