help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: showing structure names


From: Iago Mosqueira
Subject: Re: showing structure names
Date: Mon, 3 Jun 2002 19:27:14 +0100

Thanks very much. I don't know if I feel brave enough to compile from CVS...

iago


----- Original Message -----
From: "John W. Eaton" <address@hidden>
To: "Iago Mosqueira" <address@hidden>
Cc: <address@hidden>
Sent: 03 June 2002 19:18
Subject: showing structure names


> On  3-Jun-2002, Iago Mosqueira <address@hidden> wrote:
>
> | I am trying to configure octave so that when I call an structure name I
get
> | to see the names of the matrices only. If I set struct_levels_to_print
to 0,
> | I get nothing but the structure name, but if I set it to 1 I get all the
> | data. Can this be achieved?
>
> The following patch (relative to the current CVS sources) allows the
> follwoing behavior:
>
>   octave:1> x.a = 1;
>   octave:2> x.b = rand (100);
>   octave:3> struct_levels_to_print = 0;
>   octave:4> x
>   x =
>   {
>     a: scalar
>     b: matrix
>   }
>
>   octave:5> struct_levels_to_print = -1;
>   octave:6> x
>   x = <structure>
>
> jwe
>
>
> Index: ov-struct.cc
> ===================================================================
> RCS file: /usr/local/cvsroot/octave/src/ov-struct.cc,v
> retrieving revision 1.21
> diff -u -r1.21 ov-struct.cc
> --- ov-struct.cc 15 May 2002 03:21:00 -0000 1.21
> +++ ov-struct.cc 3 Jun 2002 18:15:22 -0000
> @@ -379,8 +379,12 @@
>
>    unwind_protect_int (Vstruct_levels_to_print);
>
> -  if (Vstruct_levels_to_print-- > 0)
> +  if (Vstruct_levels_to_print >= 0)
>      {
> +      bool print_keys_only = (Vstruct_levels_to_print == 0);
> +
> +      Vstruct_levels_to_print--;
> +
>        indent (os);
>        os << "{";
>        newline (os);
> @@ -394,13 +398,16 @@
>     std::string key = map.key (p);
>     octave_value_list val = map.contents (p);
>
> -   if (n == 1)
> -     val(0).print_with_name (os, key);
> -   else
> +   octave_value tmp = (n == 1) ? val(0) : octave_list (val);
> +
> +   if (print_keys_only)
>       {
> -       octave_list tmp (val);
> -       tmp.print_with_name (os, key);
> +       indent (os);
> +       os << key << ": " << tmp.type_name ();
> +       newline (os);
>       }
> +   else
> +     val(0).print_with_name (os, key);
>   }
>
>        decrement_indent_level ();
> @@ -411,7 +418,8 @@
>      }
>    else
>      {
> -      os << " <structure>";
> +      indent (os);
> +      os << "<structure>";
>        newline (os);
>      }
>
> @@ -421,10 +429,20 @@
>  bool
>  octave_struct::print_name_tag (std::ostream& os, const std::string& name)
const
>  {
> +  bool retval = false;
> +
>    indent (os);
> -  os << name << " =";
> -  newline (os);
> -  return false;
> +
> +  if (Vstruct_levels_to_print < 0)
> +    os << name << " = ";
> +  else
> +    {
> +      os << name << " =";
> +      newline (os);
> +      retval = true;
> +    }
> +
> +  return retval;
>  }
>
>  /*
> Index: ov.cc
> ===================================================================
> RCS file: /usr/local/cvsroot/octave/src/ov.cc,v
> retrieving revision 1.56
> diff -u -r1.56 ov.cc
> --- ov.cc 15 May 2002 03:21:01 -0000 1.56
> +++ ov.cc 3 Jun 2002 18:15:22 -0000
> @@ -1608,7 +1608,7 @@
>        && ! xisnan (val))
>      {
>        int ival = NINT (val);
> -      if (ival >= 0 && ival == val)
> +      if (ival == val)
>   {
>     Vstruct_levels_to_print = ival;
>     return 0;
>
>
>
> -------------------------------------------------------------
> Octave is freely available under the terms of the GNU GPL.
>
> Octave's home on the web:  http://www.octave.org
> How to fund new projects:  http://www.octave.org/funding.html
> Subscription information:  http://www.octave.org/archive.html
> -------------------------------------------------------------
>



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]