Advanced Robot Control System  5.1-REV.51SF170515
ARCSprint.hh
[詳解]
1 //
10 // Copyright (C) 2011-2017 Yuki YOKOKURA
11 // This program is free software;
12 // you can redistribute it and/or modify it under the terms of the FreeBSD License.
13 // For details, see the License.txt file.
14 
15 #ifndef ARCSPRINT
16 #define ARCSPRINT
17 
18 #include <string>
19 #include <ncurses.h>
20 
21 // 前方宣言
22 namespace ARCS {
23  class Matrix;
24 }
25 
26 // 関数呼び出し用マクロ
27 #define InitDebugPrint() (ARCSprint::_InitDebugPrint())
28 #define InitEventLog() (ARCSprint::_InitEventLog())
29 #define PassedLog() (ARCSprint::__PassedLog(__FILE__,__LINE__))
30 #define EventLog(a) (ARCSprint::__EventLog(a,__FILE__,__LINE__))
31 #define EventLogVar(a) (ARCSprint::__EventLogVar(a,#a,__FILE__,__LINE__))
32 #define DebugPrint(a) (ARCSprint::_DebugPrint(a))
33 #define DebugPrintVar(a) (ARCSprint::_DebugPrintVar(a,#a))
34 #define DebugPrintVarFmt(a,b) (ARCSprint::_DebugPrintVar(a,b,#a))
35 #define DebugPrintMat(a) (ARCSprint::_DebugPrintMat(a,#a))
36 
37 namespace ARCS {
39  class ARCSprint {
40  public:
41  static WINDOW* ARCSmainscr; // WINDOWポインタ
42 
43  // 下記の関数はマクロから呼ばれることを想定
44  static void __PassedLog(const std::string& file, const int line); // イベントログを残す関数(ファイルと行番号のみ記録版)
45  static void __EventLog(const std::string& str, const std::string& file, const int line); // イベントログを残す関数 (任意メッセージ記録版)
46  static void __EventLogVar(const double u, const std::string& varname, const std::string& file, const int line); // 変数用イベントログ u : 表示する変数, varname : 変数名
47  static void _DebugPrint(const std::string& str); // 文字列用デバッグプリント str : 表示する文字列
48  static void _DebugPrintVar(const double u, const std::string& varname); // 変数用デバッグプリント u : 表示する変数, varname : 変数名
49  static void _DebugPrintVarFmt(const double u, const std::string& format, const std::string& varname); // 変数用デバッグプリント u : 表示する変数, format : 表示形式 (%1.3e とか %5.3f とか printfと同じ), varname : 変数名
50  static void _DebugPrintMat(const ARCS::Matrix& u, const std::string& varname); // 行列用デバッグプリント u : 表示する行列, varname : 変数名
51  static void _InitDebugPrint(void); // デバッグプリントを初期化する関数
52  static void _InitEventLog(void); // イベントログを初期化する関数
53  static void WriteEventLog(const std::string& str, const std::string& file, const int line); // イベントログをファイルに書き出す
54 
55  private:
56  ARCSprint(); // コンストラクタ使用禁止
57  ~ARCSprint(); // デストラクタ使用禁止
58  ARCSprint(const ARCSprint&); // コピーコンストラクタ使用禁止
59  const ARCSprint& operator=(const ARCSprint&); // 代入演算子使用禁止
60 
61  static constexpr unsigned int LOCKCHECK_TIME = 1000;
62  static constexpr unsigned int START_POS_TOP = 6;
63  static constexpr unsigned int START_POS_LEFT = 36;
64  static constexpr unsigned int NUM_CHARBUFF = 32;
65  static constexpr unsigned int EVLOG_LINE1_TOP = 2;
66  static constexpr unsigned int EVLOG_LINE2_TOP = 3;
67  static constexpr unsigned int EVLOG_LINE3_TOP = 4;
68  static constexpr unsigned int EVLOG_LEFT = 68;
69 
70  static bool DebugPrintLocked; // デバッグプリント排他ロック
71  static unsigned int ARCSprint_count;// デバッグプリント行カウンタ
72  static std::string DebugPrintSpace; // デバッグプリント空行
73  static bool EventLogLocked; // イベントログ排他ロックフラグ
74  static std::string EventLogSpace; // イベントログ空行
75  static std::string EventLogLine1; // イベントログ行
76  static std::string EventLogLine2; // イベントログ行
77  static std::string EventLogLine3; // イベントログ行
78  static std::string EventtLogFileName; // イベントログファイル名
79  static void IncrementLineCounter(void); // 行カウンタを進める関数
80  static void ClearLine(void); // 一行を空白で埋めて表示する関数
81  static void ClearEventLog(void); // イベントログを空白で埋めて表示する関数
82  static void ShowEventLog(void); // イベントログを表示する関数
83  static void RenewEventLogLines(const std::string& str); // イベントログの行データを更新する関数
84  static void LockEventLog(void); // イベントログ排他ロック
85  static void UnlockEventLog(void); // イベントログ排他ロック解除
86  static void LockDebugPrint(void); // デバッグプリント排他ロック
87  static void UnlockDebugPrint(void); // デバッグプリント排他ロック解除
88  static std::string DoubleToString(double u, const std::string& format); // 浮動小数点から文字列へ (std::to_stringだとフォーマット指定できないぽいので仕方なく実装)
89  static std::string GetNowTime(void); // 現在時刻を取得する関数
90  };
91 }
92 
93 #endif
94 
static void UnlockEventLog(void)
イベントログ排他ロック解除
Definition: ARCSprint.cc:168
static std::string DebugPrintSpace
Definition: ARCSprint.hh:72
static std::string EventLogLine3
Definition: ARCSprint.hh:77
ARCS printライブラリ
Definition: ARCSprint.hh:39
static constexpr unsigned int EVLOG_LINE3_TOP
イベントログの3行目の縦位置
Definition: ARCSprint.hh:67
Definition: Matrix.hh:38
static void UnlockDebugPrint(void)
デバッグプリント排他ロック解除
Definition: ARCSprint.cc:179
static void LockDebugPrint(void)
デバッグプリント排他ロック
Definition: ARCSprint.cc:173
static std::string EventLogLine1
Definition: ARCSprint.hh:75
static constexpr unsigned int EVLOG_LINE2_TOP
イベントログの2行目の縦位置
Definition: ARCSprint.hh:66
static void RenewEventLogLines(const std::string &str)
イベントログの行データを更新する関数
Definition: ARCSprint.cc:154
static constexpr unsigned int LOCKCHECK_TIME
排他ロック確認ポーリング周期
Definition: ARCSprint.hh:61
static std::string GetNowTime(void)
現在時刻を取得する関数
Definition: ARCSprint.cc:227
static void WriteEventLog(const std::string &str, const std::string &file, const int line)
イベントログをファイルに書き出す
Definition: ARCSprint.cc:197
static std::string EventLogSpace
Definition: ARCSprint.hh:74
static bool DebugPrintLocked
Definition: ARCSprint.hh:70
static constexpr unsigned int EVLOG_LINE1_TOP
イベントログの1行目の縦位置
Definition: ARCSprint.hh:65
Definition: ControlFunctions.hh:17
const ARCSprint & operator=(const ARCSprint &)
static constexpr unsigned int NUM_CHARBUFF
文字列バッファ数
Definition: ARCSprint.hh:64
static constexpr unsigned int START_POS_TOP
プリント開始上位置
Definition: ARCSprint.hh:62
static void LockEventLog(void)
イベントログ排他ロック
Definition: ARCSprint.cc:162
static void __EventLogVar(const double u, const std::string &varname, const std::string &file, const int line)
変数用イベントログ
Definition: ARCSprint.cc:133
static void _DebugPrintVarFmt(const double u, const std::string &format, const std::string &varname)
変数用デバッグプリント
Definition: ARCSprint.cc:51
static void _DebugPrintVar(const double u, const std::string &varname)
変数用デバッグプリント
Definition: ARCSprint.cc:60
static constexpr unsigned int START_POS_LEFT
プリント開始左位置
Definition: ARCSprint.hh:63
static void _InitDebugPrint(void)
デバッグプリントを初期化する関数
Definition: ARCSprint.cc:203
static void ShowEventLog(void)
イベントログを表示する関数
Definition: ARCSprint.cc:146
static std::string DoubleToString(double u, const std::string &format)
浮動小数点から文字列へ (std::to_stringだとフォーマット指定できないぽいので仕方なく実装) ...
Definition: ARCSprint.cc:187
static void _DebugPrintMat(const ARCS::Matrix &u, const std::string &varname)
行列用デバッグプリント
Definition: ARCSprint.cc:67
static void __EventLog(const std::string &str, const std::string &file, const int line)
イベントログを残す関数 (任意メッセージ記録版)
Definition: ARCSprint.cc:119
static void _InitEventLog(void)
イベントログを初期化する関数
Definition: ARCSprint.cc:210
static void _DebugPrint(const std::string &str)
文字列用デバッグプリント
Definition: ARCSprint.cc:37
static unsigned int ARCSprint_count
Definition: ARCSprint.hh:71
static void IncrementLineCounter(void)
行カウンタを進める関数
Definition: ARCSprint.cc:86
static std::string EventtLogFileName
Definition: ARCSprint.hh:78
static bool EventLogLocked
Definition: ARCSprint.hh:73
static std::string EventLogLine2
Definition: ARCSprint.hh:76
static constexpr unsigned int EVLOG_LEFT
イベントログの横位置
Definition: ARCSprint.hh:68
static void ClearEventLog(void)
イベントログを空白で埋めて表示する関数
Definition: ARCSprint.cc:139
static void __PassedLog(const std::string &file, const int line)
通過確認用ログを残す関数(ファイルと行番号のみ記録版)
Definition: ARCSprint.cc:102
static void ClearLine(void)
一行を空白で埋めて表示する関数
Definition: ARCSprint.cc:94
static WINDOW * ARCSmainscr
Definition: ARCSprint.hh:41