96 lines
3.2 KiB
MQL5
96 lines
3.2 KiB
MQL5
|
//+------------------------------------------------------------------+
|
|||
|
//| Node |
|
|||
|
//| Copyright 2006-2011, www.FXmaster.de |
|
|||
|
//| www.FXmaster.de |
|
|||
|
//+------------------------------------------------------------------+
|
|||
|
#property copyright "Copyright 2006-2011, www.FXmaster.de"
|
|||
|
#property link "www.FXmaster.de"
|
|||
|
#property version "1.00"
|
|||
|
|
|||
|
#define NIL(p) (CheckPointer(p)==POINTER_INVALID)
|
|||
|
|
|||
|
//------------------------------------------------------------------ struct tagWatch
|
|||
|
struct tagWatch
|
|||
|
{
|
|||
|
string m_name; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string m_val; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
};
|
|||
|
|
|||
|
class CNode; // forward declaration
|
|||
|
//------------------------------------------------------------------ class CNodeBase
|
|||
|
class CNodeBase
|
|||
|
{
|
|||
|
public:
|
|||
|
CNode *m_next[]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
CNode *m_prev; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int m_id; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string m_text; // <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
public:
|
|||
|
CNodeBase() { m_id=0; m_text=""; } // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
~CNodeBase(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
};
|
|||
|
//------------------------------------------------------------------ ~CNodeInfo
|
|||
|
void CNodeBase::~CNodeBase()
|
|||
|
{
|
|||
|
for (int i=0; i<ArraySize(m_next); i++) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (CheckPointer(m_next[i])==POINTER_DYNAMIC) delete m_next[i];
|
|||
|
m_prev=NULL; ArrayResize(m_next, 0);
|
|||
|
}
|
|||
|
|
|||
|
//------------------------------------------------------------------ class CNode
|
|||
|
class CNode : public CNodeBase
|
|||
|
{
|
|||
|
public:
|
|||
|
bool m_expand; // <20><>c<EFBFBD><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool m_check; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool m_select; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool m_edit; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//--- run-time <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int m_uses; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
|||
|
long m_tick; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
|||
|
long m_tick0; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
|||
|
datetime m_last; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
|||
|
tagWatch m_watch[]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool m_break; // <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int m_brkuse; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> m_uses <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> m_brkuse
|
|||
|
|
|||
|
//--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string m_path; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string m_file; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int m_line; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string m_class; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string m_func; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string m_desc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
public:
|
|||
|
CNode(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
~CNode(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
void AddWatch(string watch, string val);
|
|||
|
};
|
|||
|
//------------------------------------------------------------------ CNode
|
|||
|
void CNode::CNode()
|
|||
|
{
|
|||
|
m_id=0; m_text="";
|
|||
|
m_expand=true; m_check=false; m_select=false; m_edit=false;
|
|||
|
m_desc=""; m_uses=0; m_tick=0; m_tick0=0; m_last=0; m_brkuse=-2;
|
|||
|
m_path=""; m_file=""; m_line=0; m_class=""; m_func="";
|
|||
|
}
|
|||
|
//------------------------------------------------------------------ ~CNode
|
|||
|
void CNode::~CNode()
|
|||
|
{
|
|||
|
for (int i=0; i<ArraySize(m_next); i++) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (CheckPointer(m_next[i])==POINTER_DYNAMIC) delete m_next[i];
|
|||
|
m_prev=NULL; ArrayResize(m_next, 0);
|
|||
|
}
|
|||
|
//------------------------------------------------------------------ Watch
|
|||
|
void CNode::AddWatch(string name, string val)
|
|||
|
{
|
|||
|
int n=ArraySize(m_watch); bool b=false;
|
|||
|
for (int i=0; i<n; i++) if (m_watch[i].m_name==name) { m_watch[i].m_val=val; b=true; break; }
|
|||
|
if (b) return;
|
|||
|
ArrayResize(m_watch, n+1); m_watch[n].m_name=name; m_watch[n].m_val=val;
|
|||
|
}
|