返回给定SEXP的子集,但不知道实际的内部数据类型

问题描述 投票:0回答:1

我正在为R package to provide debug helper functions写一个gdb以打印R s SEXPRcpp s数据类型的变量值。

C / C ++是一种强类型的语言,但我想避免查询SEXP的内部数据类型并使用一堆if

我如何通过这样的函数签名使用索引范围来实现泛型子集函数:

SEXP dbg_subset(SEXP x, R_xlen_t index_from, R_xlen_t index_to);

一种可能的解决方案是为每个可能的签名编写上述功能,例如对于INTSXPLGLSXPSTRSXP ...,但我很懒;;-)

注意:我不能使用C ++模板,因为链接器只会为我的C ++代码中使用的数据类型(与“正在调试的库”中使用的数据类型不同)创建模板实例。没有一个编译器可以在输入C ++表达式以查询变量时“即时”创建丢失的模板实例。

编辑:参见基于模板的gdb

c++ r subset rcpp
1个回答
0
投票

您可以将C ++模板与this answer宏一起使用。此宏将确保针对所有(?)R数据类型实例化模板:

RCPP_RETURN_VECTOR

输出:

RCPP_RETURN_VECTOR
© www.soinside.com 2019 - 2024. All rights reserved.