[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sc-dev] Bug: Object:asString



asString { arg limit = 512;
var string;
_ObjectString
string = String.streamContentsLimit({ arg stream; this.printOn(stream); }, limit);
if (string.size >= limit, { ^(string ++ "...etc..."); });
^string
}

So, according to this, if I want to print something with a limit larger than 512, I should be able to do this.

(something).asString(2000)

But if I put in a debug statement to print the actual limit used, it is always 512 no matter what I do.

SynthDescLib.at(\zap).asString(2000)

limit: 512 <<---- HUH? Why is this not 2000 like I said?
SynthDesc 'zap' 
Controls:
ControlName  P 0 dur control 0.0099999997764826
ControlName  P 1 decayratio control 0.0099999997764826
ControlName  P 2 freqs control 100
ControlName  P 3 ? control 100
ControlName  P 4 ? control 100
ControlName  P 5 ? control 100
ControlName  P 6 subratio control 0.80000001192093
ControlName  P 7 panstart control 0
ControlName  P 8 panend control 0
ControlName  P 9 amp control 0.10000000149012
ControlName  P 10 outbus control 0
ControlName  P 11 bufnum control 0
ControlName  P 12...etc...

What I want is to get rid of the ...etc... and see all the controls. The only way I can do it is to call String.streamContentsLimit manually. That shouldn't be necessary.

I looked at the source and can't figure out why. It looks like the method call involves 2 arguments, which should be 'this' and the limit.

case 193 :  case 194 :  case 195 :  
case 196 :  case 197 :  case 198 :  case 199 :  
case 200 :  case 201 :  case 202 :  case 203 :  
case 204 :  case 205 :  case 206 :  case 207 :
op2 = ip[1]; ++ip; // get selector index
numArgsPushed = op1 & 15;

194 & 15 == 2

Anyone have any insight? Clearly this is not working as it should and it looks to me like something in the VM.
hjh


: H. James Harkins
.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:

"Come said the Muse,
Sing me a song no poet has yet chanted,
Sing me the universal."  -- Whitman