ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
ARCSprint.hh
[詳解]
1
10//
11// Copyright (C) 2011-2023 Yokokura, Yuki
12// MIT License. For details, see the LICENSE file.
13
14#ifndef ARCSPRINT
15#define ARCSPRINT
16
17#include <string>
18#include "ARCScommon.hh"
19#include "Matrix.hh"
20
21// 関数呼び出し用マクロ
22#define DebugPrint(a) (ARCSprint::DebugPrint_from_macro(a))
23#define DebugPrintVar(a) (ARCSprint::DebugPrintVar_from_macro(a,#a))
24#define DebugPrintVarFmt(a,b) (ARCSprint::DebugPrintVarFmt_from_macro(a,b,#a))
25#define DebugPrintMat(a) (ARCSprint::DebugPrintMat_from_macro(a,#a))
26#define DebugIndic(a,b) (ARCSprint::DebugIndicator_from_macro(a,b))
27
28// 前方宣言
29namespace ARCS {
30 class ARCSscreen;
31}
32
33namespace ARCS {
35class ARCSprint {
36 public:
37 ARCSprint(void);
38 ~ARCSprint();
39 void SetScreenPtr(ARCSscreen* ScrPtr);
40
41 // 下記の関数はマクロから呼ばれることを想定
42 static void DebugPrint_from_macro(const std::string& str);
43 static void DebugPrintVar_from_macro(const double u, const std::string& varname);
44 static void DebugPrintVarFmt_from_macro(const double u, const std::string& format, const std::string& varname);
45 static void DebugIndicator_from_macro(const uint64_t Value, const unsigned int VarNo);
46
50 template <size_t NN, size_t MM>
51 static void DebugPrintMat_from_macro(const Matrix<NN,MM>& u, const std::string& varname){
52 size_t N = u.GetWidthLength(); // 行列の幅を取得
53 size_t M = u.GetHeightLength(); // 行列の高さを取得
54 std::string strbuff; // 数値→文字列変換バッファ
55 DebugPrint_from_macro(varname + " = "); // 変数名を表示
56
57 for(size_t j = 1; j <= M; ++j){
58 strbuff += "[ ";
59 for(size_t i = 1; i <= N; ++i){
60 strbuff += ARCScommon::DoubleToString(u.GetElem(j,i), "% g"); // 行列要素を文字列へ変換
61 if(i<N)strbuff += " "; // 要素間は空白で分離
62 }
63 strbuff += " ]";
64 DebugPrint_from_macro(strbuff); // ここで行を表示
65 strbuff = ""; // バッファクリア
66 }
67 }
68
69 private:
70 ARCSprint(const ARCSprint&) = delete; // コピーコンストラクタ使用禁止
71 const ARCSprint& operator=(const ARCSprint&) = delete; // 代入演算子使用禁止
72
73 static ARCSscreen* ARCSscreenPtr;
74};
75}
76
77#endif
78
ARCS共通静的関数クラス
行列/ベクトル計算クラス(テンプレート版)
static std::string DoubleToString(double u, const std::string &format)
浮動小数点から文字列へ (std::to_stringだとフォーマット指定できないぽいので仕方なく実装)
Definition ARCScommon.cc:50
ARCS printライブラリ
Definition ARCSprint.hh:35
static void DebugPrintMat_from_macro(const Matrix< NN, MM > &u, const std::string &varname)
行列用デバッグプリント
Definition ARCSprint.hh:51
static void DebugIndicator_from_macro(const uint64_t Value, const unsigned int VarNo)
デバッグインジケータへの値の設定
Definition ARCSprint.cc:67
~ARCSprint()
デストラクタ
Definition ARCSprint.cc:28
static void DebugPrintVar_from_macro(const double u, const std::string &varname)
変数用デバッグプリント u : 表示する変数, varname : 変数名
Definition ARCSprint.cc:50
void SetScreenPtr(ARCSscreen *ScrPtr)
ARCS画面ポインタの設定
Definition ARCSprint.cc:34
static void DebugPrintVarFmt_from_macro(const double u, const std::string &format, const std::string &varname)
変数用デバッグプリント u : 表示する変数, format : 表示形式 (%1.3e とか %5.3f とか printfと同じ), varname : 変数名
Definition ARCSprint.cc:58
ARCSprint(void)
コンストラクタ
Definition ARCSprint.cc:23
static void DebugPrint_from_macro(const std::string &str)
文字列用デバッグプリント str : 表示する文字列
Definition ARCSprint.cc:40
ARCS画面描画クラス
Definition ARCSscreen.hh:32
行列/ベクトル計算クラス(テンプレート版)
Definition Matrix.hh:44
constexpr TT GetElem(size_t m, size_t n) const
指定した要素番号の値を返す関数 (並び順逆版)
Definition Matrix.hh:471
constexpr size_t GetHeightLength(void) const
行列の高さ(行数)を返す関数
Definition Matrix.hh:567
constexpr size_t GetWidthLength(void) const
行列の幅(列数)を返す関数
Definition Matrix.hh:561