POV-Ray : Newsgroups : povray.beta-test : bug with #declare order Server Time
30 Jul 2024 18:22:57 EDT (-0400)
  bug with #declare order (Message 13 to 22 of 22)  
<<< Previous 10 Messages Goto Initial 10 Messages
From:
Subject: Re: bug with #declare order
Date: 26 Oct 2001 10:02:20
Message: <joqitt063eivvf17ilrcc5ebbhmecq37fg@4ax.com>
On Fri, 26 Oct 2001 15:48:02 +0200, "Thorsten Froehlich"
<tho### [at] trfde> wrote:

> > #macro B() array#local C=1;#while(C<=5)[C]#local C=C+1;#end #end
> > #local A=B()
> >
> > it still not work with beta 6
>
> Move the "array" out of the macro perhaps? 

No. It not work and cursor is wrongly positioned inside line when
showing error.

> Or have the whole declare in the
> macro?

The same error: Expected 'object or directive'.

And the same thing appear when I call elements of declared array. This
not work:

#local A=array[1][1][1][1][1]{{{{{0}}}}}
#local B=A #local C=1;#while(C<=5)[0]#local C=C+1;#end

Do you agree it should works ? I ask becouse it could shorten a lot my
macros for arrays.inc requested by Rune.

ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35


Post a reply to this message

From:
Subject: Re: bug with #declare order
Date: 26 Oct 2001 10:23:08
Message: <20sittk6rd8k5cf906ef8aoj1n5ba87dpq@4ax.com>
On Fri, 26 Oct 2001 09:57:07 -0400, "Anders K." <and### [at] f2scom>
wrote:

> > What about #macro inside #macro? #switch inside
> > #switch? Or mixing: #local inside #macro?
>
> There's a difference between something like ...

yes, but I thought about different inside than you :-)

look at below syntax and try answer how many "1" should be printed out
?

#macro Go(Level)
  #debug "1\n"
  #switch (Level>0?Go(Level-1):0)
    #case(0) 1  #break
  #end
#end

#local A=Go(1);

it produces 98 lines of "1" and error "to many nested symbol tables".
why ?
perhaps it is not the same bug but ...

ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35


Post a reply to this message

From: Thorsten Froehlich
Subject: Re: bug with #declare order
Date: 26 Oct 2001 10:25:52
Message: <3bd97270@news.povray.org>

Skiba <abx### [at] babilonorg>  wrote:

> #local A=array[1][1][1][1][1]{{{{{0}}}}}
> #local B=A #local C=1;#while(C<=5)[0]#local C=C+1;#end
>
> Do you agree it should works ? I ask becouse it could shorten a lot my
> macros for arrays.inc requested by Rune.

Well, it doesn't really matter is it should work - as pointed out earlier, I
don't think it is going to change in 3.5.  Only if it worked in 3.1 I would
say it should work in 3.5.

    Thorsten

____________________________________________________
Thorsten Froehlich, Duisburg, Germany
e-mail: tho### [at] trfde

Visit POV-Ray on the web: http://mac.povray.org


Post a reply to this message

From: Anders K 
Subject: Re: bug with #declare order
Date: 26 Oct 2001 10:36:56
Message: <3bd97508@news.povray.org>
> #macro Go(Level)
>   #debug "1\n"
>   #switch (Level>0?Go(Level-1):0)
>     #case(0) 1  #break
>   #end
> #end

The problem here is that Go(Level - 1) is *always* evaluated, whether Level
> 0 or not, because POV-Ray doesn't use short-circuit evaluation.


Post a reply to this message

From:
Subject: Re: bug with #declare order
Date: 26 Oct 2001 10:39:55
Message: <ubtitt4t1t8lvk9tfjl9h0h7or4rf37irj@4ax.com>
On Fri, 26 Oct 2001 16:25:48 +0200, "Thorsten Froehlich"
<tho### [at] trfde> wrote:

> Well, it doesn't really matter is it should work - as pointed out earlier, I
> don't think it is going to change in 3.5.  Only if it worked in 3.1 I would
> say it should work in 3.5.

Could anybody check this ? I have 3.1 uninstalled.

ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35


Post a reply to this message

From:
Subject: Re: bug with #declare order
Date: 26 Oct 2001 10:49:16
Message: <eptittcu7fakkaid4fu211m94ar2srrfv4@4ax.com>
On Fri, 26 Oct 2001 10:38:59 -0400, "Anders K." <and### [at] f2scom>
wrote:

