作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的 perl 对象(对哈希的祝福引用)。
sub funcname {
#some code
}
my $o = My::Class->new();
$o->{internal_data} = \&funcname; #I know it is not nice
$o->{internal_data}
的值.
/* at some point in XS code */
SV *obj = ... /* $o value passed to a XS function */
SV *func;
...
/* here I do not know how to load $o->{internal_data} value into func */
...
call_sv(func,G_SCALAR);
最佳答案
SvRV
将从引用中获取哈希值(作为 SV*
), MUTABLE_HV
将其转换为 HV*
, hv_fetch
/hv_fetchs
将从哈希中获取。
SV* self;
SV* obj_sv;
HV* obj_hv;
SV** callback_ptr;
SV* callback;
self = ...;
SvGETMAGIC(self);
if (!SvROK(self))
croak("Not a reference");
obj_sv = SvRV(self);
if (SvTYPE(obj_sv) != SVt_PVHV)
croak("Not a reference to a hash");
obj_hv = MUTABLE_HV(obj_sv);
callback_ptr = hv_fetchs(obj_hv, "internal_data", 0);
if (!callback_ptr)
croak("Malformed object");
callback = *callback_ptr;
关于perl - 从 XS 访问存储在 perl 对象(祝福散列)中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5572851/
我是一名优秀的程序员,十分优秀!