sorry that means nothing to me as to what to replace the qstring below with
On Fri, 27 Jan 2023 19:38:51 -0500 Chris Moller <mol...@mollerware.com> wrote: > QString is mmore or less equivalent to the C++ std::string class. > > On 1/27/23 18:00, enz...@gmx.com wrote: > > 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. >