what do i replace all the qstring with
/apl/libapl/c > grepi qstring ./aplexec.h:18:aplExec (apl_op_e apl_op, QString &cmd, ./aplexec.h:19:QString &outString, QString &errString); ./libaplc.c:12:AplExec::aplExec (apl_op_e apl_op, QString &cmd, ./libaplc.c:13:QString &outString, QString &errString) ./libaplc.c:29:outString = QString (outbuffer.str ().c_str ()); ./libaplc.c:30:errString = QString (errbuffer.str ().c_str ()); ./libaplc.c:40:outString = QString (res); ./libaplc.c:44:errString = QString (errbuffer.str ().c_str ()); On Fri, 27 Jan 2023 17:18:01 -0500 Chris Moller <mol...@mollerware.com> wrote: > Qt isn't necessary--that's just the environment I'm working in. From my > example, get rid of the #include <QtWidgets>line. > > Here's aplexec.h: > > #ifndef APLEXEC_H > #define APLEXEC_H > > #include <QtWidgets> > #include <apl/libapl.h> > > #define APL_VARIABLE "([⍙∆a-z][⍙∆_a-z0-9]*)" > > typedef enum { > APL_OP_EXEC, > APL_OP_COMMAND > } apl_op_e; > > class AplExec > { > public: > static LIBAPL_error > aplExec (apl_op_e apl_op, QString &cmd, > QString &outString, QString &errString); > }; > #endif // APLEEXEC_H > > > > Again, you don't need the Qt stuff. Mostly, what you need is the > > #include <apl/libapl.h> > > line. And you probably don't need the #define APL_VARIABLE > "([⍙∆a-z][⍙∆_a-z0-9]*)" line > > For this to work at all, you need to build Jürgen's APL twice, once as > usual to install apl itself, and a second time with > > ./configure --with-libapl > make install > > (with any other options you need on the configure) > > What this does is put apl-related stuff in /usr/local/include and > /usr/local/lib. (I think I manually copied Error.def from the apl > source tree into /usr/local/include--I don't think it gets copied with > the make install.) > > On 1/27/23 16:28, enz...@gmx.com wrote: > > Chris > > > > i don't have qt installed nor do i have your > > #include "aplexec.h" > > > > On Fri, 27 Jan 2023 11:23:08 -0500 > > Chris Moller<mol...@mollerware.com> wrote: > > > >> For what it's worth, in an ongoing project in use: > >> > >> #include <QtWidgets> > >> > >> #include <iostream> > >> #include <sstream> > >> > >> #include <apl/libapl.h> > >> > >> #include "aplexec.h" > >> > >> LIBAPL_error > >> AplExec::aplExec (apl_op_e apl_op, QString &cmd, > >> QString &outString, QString &errString) > >> { > >> LIBAPL_error execerr = LAE_NO_ERROR; > >> > >> switch(apl_op) { > >> case APL_OP_EXEC: > >> { > >> std::stringstream outbuffer; > >> std::streambuf *coutbuf = std::cout.rdbuf(); > >> std::cout.rdbuf(outbuffer.rdbuf()); > >> std::stringstream errbuffer; > >> std::streambuf *cerrbuf = std::cerr.rdbuf(); > >> std::cerr.rdbuf(errbuffer.rdbuf()); > >> execerr = apl_exec (cmd.toStdString ().c_str ()); > >> std::cout.rdbuf(coutbuf); > >> std::cerr.rdbuf(cerrbuf); > >> outString = QString (outbuffer.str ().c_str ()); > >> errString = QString (errbuffer.str ().c_str ()); > >> } > >> break; > >> case APL_OP_COMMAND: > >> { > >> std::stringstream errbuffer; > >> std::streambuf *cerrbuf = std::cerr.rdbuf(); > >> std::cerr.rdbuf(errbuffer.rdbuf()); > >> const char *res = apl_command (cmd.toStdString ().c_str ()); > >> if (res) { > >> outString = QString (res); > >> free ((void *)res); > >> } > >> std::cerr.rdbuf(cerrbuf); > >> errString = QString (errbuffer.str ().c_str ()); > >> } > >> break; > >> } > >> > >> return execerr; > >> } > >> > >> I.e., I'm capturing stdout and stderr in strings. > > >