如何在Squeak FFI中定义联合类型

时间:2018-04-11 19:32:42

标签: smalltalk ffi squeak

我想与一些对某些结构字段使用某种联合类型的库进行交互,例如:

typedef struct {
    H5L_type_t          type;           /* Type of link                   */
    hbool_t             corder_valid;   /* Indicate if creation order is valid */
    int64_t             corder;         /* Creation order                 */
    H5T_cset_t          cset;           /* Character set of link name     */
    union {
        haddr_t         address;        /* Address hard link points to    */
        size_t          val_size;       /* Size of a soft link or UD link value */
    } u;
} H5L_info_t;

我没有在Squeak FFI中看到任何形式的支持。

我是否应该自己确定最长的会员人数并坚持下去?

1 个答案:

答案 0 :(得分:0)

因此,在仔细检查源代码后,我可以看出在Squeak FFI中没有对union的支持。

这不一定要保持这样,所以我发布了Squeak FFI更新以支持工会。
http://source.squeak.org/FFI/FFI-Kernel-nice.50.diff

ExternalUnion基本上与ExternalStructure(作为子类)共享相同的代码,除了它使用常量byteOffsetmax:运算符来累积总字节大小,迭代字段时,而不是带byteOffset运算符的递增+