Using a FrameSet as a Frame

A FrameSetFrameSet can also be used as a FrameFrame, in which capacity it almost always behaves as if its current Frame had been used instead. For example, if you request the TitleTitle attribute of a FrameSet using:


\begin{terminalv}
const char *title;
\par
...
\par
title = astGetC( frameset, ''Title'' );
\end{terminalv}

the result will be the Title of the current Frame, or a suitable default if the current Frame's Title attribute is un-set. The same also applies to other attribute operations—i.e. setting, clearing and testing attributes. Most attributes shared by both Frames and FrameSets behave in this way, such as NaxesNaxes, Label(axis)Label(axis), Format(axis)Format(axis), etc. There are, however, a few exceptions:

ClassClass

Has the value “FrameSet”.

IDID

Identifies the particular FrameSet (not its current Frame).

NinNin

Equals the number of axes in the FrameSet's base Frame.

InvertInvert

Is independent of any of the Objects within the FrameSet.

NobjectNobject

Counts the number of active FrameSets.

RefCountRefCount

Counts the number of active pointers to the FrameSet (not to its current Frame).

Note that the set of attributes possessed by a FrameSet can vary, depending on the nature of its current Frame. For example, if the current Frame is a SkyFrameSkyFrame (ยง8), then the FrameSet will acquire an EquinoxEquinox attribute from it which can be set, enquired, etc. However, if the current Frame is changed to be a basic Frame, which does not have an Equinox attribute, then this attribute will be absent from the FrameSet as well. Any attempt to reference it will then result in an error.