POV-Ray : Newsgroups : povray.general : Empty value for variable Server Time
23 Nov 2024 20:48:18 EST (-0500)
  Empty value for variable (Message 1 to 10 of 15)  
Goto Latest 10 Messages Next 5 Messages >>>
From: yesbird
Subject: Empty value for variable
Date: 4 Feb 2023 05:30:00
Message: <web.63de3370cfe1936a4ad5859710800fb2@news.povray.org>
Hi, guys !

Is there a way to assign an empty value to variable, using something like 'None'
in Python or NULL in C ? I would like to use it while passing parameters to
macros, for more compact notation.
Can not find any info in docs about it.

Thanks in advance,
--
YB


Post a reply to this message

From: jr
Subject: Re: Empty value for variable
Date: 4 Feb 2023 05:45:00
Message: <web.63de36ff5d560c7488a828ca6cde94f1@news.povray.org>
hi,

"yesbird" <nomail@nomail> wrote:
> Is there a way to assign an empty value to variable, using something like 'None'
> in Python or NULL in C ? I would like to use it while passing parameters to
> macros, for more compact notation.
> Can not find any info in docs about it.

not that I can think of[*].  as a workaround, if the argument is optional and
not supplied, you can '#if (!defined(local.varName))' in the macro, to check, if
not supplied == NULL?


[*] however, two .. misfires already, this morning :-(



regards, jr.


Post a reply to this message

From: yesbird
Subject: Re: Empty value for variable
Date: 4 Feb 2023 06:35:00
Message: <web.63de425a5d560c744ad5859710800fb2@news.povray.org>
Hi, jr.

Your answer assumes that macros can accept variable number of arguments, but
docs states following:

https://www.povray.org/documentation/3.7.0/r3_3.html#r3_3_2_8
----
3.3.2.8.2 Invoking Macros
You invoke the macro by specifying the macro name followed by a list of zero or
more actual parameters enclosed in parentheses and separated by commas. The
number of actual parameters must match the number of formal parameters in the
definition.
----

I only want to pass 'None' values to some of them to exclude their values from
object definitions, using system defaults for them and having more compact
notation finally.

Looks like it's not possible :(.
--
YB


Post a reply to this message

From: jr
Subject: Re: Empty value for variable
Date: 4 Feb 2023 07:35:00
Message: <web.63de4ff35d560c7488a828ca6cde94f1@news.povray.org>
hi,

"yesbird" <nomail@nomail> wrote:
> Your answer assumes that macros can accept variable number of arguments, but
> docs states following:

it does, sort of.  eg

#macro foo(a, optional b)
  #if (!defined(local.b))
    /* no b given on call */
  #end
  ...
#end

foo(1,2)

or

foo(1,)


presuming that a "misisng" when called can be used for your purpose.

(have a look at the 'queues.inc' for use of optional args)


regards, jr.


Post a reply to this message

From: yesbird
Subject: Re: Empty value for variable
Date: 4 Feb 2023 08:00:00
Message: <web.63de55eb5d560c744ad5859710800fb2@news.povray.org>
Hi,

Thanks a lot, it really works ! (on ver. 3.8 only),

> (have a look at the 'queues.inc' for use of optional args)

but I can't find this file anywhere, where did you get from ?

--
YB


Post a reply to this message

From: jr
Subject: Re: Empty value for variable
Date: 4 Feb 2023 08:10:00
Message: <web.63de58a35d560c7488a828ca6cde94f1@news.povray.org>
hi,

"yesbird" <nomail@nomail> wrote:
> Thanks a lot, it really works ! (on ver. 3.8 only),

ah, yes, forgot, sorry.  'optional' was new in 3.8.


> > (have a look at the 'queues.inc' for use of optional args)
>
> but I can't find this file anywhere, where did you get from ?

my own, on the wiki.  however, there's also a macro in 'pvars.inc' (on wiki)
which has only optional arguments.


regards, jr.


Post a reply to this message

From: yesbird
Subject: Re: Empty value for variable
Date: 4 Feb 2023 08:25:00
Message: <web.63de5c185d560c744ad5859710800fb2@news.povray.org>
> my own, on the wiki.  however, there's also a macro in 'pvars.inc' (on wiki)
> which has only optional arguments.

Thanks, I've found it, moreover structures are very useful itself :)
--
YB


Post a reply to this message

From: Bald Eagle
Subject: Re: Empty value for variable
Date: 4 Feb 2023 09:45:00
Message: <web.63de6e4f5d560c741f9dae3025979125@news.povray.org>
"yesbird" <nomail@nomail> wrote:
> Hi, guys !
>
> Is there a way to assign an empty value to variable, using something like 'None'
> in Python or NULL in C ? I would like to use it while passing parameters to
> macros, for more compact notation.
> Can not find any info in docs about it.
>
> Thanks in advance,
> --
> YB

As jr pointed out, there are work-arounds.
I find the optional keyword, and its required commas to be awkward and clunky.

Can you store your macro parameters in an array?
Then the array will exist, but it might not have certain elements defined.  Then
you test each element in the size of the array
#declare SizeOfArray = dimension_size (Array, 1)-1;
#for (i, 0, SizeOfArray)
     #if (!defined (Array[i])
     .....
#end

Just another option.


Post a reply to this message

From: yesbird
Subject: Re: Empty value for variable
Date: 4 Feb 2023 11:05:00
Message: <web.63de81675d560c744ad5859710800fb2@news.povray.org>
Hi,
> Just another option.

Good idea, but 'optional' works fine for me, as I prefer to simplify the passing
process.


Post a reply to this message

From: yesbird
Subject: Re: Empty value for variable
Date: 6 Feb 2023 13:30:00
Message: <web.63e146b35d560c7480f94ee210800fb2@news.povray.org>
"jr" <cre### [at] gmailcom> wrote:
Hi,
> my own, on the wiki.  however, there's also a macro in 'pvars.inc' (on wiki)
> which has only optional arguments.

Looks like there is some limitation on number of optional args:
----------------------------------------------
#macro _vector(optional p1, optional p2, optional p3)
#end

_vector(1, 2, 3) // OK
_vector(1, 2,  ) // OK
_vector(1,     ) // Error
----------------------------------------------

I wonder how is your code works ?

Regards,
--
YB


Post a reply to this message

Goto Latest 10 Messages Next 5 Messages >>>

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