[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: libapl stdout
From: |
enztec |
Subject: |
Re: libapl stdout |
Date: |
Fri, 27 Jan 2023 16:00:05 -0700 |
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 <moller@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, enztec@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<moller@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.
> >
>
- libapl stdout, enztec, 2023/01/14
- Re: libapl stdout, Elias Mårtenson, 2023/01/14
- Re: libapl stdout, Dr . Jürgen Sauermann, 2023/01/27
- Re: libapl stdout, Chris Moller, 2023/01/27
- Re: libapl stdout, enztec, 2023/01/27
- Re: libapl stdout, Chris Moller, 2023/01/27
- Re: libapl stdout,
enztec <=
- Re: libapl stdout, Chris Moller, 2023/01/27
- Re: libapl stdout, enztec, 2023/01/27
- Re: libapl stdout, Chris Moller, 2023/01/27
Re: libapl stdout, enztec, 2023/01/27