mqsdx 310.0.1 MQPluginSDK Extention Library / mqsdkをC++またはCLI(.Net)拡張するサポートライブラリ

- メインページ
- 関連ページ
- モジュール
- クラス
- ファイル

- 構成
- 構成索引
- クラス階層
- 構成メンバ

全て クラス 関数 変数 型定義 プロパティ グループ ページ
Public メソッド | Protected 変数 | すべてのメンバ一覧
クラス テンプレート MQ0x::PluginBase< T_MQPLUGIN >
MQ0xの一覧

MQBasePluginを継承したクラスに、基本的な拡張を行うテンプレートラッパークラス [詳細]

`#include <MQ0x.hpp>`

MQ0x::PluginBase< T_MQPLUGIN >に対する継承グラフ
[凡例]

## Public メソッド
MQBasePlugin * | BasePlugin ()
| 継承された時に使う明示的キャスト
virtual const char * | EnumString ()
| ボタンやメニューに表示される文字列を返す。
virtual void | GetPlugInID (DWORD *Product, DWORD *ID)
| プラグインIDを返す。
virtual const char * | GetPlugInName ()
| プラグイン名を返す。
const char * | GetProductName ()
| 製造者名を返す（独自に追加）
| PluginBase (const char *productName, const char *pluginFullName, const char *pluginString)
| PluginBase (const char *productName, const char *pluginFullName, const char *pluginString, const DWORD idProduct, const DWORD idPlugin)
DWORD | PluginID ()
| プラグインIDを取得する
DWORD | ProductID ()
| プロダクトIDを取得する
SettingProxy::Handle | Setting ()
| SettingProxy(MQSettingの代替)をオープンするハンドルを取得

## Protected 変数
const DWORD | m_idPlugin
const DWORD | m_idProduct
const std::string | m_pluginFullName
const std::string | m_pluginString
const std::string | m_productName

## 説明

### template<typename T_MQPLUGIN>
class MQ0x::PluginBase< T_MQPLUGIN >

MQBasePluginを継承したクラスに、基本的な拡張を行うテンプレートラッパークラス

Template Parameters

  T_MQPLUGIN | MQBasePluginを継承する型

このクラスはコンストラクタで製造者名、プラグイン名、表示名を指定する事で以下の実装を自動化します。

- GetPlugInID()
- GetPlugInName()
- EnumString()
- MQSetting::Open()およびClose()

PluginBase<MQCommandPlugin> plugin("tiritomato", "SamplePlugin Copyright(C) 2013, tiritomato.", "SamplePlugin");
{
SettingProxy setting = plugin.Setting();
setting.Load(...);
setting.Save(...);
setting.Close(); // このClose()はSettingProxyのデストラクタに任せる事も出来ます。
}

ID決定の自動化には文字列のハッシュコードが採用されています。

- 製造者ID＝製造者名（productName）のハッシュコード
- プラグインID＝プラグイン名（GetPlugInName()で取得できる文字列）のハッシュコード

ハッシュコード算出は典型的に「ハッシュコード = ハッシュコード * (入力型(文字列の場合char型)サイズのビット数-1) ^ 配列要素」という計算を、 配列要素の個数だけ繰り返すロジックが採用されています。このテンプレートクラスで最終的にラップするのか、このテンプレートクラスをベースクラスにして継承して拡張するのかは自由です。