POV-Ray : Newsgroups : povray.beta-test : Syntax extension: Passing multiple values out of a macro Server Time
28 Mar 2024 11:15:32 EDT (-0400)
  Syntax extension: Passing multiple values out of a macro (Message 1 to 10 of 12)  
Goto Latest 10 Messages Next 2 Messages >>>
From: clipka
Subject: Syntax extension: Passing multiple values out of a macro
Date: 28 Feb 2015 20:51:35
Message: <54f270a7$1@news.povray.org>
I've just implemented a syntax extension that you might like: As of the 
newest development version, you'll now be able to assign multiple 
variables with a single #declare (or #local) statement, like so:

   #declare (A,B,C) = (X,Y,Z);

Obviously, this now allows for a single macro to return multiple items, 
like this:

   #macro WindowFrameAndCutout(Pos,H,W)
     #local Frame  = union {...};
     #local Cutout = box {...};
     (Frame,Cutout,Area)
   #end

   #declare (MyFrame,MyCutout) = WindowFrameAndCutout(...);

How's that? :D


Post a reply to this message

From: Thomas de Groot
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 1 Mar 2015 03:27:23
Message: <54f2cd6b$1@news.povray.org>
On 1-3-2015 2:51, clipka wrote:
> I've just implemented a syntax extension that you might like: As of the
> newest development version, you'll now be able to assign multiple
> variables with a single #declare (or #local) statement, like so:
>
>    #declare (A,B,C) = (X,Y,Z);
>
> Obviously, this now allows for a single macro to return multiple items,
> like this:
>
>    #macro WindowFrameAndCutout(Pos,H,W)
>      #local Frame  = union {...};
>      #local Cutout = box {...};
>      (Frame,Cutout,Area)
>    #end
>
>    #declare (MyFrame,MyCutout) = WindowFrameAndCutout(...);
>
> How's that? :D

Probably neat, but I confess I do not really understand the example and 
what it does...

-- 
Thomas


Post a reply to this message

From: Warp
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 1 Mar 2015 03:30:04
Message: <54f2ce0c@news.povray.org>
clipka <ano### [at] anonymousorg> wrote:
>    #macro WindowFrameAndCutout(Pos,H,W)
>      #local Frame  = union {...};
>      #local Cutout = box {...};
>      (Frame,Cutout,Area)
>    #end

>    #declare (MyFrame,MyCutout) = WindowFrameAndCutout(...);

You are returning three values and assigning them into two identifiers?

-- 
                                                          - Warp


Post a reply to this message

From: clipka
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 1 Mar 2015 13:05:25
Message: <54f354e5$1@news.povray.org>
Am 01.03.2015 um 09:30 schrieb Warp:
> clipka <ano### [at] anonymousorg> wrote:
>>     #macro WindowFrameAndCutout(Pos,H,W)
>>       #local Frame  = union {...};
>>       #local Cutout = box {...};
>>       (Frame,Cutout,Area)
>>     #end
>
>>     #declare (MyFrame,MyCutout) = WindowFrameAndCutout(...);
>
> You are returning three values and assigning them into two identifiers?

Whoops :) - that should have been:

     #declare (MyFrame,MyCutout,MyArea) = WindowFrameAndCutout(...);


Post a reply to this message

From: clipka
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 1 Mar 2015 13:12:38
Message: <54f35696@news.povray.org>
Am 01.03.2015 um 09:27 schrieb Thomas de Groot:
> On 1-3-2015 2:51, clipka wrote:
>> I've just implemented a syntax extension that you might like: As of the
>> newest development version, you'll now be able to assign multiple
>> variables with a single #declare (or #local) statement, like so:
>>
>>    #declare (A,B,C) = (X,Y,Z);
>>
>> Obviously, this now allows for a single macro to return multiple items,
>> like this:

Sorry, forgot some part of the code (I guess I was a bit tired):

>>
>>    #macro WindowFrameAndCutout(Pos,H,W)
>>      #local Frame  = union {...};
>>      #local Cutout = box {...};
         #local Area   = H*W;
>>      (Frame,Cutout,Area)
>>    #end
>>
>>    #declare (MyFrame,MyCutout) = WindowFrameAndCutout(...);
       #declare (MyFrame,MyCutout,MyArea) = ...
>>
>> How's that? :D
>
> Probably neat, but I confess I do not really understand the example and
> what it does...

