AM Daemon ライブラリリファレンス
Jvs.h
[詳解]
1 /// @file
2 /// @brief JVSの入出力処理を提供するMonostateクラス Jvs のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_JVS_H
7 #define AMDAEMON_JVS_H
8 
9 #include "amdaemon/env.h"
10 #include "amdaemon/JvsNode.h"
12 
13 #include <functional>
14 #include <vector>
15 #include <cstddef>
16 
17 namespace amdaemon
18 {
19 /// @addtogroup g_jvs
20 /// @{
21 
22  /// @brief JVSの入出力処理を提供するMonostateクラス。
23  /// @see Input, Output
24  ///
25  /// Core クラスのメンバ関数 Core#execute 呼び出しによって内容が更新される。
26  ///
27  /// JVSの生入力値を取得したり直接出力を行いたい場合に用いる。
28  /// ID付けされた入出力処理を行う場合はこのクラスではなく
29  /// Input クラスや Output クラスを用いること。
30  ///
31  /// Output クラスとは出力値を共有しており、
32  /// どちらか一方で設定した出力値はもう一方にも反映される。
33  ///
34  /// @par プラットフォーム情報
35  /// - ALLSシリーズではJVS機能は利用できない。
36  /// - ALLSシリーズの場合、常にノード数(JVSボード数) 0 として扱われる。
37  ///
38  /// @ingroup g_common
39  class Jvs
40  {
41  public:
42  // 下記は暗黙の定義を用いる。
43  //Jvs() = default;
44  //‾Jvs() = default;
45  //Jvs(const Jvs&) = default;
46  //Jvs& operator=(const Jvs&) = default;
47 
48  /// @brief JVSの入出力機能を利用可能であるか否かを取得する。
49  /// @retval true 利用可能である場合。
50  /// @retval false 機能が無効である場合。
51  ///
52  /// 条件式 (getNodeCount() > 0) の結果を返す。
53  bool isAvailable() const
54  {
55  return (this->getNodeCount() > 0);
56  }
57 
58  /// @brief ノード数(JVSボード数)を取得する。
59  /// @return ノード数(JVSボード数)。
60  std::size_t getNodeCount() const;
61 
62  /// @brief ノード操作インスタンスを取得する。
63  /// @param[in] nodeIndex
64  /// ノードインデックス。Node1 が 0 、Node2 が 1 のように対応する。
65  /// @return ノード操作インスタンス。
66  ///
67  /// @exception Exception
68  /// 引数 nodeIndex にノード数以上の値を指定した場合。
69  /// ノード数はメンバ関数 #getNodeCount で取得できる。
70  JvsNode& getNode(std::size_t nodeIndex);
71 
72  /// @copydoc getNode
73  const JvsNode& getNode(std::size_t nodeIndex) const;
74 
75  /// @brief ノード操作インスタンス配列を取得する。
76  /// @return ノード操作インスタンス配列。
77  ///
78  /// 範囲for文や各種アルゴリズム関数に渡すことを想定している。
79  ///
80  /// - ノード数を知りたいだけならばメンバ関数 #getNodeCount を用いること。
81  /// - 特定ノードを取得したいだけならばメンバ関数 #getNode を用いること。
82  std::vector<std::reference_wrapper<JvsNode>> getNodes()
83  {
84  return
85  ::amdaemon::util::toContainer<decltype(getNodes())>(
86  getNodeCount(),
87  [this](std::size_t i) -> JvsNode& { return getNode(i); });
88  }
89 
90  /// @copydoc getNodes
91  std::vector<std::reference_wrapper<const JvsNode>> getNodes() const
92  {
93  return
94  ::amdaemon::util::toContainer<decltype(getNodes())>(
95  getNodeCount(),
96  [this](std::size_t i) -> const JvsNode& { return getNode(i); });
97  }
98  };
99 
100 /// @}
101 } // namespace amdaemon
102 
103 #endif // AMDAEMON_JVS_H
JVSボード単体の入出力処理を提供するクラス。
Definition: JvsNode.h:28
JVSボード単体の入出力処理を提供するクラス JvsNode のヘッダ。
bool isAvailable() const
JVSの入出力機能を利用可能であるか否かを取得する。
Definition: Jvs.h:53
Daemonライブラリの環境定義を行うヘッダ。
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
JVSの入出力処理を提供するMonostateクラス。
Definition: Jvs.h:39
std::vector< std::reference_wrapper< const JvsNode > > getNodes() const
ノード操作インスタンス配列を取得する。
Definition: Jvs.h:91
コンテナクラス関連の便利処理を提供するヘッダ。
std::vector< std::reference_wrapper< JvsNode > > getNodes()
ノード操作インスタンス配列を取得する。
Definition: Jvs.h:82
std::size_t getNodeCount() const
ノード数(JVSボード数)を取得する。
JvsNode & getNode(std::size_t nodeIndex)
ノード操作インスタンスを取得する。