ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
ARCSassert.hh
[詳解]
1
5//
6// Copyright (C) 2011-2023 Yokokura, Yuki
7// MIT License. For details, see the LICENSE file.
8
9#ifndef ARCSASSERT
10#define ARCSASSERT
11
12#include <cassert>
13#include <pthread.h>
14#include <string>
15
16// 関数呼び出し用マクロ(コンパイル時定数の場合assertを呼び出し、実行時の場合assert_from_macroを呼び出す)
17#define arcs_assert(a) (__builtin_constant_p(a) ? assert(a) : ARCSassert::assert_from_macro(a,#a,__FILE__,__LINE__))
18
19namespace ARCS { // ARCS名前空間
21 class ARCSassert {
22 public:
23 ARCSassert();
24 ~ARCSassert();
25 static void assert_from_macro(const bool assertion, const std::string& condition, const std::string& file, const int line);
26 bool IsRealtimeMode(void);
27 void SetRealtimeMode(void);
28 void SetNonRealtimeMode(void);
29 bool IsEmergency(void);
30 void DeclareEmergency(void);
31 void DoneEmergencyProc(void);
32 bool IsDoneEmergencyProc(void);
33 std::tuple< std::string, std::string, int >
34 GetAssertInfo(void);
35 void WaitEmergency(void);
36
37 private:
38 ARCSassert(const ARCSassert&) = delete;
39 const ARCSassert& operator=(const ARCSassert&) = delete;
40
41 static const unsigned int WAIT_TIME = 1000;
42
43 static pthread_mutex_t SyncMutex;
44 static pthread_cond_t SyncCond;
45
46 static bool RealtimeModeFlag;
47 static bool EmergencyStopFlag;
48 static bool EmergencyProcDoneFlag;
49 static std::string EmergencyStopCond;
50 static std::string EmergencyStopFile;
51 static int EmergencyStopLine;
52 };
53}
54
55#endif
56
ARCS用ASSERTクラス
Definition ARCSassert.hh:21
bool IsDoneEmergencyProc(void)
緊急停止処理が完了したかどうか返す関数
Definition ARCSassert.cc:140
void WaitEmergency(void)
緊急停止が発生するまで待機する関数
Definition ARCSassert.cc:162
void SetNonRealtimeMode(void)
非リアルタイムモードに切り替える関数
Definition ARCSassert.cc:104
void SetRealtimeMode(void)
リアルタイムモードに切り替える関数
Definition ARCSassert.cc:96
ARCSassert()
コンストラクタ
Definition ARCSassert.cc:28
void DoneEmergencyProc(void)
緊急停止処理が完了したことを知らせる関数
Definition ARCSassert.cc:129
static void assert_from_macro(const bool assertion, const std::string &condition, const std::string &file, const int line)
ARCS用assert関数(マクロから呼ばれることを想定)
Definition ARCSassert.cc:44
void DeclareEmergency(void)
緊急事態を宣言する関数
Definition ARCSassert.cc:122
bool IsEmergency(void)
緊急事態かどうか返す関数
Definition ARCSassert.cc:113
~ARCSassert()
デストラクタ
Definition ARCSassert.cc:35
std::tuple< std::string, std::string, int > GetAssertInfo(void)
Assert条件,ファイル名,行番号を返す関数
Definition ARCSassert.cc:150
bool IsRealtimeMode(void)
リアルタイムモードかどうか返す関数
Definition ARCSassert.cc:87