Thanks. I tried the second solution, and got the below result. Very strange. Here's the code:
const PrintContext pctx( PST_NONE, Workspace::get_PP(), 100000 ); Value_P cr_formatted = Quad_CR::do_CR( cr_level, *value, pctx ); const PrintContext pctx2( PST_NONE, Workspace::get_PP(), 100000 ); PrintBuffer buffer( *cr_formatted, pctx2 ); out << buffer; Then, this renders as a lot of private use symbols (U+EEEE). I've attached a screenshot of what it looks like. Regards, Elias On 22 May 2014 21:10, Juergen Sauermann <juergen.sauerm...@t-online.de>wrote: > Hi Elias, > > if the values was a matrix then you may have another problem that > the matrix has no \n at the end of each row (not sure how your output is > supposed to look like). > > Let say do_CR returns *Value_P Z *(which can be a scalar, a vector, or > a matrix depending on the value ⎕CRed and the first arg of do_CR(). > Then there are two options: > > 1. Check the rank of *Z* with *Z->get_rank()* and > > * loop(z, Z->**element_count())* > * {* > * out << **Z->get_ravel(z)**.get_char_value()**;* > * // insert \n as needed, i.e. z%Z->**get_last_shape_item();* > * }* > > 2.Construct a PrintBuffer object from Z (with ⎕PW as needed) and > > * out << **PrintBuffer object;* > > I haven't tested this; 1. seems more reliable (and definitely faster) > while 2. looks more elegant. > > > /// Jürgen > > > > On 05/22/2014 02:46 PM, Elias Mårtenson wrote: > > Thank you. But I don't see how I can solve my problem then? > > Regards, > Elias > > > On 22 May 2014 20:44, Juergen Sauermann <juergen.sauerm...@t-online.de>wrote: > >> Hi Elias, >> >> yes, sorry. Forgot to mention that the APL values used in the constructor >> of UCS_string >> must have rank ≤ 1 while do_CR() might produce matrices for some left >> arguments of ⎕CR. >> >> /// Jürgen >> >> >> >> On 05/22/2014 11:13 AM, Elias Mårtenson wrote: >> >> I tried to do this, but I'm having the constructor for UCS_string crash >> on me when I try: >> >> #0 0x00007f228d0cbd67 in raise () from /usr/lib/libc.so.6 >> #1 0x00007f228d0cd118 in abort () from /usr/lib/libc.so.6 >> #2 0x00007f228d9c0dc5 in __gnu_cxx::__verbose_terminate_handler() () >> from /usr/lib/libstdc++.so.6 >> #3 0x00007f228d9bee46 in ?? () from /usr/lib/libstdc++.so.6 >> #4 0x00007f228d9bee91 in std::terminate() () from /usr/lib/libstdc++.so.6 >> #5 0x00007f228d9bf0a8 in __cxa_throw () from /usr/lib/libstdc++.so.6 >> *#6 0x00000000004b350c in throw_apl_error (code=E_RANK_ERROR, * >> * loc=0x595c13 "UCS_string.cc:388") at Error.cc:188* >> #7 0x000000000054d31c in UCS_string::UCS_string (this=0x7f227fb3c880, >> value=...) >> at UCS_string.cc:388 >> #8 0x00007f228c0de92c in TraceData::display_value_for_trace (out=..., >> value=..., >> cr_level=8) at TraceData.cc:64 >> #9 0x00007f228c0db4ca in enable_trace (conn=..., symbol=0xa88c90, >> cr_level=8) >> at FollowCommand.cc:90 >> #10 0x00007f228c0db9e2 in FollowCommand::run_command >> (this=0x7f22780011f0, conn=..., >> args=std::vector of length 4, capacity 4 = {...}) at >> FollowCommand.cc:135 >> #11 0x00007f228c0d4eb6 in NetworkConnection::process_command >> (this=0x7f22780008c0, >> command="trace:palle:on:8") at NetworkConnection.cc:209 >> #12 0x00007f228c0d500c in NetworkConnection::run (this=0x7f22780008c0) >> at NetworkConnection.cc:220 >> #13 0x00007f228c0cf542 in connection_loop (arg=0x7f22780008c0) at >> network.cc:36 >> #14 0x00007f228f120124 in start_thread () from /usr/lib/libpthread.so.0 >> #15 0x00007f228d1814bd in clone () from /usr/lib/libc.so.6 >> >> Do you have any idea? >> >> Regards, >> Elias >> >> >> On 22 May 2014 00:21, Juergen Sauermann <juergen.sauerm...@t-online.de>wrote: >> >>> Hi Elias, >>> >>> the *operator<<(ostream & out, const Value & v)* calls *v.print(out)*which >>> then >>> does the line break at *⎕PW*. The cr_formatted below is probably OK but >>> printing >>> it introduces line wrapping. You could have used UCS_string(* >>> cr_formatted) instead >>> of *cr_formatted to avoid that. >>> >>> /// Jürgen >>> >>> >>> >>> On 05/21/2014 04:54 PM, Elias Mårtenson wrote: >>> >>> I tried to specify a different PW like the below, but the with is still >>> limited to something close to 80: >>> >>> const PrintContext pctx( PST_NONE, Workspace::get_PP(), 1000 ); >>> Value_P cr_formatted = Quad_CR::do_CR( cr_level, *value, pctx ); >>> out << *cr_formatted; >>> >>> What did I do wrong? >>> >>> Regards, >>> Elias >>> >>> >>> >> >> > >