dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #13389
Re: str(), disp()
On Friday 08 May 2009 13:41:37 Ola Skavhaug wrote:
> On Fri, May 8, 2009 at 11:40 AM, Anders Logg <logg@xxxxxxxxx> wrote:
> > On Fri, May 08, 2009 at 11:19:35AM +0200, Anders Logg wrote:
> >> We currently have two ways to print object data to the screen in
> >> DOLFIN:
> >>
> >> cout << foo << endl;
> >>
> >> foo.disp()
> >>
> >> The first of these prints a nicely-formatted one-liner:
> >>
> >> [Mesh of topological dimension 2 with 121 vertices and 200 cells]
> >>
> >> The second prints more detailed information:
> >>
> >> Mesh data
> >> ---------
> >>
> >> Mesh topology
> >> -------------
> >>
> >> Topological dimension: 2
> >>
> >> Number of entities:
> >>
> >> dim = 0: 121
> >> dim = 1: 0
> >> dim = 2: 200
> >>
> >> ...
> >>
> >> Connectivity:
> >>
> >> 0 1 2
> >> 0 - - -
> >> 1 - - -
> >> 2 x - -
> >>
> >> Connectivity 2 -- 0:
> >>
> >> 0: 0 1 12
> >> 1: 0 11 12
> >> 2: 1 2 13
> >> 3: 1 12 13
> >>
> >> I'm thinking we could add a method named str() to all classes and then
> >> call str() both from LogStream<< and from __str__ in Python.
> >>
> >> Should the disp() method remain as it is today or should it be renamed
> >> to something else? Maybe print()?
> >
> > Or maybe info() is more logical, since calling foo.info() will result
> > in a string being sent to the info() function.
This won't work for some of the linear algebra disp's as these rely on the
underlaying library. We can of course change this.
> I like this idea. Will all dolfin classes inherit a pure virtual base
> class defining the str() method?
Isn't the meaning of str() to return a string representation of the object?
Not print it. That should Info, Debug and its like do?
With disp it is another case as I expect this function to print to the screen
if I do not tell it otherwise.
Also _pure_ virtual is good. Haveing a base class that all classes should
inherit is not good as the public/protected base class methods are
unreachable for the derived classes when these are declared as shared_ptr
classes in swig.
> If that's the case, we can, optionally, provide a stream to which the
> info is written, e.g., cerr, cout, or a stringstream from Python.
Could this be done by
info(foo.str());
and then redirect the output of info?
Johan
> Ola
>
> > --
> > Anders
> >
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.4.9 (GNU/Linux)
> >
> > iEYEARECAAYFAkoD/gwACgkQTuwUCDsYZdGgBACfTFed2EaWzhyWy2i0PX/hsALz
> > sPgAn1399kkwXnp7jyp2R9cTarJn0vUZ
> > =qi/J
> > -----END PGP SIGNATURE-----
> >
> > _______________________________________________
> > DOLFIN-dev mailing list
> > DOLFIN-dev@xxxxxxxxxx
> > http://www.fenics.org/mailman/listinfo/dolfin-dev
Follow ups
References