//+------------------------------------------------------------------+ //| TerminalInfo.mqh | //| Copyright 2026, Niquel Mendoza. | //| https://www.mql5.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Niquel Mendoza." #property link "https://www.mql5.com/" #property strict #ifndef LLMAGENTSBASICTOOLS_SRC_UTILS_TERMINAL_INFO_MQH #define LLMAGENTSBASICTOOLS_SRC_UTILS_TERMINAL_INFO_MQH //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include "..\\Def.mqh" //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ namespace TSN { //+------------------------------------------------------------------+ //| name: terminal_info | //| desc: Returns a TerminalInfoDouble/Integer/String property | //| params: | //| mode integer 0=double, 1=integer, 2=string. Default 0 | //| property string Name of the ENUM_TERMINAL_INFO_* property | //| matching the selected mode | //+------------------------------------------------------------------+ class CLlmBToolTerminalInfo : public CLLmTool { public: CLlmBToolTerminalInfo(void) : CLLmTool("terminal_info") {} ~CLlmBToolTerminalInfo(void) {} void Run(CJsonNode& param, CJsonBuilderStr* &out) override final { out = m_shared_builder; const int mode = int(param["mode"].ToInt(LLMAGENT_BTOOLS_MODE_DOUBLE)); //--- m_shared_builder.PutChar('"'); m_shared_builder.Obj(); switch(mode) { //--- DOUBLE case LLMAGENT_BTOOLS_MODE_DOUBLE: { m_shared_builder.KeyWV("ok").Val(true); m_shared_builder.KeyWV("result").Val(TerminalInfoDouble(CEnumRegBasis::GetValNoRef(param["property"].ToString(""), WRONG_VALUE))); break; } //--- INTEGER case LLMAGENT_BTOOLS_MODE_INTEGER: { m_shared_builder.KeyWV("ok").Val(true); m_shared_builder.KeyWV("result").Val(TerminalInfoInteger(CEnumRegBasis::GetValNoRef(param["property"].ToString(""), WRONG_VALUE))); break; } //--- STRING case LLMAGENT_BTOOLS_MODE_STRING: { m_shared_builder.KeyWV("ok").Val(true); m_shared_builder.KeyWV("result").ValS(TerminalInfoString(CEnumRegBasis::GetValNoRef(param["property"].ToString(""), WRONG_VALUE))); break; } default: { m_shared_builder.KeyWV("ok").Val(false); m_shared_builder.KeyWV("error").ValS(StringFormat("Invalid mode = %d", mode)); break; } } m_shared_builder.EndObj(); m_shared_builder.PutChar('"'); } }; } //+------------------------------------------------------------------+ #endif // LLMAGENTSBASICTOOLS_SRC_UTILS_TERMINAL_INFO_MQH