| 
|  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | I have macro that calls other macros...
#macro generateTail()
        #declare tailType = int(rand(rnd)*3)+1;
        #switch(tailType)
                #case(1)
                        generateTail1()
                        #break
                #case(2)
                        generateTail2()
                        #break
                #case(3)
                        generateTail3()
                        #break
        #end
#end
If I want to add in a fourth generateTail macro, I have to update the random
statement, then add a new "case" statement into the "switch". Can I call a macro
dynamically, by perhaps adding the random number to "generateTail" and calling
the result?
Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  | 
| From: Christian Froeschlin Subject: Re: Is there a more dynamic way of doing this...
 Date:  1 May 2014 19:18:25
 Message: <5362d641$1@news.povray.org>
 
 |  |  |  |  |  |  |  |  |  
|  |  | On 26.04.2014 15:31, FNH wrote:
> If I want to add in a fourth generateTail macro, I have to update the random
> statement, then add a new "case" statement into the "switch". Can I call a macro
> dynamically, by perhaps adding the random number to "generateTail" and calling
> the result?
I've never tried this myself but I think it is possible to
generate code in the program (as text), write it to a file, and
then #include the generated file. So you could have a macro that
generates the switch statement for N macros.
 Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |  |  
|  |  | Am 02.05.2014 01:18, schrieb Christian Froeschlin:
> On 26.04.2014 15:31, FNH wrote:
>
>> If I want to add in a fourth generateTail macro, I have to update the
>> random
>> statement, then add a new "case" statement into the "switch". Can I
>> call a macro
>> dynamically, by perhaps adding the random number to "generateTail" and
>> calling
>> the result?
>
> I've never tried this myself but I think it is possible to
> generate code in the program (as text), write it to a file, and
> then #include the generated file. So you could have a macro that
> generates the switch statement for N macros.
It's perfectly possible indeed, and even exploited by a macro in 
strings.inc that executes a given string as POV-Ray SDL code.
 Post a reply to this message
 |  |  |  |  |  |  |  |  
|  |  |  |  |  |  |  |  |  |