> > #macro Go(Level)
> >   #debug "1\n"
> >   #switch (Level>0?Go(Level-1):0)
> >     #case(0) 1  #break
> >   #end
> > #end
>
> The problem here is that Go(Level - 1) is *always* evaluated, whether Level
> 0 or not, because POV-Ray doesn't use short-circuit evaluation.

yes, right, I missed this.
but how it should looks with #if ?
it seems not work too.

ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35


Post a reply to this message

From: Anders K 
Subject: Re: bug with #declare order
Date: 26 Oct 2001 11:27:40
Message: <3bd980ec@news.povray.org>
> > > #macro Go(Level)
> > >   #debug "1\n"
> > >   #switch (Level>0?Go(Level-1):0)
> > >     #case(0) 1  #break
> > >   #end
> > > #end
> >
> > The problem here is that Go(Level - 1) is *always* evaluated, whether
Level
> > 0 or not, because POV-Ray doesn't use short-circuit evaluation.
>
> yes, right, I missed this.
> but how it should looks with #if ?
> it seems not work too.

Well, there's also another problem: if the result of the #switch statement
isn't 0, the macro doesn't return anything, which causes errors. I'm not
sure what you meant to write, but this is definately not a bug in POV-Ray.

Anders


Post a reply to this message

From: Tor Olav Kristensen
Subject: Re: bug with #declare order
Date: 26 Oct 2001 22:38:52
Message: <3BDA1E12.1AAF58DB@hotmail.com>

> 

> <abx### [at] babilonorg> wrote:
> > #macro B() array#local C=1;#while(C<=5)[C]#local C=C+1;#end #end
> > #local A=B()
> >
> > it still not work with beta 6
> 
> but this works fine
> 
> #local A=array[#local C=1;#while(C<=4)C][#local C=C+1;#end 5]

Are you REALLY sure that it is necessary
to EVER write such ugly lines of code ???

Tor Olav


Post a reply to this message

From:
Subject: Re: bug with #declare order
Date: 29 Oct 2001 02:48:43
Message: <6a2qttofvlo4mp4rje55lm8cn3p51nu610@4ax.com>
On Sat, 27 Oct 2001 04:38:10 +0200, Tor Olav Kristensen
<tor### [at] hotmailcom> wrote:
> "W?odzimierz ABX Skiba" wrote:
> > 
> > On Fri, 26 Oct 2001 15:21:31 +0200, W?odzimierz ABX Skiba
> > <abx### [at] babilonorg> wrote:
> > > #macro B() array#local C=1;#while(C<=5)[C]#local C=C+1;#end #end
> > > #local A=B()
> > >
> > > it still not work with beta 6
> > 
> > but this works fine
> > 
> > #local A=array[#local C=1;#while(C<=4)C][#local C=C+1;#end 5]
>
> Are you REALLY sure that it is necessary
> to EVER write such ugly lines of code ???

working line is ugly but not working line is pretty usefull
I found it not by playing but working on useful macro

ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35


Post a reply to this message

From:
Subject: Re: bug with #declare order
Date: 29 Oct 2001 03:53:28
Message: <h56qttsfg1edb3mp9j4db73ve0ikkvqrfk@4ax.com>
On Fri, 26 Oct 2001 11:29:44 -0400, "Anders K." <and### [at] f2scom>
wrote:

> Well, there's also another problem: if the result of the #switch statement
> isn't 0, the macro doesn't return anything, which causes errors. I'm not
> sure what you meant to write, but this is definately not a bug in POV-Ray.

yes, this "fight" made me mad and I've made mistake, sorry

ABX
--
#declare _=function(a,b,x){((a^2)+(b^2))^.5-x}#default {pigment{color rgb 1}}
union{plane{y,-3}plane{-x,-3}finish{reflection 1 ambient 0}}isosurface{ //ABX
function{_(x-2,y,1)|_((x+y)*.7,z,.1)|_((x+y+2)*.7,z,.1)|_(x/2+y*.8+1.5,z,.1)}
contained_by{box{<0,-3,-.1>,<3,0,.1>}}translate z*15finish{ambient 1}}//POV35


Post a reply to this message

<<< Previous 10 Messages Goto Initial 10 Messages

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.