ນີ້ແມ່ນຄໍາສັ່ງ PDL::PP-Inlinep ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
Inline::Pdlpp - ຂຽນ PDL Subroutines ໃນແຖວດ້ວຍ PDL::PP
ລາຍລະອຽດ
"Inline::Pdlpp" ແມ່ນໂມດູນທີ່ອະນຸຍາດໃຫ້ທ່ານຂຽນ PDL subroutines ໃນແບບ PDL::PP.
ຜົນປະໂຫຍດອັນໃຫຍ່ຫຼວງເມື່ອທຽບກັບທໍາມະດາ "PDL::PP" ແມ່ນວ່າທ່ານສາມາດຂຽນຄໍານິຍາມເຫຼົ່ານີ້ຢູ່ໃນແຖວ
ໃນສະຄິບ perl ເກົ່າໃດໆ (ໂດຍບໍ່ມີການ hassle ປົກກະຕິຂອງການສ້າງ Makefiles, ການກໍ່ສ້າງ, ແລະອື່ນໆ).
ນັບຕັ້ງແຕ່ສະບັບ 0.30 ໂມດູນ Inline ສະຫນັບສະຫນູນພາສາການຂຽນໂປລແກລມຫຼາຍແລະແຕ່ລະຄົນ
ພາສາມີໂມດູນສະຫນັບສະຫນູນຂອງຕົນເອງ. ເອກະສານນີ້ອະທິບາຍວິທີການໃຊ້ Inline ກັບ
PDL::PP (ຫຼືແທນທີ່ຈະ, ມັນຈະເປັນເມື່ອເອກະສານເຫຼົ່ານີ້ສໍາເລັດ ";)".
ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບ Inline ໂດຍທົ່ວໄປ, ເບິ່ງ Inline.
ບາງສະຄຣິບຕົວຢ່າງທີ່ສະແດງໃຫ້ເຫັນການໃຊ້ "Inline::Pdlpp" ສາມາດພົບໄດ້ໃນ
ຕົວຢ່າງ/InlinePdlpp ລະບົບ.
"Inline::Pdlpp" ສ່ວນຫຼາຍແມ່ນເປັນການດຶງອອກຈາກ "Inline::C". Kudos ສ່ວນໃຫຍ່ໄປຫາ Brian I.
ການນໍາໃຊ້
ທ່ານບໍ່ເຄີຍໃຊ້ "Inline::Pdlpp" ໂດຍກົງ. ມັນເປັນພຽງແຕ່ໂມດູນສະຫນັບສະຫນູນສໍາລັບການນໍາໃຊ້
"Inline.pm" ກັບ "PDL::PP". ດັ່ງນັ້ນການນໍາໃຊ້ແມ່ນສະເຫມີໄປ:
ໃຊ້ Inline Pdlpp => ... ;
or
bind Inline Pdlpp => ... ;
ຕົວຢ່າງ
ລໍຖ້າການມີເອກະສານເຕັມຈຳນວນຕົວຢ່າງສັ້ນໆທີ່ສະແດງໃຫ້ເຫັນເຖິງການນຳໃຊ້ທົ່ວໄປ.
A ງ່າຍດາຍ ຍົກຕົວຢ່າງ
# ຕົວຢ່າງ script inlpp.pl
ໃຊ້ PDL; # ຕ້ອງເອີ້ນກ່ອນ (!) 'ໃຊ້ Inline Pdlpp' ໂທ
ໃຊ້ Inline Pdlpp; # ລະຫັດຕົວຈິງຢູ່ໃນບລັອກ __Pdlpp__ ຂ້າງລຸ່ມນີ້
$a = ລໍາດັບ 10;
ພິມ $a->inc,"\n";
ພິມ $a->inc->dummy(1,10)->tcumul,"\n";
__ຂໍ້ມູນ__
__Pdlpp__
pp_def('inc',
Pars => 'i();[o] o()',
ລະຫັດ => '$o() = $i() + 1;',
);
pp_def('tcumul',
Pars => 'in(n);[o] mul()',
ລະຫັດ => '$mul() = 1;
loop(n) %{
$mul() *= $in();
%}',
);
# ຕົວຢ່າງທີ່ສິ້ນສຸດ script
ຖ້າທ່ານໂທຫາສະຄິບນີ້, ມັນຄວນຈະສ້າງຜົນຜະລິດທີ່ຄ້າຍຄືກັນນີ້:
prompt> 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". ໃນເມື່ອບໍ່ມີເຕັມ
docs ສໍາລັບ "Inline::Pdlpp" ທ່ານອາດຈະຕ້ອງການປຽບທຽບ Inline::C.
ລະຫັດ ທີ່ ການນໍາໃຊ້ ພາຍນອກ ຫໍສະຫມຸດ, ແລະອື່ນໆ
script ຂ້າງລຸ່ມນີ້ແມ່ນຂ້ອນຂ້າງສັບສົນຫຼາຍທີ່ມັນໃຊ້ລະຫັດຈາກພາຍນອກ
ຫໍສະຫມຸດ (ທີ່ນີ້ຈາກສູດຕົວເລກ). ຂໍ້ມູນທັງຫມົດທີ່ກ່ຽວຂ້ອງກ່ຽວກັບການປະກອບມີ
ໄຟລ໌, ຫ້ອງສະຫມຸດແລະລະຫັດ boot ແມ່ນລະບຸໄວ້ໃນ config call to "Inline". ສໍາລັບການເພີ່ມເຕີມ
ປະສົບການແຮກເກີ Perl ມັນອາດຈະເປັນປະໂຫຍດທີ່ຈະຮູ້ວ່າຮູບແບບແມ່ນຄ້າຍຄືກັນກັບນັ້ນ
ໃຊ້ກັບ ExtUtils::MakeMaker. ຄໍາສໍາຄັນແມ່ນສ່ວນໃຫຍ່ແມ່ນທຽບເທົ່າກັບທີ່ໃຊ້ກັບ
"ໃນແຖວ::C". ກະລຸນາເບິ່ງຂ້າງລຸ່ມນີ້ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບການນໍາໃຊ້ "INC", "LIBS",
"AUTO_INCLUDE" ແລະ "BOOT".
ໃຊ້ PDL; # ອັນນີ້ຕ້ອງເອີ້ນກ່ອນ (!) 'ໃຊ້ Inline Pdlpp' ໂທ
ໃຊ້ Inline Pdlpp => Config =>
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 */
static void nr_barf(char *err_txt)
{
fprintf(stderr, "ຕອນນີ້ໂທຫາ croak...\n");
croak("NR runtime error: %s",err_txt);
}
EOINC
# ຕິດຕັ້ງຕົວຈັດການຄວາມຜິດພາດຂອງພວກເຮົາເມື່ອໂຫລດລະຫັດ Inline::Pdlpp
BOOT => 'set_nr_err_handler(nr_barf);';
ໃຊ້ Inline Pdlpp; # ລະຫັດຕົວຈິງຢູ່ໃນບລັອກ __Pdlpp__ ຂ້າງລຸ່ມນີ້
$a = ສູນ(10) + 30;
ພິມ $a->Poidev(5),"\n";
__ຂໍ້ມູນ__
__Pdlpp__
pp_def('poidev',
Pars => 'xm(); [o] pd()',
ປະເພດທົ່ວໄປ => [L,F,D],
OtherPars => 'ຍາວ idum',
ລະຫັດ => '$pd() = poidev((float) $xm(), &$COMP(idum));',
);
Pdlpp ການຕັ້ງຄ່າ ທາງເລືອກໃນການ
ສໍາລັບຂໍ້ມູນກ່ຽວກັບວິທີກໍານົດທາງເລືອກໃນການຕັ້ງຄ່າ Inline, ເບິ່ງ Inline. ພາກນີ້
ອະທິບາຍແຕ່ລະຕົວເລືອກການຕັ້ງຄ່າທີ່ມີຢູ່ສໍາລັບ Pdlpp. ສ່ວນໃຫຍ່ຂອງທາງເລືອກ
ກົງກັນກັບຕົວເລືອກ MakeMaker ຫຼື XS ທີ່ມີຊື່ດຽວກັນ. ເບິ່ງ ExtUtils::MakeMaker ແລະ
perlxs.
AUTO_INCLUDE
ລະບຸໃບແຈ້ງຍອດເພີ່ມເຕີມເພື່ອປະກອບອັດຕະໂນມັດ. ພວກເຂົາເຈົ້າຈະຖືກເພີ່ມໃສ່
ຄ່າເລີ່ມຕົ້ນ. ຕົວອັກສອນແຖວໃໝ່ຈະຖືກເພີ່ມໂດຍອັດຕະໂນມັດ. ມັນເປັນສິ່ງຈໍາເປັນຄືກັນກັບການໂທ
ກັບ "pp_addhdr". ສໍາລັບລະຫັດສັ້ນໆ "AUTO_INCLUDE" ອາດຈະດີກ່ວາ syntactically.
ໃຊ້ Inline Pdlpp => Config => AUTO_INCLUDE => '#include "yourheader.h"';
ອວຍພອນ
ຄືກັນກັບຄໍາສັ່ງ "pp_bless". ລະບຸຊຸດ (ie class) ທີ່ໃໝ່ຂອງເຈົ້າ pp_defed
ວິທີການຈະຖືກເພີ່ມ. ຄ່າເລີ່ມຕົ້ນເປັນ "PDL" ຖ້າຖືກລະເວັ້ນ.
ໃຊ້ Inline Pdlpp => Config => BLESS => 'PDL::Complex';
BOOT
ລະບຸລະຫັດ C ທີ່ຈະດໍາເນີນການຢູ່ໃນພາກສ່ວນ XS BOOT. ກົງກັບພາລາມິເຕີ XS.
ເຮັດເຊັ່ນດຽວກັນກັບຄໍາສັ່ງ "pp_add_boot". ມັກຈະໃຊ້ເພື່ອປະຕິບັດລະຫັດພຽງແຕ່ຄັ້ງດຽວໃນເວລາໂຫຼດ
ທີ່ໃຊ້ເວລາຂອງໂມດູນ, ຕົວຢ່າງການໂທຫ້ອງສະຫມຸດໃນເບື້ອງຕົ້ນ.
CC
ລະບຸຕົວລວບລວມຂໍ້ມູນທີ່ຈະໃຊ້.
CCFLAGS
ລະບຸທຸງ compiler ເພີ່ມເຕີມ.
INC
ລະບຸເສັ້ນທາງທີ່ຈະໃຊ້. ກົງກັບຕົວກໍານົດການ MakeMaker.
ໃຊ້ Inline Pdlpp => Config => INC => '-I/inc/path';
LD
ລະບຸຕົວເຊື່ອມຕໍ່ທີ່ຈະໃຊ້.
LDDLFLAGS
ລະບຸວ່າທຸງຕົວເຊື່ອມຕໍ່ໃດທີ່ຈະໃຊ້.
ໝາຍເຫດ: ທຸງເຫຼົ່ານີ້ຈະທັບຊ້ອນທຸງທີ່ມີຢູ່ທັງໝົດ, ແທນທີ່ພຽງແຕ່ຈະເພີ່ມໃສ່
ເຂົາເຈົ້າ. ສະນັ້ນຖ້າທ່ານຕ້ອງການໃຊ້ພວກມັນຄືກັນ, ທ່ານຕ້ອງລະບຸພວກມັນຢູ່ທີ່ນີ້.
LIBS
ກໍານົດຫ້ອງສະຫມຸດພາຍນອກທີ່ຄວນຈະຖືກເຊື່ອມຕໍ່ເຂົ້າໄປໃນລະຫັດຂອງທ່ານ. ສອດຄ້ອງກັບ
ຕົວກໍານົດການ MakeMaker.
ໃຊ້ Inline Pdlpp => Config => LIBS => '-lyourlib';
or
ໃຊ້ Inline Pdlpp => Config => LIBS => '-L/your/path -lyourlib';
ເຮັດ
ລະບຸຊື່ຂອງ 'ເຮັດ' ຜົນປະໂຫຍດທີ່ຈະໃຊ້.
MYEXTLIB
ລະບຸວັດຖຸທີ່ລວບລວມໂດຍຜູ້ໃຊ້ທີ່ຄວນຈະຖືກເຊື່ອມຕໍ່ໃນ. ກົງກັບ MakeMaker
ພາລາມິເຕີ.
ໃຊ້ Inline Pdlpp => Config => MYEXTLIB => '/your/path/yourmodule.so';
ໂອທິສຕິກ
ອັນນີ້ຄວບຄຸມການຕັ້ງຄ່າ MakeMaker OPTIMIZE. ໂດຍການຕັ້ງຄ່ານີ້ເປັນ '-g', ທ່ານສາມາດປ່ຽນໄດ້
ກ່ຽວກັບການແກ້ໄຂບັນຫາການຮອງຮັບການຂະຫຍາຍ Inline ຂອງທ່ານ. ນີ້ຈະຊ່ວຍໃຫ້ທ່ານສາມາດກໍານົດ
ຈຸດຢຸດໃນລະຫັດ C ຂອງທ່ານໂດຍໃຊ້ຕົວດີບັກເຊັ່ນ: gdb.
ປະເພດແຜນທີ່
ລະບຸໄຟລ໌ແຜນທີ່ປະເພດພິເສດທີ່ຈະໃຊ້. ກົງກັບຕົວກໍານົດການ MakeMaker.
ໃຊ້ Inline Pdlpp => Config => TYPEMAPS => '/your/path/typemap';
ສຽງດັງ
ສະແດງໃຫ້ເຫັນຜົນໄດ້ຮັບຂອງການລວບລວມຂໍ້ມູນໃດໆທີ່ເກີດຂື້ນຢູ່ເບື້ອງຫຼັງ. ໃຊ້ "tee" ເຊິ່ງຕ້ອງເປັນ
ມີຢູ່ໃນຄອມພິວເຕີຂອງທ່ານ. ຄ່າເລີ່ມຕົ້ນຖືກປິດໄວ້.
ໃຊ້ PDL::PP-Inlinep ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net