PDL::PP-Inlinep - 云端在线

这是命令 PDL::PP-Inlinep 可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


Inline::Pdlpp - 使用 PDL::PP 编写内联的 PDL 子例程

商品描述


“Inline::Pdlpp”是一个允许您以 PDL::PP 样式编写 PDL 子例程的模块。
与普通的“PDL::PP”相比,最大的好处是你可以内联编写这些定义
在任何旧的 perl 脚本中(没有创建 Makefile、构建等的正常麻烦)。
自 0.30 版起,内联模块支持多种编程语言,并且每个
语言有自己的支持模块。 本文档描述了如何使用 Inline with
PDL::PP(或者更确切地说,一旦这些文档完成,它就会“;)”。

有关 Inline 的更多信息,请参阅 Inline。

一些演示“Inline::Pdlpp”用法的示例脚本可以在
示例/内联Pdlpp 目录。

“Inline::Pdlpp”主要是对“Inline::C”的无耻抄袭。 大多数荣誉都归于布赖恩一世。

用法


您实际上从未直接使用“Inline::Pdlpp”。 它只是一个用于使用的支持模块
带有“PDL::PP”的“Inline.pm”。 所以用法总是:

使用内联 Pdlpp => ...;

or

绑定内联 Pdlpp => ...;

例子


一些说明典型用法的快速示例等待完整文档的可用性。

A 简单 例子
# 示例脚本 inlpp.pl
使用 PDL; # 必须在 (!) 'use Inline Pdlpp' 调用之前调用

使用内联 Pdlpp; # 实际代码在下面的 __Pdlpp__ 块中

$a = 序列 10;
打印 $a->inc,"\n";
打印 $a->inc->dummy(1,10)->tcumul,"\n";

__DATA__

__Pdlpp__

pp_def('inc',
Pars => 'i();[o] o()',
代码 => '$o() = $i() + 1;',
);

pp_def('tcumul',
Pars => 'in(n);[o] mul()',
代码 => '$mul() = 1;
循环(n)%{
$mul() *= $in();
%}',
);
# 结束示例脚本

如果您调用此脚本,它应生成类似于以下内容的输出:

提示> perl inlpp.pl
内联运行 PDL::PP 2.2 版...
[1 2 3 4 5 6 7 8 9 10
[3628800 3628800 3628800 3628800 3628800 3628800 3628800 3628800 3628800 3628800

"Inline::Pdlpp" 的一般用法类似于 "Inline::C"。 在没有充分
“Inline::Pdlpp”的文档您可能想比较 Inline::C。

代码 使用 外部 图书馆, 等。
下面的脚本有点复杂,因为它使用了来自外部的代码
库(此处来自数字食谱)。 所有相关信息包括
文件、库和引导代码在对“内联”的配置调用中指定。 更多
有经验的 Perl 黑客 知道格式与此类似可能会有所帮助
与 ExtUtils::MakeMaker 一起使用。 关键字在很大程度上等同于那些与
“内联:: C”。 有关“INC”、“LIBS”用法的更多详细信息,请参见下文
“AUTO_INCLUDE”和“BOOT”。

使用 PDL; # 这必须在 (!) 'use Inline Pdlpp' 调用之前调用

使用内联 Pdlpp => 配置 =>
INC => "-I$ENV{HOME}/include",
LIBS => "-L$ENV{HOME}/ lib目录 -lnr -lm",
# 要包含在生成的 XS 中的代码
AUTO_INCLUDE => <<'EOINC',
#包括
#include "nr.h" /* 对于 poidev */
#include "nrutil.h" /* 用于 err_handler */

静态无效 nr_barf(char *err_txt)
{
fprintf(stderr,"现在正在呼叫 croak...\n");
croak("NR 运行时错误:%s",err_txt);
}
欧洲石油公司
# 在加载 Inline::Pdlpp 代码时安装我们的错误处理程序
启动 => 'set_nr_err_handler(nr_barf);';

使用内联 Pdlpp; # 实际代码在下面的 __Pdlpp__ 块中

$a = (10) + 30;;
打印 $a->波德夫(5),"\n";

__DATA__

__Pdlpp__

pp_def('poidev',
解析 => 'xm(); [o] pd()',
通用类型 => [L,F,D],
OtherPars => 'long idum',
代码 => '$pd() = poidev((float) $xm(), &$COMP(idum));',
);

下载 配置 附加选项


有关如何指定内联配置选项的信息,请参阅内联。 这个部分
描述了可用于 Pdlpp 的每个配置选项。 大多数选项
对应于相同名称的 MakeMaker 或 XS 选项。 请参阅 ExtUtils::MakeMaker 和
Perlxs。

自动包含
指定要自动包含的额外语句。 它们将被添加到
默认值。 将自动添加换行符。 本质上与呼叫相同
到“pp_addhdr”。 对于短代码“AUTO_INCLUDE”可能在语法上更好。

使用内联 Pdlpp => 配置 => AUTO_INCLUDE => '#include "yourheader.h"';

布莱斯
与“pp_bless”命令相同。 指定新的包(即类) pp_defed
方法将被添加。 如果省略,则默认为“PDL”。

使用内联 Pdlpp => 配置 => BLESS => 'PDL::Complex';

BOOT
指定要在 XS BOOT 部分中执行的 C 代码。 对应于 XS 参数。
与“pp_add_boot”命令相同。 通常用于在加载时只执行一次代码
模块的时间,例如库初始化调用。

CC
指定要使用的编译器。

旗帜标志
指定额外的编译器标志。

INC
指定要使用的包含路径。 对应于 MakeMaker 参数。

使用内联 Pdlpp => 配置 => INC => '-I/inc/path';

LD
指定要使用的链接器。

LDDFLAGS
指定要使用的链接器标志。

注意:这些标志将完全覆盖现有标志,而不是仅仅添加到
他们。 因此,如果您也需要使用它们,则必须在此处重新指定它们。

LIBS
指定应链接到代码中的外部库。 对应于
MakeMaker 参数。

使用内联 Pdlpp => 配置 => LIBS => '-lyourlib';

or

使用内联 Pdlpp => 配置 => LIBS => '-L/your/path -lyourlib';

MAKE
指定要使用的“make”实用程序的名称。

我的EXTLIB
指定应链接的用户编译对象。对应于 MakeMaker
参数。

使用内联 Pdlpp => 配置 => MYEXTLIB => '/your/path/yourmodule.so';

OPTIMIZE
这控制了 MakeMaker OPTIMIZE 设置。 通过将此值设置为“-g”,您可以将
关于对内联扩展的调试支持。 这将使您能够设置
使用像 gdb 这样的调试器在 C 代码中设置断点。

类型图
指定要使用的额外类型映射文件。 对应于 MakeMaker 参数。

使用内联 Pdlpp => 配置 => TYPEMAPS => '/your/path/typemap';

嘈杂
显示在幕后进行的任何编译的输出。 使用必须是“tee”
在您的计算机上可用。 默认关闭。

使用 onworks.net 服务在线使用 PDL::PP-Inlinep



最新的 Linux 和 Windows 在线程序