10.3. Examining Variables in a Class or Instance

Classes and instances can be examined in two ways. For a class, you can simply type the name at the prompt. Instances of classes bound to C structures can be viewed using the instance_vars function. To examine an instance of a class, simply type an expression which evaluates to that instance ( see, for example, elephant as an instance of the animal class in the Instances section of the Class chapter).

You can examine not only user-defined classes, but also the classes which are implemented in Gamma. For example,

Gamma> PhImage;
# < Binary Class: PhImage >
Gamma> instance_vars (PhImage);
[bpl colors flags format image image_tag palette palette_tag size \ 
     type xscale yscale]
Gamma> x = new (PhImage);
{PhImage (bpl . 0) (colors . 0) (flags . 0) (format . 0) \
     (image . #{}) (image_tag . 0) (palette . []) (palette_tag . 0) \
     (size . {PhDim (h . 0) (w . 0)}) (type . 0) (xscale . 0) \
     (yscale . 0)}
Gamma> x;
{PhImage (bpl . 0) (colors . 0) (flags . 0) (format . 0) \
     (image . #{})(image_tag . 0) (palette . []) (palette_tag . 0) \ 
     (size . {PhDim (h . 0) (w . 0)}) (type . 0) (xscale . 0) \
     (yscale . 0)}
Gamma> instance_vars (x);
[(bpl . 0) (colors . 0) (flags . 0) (format . 0) (image . #{}) \
     (image_tag . 0) (palette . []) (palette_tag . 0) (size . \	 
{PhDim (h . 0) (w . 0)}) (type . 0) (xscale . 0) (yscale . 0)]
Gamma> pretty_princ (x, "\n");
{PhImage (bpl . 0) (colors . 0) (flags . 0) (format . 0) (image . #{} ))
      (image_tag . 0) (palette . []) (palette_tag . 0) \
      (size . {PhDim (h . 0) (w . 0)}) (type . 0) (xscale . 0) \
      (yscale . 0)}
t