22 #ifndef ASTSHIM_FRAMESET_H 23 #define ASTSHIM_FRAMESET_H 104 static int constexpr
BASE = AST__BASE;
135 _basicAddFrame(1, mapping, currentFrame);
211 _basicAddFrame(iframe, map, frame);
271 auto *rawFrame =
reinterpret_cast<AstObject *
>(astGetFrame(
getRawPtr(), iframe));
276 return Object::fromAstObject<Frame>(rawFrame,
copy);
305 AstObject *rawMap =
reinterpret_cast<AstObject *
>(astGetMapping(
getRawPtr(),
from,
to));
310 return Object::fromAstObject<Mapping>(rawMap,
true);
480 return copyImpl<FrameSet, AstFrameSet>();
490 explicit FrameSet(AstFrameSet *rawPtr) :
Frame(reinterpret_cast<AstFrame *>(rawPtr)) {
493 os <<
"this is a " <<
getClassName() <<
", which is not a FrameSet";
501 if (iframe == AST__ALLFRAMES) {
int getBase() const
Get Base: index of base Frame.
virtual void removeFrame(int iframe)
Remove a Frame from a FrameSet.
AstObject const * getRawPtr() const
Get the raw AST pointer.
int getNFrame() const
Get FrameSet_NFrame "NFrame": number of Frames in the FrameSet, starting from 1.
int getI(std::string const &attrib) const
Get the value of an attribute as an int.
AST wrapper classes and functions.
int getCurrent() const
Get Current: index of current Frame, starting from 1.
std::string getClassName() const
Get Class: the name of the class (e.g.
std::shared_ptr< Frame > getFrame(int iframe, bool copy=true) const
Obtain a deep copy of the specified Frame.
void assertOK(AstObject *rawPtr1=nullptr, AstObject *rawPtr2=nullptr)
Throw std::runtime_error if AST's state is bad.
virtual std::shared_ptr< Object > copyPolymorphic() const override
Return a deep copy of this object.
void setBase(int ind)
Set Base: index of base Frame.
std::string getVariant() const
Variant: name of variant mapping in use by current Frame
void mirrorVariants(int iframe)
Indicates that all access to the Variant attribute of the current Frame should should be forwarded to...
static int constexpr CURRENT
index of current frame
void addVariant(Mapping const &map, std::string const &name)
Store a new variant Mapping with the current Frame.
An abstract base class for objects which transform one set of coordinates to another.
std::shared_ptr< FrameSet > copy() const
Return a deep copy of this object.
void remapFrame(int iframe, Mapping &map)
Modify the relationship (i.e.
Frame is used to represent a coordinate system.
static int constexpr NOFRAME
an invalid frame index
std::shared_ptr< Mapping > copy() const
Return a deep copy of this object.
T static_pointer_cast(T... args)
void renameVariant(std::string const &name)
Rename the current Variant of the current Mapping.
FrameSet(Frame const &baseFrame, Mapping const &mapping, Frame const ¤tFrame, std::string const &options="")
Construct a FrameSet from two frames and a mapping that connects them.
FrameSet & operator=(FrameSet const &)=delete
void addAxes(Frame const &frame)
Append the axes from a specified Frame to every existing Frame in this FrameSet.
std::string getAllVariants() const
Get AllVariants: a list of all variant mappings stored with the current Frame.
void setCurrent(int ind)
Set Current: index of current Frame, starting from 1.
FrameSet(Frame const &frame, std::string const &options="")
Construct a FrameSet from a Frame.
static int constexpr BASE
index of base frame
void setI(std::string const &attrib, int value)
Set the value of an attribute as an int.
std::string const getC(std::string const &attrib) const
Get the value of an attribute as a string.
virtual void addFrame(int iframe, Mapping const &map, Frame const &frame)
Add a new Frame and an associated Mapping to this FrameSet so as to define a new coordinate system...
Abstract base class for all AST objects.
FrameSet(AstFrameSet *rawPtr)
Construct a FrameSet from a raw AST pointer.
A FrameSet consists of a set of one or more Frames (which describe coordinate systems), connected together by Mappings (which describe how the coordinate systems are inter-related).
std::shared_ptr< Mapping > getMapping(int from=BASE, int to=CURRENT) const
Obtain a Mapping that converts between two Frames in a FrameSet.