A FrameSet can also be used as a Frame, in which capacity it almost always behaves as if its current Frame had been used instead. For example, if you request the Title attribute of a FrameSet using:
const char *title; ... title = astGetC( frameset, "Title" );
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 Naxes, Label(axis), Format(axis), etc. There are, however, a few exceptions:
Has the value ``FrameSet''.
Identifies the particular FrameSet (not its current Frame).
Equals the number of axes in the FrameSet's base Frame.
Is independent of any of the Objects within the FrameSet.
Counts the number of active FrameSets.
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 SkyFrame (), then the FrameSet
will acquire an Equinox 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.
AST A Library for Handling World Coordinate Systems in Astronomy