Suppose you have a set of macros to generate architecture; in such a 
framework, for windows you'll want both the windows itself, as well as a 
shape to cut a matching hole into the wall. And for some reason you 
might also be interested in knowing the area of the window, though I 
confess I just put it in there just to demonstrate that you can return 
values of different types.


Post a reply to this message

From: Mr
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 2 Mar 2015 09:50:01
Message: <web.54f47877c9a0646a16086ed00@news.povray.org>
clipka <ano### [at] anonymousorg> wrote:
> Am 01.03.2015 um 09:27 schrieb Thomas de Groot:
> > On 1-3-2015 2:51, clipka wrote:
> >> I've just implemented a syntax extension that you might like: As of the
> >> newest development version, you'll now be able to assign multiple
> >> variables with a single #declare (or #local) statement, like so:
> >>
> >>    #declare (A,B,C) = (X,Y,Z);
> >>
> >> Obviously, this now allows for a single macro to return multiple items,
> >> like this:
>
> Sorry, forgot some part of the code (I guess I was a bit tired):
>
> >>
> >>    #macro WindowFrameAndCutout(Pos,H,W)
> >>      #local Frame  = union {...};
> >>      #local Cutout = box {...};
>          #local Area   = H*W;
> >>      (Frame,Cutout,Area)
> >>    #end
> >>
> >>    #declare (MyFrame,MyCutout) = WindowFrameAndCutout(...);
>        #declare (MyFrame,MyCutout,MyArea) = ...
> >>
> >> How's that? :D
> >
> > Probably neat, but I confess I do not really understand the example and
> > what it does...
>
> Suppose you have a set of macros to generate architecture; in such a
> framework, for windows you'll want both the windows itself, as well as a
> shape to cut a matching hole into the wall. And for some reason you
> might also be interested in knowing the area of the window, though I
> confess I just put it in there just to demonstrate that you can return
> values of different types.


I like it. It looks like some Python feature was it an inspiration?


Post a reply to this message

From: clipka
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 2 Mar 2015 10:12:42
Message: <54f47dea$1@news.povray.org>
Am 02.03.2015 um 15:49 schrieb Mr:
> I like it. It looks like some Python feature was it an inspiration?

No, just general tuple-ish syntax.


Post a reply to this message

From: Thomas de Groot
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 3 Mar 2015 03:07:22
Message: <54f56bba$1@news.povray.org>
On 1-3-2015 19:12, clipka wrote:

> Suppose you have a set of macros to generate architecture; in such a
> framework, for windows you'll want both the windows itself, as well as a
> shape to cut a matching hole into the wall. And for some reason you
> might also be interested in knowing the area of the window, though I
> confess I just put it in there just to demonstrate that you can return
> values of different types.
>
Yes, I understand the principle but - as is always the case with my slow 
brain - I shall need to play with it in order to fully understand the 
potentials :-)

-- 
Thomas


Post a reply to this message

From: Tor Olav Kristensen
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 16 Mar 2015 00:00:01
Message: <web.55065426c9a0646ac90a82220@news.povray.org>
clipka <ano### [at] anonymousorg> wrote:
> I've just implemented a syntax extension that you might like: As of the
> newest development version, you'll now be able to assign multiple
> variables with a single #declare (or #local) statement, like so:
>
>    #declare (A,B,C) = (X,Y,Z);
>
> Obviously, this now allows for a single macro to return multiple items,
> like this:
>
>    #macro WindowFrameAndCutout(Pos,H,W)
>      #local Frame  = union {...};
>      #local Cutout = box {...};
>      (Frame,Cutout,Area)
>    #end
>
>    #declare (MyFrame,MyCutout) = WindowFrameAndCutout(...);
>
> How's that? :D

That's great !

=)

I really hope that it also works with functions, arrays, transforms, vectors,
cameras, light sources, materials etc. I.e. everything that be stored in a
variable.

--
Tor Olav
http://subcube.com


Post a reply to this message

From: clipka
Subject: Re: Syntax extension: Passing multiple values out of a macro
Date: 16 Mar 2015 00:31:20
Message: <55065c98$1@news.povray.org>
Am 16.03.2015 um 04:55 schrieb Tor Olav Kristensen:

> I really hope that it also works with functions, arrays, transforms, vectors,
> cameras, light sources, materials etc. I.e. everything that be stored in a
> variable.

I wouldn't dare to raise my head with this otherwise :) (I haven't 
tested most of them, but the implementation is simple enough to be 
confident about it.)


Post a reply to this message

Goto Latest 10 Messages Next 2 Messages >>>

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