When I generate a Pcell using a function and it's arguments, my pcells do not generate correctly.
I understand why, once the pcell is compiled, he has unknown variables, the one that where passed by the function. IfI replace this variables with a parameter of the pcell, the functions arguments are stored and the pcell compiles.
I don't want to use variables for this to prevent having a long list.
Is there another way of doing this, some sort of hidden parameter or property?
So this doesn't work:
procedure( makeAcell(arg1 arg2)
pcDefinePcell( ... ...w = arg1*arg2
This does work, but it's not what I want:
procedure( makeAcell(arg1 arg2) ...;PCELL PARAMETERS((Arg1 int arg1) (Arg2 int arg2)) ...))
In your first example, this code worked perfectly:
procedure(makeACell(arg1 arg2)eval(`pcDefinePCell( list(ddGetObj("BBDlib") "mypcell" "layout") ( (myp 1) ) w=,arg1*,arg2 for( n 1 ,arg1 fprintf(stderr "w is %L, n is %L\n" w n) ) ;for ) ;pcDefinePCell) ; eval) ; procedure
It output this when the pcell evaluated:
makeACell(3 4)Generating Pcell for 'mypcell layout'.w is 12, n is 1w is 12, n is 2w is 12, n is 3
As for the second case, it's because you have the wrong quotation mark. It should be a backquote not a normal single quote. So ` not '
Check your pcell code in case you've used the wrong quote. Normal single quote prevents evaluation completely, whereas backquote allows selective evaluation when expressions are preceded by comma.