<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 21, 2013 at 10:21 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">It will introduced much to much of a burden on PETSc developers to constantly be balancing what is in petscsysinline.h and petsc-private/petscimpl.h. In the end since any "inline stuff" needs to know essentially the EXACT underlying struct data structures there is nothing that is truly private. {For example, VecGetArray() could be done with hacks but then those hacks have to be kept in mind forever more.}</blockquote>
</div><br>It qualifies as a hack of sorts, but in the case of VecGetArray, we can have</div><div class="gmail_extra"><br></div><div class="gmail_extra" style>extern const size_t _petsc_vec_data_offset;</div><div class="gmail_extra" style>
<br></div><div class="gmail_extra" style>that is defined in an implementation file as</div><div class="gmail_extra" style><br></div><div class="gmail_extra" style>const size_t _petsc_vec_data_offset = offsetof(struct _p_Vec,data);</div>
<div class="gmail_extra" style><br></div><div class="gmail_extra" style>This would take the definition of _p_Vec out of the ABI (so we could add new stuff to _p_PetscObject without recompiling user code). If we could remove the other ABI dependencies this way (and if there are not too many of them), I'd be in favor of doing it just to tighten the ABI.</div>
</div>