mqsdx  300.0.0
MQPluginSDK Extention Library / mqsdkをC++またはCLI(.Net)拡張するサポートライブラリ。
 全て クラス 関数 変数 プロパティ グループ ページ
クラス テンプレート MQ0x::PluginBase< T_MQPLUGIN >

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_MQPLUGINMQBasePluginを継承する型

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

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) ^ 配列要素」という計算を、 配列要素の個数だけ繰り返すロジックが採用されています。このテンプレートクラスで最終的にラップするのか、このテンプレートクラスをベースクラスにして継承して拡張するのかは自由です。