Skip to content

Commit 1535ea2

Browse files
committed
ljio
1 parent d38491d commit 1535ea2

File tree

2 files changed

+34
-35
lines changed

2 files changed

+34
-35
lines changed

cpp/RAT2/callCppFunction.cpp

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,19 @@ namespace RAT
4242
int i;
4343
int loop_ub;
4444
int loop_ub_tmp;
45-
char tmp_data[10001];
45+
char b_pointer_data[10000];
4646

4747
// Calls a Cpp custom function stored at the given pointer address.
4848
//
4949
// data = callCppFunction(pointer, xdata, params)
5050
// [output, subRough] = callCppFunction(pointer, params, bulkIn ,bulkOut, contrast, domains);
51-
loop_ub_tmp = pointer_size[1];
52-
if (loop_ub_tmp - 1 >= 0) {
53-
std::copy(&pointer_data[0], &pointer_data[loop_ub_tmp], &tmp_data[0]);
51+
loop_ub = pointer_size[1];
52+
if (loop_ub - 1 >= 0) {
53+
std::copy(&pointer_data[0], &pointer_data[loop_ub], &b_pointer_data[0]);
5454
}
5555

56-
tmp_data[pointer_size[1]] = '\x00';
57-
callbackHandle = convertString2HandlePtr<CallbackInterface>(&tmp_data[0]);
56+
callbackHandle = convertString2HandlePtr<CallbackInterface>(&b_pointer_data
57+
[0], static_cast<double>(pointer_size[1]));
5858
callback = std::mem_fn(&ClassHandle<CallbackInterface>::ptr)(callbackHandle);
5959
outArray = { };
6060

@@ -153,19 +153,19 @@ namespace RAT
153153
int i;
154154
int loop_ub;
155155
int loop_ub_tmp;
156-
char tmp_data[10001];
156+
char b_pointer_data[10000];
157157

158158
// Calls a Cpp custom function stored at the given pointer address.
159159
//
160160
// data = callCppFunction(pointer, xdata, params)
161161
// [output, subRough] = callCppFunction(pointer, params, bulkIn ,bulkOut, contrast, domains);
162-
loop_ub_tmp = pointer_size[1];
163-
if (loop_ub_tmp - 1 >= 0) {
164-
std::copy(&pointer_data[0], &pointer_data[loop_ub_tmp], &tmp_data[0]);
162+
loop_ub = pointer_size[1];
163+
if (loop_ub - 1 >= 0) {
164+
std::copy(&pointer_data[0], &pointer_data[loop_ub], &b_pointer_data[0]);
165165
}
166166

167-
tmp_data[pointer_size[1]] = '\x00';
168-
callbackHandle = convertString2HandlePtr<CallbackInterface>(&tmp_data[0]);
167+
callbackHandle = convertString2HandlePtr<CallbackInterface>(&b_pointer_data
168+
[0], static_cast<double>(pointer_size[1]));
169169
callback = std::mem_fn(&ClassHandle<CallbackInterface>::ptr)(callbackHandle);
170170
outArray = { };
171171

@@ -264,19 +264,19 @@ namespace RAT
264264
int i;
265265
int loop_ub;
266266
int loop_ub_tmp;
267-
char tmp_data[10001];
267+
char b_pointer_data[10000];
268268

269269
// Calls a Cpp custom function stored at the given pointer address.
270270
//
271271
// data = callCppFunction(pointer, xdata, params)
272272
// [output, subRough] = callCppFunction(pointer, params, bulkIn ,bulkOut, contrast, domains);
273-
loop_ub_tmp = pointer_size[1];
274-
if (loop_ub_tmp - 1 >= 0) {
275-
std::copy(&pointer_data[0], &pointer_data[loop_ub_tmp], &tmp_data[0]);
273+
loop_ub = pointer_size[1];
274+
if (loop_ub - 1 >= 0) {
275+
std::copy(&pointer_data[0], &pointer_data[loop_ub], &b_pointer_data[0]);
276276
}
277277

278-
tmp_data[pointer_size[1]] = '\x00';
279-
callbackHandle = convertString2HandlePtr<CallbackInterface>(&tmp_data[0]);
278+
callbackHandle = convertString2HandlePtr<CallbackInterface>(&b_pointer_data
279+
[0], static_cast<double>(pointer_size[1]));
280280
callback = std::mem_fn(&ClassHandle<CallbackInterface>::ptr)(callbackHandle);
281281
outArray = { };
282282

@@ -369,33 +369,32 @@ namespace RAT
369369
::coder::array<double, 1U> xdata;
370370
double params_data[5];
371371
double actualSize;
372-
int loop_ub_tmp;
373-
char tmp_data[10001];
372+
int loop_ub;
373+
char b_pointer_data[10000];
374374

375375
// Calls a Cpp custom function stored at the given pointer address.
376376
//
377377
// data = callCppFunction(pointer, xdata, params)
378378
// [output, subRough] = callCppFunction(pointer, params, bulkIn ,bulkOut, contrast, domains);
379-
loop_ub_tmp = pointer_size[1];
380-
if (loop_ub_tmp - 1 >= 0) {
381-
std::copy(&pointer_data[0], &pointer_data[loop_ub_tmp], &tmp_data[0]);
379+
loop_ub = pointer_size[1];
380+
if (loop_ub - 1 >= 0) {
381+
std::copy(&pointer_data[0], &pointer_data[loop_ub], &b_pointer_data[0]);
382382
}
383383

384-
tmp_data[pointer_size[1]] = '\x00';
385-
callbackHandle = convertString2HandlePtr<CallbackInterface>(&tmp_data[0]);
384+
callbackHandle = convertString2HandlePtr<CallbackInterface>(&b_pointer_data
385+
[0], static_cast<double>(pointer_size[1]));
386386
callback = std::mem_fn(&ClassHandle<CallbackInterface>::ptr)(callbackHandle);
387387
outArray = { };
388388

389-
loop_ub_tmp = varargin_1.size(0);
389+
loop_ub = varargin_1.size(0);
390390
xdata.set_size(varargin_1.size(0));
391-
for (int i{0}; i < loop_ub_tmp; i++) {
391+
for (int i{0}; i < loop_ub; i++) {
392392
xdata[i] = varargin_1[i];
393393
}
394394

395-
loop_ub_tmp = varargin_2_size[1];
396-
if (loop_ub_tmp - 1 >= 0) {
397-
std::copy(&varargin_2_data[0], &varargin_2_data[loop_ub_tmp],
398-
&params_data[0]);
395+
loop_ub = varargin_2_size[1];
396+
if (loop_ub - 1 >= 0) {
397+
std::copy(&varargin_2_data[0], &varargin_2_data[loop_ub], &params_data[0]);
399398
}
400399

401400
dataArray = convertPtr2Vector(&(xdata.data())[0], static_cast<double>
@@ -406,9 +405,9 @@ namespace RAT
406405
double>&)>(&CallbackInterface::invoke)(callback, dataArray,
407406
paramsArray, outArray);
408407
actualSize = getVectorSize(outArray);
409-
loop_ub_tmp = static_cast<int>(actualSize);
408+
loop_ub = static_cast<int>(actualSize);
410409
output.set_size(static_cast<int>(actualSize));
411-
for (int i{0}; i < loop_ub_tmp; i++) {
410+
for (int i{0}; i < loop_ub; i++) {
412411
output[i] = 0.0;
413412
}
414413

cpp/RAT2/classHandle.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ template<class base> inline std::string convertPtr2String(base *ptr)
6060
return std::to_string(handle);
6161
}
6262

63-
template<class base> inline ClassHandle<base> *convertString2HandlePtr(const char* in)
63+
template<class base> inline ClassHandle<base> *convertString2HandlePtr(const char* in, int size)
6464
{
65-
uint64_t value = stoull(std::string(in));
65+
uint64_t value = stoull(std::string(in).substr(0, size));
6666
ClassHandle<base> *ptr = reinterpret_cast<ClassHandle<base> *>(value);
6767
if (!ptr->isValid())
6868
throw std::invalid_argument("callback handle is not valid");

0 commit comments

Comments
 (0)