Commit 3e5a8fd7a6eb14d24a0a974a2e03c58371835fbb
1 parent
2131cf36
add print() method
Showing
2 changed files
with
55 additions
and
74 deletions
include/GFitsTableCol.hpp
| ... | ... | @@ -67,6 +67,7 @@ public: |
| 67 | 67 | int number(void) const; |
| 68 | 68 | int length(void) const; |
| 69 | 69 | int anynul(void) const; |
| 70 | + std::string print(void) const; | |
| 70 | 71 | |
| 71 | 72 | protected: |
| 72 | 73 | // Protected data area |
| ... | ... | @@ -97,14 +98,13 @@ protected: |
| 97 | 98 | virtual void* ptr_nulval(void) = 0; |
| 98 | 99 | |
| 99 | 100 | // Protected methods |
| 100 | - virtual void save(void); | |
| 101 | - virtual void fetch_data(void); | |
| 102 | - virtual void load_column(void); | |
| 103 | - virtual void save_column(void); | |
| 104 | - virtual std::ostream& dump_column(std::ostream& os) const; | |
| 105 | - virtual GLog& dump_column(GLog& log) const; | |
| 106 | - virtual void dump_buffer(char* buffer) const; | |
| 107 | - virtual int offset(const int& row, const int& inx) const; | |
| 101 | + virtual void save(void); | |
| 102 | + virtual void fetch_data(void); | |
| 103 | + virtual void load_column(void); | |
| 104 | + virtual void save_column(void); | |
| 105 | + virtual std::ostream& dump_column(std::ostream& os) const; | |
| 106 | + virtual GLog& dump_column(GLog& log) const; | |
| 107 | + virtual int offset(const int& row, const int& inx) const; | |
| 108 | 108 | |
| 109 | 109 | private: |
| 110 | 110 | // Private methods | ... | ... |
src/fits/GFitsTableCol.cpp
| ... | ... | @@ -19,6 +19,7 @@ |
| 19 | 19 | #include "GException.hpp" |
| 20 | 20 | #include "GFitsCfitsio.hpp" |
| 21 | 21 | #include "GFitsTableCol.hpp" |
| 22 | +#include "GTools.hpp" | |
| 22 | 23 | |
| 23 | 24 | /* __ Method name definitions ____________________________________________ */ |
| 24 | 25 | #define G_LOAD_COLUMN "GFitsTableCol::load_column()" |
| ... | ... | @@ -266,6 +267,48 @@ int GFitsTableCol::anynul(void) const |
| 266 | 267 | } |
| 267 | 268 | |
| 268 | 269 | |
| 270 | +/***********************************************************************//** | |
| 271 | + * @brief Print column information | |
| 272 | + * | |
| 273 | + * @todo Format and cfitsio information is mainly for debugging. This could | |
| 274 | + * be vanish in a more stable version of the code, or it could be compiled | |
| 275 | + * in conditionally using a debug option. | |
| 276 | + ***************************************************************************/ | |
| 277 | +std::string GFitsTableCol::print(void) const | |
| 278 | +{ | |
| 279 | + // Initialise result string | |
| 280 | + std::string result; | |
| 281 | + | |
| 282 | + // Append formatted column name | |
| 283 | + result.append(parformat(m_name)); | |
| 284 | + | |
| 285 | + // Append column number | |
| 286 | + if (m_colnum > 0) | |
| 287 | + result.append(right(str(m_colnum),4)+" "); | |
| 288 | + else | |
| 289 | + result.append(right("[-]",4)+" "); | |
| 290 | + | |
| 291 | + // Append loading information | |
| 292 | + if (((GFitsTableCol*)this)->ptr_data() == NULL) | |
| 293 | + result.append("[not loaded] "); | |
| 294 | + else | |
| 295 | + result.append("[loaded] "); | |
| 296 | + | |
| 297 | + // Append format information | |
| 298 | + result.append("["+binary_format()+","+ascii_format()+"]"); | |
| 299 | + | |
| 300 | + // Append cfitsio information | |
| 301 | + result.append(" repeat="+str(m_repeat)); | |
| 302 | + result.append(" width="+str(m_width)); | |
| 303 | + result.append(" number="+str(m_number)); | |
| 304 | + result.append(" length="+str(m_length)); | |
| 305 | + result.append(" size="+str(m_size)); | |
| 306 | + | |
| 307 | + // Return result | |
| 308 | + return result; | |
| 309 | +} | |
| 310 | + | |
| 311 | + | |
| 269 | 312 | /*========================================================================== |
| 270 | 313 | = = |
| 271 | 314 | = Protected methods = |
| ... | ... | @@ -418,19 +461,11 @@ void GFitsTableCol::save_column(void) |
| 418 | 461 | * |
| 419 | 462 | * @param[in] os Output stream. |
| 420 | 463 | * @param[in] column Column. |
| 421 | - * | |
| 422 | - * @todo Use a stream buffer instead of a character buffer to circumvent | |
| 423 | - * any size limitations and return a std::string or a stream buffer. | |
| 424 | 464 | ***************************************************************************/ |
| 425 | 465 | std::ostream& GFitsTableCol::dump_column(std::ostream& os) const |
| 426 | 466 | { |
| 427 | - char buffer[1024]; | |
| 428 | - | |
| 429 | - // Dump column into buffer | |
| 430 | - dump_buffer(buffer); | |
| 431 | - | |
| 432 | - // Write buffer into logger | |
| 433 | - os << buffer; | |
| 467 | + // Write column in output stream | |
| 468 | + os << print(); | |
| 434 | 469 | |
| 435 | 470 | // Return stream |
| 436 | 471 | return os; |
| ... | ... | @@ -442,20 +477,11 @@ std::ostream& GFitsTableCol::dump_column(std::ostream& os) const |
| 442 | 477 | * |
| 443 | 478 | * @param[in] log Logger. |
| 444 | 479 | * @param[in] column Column. |
| 445 | - * | |
| 446 | - * @todo Use a stream buffer instead of a character buffer to circumvent | |
| 447 | - * any size limitations and return a std::string or a stream buffer. | |
| 448 | 480 | ***************************************************************************/ |
| 449 | 481 | GLog& GFitsTableCol::dump_column(GLog& log) const |
| 450 | 482 | { |
| 451 | - // Allocate buffer | |
| 452 | - char buffer[1024]; | |
| 453 | - | |
| 454 | - // Dump column into buffer | |
| 455 | - dump_buffer(buffer); | |
| 456 | - | |
| 457 | - // Write buffer into logger | |
| 458 | - log << buffer; | |
| 483 | + // Write column in logger | |
| 484 | + log << print(); | |
| 459 | 485 | |
| 460 | 486 | // Return logger |
| 461 | 487 | return log; |
| ... | ... | @@ -463,51 +489,6 @@ GLog& GFitsTableCol::dump_column(GLog& log) const |
| 463 | 489 | |
| 464 | 490 | |
| 465 | 491 | /***********************************************************************//** |
| 466 | - * @brief Write column into character buffer | |
| 467 | - * | |
| 468 | - * @param[in] buffer C string character buffer. | |
| 469 | - * | |
| 470 | - * Write column information in a formatted way into a C string buffer. | |
| 471 | - * | |
| 472 | - * @todo Use a stream buffer instead of a character buffer to circumvent | |
| 473 | - * any size limitations and return a std::string or a stream buffer. | |
| 474 | - ***************************************************************************/ | |
| 475 | -void GFitsTableCol::dump_buffer(char* buffer) const | |
| 476 | -{ | |
| 477 | - // Allocate buffers | |
| 478 | - char name[256]; | |
| 479 | - char fmt[100]; | |
| 480 | - char load[100]; | |
| 481 | - char fits[256]; | |
| 482 | - | |
| 483 | - // Put column number and name in buffer | |
| 484 | - if (m_colnum > 0) | |
| 485 | - sprintf(name, "Column %5d ..............: %20s", m_colnum, m_name.c_str()); | |
| 486 | - else | |
| 487 | - sprintf(name, "Column [not linked] .......: %20s", m_name.c_str()); | |
| 488 | - | |
| 489 | - // Put column format in buffer | |
| 490 | - sprintf(fmt, "[%5s,%5s]", binary_format().c_str(), ascii_format().c_str()); | |
| 491 | - | |
| 492 | - // Put loading information in buffer | |
| 493 | - if (((GFitsTableCol*)this)->ptr_data() == NULL) | |
| 494 | - sprintf(load, "[not loaded] "); | |
| 495 | - else | |
| 496 | - sprintf(load, "[loaded in memory]"); | |
| 497 | - | |
| 498 | - // Put cfitsio information in buffer | |
| 499 | - sprintf(fits, "repeat=%d width=%d number=%d length=%d size=%d", m_repeat, | |
| 500 | - m_width, m_number, m_length, m_size); | |
| 501 | - | |
| 502 | - // Assemble buffer | |
| 503 | - sprintf(buffer, "%s %s %s %s", name, fmt, load, fits); | |
| 504 | - | |
| 505 | - // Return | |
| 506 | - return; | |
| 507 | -} | |
| 508 | - | |
| 509 | - | |
| 510 | -/***********************************************************************//** | |
| 511 | 492 | * @brief Convert row and vector index into column offset |
| 512 | 493 | * |
| 513 | 494 | * @param[in] row Row of column. | ... | ... |