From 008c091e3cfc8470a3eb0ff36841c7a7a5cfdc15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Fri, 3 May 2019 19:08:47 +0100 Subject: [PATCH] yap4r --- packages/real/build.yap4r | 14 ++++++++++++++ packages/real/yap4r/R/zzz.R | 1 + packages/real/yap4r/src/RcppExports.cpp | 4 ++-- packages/real/yap4r/src/symbols.rds | Bin 0 -> 7537 bytes packages/real/yap4r/src/yap4r.cpp | 24 +++++++----------------- 5 files changed, 24 insertions(+), 19 deletions(-) create mode 100755 packages/real/build.yap4r create mode 100644 packages/real/yap4r/src/symbols.rds diff --git a/packages/real/build.yap4r b/packages/real/build.yap4r new file mode 100755 index 000000000..4f99c14d3 --- /dev/null +++ b/packages/real/build.yap4r @@ -0,0 +1,14 @@ +rm -f */*/*.o */*/*.so yap4r/src/RCppExports.Cpp +R CMD REMOVE yap4r +R --no-save << EOF +library(Rcpp) +compileAttributes("yap4r") +compileAttributes("yap4r") +EOF +R CMD INSTALL yap4r +R CMD check yap4r +R --no-save << eof +library(yap4r) +y <- new(yap4r) +y$q("is",[3,6]) +eof diff --git a/packages/real/yap4r/R/zzz.R b/packages/real/yap4r/R/zzz.R index 803a717a4..a39cdd146 100644 --- a/packages/real/yap4r/R/zzz.R +++ b/packages/real/yap4r/R/zzz.R @@ -8,5 +8,6 @@ ## For R 2.15.1 and later this also works. Note that calling loadModule() triggers ## a load action, so this does not have to be placed in .onLoad() or evalqOnLoad(). + loadModule("yap4r", TRUE) diff --git a/packages/real/yap4r/src/RcppExports.cpp b/packages/real/yap4r/src/RcppExports.cpp index 02ffefcff..7ca50efcd 100644 --- a/packages/real/yap4r/src/RcppExports.cpp +++ b/packages/real/yap4r/src/RcppExports.cpp @@ -6,10 +6,10 @@ using namespace Rcpp; -RcppExport SEXP _rcpp_module_boot_mod_yap4r(); +RcppExport SEXP _rcpp_module_boot_yap4r(); static const R_CallMethodDef CallEntries[] = { - {"_rcpp_module_boot_mod_yap4r", (DL_FUNC) &_rcpp_module_boot_mod_yap4r, 0}, + {"_rcpp_module_boot_yap4r", (DL_FUNC) &_rcpp_module_boot_yap4r, 0}, {NULL, NULL, 0} }; diff --git a/packages/real/yap4r/src/symbols.rds b/packages/real/yap4r/src/symbols.rds new file mode 100644 index 0000000000000000000000000000000000000000..5587e3cefe0003de18acf38602ce7656e2b672ab GIT binary patch literal 7537 zcmV-%9ggB3iwFP!000001MNM@lH|s9&EYcQCXG1UNl~IKN+c~&m8d-^TWWS=W|}=q zxzJN2hYF=pKvp-@RX`Cy^>i~Fb~qgJ$-dbKU;G7jIKr0CzWCzr@DKRntL#iHi3E@j z1=P~rGpdQ`Dd6SXGV|rjmmBi)=eD-Cu53N|^pjgxo@9^LgZHf~*S5Bvcz^4ut!L@` zTf3iqeRJte-yocvyX3#XWr3{V|&h+M9>%d z*s?7jpXt+v8^K=cW0xFSo=@DqGxIH*cu~srKAw4G_srHOmZ6Rb}eBXX(*(UB2Z#Iclc^5yp+vpq9DXR57-zEBFI2-NV z9@bQ~;hourdJ-Z25JqgBdefP2tG#_=9AUo)V|Sbr;*Q47L)D6q-+_^LYg~aMEK~|h z;aE_vQQ2IhO1VZ=a*aym8kNd5O6B^k7^~BFLabaNgD9vN19zwpL&OcSs|w$RG@Bqgd97gkvgV{3f^-( ztWk(*x%9mryx*G=d*YaJp?q1D`_%DN&2Nn8?;b)JPllea`vm(cB%)nGM0YyWjpLDS zjd{DOMD86q4=1{PmbCavZFz&jQ#1}c#>_GrJbQ=BYN zzm!hiQJ@r|ZR`dq-7tSNU7E87>z~w~ydV%(6Tfq?BXt;R4Qoy@7D{7%hhptPzFVD( zgc77T6QrzG#TWvQXBY<8?Z?4eNvjZ4)ym{Yj+DudHa9;Kj0}&1xjZBo0+078#^5fh zVQie9>O<=UDfHR1urby>5Bq0RLgSi|BW7+;rUc|j8SMviwU=NBJXjqLD%Rn9Ap1EsF>JLi8KB6y9Dl{#&(;wIF#_?WR)>PiZYD2Q>h`bve8Xz!d`UH!8v}nLe$K9NyGdgI{aTfnPFz)&%Sx zf+L_j7KYEWXP}%xc)J>00rJV=fL{U7`Oy5xqZY zS`+&7;#M$Yzx8Q=m`3>qMX~h>@#u3jv%mE_rb>Vt;ylF=;%7FNjh>%A(Z@5M;8|aj zkeDqEJR950)otII+~s4Q=h$n{b;izNtmMviKjyKsyW8hr{`gM3x**JO5GorJ*L7Sz zBF$s9Z#(wkuV<5~dTNlVZ#j01jB?0)`c$dyu_t#n^@*7yd^<-{w@ou1mໝ)=rcXssgSRZoe^AtLEhWa?s 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 HT>bz6tz^7K literal 0 HcmV?d00001 diff --git a/packages/real/yap4r/src/yap4r.cpp b/packages/real/yap4r/src/yap4r.cpp index e0f3ed133..ca0264ce3 100644 --- a/packages/real/yap4r/src/yap4r.cpp +++ b/packages/real/yap4r/src/yap4r.cpp @@ -12,7 +12,7 @@ using namespace Rcpp; -class yap4r { +class yap4r { YAPEngine *yap; YAPQuery *q; @@ -38,27 +38,15 @@ yap4r::yap4r() { yap = new YAPEngine(yargs); }; -bool yap4r::query(std::string p_name, GenericVector sexps, - std::string p_module) { +bool yap4r::query(std::string query) { if (q) { q->close(); q = nullptr; } yhandle_t t; arity_t arity; - if (sexps.isNULL()) { - YAPTerm qt = YAPAtomTerm(p_name.c_str()); q = new YAPQuery(qt); t = qt.handle(); - } else { - arity = sexps.length(); - std::vector args = std::vector(); - yhandle_t sls = Yap_NewHandles(sexps.length()); - for (int i = 0; i < sexps.length(); i++) { - if (!sexp_to_pl(sls + i, sexps[i])) - return false; - args.push_back(YAPTerm(Yap_GetFromSlot(sls + i))); - } YAPFunctor f = YAPFunctor(p_name.c_str(), arity); YAPAtomTerm mod = YAPAtomTerm(p_module.c_str()); t = YAPApplTerm(p_name.c_str(), args.data()).handle(); @@ -76,6 +64,7 @@ bool yap4r::query(std::string p_name, GenericVector sexps, return rc; } + bool yap4r::run(SEXP l) { yhandle_t yh = Yap_InitHandle(MkVarTerm()); if (!sexp_to_pl(yh, l)) @@ -129,15 +118,16 @@ SEXP yap4r::peek(int i) { return term_to_sexp(Yap_InitSlot(Yap_XREGS[i]), false); } -RCPP_MODULE(mod_yap4r) { +RCPP_MODULE(yap4r) { class_("yap4r") .constructor("create an object encapsulating a Prolog engine") - .method("query", &yap4r::query, "create an active query within the engine") + .method("query", &yap4r::query, "create an active query within the enginefrom text") .method("more", &yap4r::more, "ask for an extra solution") .method("done", &yap4r::done, "terminate the query") .method("eval_text", &yap4r::eval_text, "terminate the query") .method("run", &yap4r::run, "terminate the query") .method("compile", &yap4r::compile, "compile the file") .method("library", &yap4r::library, "compile the library") - .method("peek", &yap4r::peek, "load arg[i] into R"); + .method("peek", &yap4r::peek, "load arg[i] into R") + ; }