LogFile.h
上传用户:chinafayin
上传日期:2022-04-05
资源大小:153k
文件大小:3k
源码类别:

并行计算

开发平台:

Visual C++

  1. /*
  2.     FastGrid (formerly AutoGrid)
  3.     Copyright (C) 2009 The Scripps Research Institute. All rights reserved.
  4.     Copyright (C) 2009 Masaryk University. All rights reserved.
  5.     AutoGrid is a Trade Mark of The Scripps Research Institute.
  6.     This program is free software; you can redistribute it and/or
  7.     modify it under the terms of the GNU General Public License
  8.     as published by the Free Software Foundation; either version 2
  9.     of the License, or (at your option) any later version.
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.     You should have received a copy of the GNU General Public License
  15.     along with this program; if not, write to the Free Software
  16.     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  17. */
  18. #pragma once
  19. #include <cstdio>
  20. #include "autogrid.h"
  21. #include "times.h"
  22. // WinAPI defines ERROR, we have to #undef it since we use the same name
  23. #if defined(ERROR)
  24.     #undef ERROR
  25. #endif
  26. // LogFile::printError{Formatted}() can be used with one of the following:
  27. enum ErrorLevel
  28. {
  29.     FATAL_ERROR = -2,
  30.     ERROR = -1,
  31.     WARNING =  0,
  32.     INFORMATION = 1,
  33.     SUGGESTION = 2
  34. };
  35. class LogFile
  36. {
  37. public:
  38.     LogFile(const char *versionNumber, const char *programName, const char *filename);
  39.     ~LogFile();
  40.     // there precalculated values might be useful
  41.     const char *getProgramName() const;
  42.     // print a message to the log file
  43.     void print(const char *msg);
  44.     void printFormatted(const char *format, ...);
  45.     // print program's name at the beginning of every message
  46.     void printTitled(const char *msg);
  47.     void printTitledFormatted(const char *format, ...);
  48.     // print an error or informational message to the log file and (if it's an error) stderr
  49.     // a fatal error immediately terminates the program
  50.     void printError(ErrorLevel errorLevel, const char *msg);
  51.     void printErrorFormatted(ErrorLevel errorLevel, const char *format, ...);
  52.     // print a time in seconds
  53.     void printExecutionTimes(Clock startTime, Clock endTime, tms *start, tms *end);
  54.     // print a time in the hours-minutes-seconds format
  55.     void printTimeInHMS(Clock time, bool fixedOutputLength = true);
  56.     void printTimeInHMS(float time, bool fixedOutputLength = true);
  57.     void printExecutionTimesInHMS(Clock startTime, Clock endTime, tms *start, tms *end);
  58. private:
  59.     FILE *file;
  60.     char programName[MAX_CHARS];
  61.     float invClocksPerSec;
  62.     void printBanner(const char *versionNumber);
  63.     void printCurrentDate(int flag);
  64.     void printHostname();
  65. };