22#ifndef ASTSHIM_FITSCHAN_H
23#define ASTSHIM_FITSCHAN_H
697 bool overwrite =
false) {
699 astSetFitsCF(
getRawPtr(), name.c_str(),
reinterpret_cast<double(&)[2]
>(value), comment.c_str(),
757 bool overwrite =
false) {
758 astSetFitsCN(
getRawPtr(), name.c_str(), value.c_str(), comment.c_str(), overwrite);
787 bool overwrite =
false) {
788 astSetFitsF(
getRawPtr(), name.c_str(), value, comment.c_str(), overwrite);
817 bool overwrite =
false) {
818 astSetFitsI(
getRawPtr(), name.c_str(), value, comment.c_str(), overwrite);
847 bool overwrite =
false) {
848 astSetFitsL(
getRawPtr(), name.c_str(), value, comment.c_str(), overwrite);
885 bool overwrite =
false) {
886 astSetFitsS(
getRawPtr(), name.c_str(), value.c_str(), comment.c_str(), overwrite);
916 astSetFitsU(
getRawPtr(), name.c_str(), comment.c_str(), overwrite);
1039 auto *rawKeyMap =
reinterpret_cast<AstObject *
>(astGetTables(
getRawPtr()));
1044 return Object::fromAstObject<KeyMap>(rawKeyMap,
true);
1051 explicit FitsChan(AstFitsChan *rawFitsChan) :
Channel(reinterpret_cast<AstChannel *>(rawFitsChan)) {
1054 os <<
"this is a " <<
getClassName() <<
", which is not a FitsChan";
Channel provides input/output of AST objects.
A specialized form of Channel which reads and writes FITS header cards.
bool getDefB1950() const
Get DefB1950: use FK4 B1950 as default equatorial coordinates?
int getNKey() const
Get Nkey: the number of unique keywords.
bool getCDMatrix() const
Get CDMatrix: use CDi_j keywords to represent pixel scaling, rotation, etc?
std::shared_ptr< KeyMap > getTables() const
std::string getCardComm() const
Get CardComm: the comment of the current card.
FitsChan(FitsChan const &)=delete
void setFitsF(std::string const &name, double value, std::string const &comment="", bool overwrite=false)
Create a new card of type double, possibly overwriting the current card.
void setIwc(bool iwcs)
Set Iwc: add a Frame describing Intermediate World Coords?
FitsChan & operator=(FitsChan &&)=default
std::string getWarnings() const
Get Warnings attribute, which controls the issuing of warnings about selected conditions when an Obje...
void setFitsDigits(int digits)
Set FitsDigits: digits of precision for floating-point FITS values.
FitsChan(FitsChan &&)=default
FitsKeyState testFits(std::string const &name="") const
Determine if a card is present, and if so, whether it has a value.
std::vector< std::string > getAllCardNames()
Get the name of all cards, in order, starting from the first card.
int getPolyTan() const
Get PolyTan: use PVi_m keywords to define distorted TAN projection?
FoundValue< std::string > findFits(std::string const &name, bool inc)
Search for a card in a FitsChan by keyword.
FoundValue< std::string > getFitsS(std::string const &name="", std::string defval="") const
Get the value of a string card.
void retainFits()
Keep the current card when an Object is read that uses the card.
std::string getEncoding() const
Get Encoding: the encoding system to use when AST Objects are stored as FITS header cards in a FitsCh...
void setFitsS(std::string const &name, std::string value, std::string const &comment="", bool overwrite=false)
Create a new card of type string, possibly overwriting the current card.
void setFitsI(std::string const &name, int value, std::string const &comment="", bool overwrite=false)
Create a new card of type int, possibly overwriting the current card.
void setCard(int ind)
Set Card: the index of the current card, where 1 is the first card.
void putFits(std::string const &card, bool overwrite)
Store a FITS header card in a FitsChan.
FoundValue< bool > getFitsL(std::string const &name="", bool defval=false) const
Get the value of a bool card.
void purgeWcs()
Delete all cards in a FitsChan that relate to any of the recognised WCS encodings.
std::string getFitsAxisOrder() const
Get FitsAxisOrder: the order for the WCS axes in any new FITS-WCS headers created using Channel::writ...
int getCard() const
Get Card: the index of the current card, where 1 is the first card.
void showFits() const
Write all the cards in the channel to standard output.
void clearCard()
Rewind the card index to the beginning.
void setCarLin(bool cdMatrix)
Set CarLin: ignore spherical rotations on CAR projections?
void setFitsAxisOrder(std::string const &order)
Set FitsAxisOrder: the order for the WCS axes in any new FITS-WCS headers created using Channel::writ...
std::string getAllWarnings() const
Get AllWarnings: a space separated list of all the conditions names recognized by the Warnings attrib...
void setClean(bool clean)
Set Clean: remove cards used whilst reading even if an error occurs?
bool getSipOK() const
Get SipOK: use Spitzer Space Telescope keywords to define distortion?
bool getSipReplace() const
Get SipReplace: ignore inverse SIP coefficients (replacing them with fit coefficients or an iterative...
std::string getCardName() const
Get CardName: the keyword name of the current card.
void readFits()
Read cards from the source and store them in the FitsChan.
void putCards(std::string const &cards)
Replace all FITS header cards.
FitsChan(Stream &stream, std::string const &options="")
Construct a channel that uses a provided Stream.
void setFitsCN(std::string const &name, std::string value, std::string const &comment="", bool overwrite=false)
Create a new "CONTINUE" card, possibly overwriting the current card.
void setPolyTan(int polytan)
Set PolyTan: use PVi_m keywords to define distorted TAN projection?
FoundValue< int > getFitsI(std::string const &name="", int defval=0) const
Get the value of a int card.
void setFitsCM(std::string const &comment, bool overwrite=false)
Create a new comment card, possibly overwriting the current card.
CardType getCardType() const
Get CardType: data type of the current FITS card.
bool getCarLin() const
Get CarLin: ignore spherical rotations on CAR projections?
int getTabOK() const
Get TabOK: should the FITS "-TAB" algorithm be recognised?
void setFitsTol(double tol)
Set FitsTol: Tolerance used for writing a FrameSet using a foreign encoding.
bool getIwc() const
Get Iwc: add a Frame describing Intermediate World Coords?
FitsChan & operator=(FitsChan const &)=delete
FitsChan(AstFitsChan *rawFitsChan)
Construct a FitsChan from a raw AstFitsChan.
void setWarnings(std::string const &warnings)
Set Warnings attribute, which controls the issuing of warnings about selected conditions when an Obje...
void writeFits()
Write out all cards currently in the channel and clear the channel.
int getNCard() const
Get NCard: the number of cards.
int getFitsDigits() const
Get FitsDigits: digits of precision for floating-point FITS values.
FoundValue< std::complex< double > > getFitsCF(std::string const &name="", std::complex< double > defval={0, 0}) const
Get the value of a complex double card.
void setTabOK(int tabOK)
Set TabOK: should the FITS "-TAB" algorithm be recognised?
FoundValue< double > getFitsF(std::string const &name="", double defval=0) const
Get the value of a double card.
void setSipReplace(bool replace)
Set SipReplace: ignore inverse SIP coefficients (replacing them with fit coefficients or an iterative...
void setFitsU(std::string const &name, std::string const &comment="", bool overwrite=false)
Create a new card with an undefined value, possibly overwriting the current card.
bool getClean() const
Get Clean: remove cards used whilst reading even if an error occurs?
void emptyFits()
Delete all cards and associated information from a FitsChan.
void setFitsL(std::string const &name, bool value, std::string const &comment="", bool overwrite=false)
Create a new card of type bool, possibly overwriting the current card.
void setSipOK(bool sipOK)
Set SipOK: use Spitzer Space Telescope keywords to define distortion?
FoundValue< std::string > getFitsCN(std::string const &name="", std::string defval="") const
Get the value of a CONTINUE card.
void setEncoding(std::string const &encoding)
Set Encoding: the encoding system to use when AST Objects are stored as FITS header cards in a FitsCh...
void setCDMatrix(bool cdMatrix)
Get CDMatrix: Use CDi_j keywords to represent pixel scaling, rotation, etc?
void delFits()
Delete the current FITS card.
double getFitsTol() const
Get FitsTol: Tolerance used for writing a FrameSet using a foreign encoding.
void setFitsCF(std::string const &name, std::complex< double > value, std::string const &comment="", bool overwrite=false)
Create a new card of type std::complex<double>, possibly overwriting the current card.
void setDefB1950(bool defB1950)
Set DefB1950: use FK4 B1950 as default equatorial coordinates?
A value and associated validity flag.
FoundValue()
Default constructor: found false, value is default-constructed.
T value
The found value; ignore if found is false.
FoundValue(bool found, T const &value)
Construct a FoundValue.
bool found
Was the value found?
void setD(std::string const &attrib, double value)
Set the value of an attribute as a double.
double getD(std::string const &attrib) const
Get the value of an attribute as a double.
std::string const getC(std::string const &attrib) const
Get the value of an attribute as a string.
std::string getClassName() const
Get Class: the name of the class (e.g.
void setI(std::string const &attrib, int value)
Set the value of an attribute as an int.
bool getB(std::string const &attrib) const
Get the value of an attribute as a bool.
void clear(std::string const &attrib)
Clear the values of a specified set of attributes for an Object.
int getI(std::string const &attrib) const
Get the value of an attribute as an int.
void setC(std::string const &attrib, std::string const &value)
Set the value of an attribute as a string.
void setB(std::string const &attrib, bool value)
Set the value of an attribute as a bool.
AstObject const * getRawPtr() const
Get the raw AST pointer.
A stream for ast::Channel.
AST wrapper classes and functions.
CardType
Enums describing the FITS card type.
@ NOTYPE
card does not exist (card number invalid)
@ COMPLEXI
complex integer
@ COMPLEXF
complex floating point
@ COMMENT
card is a comment-style card with no "=" (COMMENT, HISTORY, ...)
void assertOK(AstObject *rawPtr1=nullptr, AstObject *rawPtr2=nullptr)
Throw std::runtime_error if AST's state is bad.
FitsKeyState
Enums describing the presence or absence of a FITS keyword.
@ NOVALUE
keyword is present, but has no value
@ PRESENT
keyword is present and has a value
@ ABSENT
keyword is not present