On Thu, Nov 10, 2011 at 2:20 PM, Dmitry Karpeev <span dir="ltr"><<a href="mailto:karpeev@mcs.anl.gov">karpeev@mcs.anl.gov</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br><br><div class="gmail_quote"><div class="im">On Wed, Nov 9, 2011 at 3:34 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><br>
On Nov 9, 2011, at 3:30 PM, Matthew Knepley wrote:<br>
<br>
> On Wed, Nov 9, 2011 at 9:28 PM, Jed Brown <<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>> wrote:<br>
> On Wed, Nov 9, 2011 at 15:22, Matthew Knepley <<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>> wrote:<br>
> So the problem is that in C++, when using a variadic function, you cannot type PETSC_NULL directly into the argument list? When would you ever<br>
> do this? If an argument to Printf() is equal to PETSC_NULL, no problem. Its only when PETSC_NULL is passed directly. Why not prevent that in<br>
> all PETSc variadic functions, which I think are only the prints.<br>
><br>
> include/petscdmcomposite.h:extern PetscErrorCode   DMCompositeScatter(DM,Vec,...);<br>
> include/petscdmcomposite.h:extern PetscErrorCode   DMCompositeGather(DM,Vec,InsertMode,...);<br>
> include/petscdmcomposite.h:extern PetscErrorCode   DMCompositeGetAccess(DM,Vec,...);<br>
> include/petscdmcomposite.h:extern PetscErrorCode   DMCompositeRestoreAccess(DM,Vec,...);<br>
> include/petscdmcomposite.h:extern PetscErrorCode   DMCompositeGetLocalVectors(DM,...);<br>
> include/petscdmcomposite.h:extern PetscErrorCode   DMCompositeGetEntries(DM,...);<br>
> include/petscdmcomposite.h:extern PetscErrorCode   DMCompositeRestoreLocalVectors(DM,...);</div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>



><br>
> Yes, I am in favor of getting rid of all variadic functions and replacing them with array arguments.<br>
<br>
</div>   Actually with the redesign where everything is a DM that becomes possible I think. Though a little ugly.<br></blockquote><div><br></div></div><div>In my opinion adding a format string is actually an acceptable solution, given all of the complications we have</div>


<div>discussed here.  Using array arguments means the user has to do explicit memory management of those args,</div><div>not to mention the overhead for each call.</div></div></blockquote><div><br></div><div>No one thinks arrays are easier, however variadic functions are not interoperable, and it seems they can fail in</div>
<div>weird ways even for C++. In my book, that is "not robust".</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="gmail_quote"><font color="#888888"><div>Dmitry. </div></font><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<span><font color="#888888"><br>
   Barry<br>
</font></span><div><div><br>
><br>
>    Matt<br>
><br>
> --<br>
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
> -- Norbert Wiener<br>
<br>
</div></div></blockquote></div></div><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>