Skip to content

Commit 1a1b0cd

Browse files
committed
Issue #218: Used refenrces instead of pointers in C++ functions
1 parent f6659ed commit 1a1b0cd

File tree

2 files changed

+31
-25
lines changed

2 files changed

+31
-25
lines changed

MT5Connector/MT5Connector.cpp

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ template <typename T> T Execute(std::function<T()> func, wchar_t* err, T default
5858
catch (Exception^ e)
5959
{
6060
convertSystemString(err, e->Message);
61+
MtAdapter::GetInstance()->LogError(e->Message);
6162
}
6263
return result;
6364
}
@@ -220,67 +221,67 @@ _DLLAPI int _stdcall sendErrorResponse(int expertHandle, int code, wchar_t* mess
220221

221222
//----------- get values -------------------------------
222223

223-
_DLLAPI int _stdcall getCommandType(int expertHandle, int* res, wchar_t* err)
224+
_DLLAPI int _stdcall getCommandType(int expertHandle, int& res, wchar_t* err)
224225
{
225-
return Execute<int>([&expertHandle, res]() {
226-
*res = MtAdapter::GetInstance()->GetCommandType(expertHandle);
226+
return Execute<int>([&expertHandle, &res]() {
227+
res = MtAdapter::GetInstance()->GetCommandType(expertHandle);
227228
return 1;
228229
}, err, 0);
229230
}
230231

231-
_DLLAPI int _stdcall getIntValue(int expertHandle, int paramIndex, int* res, wchar_t* err)
232+
_DLLAPI int _stdcall getIntValue(int expertHandle, int paramIndex, int& res, wchar_t* err)
232233
{
233-
return Execute<int>([&expertHandle, &paramIndex, res]() {
234-
*res = (int)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
234+
return Execute<int>([&expertHandle, &paramIndex, &res]() {
235+
res = MtAdapter::GetInstance()->GetCommandParameter<int>(expertHandle, paramIndex);
235236
return 1;
236237
}, err, 0);
237238
}
238239

239-
_DLLAPI int _stdcall getDoubleValue(int expertHandle, int paramIndex, double* res, wchar_t* err)
240+
_DLLAPI int _stdcall getDoubleValue(int expertHandle, int paramIndex, double& res, wchar_t* err)
240241
{
241-
return Execute<int>([&expertHandle, &paramIndex, res]() {
242-
*res = (double)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
242+
return Execute<int>([&expertHandle, &paramIndex, &res]() {
243+
res = MtAdapter::GetInstance()->GetCommandParameter<double>(expertHandle, paramIndex);
243244
return 1;
244245
}, err, 0);
245246
}
246247

247248
_DLLAPI int _stdcall getStringValue(int expertHandle, int paramIndex, wchar_t* res, wchar_t* err)
248249
{
249250
return Execute<int>([&expertHandle, &paramIndex, res]() {
250-
convertSystemString(res, (String^)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex));
251+
convertSystemString(res, MtAdapter::GetInstance()->GetCommandParameter<String^>(expertHandle, paramIndex));
251252
return 1;
252253
}, err, 0);
253254
}
254255

255-
_DLLAPI int _stdcall getULongValue(int expertHandle, int paramIndex, unsigned __int64* res, wchar_t* err)
256+
_DLLAPI int _stdcall getULongValue(int expertHandle, int paramIndex, unsigned __int64& res, wchar_t* err)
256257
{
257-
return Execute<int>([&expertHandle, &paramIndex, res]() {
258-
*res = (unsigned __int64)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
258+
return Execute<int>([&expertHandle, &paramIndex, &res]() {
259+
res = MtAdapter::GetInstance()->GetCommandParameter<unsigned __int64>(expertHandle, paramIndex);
259260
return 1;
260261
}, err, 0);
261262
}
262263

263-
_DLLAPI int _stdcall getLongValue(int expertHandle, int paramIndex, __int64* res, wchar_t* err)
264+
_DLLAPI int _stdcall getLongValue(int expertHandle, int paramIndex, __int64& res, wchar_t* err)
264265
{
265-
return Execute<int>([&expertHandle, &paramIndex, res]() {
266-
*res = (__int64)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
266+
return Execute<int>([&expertHandle, &paramIndex, &res]() {
267+
res = MtAdapter::GetInstance()->GetCommandParameter<__int64>(expertHandle, paramIndex);
267268
return 1;
268269
}, err, 0);
269270
}
270271

271-
_DLLAPI int _stdcall getBooleanValue(int expertHandle, int paramIndex, int* res, wchar_t* err)
272+
_DLLAPI int _stdcall getBooleanValue(int expertHandle, int paramIndex, int& res, wchar_t* err)
272273
{
273-
return Execute<int>([&expertHandle, &paramIndex, res]() {
274-
bool val = (bool)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
275-
*res = val == true ? 1 : 0;
274+
return Execute<int>([&expertHandle, &paramIndex, &res]() {
275+
bool val = MtAdapter::GetInstance()->GetCommandParameter<bool>(expertHandle, paramIndex);
276+
res = val == true ? 1 : 0;
276277
return 1;
277278
}, err, 0);
278279
}
279280

280-
_DLLAPI int _stdcall getUIntValue(int expertHandle, int paramIndex, unsigned int* res, wchar_t* err)
281+
_DLLAPI int _stdcall getUIntValue(int expertHandle, int paramIndex, unsigned int& res, wchar_t* err)
281282
{
282-
return Execute<int>([&expertHandle, &paramIndex, res]() {
283-
*res = (unsigned int)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex);
283+
return Execute<int>([&expertHandle, &paramIndex, &res]() {
284+
res = MtAdapter::GetInstance()->GetCommandParameter<unsigned int>(expertHandle, paramIndex);
284285
return 1;
285286
}, err, 0);
286287
}

MTApiService/MtAdapter.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public int GetCommandType(int expertHandle)
185185
return retval;
186186
}
187187

188-
public object GetCommandParameter(int expertHandle, int index)
188+
public T GetCommandParameter<T>(int expertHandle, int index)
189189
{
190190
Log.DebugFormat("GetCommandParameter: begin. expertHandle = {0}, index = {1}", expertHandle, index);
191191

@@ -204,7 +204,7 @@ public object GetCommandParameter(int expertHandle, int index)
204204

205205
Log.DebugFormat("GetCommandParameter: end. retval = {0}", retval);
206206

207-
return retval;
207+
return (T)retval;
208208
}
209209

210210
public object GetNamedParameter(int expertHandle, string name)
@@ -250,6 +250,11 @@ public bool ContainsNamedParameter(int expertHandle, string name)
250250

251251
return retval;
252252
}
253+
254+
public void LogError(string message)
255+
{
256+
Log.Error(message);
257+
}
253258
#endregion
254259

255260
#region Private Methods

0 commit comments

Comments
 (0)