On Mon, Jun 21, 2010 at 11:35 AM, Roy Stogner <roystgnr@...> wrote:
> So yeah, my vote is to namespace the entire library. We should have
> done that a long time ago, except as you point out it will be an
> API-breaking change. Not too nasty an API-breaking change, though,
> since non-Sieve users will be able to get away with a single
> "using namespace libMesh;" as the fix.
In source files yes, but if they've written their own headers (as you
mention below) I think the general rule of thumb is you don't put
"using" declarations there. So, the more extensive the user project,
the more extensive the change will be...hopefully Derek will chime in
about how much the proposed change would affect his work.
> I'd been kind of hoping that we'd be able to get away with the same in
> library code (in our .C files, albeit not our .h files), but I guess
> if even PETSc might have new encroaching identifiers then we've got to
> be careful - anything that includes a third party header (even
> indirectly...) shouldn't use any non-explicitly-namespaced symbols.
Right, and what if someone wants to write Sieve code (if this makes
sense?) within an otherwise libmesh source file, foo.C?
#include "mesh.h" // LibMesh's Mesh, assume properly namespaced
using namespace LibMesh;
Mesh mesh; // How to access Sieve's Mesh?
With the using declaration, they'd have no way to access it, right?
> We should be just about ready to put out an 0.6.5, yes? Biggest
> current obstacle is testing of that libHilbert patch? In that case
> let's make 0.6.5 non-namespaced and release a namespaced 0.6.6 soon
OK, sounds like a good plan to me.