MT5APIConfigPlugin.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //+------------------------------------------------------------------+
  2. //| MetaTrader 5 API |
  3. //| Copyright 2000-2019, MetaQuotes Software Corp. |
  4. //| http://www.metaquotes.net |
  5. //+------------------------------------------------------------------+
  6. #pragma once
  7. #include "MT5APIConfigParam.h"
  8. //+------------------------------------------------------------------+
  9. //| Plugin module configuration |
  10. //+------------------------------------------------------------------+
  11. class IMTConPluginModule
  12. {
  13. public:
  14. //--- common methods
  15. virtual void Release(void)=0;
  16. virtual MTAPIRES Assign(const IMTConPluginModule* param)=0;
  17. virtual MTAPIRES Clear(void)=0;
  18. //--- default plugin name
  19. virtual LPCWSTR Name(void) const=0;
  20. //--- vendor name
  21. virtual LPCWSTR Vendor(void) const=0;
  22. //--- plugin description
  23. virtual LPCWSTR Description(void) const=0;
  24. //--- plugin file name
  25. virtual LPCWSTR Module(void) const=0;
  26. //--- MT5 server-owner id
  27. virtual UINT64 Server(void) const=0;
  28. //--- plugin version
  29. virtual UINT Version(void) const=0;
  30. //--- plugin Server API version
  31. virtual UINT VersionAPI(void) const=0;
  32. //--- plugin default parameters
  33. virtual UINT ParameterTotal(void) const=0;
  34. virtual MTAPIRES ParameterNext(const UINT pos,IMTConParam* param) const=0;
  35. virtual MTAPIRES ParameterGet(LPCWSTR name,IMTConParam* param) const=0;
  36. };
  37. //+------------------------------------------------------------------+
  38. //| Plugin instance configuration |
  39. //+------------------------------------------------------------------+
  40. class IMTConPlugin
  41. {
  42. public:
  43. //--- plugin working flags
  44. enum EnPluginFlags
  45. {
  46. PLUGIN_FLAG_MAN_CONFIG=1, // allow configure plugin by managers
  47. PLUGIN_FLAG_PROFILING =2, // allow plugin profiling
  48. //--- flags borders
  49. PLUGIN_FLAG_NONE =0,
  50. PLUGIN_FLAG_ALL =PLUGIN_FLAG_MAN_CONFIG|PLUGIN_FLAG_PROFILING
  51. };
  52. //--- plugin mode
  53. enum EnPluginMode
  54. {
  55. PLUGIN_DISABLED =0,
  56. PLUGIN_ENABLED =1,
  57. //--- enumeration borders
  58. PLUGIN_FIRST =PLUGIN_DISABLED,
  59. PLUGIN_LAST =PLUGIN_ENABLED,
  60. };
  61. //--- common methods
  62. virtual void Release(void)=0;
  63. virtual MTAPIRES Assign(const IMTConPlugin* param)=0;
  64. virtual MTAPIRES Clear(void)=0;
  65. //--- plugin name
  66. virtual LPCWSTR Name(void) const=0;
  67. virtual MTAPIRES Name(LPCWSTR name)=0;
  68. //--- MT5 server ID
  69. virtual UINT64 Server(void) const=0;
  70. virtual MTAPIRES Server(const UINT64 server)=0;
  71. //--- plugin file name
  72. virtual LPCWSTR Module(void) const=0;
  73. virtual MTAPIRES Module(LPCWSTR name)=0;
  74. //--- plugin mode
  75. virtual UINT Mode(void) const=0;
  76. virtual MTAPIRES Mode(const UINT mode)=0;
  77. //--- plugin parameters
  78. virtual MTAPIRES ParameterAdd(IMTConParam* param)=0;
  79. virtual MTAPIRES ParameterUpdate(const UINT pos,const IMTConParam* param)=0;
  80. virtual MTAPIRES ParameterDelete(const UINT pos)=0;
  81. virtual MTAPIRES ParameterClear(void)=0;
  82. virtual MTAPIRES ParameterShift(const UINT pos,const int shift)=0;
  83. virtual UINT ParameterTotal(void) const=0;
  84. virtual MTAPIRES ParameterNext(const UINT pos,IMTConParam* param) const=0;
  85. virtual MTAPIRES ParameterGet(LPCWSTR name,IMTConParam* param) const=0;
  86. //--- EnPluginFlags
  87. virtual UINT Flags(void) const=0;
  88. virtual MTAPIRES Flags(const UINT flags)=0;
  89. };
  90. //+------------------------------------------------------------------+
  91. //| Plugin events notification interface |
  92. //+------------------------------------------------------------------+
  93. class IMTConPluginSink
  94. {
  95. public:
  96. virtual void OnPluginAdd(const IMTConPlugin* /*plugin*/) { }
  97. virtual void OnPluginUpdate(const IMTConPlugin* /*plugin*/) { }
  98. virtual void OnPluginDelete(const IMTConPlugin* /*plugin*/) { }
  99. virtual void OnPluginSync(void) { }
  100. };
  101. //+------------------------------------------------------------------+