Skip to content

Commit 930639f

Browse files
committed
Add support for SSC_DATMAT in scripting.cpp for SDKTool
1 parent a68216c commit 930639f

File tree

1 file changed

+37
-35
lines changed

1 file changed

+37
-35
lines changed

sdktool/scripting.cpp

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -128,20 +128,19 @@ static bool sscvar_to_lkvar( lk::vardata_t &out, var_data *vv)
128128
case SSC_DATARR: {
129129
size_t n = vv->vec.size();
130130
out.empty_vector();
131-
out.vec()->reserve((size_t)n);
131+
out.vec()->reserve(n);
132132
for (int i = 0; i < n; i++) {
133133
lk::vardata_t lk_data;
134134
var_data entry = vv->vec[i];
135-
// ssc_var_t entry = ssc_var_get_var_array(vd, i);
136135
sscvar_to_lkvar(lk_data, &entry);
137136
out.vec_append(lk_data);
138137
}
139138
break;
140139
}
141-
/*
142140
case SSC_DATMAT: {
143-
int nr, nc;
144-
ssc_var_size(vd, &nr, &nc);
141+
size_t nr, nc;
142+
nr = vv->mat.size();
143+
nc = vv->mat[0].size();
145144
out.empty_vector();
146145
out.vec()->reserve(nr);
147146
for (int i = 0; i < nr; i++) {
@@ -150,14 +149,14 @@ static bool sscvar_to_lkvar( lk::vardata_t &out, var_data *vv)
150149
out.vec()->at(i).vec()->reserve(nc);
151150
for (int j = 0; j < nc; j++) {
152151
lk::vardata_t lk_data;
153-
ssc_var_t entry = ssc_var_get_var_matrix(vd, i, j);
154-
sscvar_to_lkvar(entry, lk_data);
152+
var_data entry = vv->mat[i][j];
153+
sscvar_to_lkvar(lk_data, &entry);
155154
out.vec()->at(i).vec_append(lk_data);
156155
}
157156
}
158157
break;
159158
}
160-
*/
159+
161160
case SSC_INVALID:
162161
default:
163162
break;
@@ -208,9 +207,7 @@ static bool lkvar_to_sscvar( var_data *vv, lk::vardata_t &val )
208207
dim2 = row->length();
209208
}
210209

211-
if (dim2 == 0 && dim1 > 0)
212-
{
213-
// ssc_var_t p_var = vv;
210+
if (dim2 == 0 && dim1 > 0) {
214211
if (only_numeric) {
215212
vv->type = SSC_ARRAY;
216213
vv->num.resize(dim1);
@@ -225,31 +222,36 @@ static bool lkvar_to_sscvar( var_data *vv, lk::vardata_t &val )
225222
lkvar_to_sscvar(&(vv->vec[i]), *val.index(i));
226223
}
227224
}
228-
229-
/*
230-
vv->type = SSC_ARRAY;
231-
vv->num.resize( dim1 );
232-
for (size_t i = 0; i < dim1; i++) {
233-
vv->num[i] = (ssc_number_t)val.index(i)->as_number();
234-
}
235-
*/
236225
}
237-
else if ( dim1 > 0 && dim2 > 0 )
238-
{
239-
vv->type = SSC_MATRIX;
240-
vv->num.resize( dim1, dim2 );
241-
for ( size_t i=0;i<dim1;i++)
242-
{
243-
for ( size_t j=0;j<dim2;j++ )
244-
{
245-
double x = 0;
246-
if ( val.index(i)->type() == lk::vardata_t::VECTOR
247-
&& j < val.index(i)->length() )
248-
x = (ssc_number_t)val.index(i)->index(j)->as_number();
249-
250-
vv->num.at(i,j) = x;
251-
}
252-
}
226+
else if ( dim1 > 0 && dim2 > 0 ){
227+
if (only_numeric) {
228+
vv->type = SSC_MATRIX;
229+
vv->num.resize(dim1, dim2);
230+
for (size_t i = 0; i < dim1; i++) {
231+
for (size_t j = 0; j < dim2; j++) {
232+
double x = 0;
233+
if (val.index(i)->type() == lk::vardata_t::VECTOR
234+
&& j < val.index(i)->length())
235+
x = (ssc_number_t)val.index(i)->index(j)->as_number();
236+
vv->num.at(i, j) = x;
237+
}
238+
}
239+
}
240+
else {
241+
vv->type = SSC_DATMAT;
242+
vv->mat.resize(dim1);
243+
for (size_t i = 0; i < dim1; i++) {
244+
vv->mat[i].resize(dim2);
245+
for (size_t j = 0; j < dim2; j++) {
246+
if (val.index(i)->type() == lk::vardata_t::VECTOR
247+
&& j < val.index(i)->length())
248+
lkvar_to_sscvar(&(vv->mat[i][j]), *val.index(i)->index(j));
249+
else {
250+
vv->mat[i][j].type = SSC_INVALID;
251+
}
252+
}
253+
}
254+
}
253255
}
254256
}
255257
break;

0 commit comments

Comments
 (0)