如何在没有c2hs或其他工具的情况下为该结构创建可存储实例?
这一结构:如何在没有c2hs或其他工具的情况下为该结构创建可存储实例?,c,haskell,ffi,C,Haskell,Ffi,这一结构: typedef struct Atom_ { float x; float y; float z; int col; } Atom; 对应于此类型: data Atom = Atom { pos :: V3 Float, col :: Int } 如何为Atom创建一个可存储实例,以便在Haskell上将Atoms发送给一个需要Atom的C函数?我目前不能保证它完全按照所示工作(我没有在这台计算机上设置环境),但这应该是正确的第一步: 导入外部。可
typedef struct Atom_ {
float x;
float y;
float z;
int col;
} Atom;
对应于此类型:
data Atom = Atom { pos :: V3 Float, col :: Int }
如何为
Atom
创建一个可存储实例,以便在Haskell上将Atom
s发送给一个需要Atom
的C函数?我目前不能保证它完全按照所示工作(我没有在这台计算机上设置环境),但这应该是正确的第一步:
导入外部。可存储
进口外国货
实例可存储原子,其中
--不要将此设置为静态,让编译器根据需要进行选择
--在站台上
sizeOf=3*sizeOf(0::Float)+sizeOf(0::Int)
--您可能需要处理这个,以及相应的C
--编码如果您有能力,对齐可能会很棘手,但是
--在这种情况下,您可以非常安全地假设它将是对齐
--对于`浮动`
对齐u=对齐(0::浮点)
--这些都很简单,很明显,这里的顺序问题
--很多。很明显,我没有把它做得最优化
--可能是,我要的是代码的清晰性
peek ptr=do
让floatSize=sizeOf(0::Float)
x