[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 17:47:05 -0700 |
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 <moller@mollerware.com> wrote:
> QString is mmore or less equivalent to the C++ std::string class.
>
> On 1/27/23 18:00, enztec@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<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, 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