@@ -1247,13 +1247,11 @@ var_t *par_getm3() {
12471247
12481248void m3combine (var_t * m , var_num_t nm [3 ][3 ]) {
12491249 var_num_t om [3 ][3 ];
1250- int i , j ;
1251- var_t * e ;
12521250
12531251 // copy m to om
1254- for (i = 0 ; i < 3 ; i ++ ) {
1255- for (j = 0 ; j < 3 ; j ++ ) {
1256- e = v_elem (m , (i * 3 + j ));
1252+ for (int i = 0 ; i < 3 ; i ++ ) {
1253+ for (int j = 0 ; j < 3 ; j ++ ) {
1254+ var_t * e = v_elem (m , (i * 3 + j ));
12571255 if (e -> type == V_NUM ) {
12581256 om [i ][j ] = e -> v .n ;
12591257 } else if (e -> type == V_INT ) {
@@ -1265,25 +1263,21 @@ void m3combine(var_t *m, var_num_t nm[3][3]) {
12651263 }
12661264
12671265 // combine
1268- for (i = 0 ; i < 3 ; i ++ ) {
1269- for (j = 0 ; j < 3 ; j ++ ) {
1270- e = v_elem (m , (i * 3 + j ));
1266+ for (int i = 0 ; i < 3 ; i ++ ) {
1267+ for (int j = 0 ; j < 3 ; j ++ ) {
1268+ var_t * e = v_elem (m , (i * 3 + j ));
12711269 if (e -> type != V_NUM ) {
12721270 v_free (e );
12731271 }
12741272 e -> type = V_NUM ;
12751273 e -> v .n = nm [i ][0 ] * om [0 ][j ] + nm [i ][1 ] * om [1 ][j ] + nm [i ][2 ] * om [2 ][j ];
12761274 }
12771275 }
1278-
12791276}
12801277
1281- //
12821278void m3ident (var_num_t m [3 ][3 ]) {
1283- int i , j ;
1284-
1285- for (i = 0 ; i < 3 ; i ++ ) {
1286- for (j = 0 ; j < 3 ; j ++ ) {
1279+ for (int i = 0 ; i < 3 ; i ++ ) {
1280+ for (int j = 0 ; j < 3 ; j ++ ) {
12871281 m [i ][j ] = (i == j ) ? 1.0 : 0.0 ;
12881282 }
12891283 }
@@ -1293,16 +1287,10 @@ void m3ident(var_num_t m[3][3]) {
12931287// M3IDENT BYREF m3x3
12941288//
12951289void cmd_m3ident () {
1296- var_t * m , * e ;
1297- int i , j ;
1298-
1299- m = par_getm3 ();
1300- if (prog_error ) {
1301- return ;
1302- }
1303- for (i = 0 ; i < 3 ; i ++ ) {
1304- for (j = 0 ; j < 3 ; j ++ ) {
1305- e = v_elem (m , (i * 3 + j ));
1290+ var_t * m = par_getm3 (); IF_PROG_ERR_RTN ;
1291+ for (int i = 0 ; i < 3 ; i ++ ) {
1292+ for (int j = 0 ; j < 3 ; j ++ ) {
1293+ var_t * e = v_elem (m , (i * 3 + j ));
13061294 v_init (e );
13071295 e -> type = V_NUM ;
13081296 e -> v .n = (i == j ) ? 1.0 : 0.0 ;
@@ -1318,32 +1306,15 @@ void cmd_m3rotate() {
13181306 var_num_t angle , x = 0 , y = 0 , c , s ;
13191307 var_num_t matrix [3 ][3 ];
13201308
1321- m = par_getm3 ();
1322- if (prog_error ) {
1323- return ;
1324- }
1325- par_getcomma ();
1326- if (prog_error ) {
1327- return ;
1328- }
1329- angle = par_getnum ();
1330- if (prog_error ) {
1331- return ;
1332- }
1309+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1310+ par_getcomma (); IF_PROG_ERR_RTN ;
1311+ angle = par_getnum (); IF_PROG_ERR_RTN ;
1312+
13331313 if (code_peek () == kwTYPE_SEP ) {
1334- par_getcomma ();
1335- if (prog_error )
1336- return ;
1337- x = par_getnum ();
1338- if (prog_error )
1339- return ;
1340- par_getcomma ();
1341- if (prog_error )
1342- return ;
1343- y = par_getnum ();
1344- if (prog_error ) {
1345- return ;
1346- }
1314+ par_getcomma (); IF_PROG_ERR_RTN ;
1315+ x = par_getnum (); IF_PROG_ERR_RTN ;
1316+ par_getcomma (); IF_PROG_ERR_RTN ;
1317+ y = par_getnum (); IF_PROG_ERR_RTN ;
13471318 }
13481319
13491320 c = cos (angle );
@@ -1367,33 +1338,15 @@ void cmd_m3scale() {
13671338 var_num_t x , y , fx , fy ;
13681339 var_num_t matrix [3 ][3 ];
13691340
1370- m = par_getm3 ();
1371- if (prog_error )
1372- return ;
1373- par_getcomma ();
1374- if (prog_error )
1375- return ;
1376- x = par_getnum ();
1377- if (prog_error )
1378- return ;
1379- par_getcomma ();
1380- if (prog_error )
1381- return ;
1382- y = par_getnum ();
1383- if (prog_error )
1384- return ;
1385- par_getcomma ();
1386- if (prog_error )
1387- return ;
1388- fx = par_getnum ();
1389- if (prog_error )
1390- return ;
1391- par_getcomma ();
1392- if (prog_error )
1393- return ;
1394- fy = par_getnum ();
1395- if (prog_error )
1396- return ;
1341+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1342+ par_getcomma (); IF_PROG_ERR_RTN ;
1343+ x = par_getnum (); IF_PROG_ERR_RTN ;
1344+ par_getcomma (); IF_PROG_ERR_RTN ;
1345+ y = par_getnum (); IF_PROG_ERR_RTN ;
1346+ par_getcomma (); IF_PROG_ERR_RTN ;
1347+ fx = par_getnum ();IF_PROG_ERR_RTN ;
1348+ par_getcomma (); IF_PROG_ERR_RTN ;
1349+ fy = par_getnum ();IF_PROG_ERR_RTN ;
13971350
13981351 m3ident (matrix );
13991352 matrix [0 ][0 ] = fx ;
@@ -1411,21 +1364,11 @@ void cmd_m3translate() {
14111364 var_num_t x , y ;
14121365 var_num_t matrix [3 ][3 ];
14131366
1414- m = par_getm3 ();
1415- if (prog_error )
1416- return ;
1417- par_getcomma ();
1418- if (prog_error )
1419- return ;
1420- x = par_getnum ();
1421- if (prog_error )
1422- return ;
1423- par_getcomma ();
1424- if (prog_error )
1425- return ;
1426- y = par_getnum ();
1427- if (prog_error )
1428- return ;
1367+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1368+ par_getcomma (); IF_PROG_ERR_RTN ;
1369+ x = par_getnum (); IF_PROG_ERR_RTN ;
1370+ par_getcomma (); IF_PROG_ERR_RTN ;
1371+ y = par_getnum (); IF_PROG_ERR_RTN ;
14291372
14301373 m3ident (matrix );
14311374 matrix [2 ][0 ] = x ;
@@ -1439,22 +1382,21 @@ void cmd_m3translate() {
14391382void cmd_m3apply () {
14401383 var_t * m , * p , * e ;
14411384 var_num_t om [3 ][3 ], x , y ;
1442- int i , j , count ;
14431385
1444- m = par_getm3 ();
1445- if (prog_error )
1446- return ;
1447- par_getcomma ();
1448- if (prog_error )
1449- return ;
1450- p = par_getvarray ();
1451- if (prog_error )
1386+ m = par_getm3 (); IF_PROG_ERR_RTN ;
1387+ par_getcomma (); IF_PROG_ERR_RTN ;
1388+ p = par_getvarray (); IF_PROG_ERR_RTN ;
1389+
1390+ if (!p || p -> type != V_ARRAY ) {
1391+ err_varisnotarray ();
14521392 return ;
1453- count = v_asize (p );
1393+ }
1394+
1395+ int count = v_asize (p );
14541396
14551397 // copy m to om
1456- for (i = 0 ; i < 3 ; i ++ ) {
1457- for (j = 0 ; j < 3 ; j ++ ) {
1398+ for (int i = 0 ; i < 3 ; i ++ ) {
1399+ for (int j = 0 ; j < 3 ; j ++ ) {
14581400 e = v_elem (m , i * 3 + j );
14591401 om [i ][j ] = v_getreal (e );
14601402 }
@@ -1466,24 +1408,23 @@ void cmd_m3apply() {
14661408 int o ;
14671409
14681410 count = (v_asize (p ) >> 1 );
1469- for (i = 0 ; i < count ; i ++ ) {
1411+ for (int i = 0 ; i < count ; i ++ ) {
14701412 o = i << 1 ;
14711413 x = v_getreal (v_elem (p , o ));
14721414 y = v_getreal (v_elem (p , o + 1 ));
14731415 v_setreal (v_elem (p , o ), x * om [0 ][0 ] + y * om [1 ][0 ] + om [2 ][0 ]);
14741416 v_setreal (v_elem (p , o + 1 ), x * om [0 ][1 ] + y * om [1 ][1 ] + om [2 ][1 ]);
14751417 }
14761418 } else {
1477- for (i = 0 ; i < count ; i ++ ) {
1419+ for (int i = 0 ; i < count ; i ++ ) {
14781420 e = v_elem (p , i );
14791421
1480- if (e -> type != V_ARRAY )
1422+ if (e -> type != V_ARRAY ) {
14811423 err_parsepoly (i , 10 );
1482- else if ((v_asize (e ) % 2 ) != 0 )
1424+ } else if ((v_asize (e ) % 2 ) != 0 ) {
14831425 err_parsepoly (i , 11 );
1484-
1485- if (prog_error )
1486- break ;
1426+ }
1427+ IF_PROG_ERR_RTN ;
14871428
14881429 x = v_getreal (v_elem (e , 0 ));
14891430 y = v_getreal (v_elem (e , 1 ));
0 commit comments