@@ -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