22 #ifndef ASTSHIM_FRAMEDICT_H
23 #define ASTSHIM_FRAMEDICT_H
30 #include <unordered_map>
82 _domainIndexDict = _makeNewDict(*
this);
99 :
FrameSet(baseFrame, mapping, currentFrame) {
100 _domainIndexDict = _makeNewDict(*
this);
111 _domainIndexDict = _makeNewDict(*
this);
191 auto it = _domainIndexDict.
find(domainUpper);
192 if (it == _domainIndexDict.
end()) {
258 return copyImpl<FrameDict, AstFrameSet>();
274 return std::static_pointer_cast<FrameSet>(copyImpl<FrameSet, AstFrameSet>());
295 _domainIndexDict = _makeNewDict(
frameSet);
A FrameSet whose frames can be referenced by domain name.
void addFrame(int iframe, Mapping const &map, Frame const &frame) override
Add a new Frame and an associated Mapping to this FrameSet so as to define a new coordinate system,...
void mirrorVariants(std::string const &domain)
Variant of mirrorVariants(int) with the frame specified by domain.
bool hasDomain(std::string const &domain) const
Return True if a frame in this FrameDict has the specified domain.
std::shared_ptr< Frame > getFrame(int iframe, bool copy=true) const
Obtain a deep copy of the specified Frame.
std::shared_ptr< FrameSet > getFrameSet() const
Return a deep copy as a FrameSet.
void setCurrent(std::string const &domain)
Variant of setCurrent(int) with the frame specified by domain.
std::shared_ptr< FrameDict > copy() const
Return a deep copy of this object.
FrameDict & operator=(FrameDict const &)=delete
std::set< std::string > getAllDomains() const
Get the domain names for all contained Frames (excluding frames with empty or defaulted domain names)...
std::shared_ptr< Mapping > getMapping(std::string const &from, int to) const
Variant of FrameSet::getMapping with the first frame specified by domain.
FrameDict(FrameDict &&)=default
FrameDict(Frame const &frame, std::string const &options="")
Construct a FrameDict from a single Frame.
std::shared_ptr< Mapping > getMapping(std::string const &from, std::string const &to) const
Variant of FrameSet::getMapping with the both frames specified by domain.
void removeFrame(int iframe) override
Remove a Frame from a FrameSet.
std::shared_ptr< Mapping > getMapping(int from=BASE, int to=CURRENT) const
Obtain a Mapping that converts between two Frames in a FrameSet.
FrameDict(FrameDict const &)=default
Copy constructor: make a deep copy.
void remapFrame(std::string const &domain, Mapping &map)
Variant of remapFrame(int, Mapping&) with the frame specified by domain.
FrameDict(Frame const &baseFrame, Mapping const &mapping, Frame const ¤tFrame, std::string const &options="")
Construct a FrameDict from two frames and a mapping that connects them.
virtual std::shared_ptr< Object > copyPolymorphic() const override
Return a deep copy of this object.
FrameDict(FrameSet const &frameSet)
Construct a FrameDict from a FrameSet.
FrameDict & operator=(FrameDict &&)=default
int getIndex(std::string const &domain) const
Get the index of a frame specified by domain.
std::shared_ptr< Mapping > getMapping(int from, std::string const &to) const
Variant of FrameSet::getMapping with the second frame specified by domain.
void setBase(std::string const &domain)
Variant of setBase(int) with the frame specified by domain.
std::shared_ptr< Frame > getFrame(std::string const &domain, bool copy=true) const
Variant of getFrame(int, bool) where the frame is specified by domain name.
void setDomain(std::string const &domain) override
Set the domain of the current frame (and update the internal dict).
Frame is used to represent a coordinate system.
A FrameSet consists of a set of one or more Frames (which describe coordinate systems),...
std::shared_ptr< Frame > getFrame(int iframe, bool copy=true) const
Obtain a deep copy of the specified Frame.
void setBase(int ind)
Set Base: index of base Frame.
void setCurrent(int ind)
Set Current: index of current Frame, starting from 1.
void mirrorVariants(int iframe)
Indicates that all access to the Variant attribute of the current Frame should should be forwarded to...
std::shared_ptr< Mapping > getMapping(int from=BASE, int to=CURRENT) const
Obtain a Mapping that converts between two Frames in a FrameSet.
void remapFrame(int iframe, Mapping &map)
Modify the relationship (i.e.
An abstract base class for objects which transform one set of coordinates to another.
Abstract base class for all AST objects.
std::string stringToUpper(std::string const &str)
Return a copy of a string in which all characters are uppercase.
AST wrapper classes and functions.