Commit 939c2fa5 authored by Robert Butora's avatar Robert Butora
Browse files

fitsfiles: adds read-header with appending extra cards

parent 14c13f71
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -39,9 +39,12 @@ namespace fitsfiles
      key_values_by_type key_values;
   };

   std::vector<Hdu> fname2hdrstr(std::string filename, const std::vector<std::string> extra_cards, unsigned int maxHduPos, unsigned int minHduPos = 1, const keys_by_type *keys = nullptr);

   std::vector<Hdu> fname2hdrstr(std::string filename, unsigned int maxHduPos, unsigned int minHduPos = 1, const keys_by_type *keys = nullptr);



   // for services

   std::string read_header(std::string pathname, unsigned int hdunum);
+39 −1
Original line number Diff line number Diff line
@@ -362,8 +362,28 @@ string fitsfiles::append_card_if_not_in_header(string header, const vector<fits_

// deprecated

void append_cards(string& hdr, vector<string> cards)
{
   LOG_trace(__func__);

   static const string end_card{"END                                                                             "};

   size_t hdr_len = hdr.length();

   if(hdr_len > 80)
   {
      if(end_card.compare(hdr.substr(hdr_len-80 ,80)) == 0) hdr.erase(hdr_len-80,80);

      for(long unsigned int i=0; i<cards.size(); i++) hdr += cards[i];

      hdr += end_card;
   }
}


vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
      string filename, unsigned int maxHduPos, unsigned int minHduPos,
      string filename, const vector<string> extra_cards,
		unsigned int maxHduPos, unsigned int minHduPos,
      const keys_by_type* keys)
{
   LOG_trace(__func__);
@@ -384,6 +404,14 @@ vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
      const bool apply_fixes = true;
      string header_str{hdr.get_header(apply_fixes)};

		// append extra cards
		bool extra_cards_given = (extra_cards.size() > 0);
		if(extra_cards_given)
		{
			// FIXME check for duplicates before appending
			append_cards(header_str, extra_cards);
		}

      key_values_by_type key_values;

      if(keys != nullptr)
@@ -397,3 +425,13 @@ vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
   return vec_hdrs;
}

vector<fitsfiles::Hdu> fitsfiles::fname2hdrstr(
      string filename, unsigned int maxHduPos, unsigned int minHduPos,
      const keys_by_type* keys)
{
   LOG_trace(__func__);
	const vector<string> extra_cards; //no cards

	return fitsfiles::fname2hdrstr(filename, extra_cards, maxHduPos, minHduPos, keys);
}