diff --git a/compiler/lib/src/main/resources/META-INF/native-image/reflect-config.json b/compiler/lib/src/main/resources/META-INF/native-image/reflect-config.json index dc99ccb61..dda1a7afe 100644 --- a/compiler/lib/src/main/resources/META-INF/native-image/reflect-config.json +++ b/compiler/lib/src/main/resources/META-INF/native-image/reflect-config.json @@ -24,3499 +24,2795 @@ }, { "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1", - "fields":[{"name":"0bitmap$424"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1001", - "fields":[{"name":"0bitmap$1335"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1002", - "fields":[{"name":"0bitmap$1050"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1147", - "fields":[{"name":"0bitmap$1184"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1148", - "fields":[{"name":"0bitmap$1101"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1149", - "fields":[{"name":"0bitmap$1086"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1188", - "fields":[{"name":"0bitmap$1097"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1189", - "fields":[{"name":"0bitmap$1091"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1190", - "fields":[{"name":"0bitmap$1087"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1191", - "fields":[{"name":"0bitmap$1088"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1192", - "fields":[{"name":"0bitmap$1089"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1193", - "fields":[{"name":"0bitmap$1090"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1195", - "fields":[{"name":"0bitmap$1096"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1200", - "fields":[{"name":"0bitmap$1100"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1201", - "fields":[{"name":"0bitmap$1098"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1202", - "fields":[{"name":"0bitmap$1099"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1203", - "fields":[{"name":"0bitmap$1167"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1204", - "fields":[{"name":"0bitmap$1137"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1243", - "fields":[{"name":"0bitmap$1161"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1244", - "fields":[{"name":"0bitmap$1141"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1245", - "fields":[{"name":"0bitmap$1138"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1246", - "fields":[{"name":"0bitmap$1139"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1247", - "fields":[{"name":"0bitmap$1140"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1249", - "fields":[{"name":"0bitmap$1155"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1250", - "fields":[{"name":"0bitmap$1142"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1251", - "fields":[{"name":"0bitmap$1143"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1252", - "fields":[{"name":"0bitmap$1144"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1253", - "fields":[{"name":"0bitmap$1145"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1254", - "fields":[{"name":"0bitmap$1146"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1255", - "fields":[{"name":"0bitmap$1147"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1256", - "fields":[{"name":"0bitmap$1148"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1257", - "fields":[{"name":"0bitmap$1149"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1258", - "fields":[{"name":"0bitmap$1150"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1259", - "fields":[{"name":"0bitmap$1151"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1260", - "fields":[{"name":"0bitmap$1152"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1261", - "fields":[{"name":"0bitmap$1153"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1262", - "fields":[{"name":"0bitmap$1154"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1264", - "fields":[{"name":"0bitmap$1160"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1269", - "fields":[{"name":"0bitmap$1166"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1270", - "fields":[{"name":"0bitmap$1162"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1271", - "fields":[{"name":"0bitmap$1163"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1272", - "fields":[{"name":"0bitmap$1164"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1273", - "fields":[{"name":"0bitmap$1165"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1274", - "fields":[{"name":"0bitmap$1183"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1275", - "fields":[{"name":"0bitmap$1177"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1286", - "fields":[{"name":"0bitmap$1182"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1287", - "fields":[{"name":"0bitmap$1178"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1288", - "fields":[{"name":"0bitmap$1179"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1289", - "fields":[{"name":"0bitmap$1180"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1290", - "fields":[{"name":"0bitmap$1181"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1291", - "fields":[{"name":"0bitmap$1214"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1292", - "fields":[{"name":"0bitmap$1196"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1307", - "fields":[{"name":"0bitmap$1199"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1308", - "fields":[{"name":"0bitmap$1197"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1309", - "fields":[{"name":"0bitmap$1198"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1311", - "fields":[{"name":"0bitmap$1213"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1312", - "fields":[{"name":"0bitmap$1212"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1313", - "fields":[{"name":"0bitmap$1200"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1314", - "fields":[{"name":"0bitmap$1206"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1321", - "fields":[{"name":"0bitmap$1211"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1322", - "fields":[{"name":"0bitmap$1210"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1323", - "fields":[{"name":"0bitmap$1207"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1324", - "fields":[{"name":"0bitmap$1208"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1325", - "fields":[{"name":"0bitmap$1209"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1327", - "fields":[{"name":"0bitmap$1215"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1328", - "fields":[{"name":"0bitmap$1230"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1329", - "fields":[{"name":"0bitmap$1221"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1335", - "fields":[{"name":"0bitmap$1224"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1336", - "fields":[{"name":"0bitmap$1223"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1338", - "fields":[{"name":"0bitmap$1229"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1339", - "fields":[{"name":"0bitmap$1225"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1340", - "fields":[{"name":"0bitmap$1226"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1341", - "fields":[{"name":"0bitmap$1227"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1342", - "fields":[{"name":"0bitmap$1228"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1343", - "fields":[{"name":"0bitmap$1334"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1344", - "fields":[{"name":"0bitmap$1231"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1345", - "fields":[{"name":"0bitmap$1282"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1346", - "fields":[{"name":"0bitmap$1267"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1385", - "fields":[{"name":"0bitmap$1278"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1386", - "fields":[{"name":"0bitmap$1272"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1387", - "fields":[{"name":"0bitmap$1268"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1388", - "fields":[{"name":"0bitmap$1269"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1389", - "fields":[{"name":"0bitmap$1270"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1390", - "fields":[{"name":"0bitmap$1271"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1392", - "fields":[{"name":"0bitmap$1277"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1397", - "fields":[{"name":"0bitmap$1281"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1398", - "fields":[{"name":"0bitmap$1279"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1399", - "fields":[{"name":"0bitmap$1280"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1400", - "fields":[{"name":"0bitmap$1333"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1401", - "fields":[{"name":"0bitmap$1318"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1440", - "fields":[{"name":"0bitmap$1329"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1441", - "fields":[{"name":"0bitmap$1323"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1442", - "fields":[{"name":"0bitmap$1319"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1443", - "fields":[{"name":"0bitmap$1320"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1444", - "fields":[{"name":"0bitmap$1321"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1445", - "fields":[{"name":"0bitmap$1322"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1447", - "fields":[{"name":"0bitmap$1328"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1452", - "fields":[{"name":"0bitmap$1332"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1453", - "fields":[{"name":"0bitmap$1330"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1454", - "fields":[{"name":"0bitmap$1331"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1455", - "fields":[{"name":"0bitmap$1337"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1456", - "fields":[{"name":"0bitmap$1336"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1457", - "fields":[{"name":"0bitmap$1367"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1458", - "fields":[{"name":"0bitmap$1350"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1473", - "fields":[{"name":"0bitmap$1364"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1474", - "fields":[{"name":"0bitmap$1363"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1475", - "fields":[{"name":"0bitmap$1351"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1476", - "fields":[{"name":"0bitmap$1357"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1477", - "fields":[{"name":"0bitmap$1356"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1478", - "fields":[{"name":"0bitmap$1352"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1479", - "fields":[{"name":"0bitmap$1353"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1480", - "fields":[{"name":"0bitmap$1354"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1481", - "fields":[{"name":"0bitmap$1355"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1483", - "fields":[{"name":"0bitmap$1362"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1484", - "fields":[{"name":"0bitmap$1361"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1485", - "fields":[{"name":"0bitmap$1358"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1486", - "fields":[{"name":"0bitmap$1359"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1487", - "fields":[{"name":"0bitmap$1360"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1489", - "fields":[{"name":"0bitmap$1366"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1490", - "fields":[{"name":"0bitmap$1365"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1491", - "fields":[{"name":"0bitmap$1544"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1492", - "fields":[{"name":"0bitmap$1409"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$151", - "fields":[{"name":"0bitmap$270"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$152", - "fields":[{"name":"0bitmap$187"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$153", - "fields":[{"name":"0bitmap$172"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1538", - "fields":[{"name":"0bitmap$1543"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1539", - "fields":[{"name":"0bitmap$1460"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1540", - "fields":[{"name":"0bitmap$1445"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1579", - "fields":[{"name":"0bitmap$1456"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1580", - "fields":[{"name":"0bitmap$1450"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1581", - "fields":[{"name":"0bitmap$1446"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1582", - "fields":[{"name":"0bitmap$1447"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1583", - "fields":[{"name":"0bitmap$1448"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1584", - "fields":[{"name":"0bitmap$1449"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1586", - "fields":[{"name":"0bitmap$1455"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1591", - "fields":[{"name":"0bitmap$1459"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1592", - "fields":[{"name":"0bitmap$1457"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1593", - "fields":[{"name":"0bitmap$1458"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1594", - "fields":[{"name":"0bitmap$1526"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1595", - "fields":[{"name":"0bitmap$1496"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1634", - "fields":[{"name":"0bitmap$1520"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1635", - "fields":[{"name":"0bitmap$1500"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1640", - "fields":[{"name":"0bitmap$1514"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1641", - "fields":[{"name":"0bitmap$1501"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1642", - "fields":[{"name":"0bitmap$1502"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1643", - "fields":[{"name":"0bitmap$1503"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1644", - "fields":[{"name":"0bitmap$1504"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1645", - "fields":[{"name":"0bitmap$1505"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1646", - "fields":[{"name":"0bitmap$1506"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1647", - "fields":[{"name":"0bitmap$1507"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1648", - "fields":[{"name":"0bitmap$1508"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1649", - "fields":[{"name":"0bitmap$1509"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1650", - "fields":[{"name":"0bitmap$1510"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1651", - "fields":[{"name":"0bitmap$1511"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1652", - "fields":[{"name":"0bitmap$1512"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1653", - "fields":[{"name":"0bitmap$1513"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1655", - "fields":[{"name":"0bitmap$1519"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1660", - "fields":[{"name":"0bitmap$1525"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1665", - "fields":[{"name":"0bitmap$1542"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1682", - "fields":[{"name":"0bitmap$1565"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1683", - "fields":[{"name":"0bitmap$1554"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1694", - "fields":[{"name":"0bitmap$1555"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1695", - "fields":[{"name":"0bitmap$1559"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1700", - "fields":[{"name":"0bitmap$1560"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1701", - "fields":[{"name":"0bitmap$1561"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1702", - "fields":[{"name":"0bitmap$1564"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1705", - "fields":[{"name":"0bitmap$1566"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1706", - "fields":[{"name":"0bitmap$1589"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1707", - "fields":[{"name":"0bitmap$1567"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1708", - "fields":[{"name":"0bitmap$1588"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1709", - "fields":[{"name":"0bitmap$1577"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1710", - "fields":[{"name":"0bitmap$1576"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1711", - "fields":[{"name":"0bitmap$1568"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1712", - "fields":[{"name":"0bitmap$1569"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1713", - "fields":[{"name":"0bitmap$1570"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1714", - "fields":[{"name":"0bitmap$1571"}] -}, -{ - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1715", - "fields":[{"name":"0bitmap$1572"}] + "fields":[{"name":"0bitmap$291"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1716", - "fields":[{"name":"0bitmap$1573"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1007", + "fields":[{"name":"0bitmap$951"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1717", - "fields":[{"name":"0bitmap$1574"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1008", + "fields":[{"name":"0bitmap$933"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1718", - "fields":[{"name":"0bitmap$1575"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1023", + "fields":[{"name":"0bitmap$936"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1720", - "fields":[{"name":"0bitmap$1578"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1024", + "fields":[{"name":"0bitmap$934"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1721", - "fields":[{"name":"0bitmap$1582"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1025", + "fields":[{"name":"0bitmap$935"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1722", - "fields":[{"name":"0bitmap$1581"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1027", + "fields":[{"name":"0bitmap$950"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1723", - "fields":[{"name":"0bitmap$1579"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1028", + "fields":[{"name":"0bitmap$949"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1724", - "fields":[{"name":"0bitmap$1580"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1029", + "fields":[{"name":"0bitmap$937"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1726", - "fields":[{"name":"0bitmap$1583"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1030", + "fields":[{"name":"0bitmap$943"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1727", - "fields":[{"name":"0bitmap$1584"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1037", + "fields":[{"name":"0bitmap$948"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1728", - "fields":[{"name":"0bitmap$1587"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1038", + "fields":[{"name":"0bitmap$947"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1731", - "fields":[{"name":"0bitmap$1613"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1039", + "fields":[{"name":"0bitmap$944"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1732", - "fields":[{"name":"0bitmap$1603"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1040", + "fields":[{"name":"0bitmap$945"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1747", - "fields":[{"name":"0bitmap$1612"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1041", + "fields":[{"name":"0bitmap$946"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1748", - "fields":[{"name":"0bitmap$1611"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1043", + "fields":[{"name":"0bitmap$952"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1749", - "fields":[{"name":"0bitmap$1604"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1044", + "fields":[{"name":"0bitmap$967"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1750", - "fields":[{"name":"0bitmap$1605"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1045", + "fields":[{"name":"0bitmap$958"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1751", - "fields":[{"name":"0bitmap$1606"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1051", + "fields":[{"name":"0bitmap$961"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1752", - "fields":[{"name":"0bitmap$1607"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1052", + "fields":[{"name":"0bitmap$960"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1753", - "fields":[{"name":"0bitmap$1608"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1054", + "fields":[{"name":"0bitmap$966"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1754", - "fields":[{"name":"0bitmap$1609"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1055", + "fields":[{"name":"0bitmap$962"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1755", - "fields":[{"name":"0bitmap$1610"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1056", + "fields":[{"name":"0bitmap$963"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1757", - "fields":[{"name":"0bitmap$1615"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1057", + "fields":[{"name":"0bitmap$964"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1758", - "fields":[{"name":"0bitmap$1614"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1058", + "fields":[{"name":"0bitmap$965"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1759", - "fields":[{"name":"0bitmap$1635"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1059", + "fields":[{"name":"0bitmap$1071"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1760", - "fields":[{"name":"0bitmap$1617"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1060", + "fields":[{"name":"0bitmap$968"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1761", - "fields":[{"name":"0bitmap$1616"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1061", + "fields":[{"name":"0bitmap$1019"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1762", - "fields":[{"name":"0bitmap$1634"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1062", + "fields":[{"name":"0bitmap$1004"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1763", - "fields":[{"name":"0bitmap$1630"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1101", + "fields":[{"name":"0bitmap$1015"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1764", - "fields":[{"name":"0bitmap$1619"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1102", + "fields":[{"name":"0bitmap$1009"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1765", - "fields":[{"name":"0bitmap$1618"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1103", + "fields":[{"name":"0bitmap$1005"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1766", - "fields":[{"name":"0bitmap$1629"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1104", + "fields":[{"name":"0bitmap$1006"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1767", - "fields":[{"name":"0bitmap$1623"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1105", + "fields":[{"name":"0bitmap$1007"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1768", - "fields":[{"name":"0bitmap$1622"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1106", + "fields":[{"name":"0bitmap$1008"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1769", - "fields":[{"name":"0bitmap$1621"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1108", + "fields":[{"name":"0bitmap$1014"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1771", - "fields":[{"name":"0bitmap$1628"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1113", + "fields":[{"name":"0bitmap$1018"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1772", - "fields":[{"name":"0bitmap$1627"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1114", + "fields":[{"name":"0bitmap$1016"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1773", - "fields":[{"name":"0bitmap$1626"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1115", + "fields":[{"name":"0bitmap$1017"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1776", - "fields":[{"name":"0bitmap$1633"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1116", + "fields":[{"name":"0bitmap$1070"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1777", - "fields":[{"name":"0bitmap$1632"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1117", + "fields":[{"name":"0bitmap$1055"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1778", - "fields":[{"name":"0bitmap$1631"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1156", + "fields":[{"name":"0bitmap$1066"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1779", - "fields":[{"name":"0bitmap$1701"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1157", + "fields":[{"name":"0bitmap$1060"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1780", - "fields":[{"name":"0bitmap$1671"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1158", + "fields":[{"name":"0bitmap$1056"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1819", - "fields":[{"name":"0bitmap$1695"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1159", + "fields":[{"name":"0bitmap$1057"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1820", - "fields":[{"name":"0bitmap$1675"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1160", + "fields":[{"name":"0bitmap$1058"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1821", - "fields":[{"name":"0bitmap$1672"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1161", + "fields":[{"name":"0bitmap$1059"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1822", - "fields":[{"name":"0bitmap$1673"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1163", + "fields":[{"name":"0bitmap$1065"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1823", - "fields":[{"name":"0bitmap$1674"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1168", + "fields":[{"name":"0bitmap$1069"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1825", - "fields":[{"name":"0bitmap$1689"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1169", + "fields":[{"name":"0bitmap$1067"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1826", - "fields":[{"name":"0bitmap$1676"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1170", + "fields":[{"name":"0bitmap$1068"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1827", - "fields":[{"name":"0bitmap$1677"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1171", + "fields":[{"name":"0bitmap$1074"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1828", - "fields":[{"name":"0bitmap$1678"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1172", + "fields":[{"name":"0bitmap$1073"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1829", - "fields":[{"name":"0bitmap$1679"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1173", + "fields":[{"name":"0bitmap$1104"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1830", - "fields":[{"name":"0bitmap$1680"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1174", + "fields":[{"name":"0bitmap$1087"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1831", - "fields":[{"name":"0bitmap$1681"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1189", + "fields":[{"name":"0bitmap$1101"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1832", - "fields":[{"name":"0bitmap$1682"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1190", + "fields":[{"name":"0bitmap$1100"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1833", - "fields":[{"name":"0bitmap$1683"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1191", + "fields":[{"name":"0bitmap$1088"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1834", - "fields":[{"name":"0bitmap$1684"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1192", + "fields":[{"name":"0bitmap$1094"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1835", - "fields":[{"name":"0bitmap$1685"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1193", + "fields":[{"name":"0bitmap$1093"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1836", - "fields":[{"name":"0bitmap$1686"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1194", + "fields":[{"name":"0bitmap$1089"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1837", - "fields":[{"name":"0bitmap$1687"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1195", + "fields":[{"name":"0bitmap$1090"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1838", - "fields":[{"name":"0bitmap$1688"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1196", + "fields":[{"name":"0bitmap$1091"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1840", - "fields":[{"name":"0bitmap$1694"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1197", + "fields":[{"name":"0bitmap$1092"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1845", - "fields":[{"name":"0bitmap$1700"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1199", + "fields":[{"name":"0bitmap$1099"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1846", - "fields":[{"name":"0bitmap$1696"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1200", + "fields":[{"name":"0bitmap$1098"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1847", - "fields":[{"name":"0bitmap$1697"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1201", + "fields":[{"name":"0bitmap$1095"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1848", - "fields":[{"name":"0bitmap$1698"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1202", + "fields":[{"name":"0bitmap$1096"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1849", - "fields":[{"name":"0bitmap$1699"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1203", + "fields":[{"name":"0bitmap$1097"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1850", - "fields":[{"name":"0bitmap$1704"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1205", + "fields":[{"name":"0bitmap$1103"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1851", - "fields":[{"name":"0bitmap$1703"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1206", + "fields":[{"name":"0bitmap$1102"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1853", - "fields":[{"name":"0bitmap$1705"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1207", + "fields":[{"name":"0bitmap$1147"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1854", - "fields":[{"name":"0bitmap$1706"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1208", + "fields":[{"name":"0bitmap$1146"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1855", - "fields":[{"name":"0bitmap$1707"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1254", + "fields":[{"name":"0bitmap$1168"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1856", - "fields":[{"name":"0bitmap$1737"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1255", + "fields":[{"name":"0bitmap$1157"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1857", - "fields":[{"name":"0bitmap$1719"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1266", + "fields":[{"name":"0bitmap$1158"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1872", - "fields":[{"name":"0bitmap$1722"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1267", + "fields":[{"name":"0bitmap$1162"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1873", - "fields":[{"name":"0bitmap$1720"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1272", + "fields":[{"name":"0bitmap$1163"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1874", - "fields":[{"name":"0bitmap$1721"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1273", + "fields":[{"name":"0bitmap$1164"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1876", - "fields":[{"name":"0bitmap$1736"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1274", + "fields":[{"name":"0bitmap$1167"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1877", - "fields":[{"name":"0bitmap$1735"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1277", + "fields":[{"name":"0bitmap$1169"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1878", - "fields":[{"name":"0bitmap$1723"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1278", + "fields":[{"name":"0bitmap$1192"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1879", - "fields":[{"name":"0bitmap$1729"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1279", + "fields":[{"name":"0bitmap$1170"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1886", - "fields":[{"name":"0bitmap$1734"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1280", + "fields":[{"name":"0bitmap$1191"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1887", - "fields":[{"name":"0bitmap$1733"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1281", + "fields":[{"name":"0bitmap$1180"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1888", - "fields":[{"name":"0bitmap$1730"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1282", + "fields":[{"name":"0bitmap$1179"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1889", - "fields":[{"name":"0bitmap$1731"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1283", + "fields":[{"name":"0bitmap$1171"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1890", - "fields":[{"name":"0bitmap$1732"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1284", + "fields":[{"name":"0bitmap$1172"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1892", - "fields":[{"name":"0bitmap$1825"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1285", + "fields":[{"name":"0bitmap$1173"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1893", - "fields":[{"name":"0bitmap$1777"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1286", + "fields":[{"name":"0bitmap$1174"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$192", - "fields":[{"name":"0bitmap$183"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1287", + "fields":[{"name":"0bitmap$1175"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$193", - "fields":[{"name":"0bitmap$177"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1288", + "fields":[{"name":"0bitmap$1176"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1936", - "fields":[{"name":"0bitmap$1818"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1289", + "fields":[{"name":"0bitmap$1177"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1937", - "fields":[{"name":"0bitmap$1817"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1290", + "fields":[{"name":"0bitmap$1178"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$194", - "fields":[{"name":"0bitmap$173"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1292", + "fields":[{"name":"0bitmap$1181"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$195", - "fields":[{"name":"0bitmap$174"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1293", + "fields":[{"name":"0bitmap$1185"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$196", - "fields":[{"name":"0bitmap$175"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1294", + "fields":[{"name":"0bitmap$1184"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$197", - "fields":[{"name":"0bitmap$176"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1295", + "fields":[{"name":"0bitmap$1182"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1980", - "fields":[{"name":"0bitmap$1821"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1296", + "fields":[{"name":"0bitmap$1183"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1981", - "fields":[{"name":"0bitmap$1819"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1298", + "fields":[{"name":"0bitmap$1186"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1982", - "fields":[{"name":"0bitmap$1820"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1299", + "fields":[{"name":"0bitmap$1187"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1983", - "fields":[{"name":"0bitmap$1824"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1300", + "fields":[{"name":"0bitmap$1190"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1984", - "fields":[{"name":"0bitmap$1822"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1303", + "fields":[{"name":"0bitmap$1216"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1985", - "fields":[{"name":"0bitmap$1823"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1304", + "fields":[{"name":"0bitmap$1206"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1986", - "fields":[{"name":"0bitmap$1842"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1319", + "fields":[{"name":"0bitmap$1215"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1987", - "fields":[{"name":"0bitmap$1838"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1320", + "fields":[{"name":"0bitmap$1214"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1988", - "fields":[{"name":"0bitmap$1827"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1321", + "fields":[{"name":"0bitmap$1207"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1989", - "fields":[{"name":"0bitmap$1826"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1322", + "fields":[{"name":"0bitmap$1208"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$199", - "fields":[{"name":"0bitmap$182"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1323", + "fields":[{"name":"0bitmap$1209"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1990", - "fields":[{"name":"0bitmap$1837"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1324", + "fields":[{"name":"0bitmap$1210"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1991", - "fields":[{"name":"0bitmap$1831"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1325", + "fields":[{"name":"0bitmap$1211"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1992", - "fields":[{"name":"0bitmap$1830"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1326", + "fields":[{"name":"0bitmap$1212"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1993", - "fields":[{"name":"0bitmap$1829"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1327", + "fields":[{"name":"0bitmap$1213"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1995", - "fields":[{"name":"0bitmap$1836"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1329", + "fields":[{"name":"0bitmap$1218"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1996", - "fields":[{"name":"0bitmap$1835"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1330", + "fields":[{"name":"0bitmap$1217"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1997", - "fields":[{"name":"0bitmap$1834"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1331", + "fields":[{"name":"0bitmap$1238"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2", - "fields":[{"name":"0bitmap$2"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1332", + "fields":[{"name":"0bitmap$1220"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2000", - "fields":[{"name":"0bitmap$1841"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1333", + "fields":[{"name":"0bitmap$1219"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2003", - "fields":[{"name":"0bitmap$1897"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1334", + "fields":[{"name":"0bitmap$1237"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2004", - "fields":[{"name":"0bitmap$1859"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1335", + "fields":[{"name":"0bitmap$1233"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2005", - "fields":[{"name":"0bitmap$1845"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1336", + "fields":[{"name":"0bitmap$1222"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2006", - "fields":[{"name":"0bitmap$1844"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1337", + "fields":[{"name":"0bitmap$1221"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2008", - "fields":[{"name":"0bitmap$1847"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1338", + "fields":[{"name":"0bitmap$1232"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2010", - "fields":[{"name":"0bitmap$1858"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1339", + "fields":[{"name":"0bitmap$1226"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2011", - "fields":[{"name":"0bitmap$1857"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1340", + "fields":[{"name":"0bitmap$1225"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2012", - "fields":[{"name":"0bitmap$1851"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1341", + "fields":[{"name":"0bitmap$1224"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2013", - "fields":[{"name":"0bitmap$1850"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1343", + "fields":[{"name":"0bitmap$1231"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2014", - "fields":[{"name":"0bitmap$1849"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1344", + "fields":[{"name":"0bitmap$1230"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2016", - "fields":[{"name":"0bitmap$1856"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1345", + "fields":[{"name":"0bitmap$1229"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2017", - "fields":[{"name":"0bitmap$1855"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1348", + "fields":[{"name":"0bitmap$1236"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2018", - "fields":[{"name":"0bitmap$1854"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1349", + "fields":[{"name":"0bitmap$1235"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2021", - "fields":[{"name":"0bitmap$1879"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1350", + "fields":[{"name":"0bitmap$1234"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2022", - "fields":[{"name":"0bitmap$1862"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1351", + "fields":[{"name":"0bitmap$1304"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2023", - "fields":[{"name":"0bitmap$1861"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1352", + "fields":[{"name":"0bitmap$1274"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2025", - "fields":[{"name":"0bitmap$1867"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1391", + "fields":[{"name":"0bitmap$1298"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2030", - "fields":[{"name":"0bitmap$1878"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1392", + "fields":[{"name":"0bitmap$1278"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2031", - "fields":[{"name":"0bitmap$1877"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1393", + "fields":[{"name":"0bitmap$1275"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2032", - "fields":[{"name":"0bitmap$1871"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1394", + "fields":[{"name":"0bitmap$1276"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2033", - "fields":[{"name":"0bitmap$1870"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1395", + "fields":[{"name":"0bitmap$1277"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2034", - "fields":[{"name":"0bitmap$1869"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1397", + "fields":[{"name":"0bitmap$1292"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2036", - "fields":[{"name":"0bitmap$1876"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1398", + "fields":[{"name":"0bitmap$1279"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2037", - "fields":[{"name":"0bitmap$1875"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1399", + "fields":[{"name":"0bitmap$1280"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2038", - "fields":[{"name":"0bitmap$1874"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1400", + "fields":[{"name":"0bitmap$1281"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$204", - "fields":[{"name":"0bitmap$186"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1401", + "fields":[{"name":"0bitmap$1282"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2041", - "fields":[{"name":"0bitmap$1896"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1402", + "fields":[{"name":"0bitmap$1283"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2042", - "fields":[{"name":"0bitmap$1883"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1403", + "fields":[{"name":"0bitmap$1284"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2043", - "fields":[{"name":"0bitmap$1882"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1404", + "fields":[{"name":"0bitmap$1285"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2046", - "fields":[{"name":"0bitmap$1884"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1405", + "fields":[{"name":"0bitmap$1286"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2047", - "fields":[{"name":"0bitmap$1895"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1406", + "fields":[{"name":"0bitmap$1287"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2048", - "fields":[{"name":"0bitmap$1894"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1407", + "fields":[{"name":"0bitmap$1288"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2049", - "fields":[{"name":"0bitmap$1888"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1408", + "fields":[{"name":"0bitmap$1289"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$205", - "fields":[{"name":"0bitmap$184"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1409", + "fields":[{"name":"0bitmap$1290"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2050", - "fields":[{"name":"0bitmap$1887"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1410", + "fields":[{"name":"0bitmap$1291"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2051", - "fields":[{"name":"0bitmap$1886"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1412", + "fields":[{"name":"0bitmap$1297"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2053", - "fields":[{"name":"0bitmap$1893"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1417", + "fields":[{"name":"0bitmap$1303"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2054", - "fields":[{"name":"0bitmap$1892"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1418", + "fields":[{"name":"0bitmap$1299"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2055", - "fields":[{"name":"0bitmap$1891"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1419", + "fields":[{"name":"0bitmap$1300"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2058", - "fields":[{"name":"0bitmap$1918"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1420", + "fields":[{"name":"0bitmap$1301"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2059", - "fields":[{"name":"0bitmap$1907"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1421", + "fields":[{"name":"0bitmap$1302"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$206", - "fields":[{"name":"0bitmap$185"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1422", + "fields":[{"name":"0bitmap$1307"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$207", - "fields":[{"name":"0bitmap$253"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1423", + "fields":[{"name":"0bitmap$1306"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2070", - "fields":[{"name":"0bitmap$1908"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1425", + "fields":[{"name":"0bitmap$1308"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2071", - "fields":[{"name":"0bitmap$1912"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1426", + "fields":[{"name":"0bitmap$1309"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2072", - "fields":[{"name":"0bitmap$1911"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1427", + "fields":[{"name":"0bitmap$1310"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2073", - "fields":[{"name":"0bitmap$1909"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1428", + "fields":[{"name":"0bitmap$1340"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2074", - "fields":[{"name":"0bitmap$1910"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1429", + "fields":[{"name":"0bitmap$1322"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2076", - "fields":[{"name":"0bitmap$1913"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1444", + "fields":[{"name":"0bitmap$1325"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2077", - "fields":[{"name":"0bitmap$1914"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1445", + "fields":[{"name":"0bitmap$1323"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2078", - "fields":[{"name":"0bitmap$1917"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1446", + "fields":[{"name":"0bitmap$1324"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$208", - "fields":[{"name":"0bitmap$223"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1448", + "fields":[{"name":"0bitmap$1339"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2081", - "fields":[{"name":"0bitmap$1921"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1449", + "fields":[{"name":"0bitmap$1338"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2082", - "fields":[{"name":"0bitmap$1919"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1450", + "fields":[{"name":"0bitmap$1326"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2083", - "fields":[{"name":"0bitmap$1920"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1451", + "fields":[{"name":"0bitmap$1332"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2084", - "fields":[{"name":"0bitmap$1930"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1458", + "fields":[{"name":"0bitmap$1337"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2085", - "fields":[{"name":"0bitmap$1922"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1459", + "fields":[{"name":"0bitmap$1336"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2086", - "fields":[{"name":"0bitmap$1923"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1460", + "fields":[{"name":"0bitmap$1333"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2087", - "fields":[{"name":"0bitmap$1924"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1461", + "fields":[{"name":"0bitmap$1334"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2088", - "fields":[{"name":"0bitmap$1925"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1462", + "fields":[{"name":"0bitmap$1335"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2089", - "fields":[{"name":"0bitmap$1926"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1464", + "fields":[{"name":"0bitmap$1425"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2090", - "fields":[{"name":"0bitmap$1927"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1465", + "fields":[{"name":"0bitmap$1379"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2091", - "fields":[{"name":"0bitmap$1928"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1507", + "fields":[{"name":"0bitmap$1380"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2092", - "fields":[{"name":"0bitmap$1929"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1508", + "fields":[{"name":"0bitmap$1420"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2094", - "fields":[{"name":"0bitmap$1931"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1509", + "fields":[{"name":"0bitmap$1419"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2095", - "fields":[{"name":"0bitmap$1941"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$151", + "fields":[{"name":"0bitmap$167"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2106", - "fields":[{"name":"0bitmap$1944"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$152", + "fields":[{"name":"0bitmap$149"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2107", - "fields":[{"name":"0bitmap$1942"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1551", + "fields":[{"name":"0bitmap$1422"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2108", - "fields":[{"name":"0bitmap$1943"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1553", + "fields":[{"name":"0bitmap$1423"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2109", - "fields":[{"name":"0bitmap$1947"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1554", + "fields":[{"name":"0bitmap$1424"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2110", - "fields":[{"name":"0bitmap$1946"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1555", + "fields":[{"name":"0bitmap$1442"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2112", - "fields":[{"name":"0bitmap$1959"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1556", + "fields":[{"name":"0bitmap$1438"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2113", - "fields":[{"name":"0bitmap$1958"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1557", + "fields":[{"name":"0bitmap$1427"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2114", - "fields":[{"name":"0bitmap$1957"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1558", + "fields":[{"name":"0bitmap$1426"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2115", - "fields":[{"name":"0bitmap$1951"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1559", + "fields":[{"name":"0bitmap$1437"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2116", - "fields":[{"name":"0bitmap$1950"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1560", + "fields":[{"name":"0bitmap$1431"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2117", - "fields":[{"name":"0bitmap$1949"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1561", + "fields":[{"name":"0bitmap$1430"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2119", - "fields":[{"name":"0bitmap$1956"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1562", + "fields":[{"name":"0bitmap$1429"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2120", - "fields":[{"name":"0bitmap$1955"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1564", + "fields":[{"name":"0bitmap$1436"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2121", - "fields":[{"name":"0bitmap$1954"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1569", + "fields":[{"name":"0bitmap$1441"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2124", - "fields":[{"name":"0bitmap$1971"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1572", + "fields":[{"name":"0bitmap$1497"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2125", - "fields":[{"name":"0bitmap$1970"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1573", + "fields":[{"name":"0bitmap$1459"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2126", - "fields":[{"name":"0bitmap$1969"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1574", + "fields":[{"name":"0bitmap$1445"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2127", - "fields":[{"name":"0bitmap$1963"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1575", + "fields":[{"name":"0bitmap$1444"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2128", - "fields":[{"name":"0bitmap$1962"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1577", + "fields":[{"name":"0bitmap$1447"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2129", - "fields":[{"name":"0bitmap$1961"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1579", + "fields":[{"name":"0bitmap$1458"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2131", - "fields":[{"name":"0bitmap$1968"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1580", + "fields":[{"name":"0bitmap$1457"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2132", - "fields":[{"name":"0bitmap$1967"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1581", + "fields":[{"name":"0bitmap$1451"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2133", - "fields":[{"name":"0bitmap$1966"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1582", + "fields":[{"name":"0bitmap$1450"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2138", - "fields":[{"name":"0bitmap$2297"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1583", + "fields":[{"name":"0bitmap$1449"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2139", - "fields":[{"name":"0bitmap$2022"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1585", + "fields":[{"name":"0bitmap$1456"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2140", - "fields":[{"name":"0bitmap$1973"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1586", + "fields":[{"name":"0bitmap$1455"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2141", - "fields":[{"name":"0bitmap$1972"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1587", + "fields":[{"name":"0bitmap$1454"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2142", - "fields":[{"name":"0bitmap$1975"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1590", + "fields":[{"name":"0bitmap$1479"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2143", - "fields":[{"name":"0bitmap$1974"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1591", + "fields":[{"name":"0bitmap$1462"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2144", - "fields":[{"name":"0bitmap$1977"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1592", + "fields":[{"name":"0bitmap$1461"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2145", - "fields":[{"name":"0bitmap$1976"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1594", + "fields":[{"name":"0bitmap$1467"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2146", - "fields":[{"name":"0bitmap$1979"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1599", + "fields":[{"name":"0bitmap$1478"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2147", - "fields":[{"name":"0bitmap$1978"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1600", + "fields":[{"name":"0bitmap$1477"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2148", - "fields":[{"name":"0bitmap$1981"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1601", + "fields":[{"name":"0bitmap$1471"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2149", - "fields":[{"name":"0bitmap$1980"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1602", + "fields":[{"name":"0bitmap$1470"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2150", - "fields":[{"name":"0bitmap$1983"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1603", + "fields":[{"name":"0bitmap$1469"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2151", - "fields":[{"name":"0bitmap$1982"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1605", + "fields":[{"name":"0bitmap$1476"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2152", - "fields":[{"name":"0bitmap$1985"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1606", + "fields":[{"name":"0bitmap$1475"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2153", - "fields":[{"name":"0bitmap$1984"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1607", + "fields":[{"name":"0bitmap$1474"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2154", - "fields":[{"name":"0bitmap$1987"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1610", + "fields":[{"name":"0bitmap$1496"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2155", - "fields":[{"name":"0bitmap$1986"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1611", + "fields":[{"name":"0bitmap$1483"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2156", - "fields":[{"name":"0bitmap$1989"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1612", + "fields":[{"name":"0bitmap$1482"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2157", - "fields":[{"name":"0bitmap$1988"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1615", + "fields":[{"name":"0bitmap$1484"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2158", - "fields":[{"name":"0bitmap$1991"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1616", + "fields":[{"name":"0bitmap$1495"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2159", - "fields":[{"name":"0bitmap$1990"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1617", + "fields":[{"name":"0bitmap$1494"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2160", - "fields":[{"name":"0bitmap$1993"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1618", + "fields":[{"name":"0bitmap$1488"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2161", - "fields":[{"name":"0bitmap$1992"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1619", + "fields":[{"name":"0bitmap$1487"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2162", - "fields":[{"name":"0bitmap$1995"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1620", + "fields":[{"name":"0bitmap$1486"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2163", - "fields":[{"name":"0bitmap$1994"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1622", + "fields":[{"name":"0bitmap$1493"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2164", - "fields":[{"name":"0bitmap$1997"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1627", + "fields":[{"name":"0bitmap$1498"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2165", - "fields":[{"name":"0bitmap$1996"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1628", + "fields":[{"name":"0bitmap$1519"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2166", - "fields":[{"name":"0bitmap$1999"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1629", + "fields":[{"name":"0bitmap$1508"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2167", - "fields":[{"name":"0bitmap$1998"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1640", + "fields":[{"name":"0bitmap$1509"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2168", - "fields":[{"name":"0bitmap$2001"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1641", + "fields":[{"name":"0bitmap$1513"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2169", - "fields":[{"name":"0bitmap$2000"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1642", + "fields":[{"name":"0bitmap$1512"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2170", - "fields":[{"name":"0bitmap$2003"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1643", + "fields":[{"name":"0bitmap$1510"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2171", - "fields":[{"name":"0bitmap$2002"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1644", + "fields":[{"name":"0bitmap$1511"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2172", - "fields":[{"name":"0bitmap$2005"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1646", + "fields":[{"name":"0bitmap$1514"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2173", - "fields":[{"name":"0bitmap$2004"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1647", + "fields":[{"name":"0bitmap$1515"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2174", - "fields":[{"name":"0bitmap$2007"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1648", + "fields":[{"name":"0bitmap$1518"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2175", - "fields":[{"name":"0bitmap$2006"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1652", + "fields":[{"name":"0bitmap$1520"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2176", - "fields":[{"name":"0bitmap$2009"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1653", + "fields":[{"name":"0bitmap$1528"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2177", - "fields":[{"name":"0bitmap$2008"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1654", + "fields":[{"name":"0bitmap$1521"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2178", - "fields":[{"name":"0bitmap$2011"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1655", + "fields":[{"name":"0bitmap$1522"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2179", - "fields":[{"name":"0bitmap$2010"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1656", + "fields":[{"name":"0bitmap$1523"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2180", - "fields":[{"name":"0bitmap$2013"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1657", + "fields":[{"name":"0bitmap$1524"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2181", - "fields":[{"name":"0bitmap$2012"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1658", + "fields":[{"name":"0bitmap$1525"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2182", - "fields":[{"name":"0bitmap$2015"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1659", + "fields":[{"name":"0bitmap$1526"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2183", - "fields":[{"name":"0bitmap$2014"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1660", + "fields":[{"name":"0bitmap$1527"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2184", - "fields":[{"name":"0bitmap$2017"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1662", + "fields":[{"name":"0bitmap$1529"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2185", - "fields":[{"name":"0bitmap$2016"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1663", + "fields":[{"name":"0bitmap$1538"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2186", - "fields":[{"name":"0bitmap$2019"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$167", + "fields":[{"name":"0bitmap$152"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2187", - "fields":[{"name":"0bitmap$2018"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1673", + "fields":[{"name":"0bitmap$1539"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2188", - "fields":[{"name":"0bitmap$2021"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1674", + "fields":[{"name":"0bitmap$1542"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2189", - "fields":[{"name":"0bitmap$2020"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1675", + "fields":[{"name":"0bitmap$1541"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2190", - "fields":[{"name":"0bitmap$2296"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1677", + "fields":[{"name":"0bitmap$1554"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2191", - "fields":[{"name":"0bitmap$2035"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1678", + "fields":[{"name":"0bitmap$1553"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2192", - "fields":[{"name":"0bitmap$2024"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1679", + "fields":[{"name":"0bitmap$1552"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2194", - "fields":[{"name":"0bitmap$2026"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$168", + "fields":[{"name":"0bitmap$150"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2195", - "fields":[{"name":"0bitmap$2025"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1680", + "fields":[{"name":"0bitmap$1546"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2196", - "fields":[{"name":"0bitmap$2028"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1681", + "fields":[{"name":"0bitmap$1545"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2198", - "fields":[{"name":"0bitmap$2031"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1682", + "fields":[{"name":"0bitmap$1544"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2201", - "fields":[{"name":"0bitmap$2034"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1684", + "fields":[{"name":"0bitmap$1551"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2205", - "fields":[{"name":"0bitmap$2048"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1685", + "fields":[{"name":"0bitmap$1550"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2206", - "fields":[{"name":"0bitmap$2037"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1686", + "fields":[{"name":"0bitmap$1549"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2208", - "fields":[{"name":"0bitmap$2039"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1689", + "fields":[{"name":"0bitmap$1566"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2209", - "fields":[{"name":"0bitmap$2038"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$169", + "fields":[{"name":"0bitmap$151"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2210", - "fields":[{"name":"0bitmap$2041"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1690", + "fields":[{"name":"0bitmap$1565"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2212", - "fields":[{"name":"0bitmap$2044"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1691", + "fields":[{"name":"0bitmap$1564"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2215", - "fields":[{"name":"0bitmap$2047"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1692", + "fields":[{"name":"0bitmap$1558"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2219", - "fields":[{"name":"0bitmap$2061"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1693", + "fields":[{"name":"0bitmap$1557"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2220", - "fields":[{"name":"0bitmap$2050"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1694", + "fields":[{"name":"0bitmap$1556"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2222", - "fields":[{"name":"0bitmap$2052"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1696", + "fields":[{"name":"0bitmap$1563"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2224", - "fields":[{"name":"0bitmap$2054"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1697", + "fields":[{"name":"0bitmap$1562"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2226", - "fields":[{"name":"0bitmap$2057"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1698", + "fields":[{"name":"0bitmap$1561"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2227", - "fields":[{"name":"0bitmap$2056"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1703", + "fields":[{"name":"0bitmap$1"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2229", - "fields":[{"name":"0bitmap$2060"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1704", + "fields":[{"name":"0bitmap$1892"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2233", - "fields":[{"name":"0bitmap$2074"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1705", + "fields":[{"name":"0bitmap$1617"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2234", - "fields":[{"name":"0bitmap$2063"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1706", + "fields":[{"name":"0bitmap$1568"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2236", - "fields":[{"name":"0bitmap$2065"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1707", + "fields":[{"name":"0bitmap$1567"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2237", - "fields":[{"name":"0bitmap$2064"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1708", + "fields":[{"name":"0bitmap$1570"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2238", - "fields":[{"name":"0bitmap$2067"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1709", + "fields":[{"name":"0bitmap$1569"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2240", - "fields":[{"name":"0bitmap$2070"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$171", + "fields":[{"name":"0bitmap$166"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2243", - "fields":[{"name":"0bitmap$2073"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1710", + "fields":[{"name":"0bitmap$1572"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2247", - "fields":[{"name":"0bitmap$2087"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1711", + "fields":[{"name":"0bitmap$1571"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2248", - "fields":[{"name":"0bitmap$2076"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1712", + "fields":[{"name":"0bitmap$1574"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2250", - "fields":[{"name":"0bitmap$2078"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1713", + "fields":[{"name":"0bitmap$1573"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2251", - "fields":[{"name":"0bitmap$2077"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1714", + "fields":[{"name":"0bitmap$1576"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2252", - "fields":[{"name":"0bitmap$2080"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1715", + "fields":[{"name":"0bitmap$1575"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2254", - "fields":[{"name":"0bitmap$2083"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1716", + "fields":[{"name":"0bitmap$1578"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2257", - "fields":[{"name":"0bitmap$2086"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1717", + "fields":[{"name":"0bitmap$1577"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2261", - "fields":[{"name":"0bitmap$2100"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1718", + "fields":[{"name":"0bitmap$1580"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2262", - "fields":[{"name":"0bitmap$2089"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1719", + "fields":[{"name":"0bitmap$1579"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2264", - "fields":[{"name":"0bitmap$2091"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$172", + "fields":[{"name":"0bitmap$165"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2266", - "fields":[{"name":"0bitmap$2093"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1720", + "fields":[{"name":"0bitmap$1582"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2268", - "fields":[{"name":"0bitmap$2096"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1721", + "fields":[{"name":"0bitmap$1581"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2269", - "fields":[{"name":"0bitmap$2095"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1722", + "fields":[{"name":"0bitmap$1584"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2271", - "fields":[{"name":"0bitmap$2099"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1723", + "fields":[{"name":"0bitmap$1583"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2275", - "fields":[{"name":"0bitmap$2113"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1724", + "fields":[{"name":"0bitmap$1586"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2276", - "fields":[{"name":"0bitmap$2102"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1725", + "fields":[{"name":"0bitmap$1585"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2278", - "fields":[{"name":"0bitmap$2104"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1726", + "fields":[{"name":"0bitmap$1588"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2279", - "fields":[{"name":"0bitmap$2103"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1727", + "fields":[{"name":"0bitmap$1587"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2280", - "fields":[{"name":"0bitmap$2106"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1728", + "fields":[{"name":"0bitmap$1590"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2282", - "fields":[{"name":"0bitmap$2109"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1729", + "fields":[{"name":"0bitmap$1589"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2285", - "fields":[{"name":"0bitmap$2112"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$173", + "fields":[{"name":"0bitmap$153"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2289", - "fields":[{"name":"0bitmap$2126"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1730", + "fields":[{"name":"0bitmap$1592"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2290", - "fields":[{"name":"0bitmap$2115"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1731", + "fields":[{"name":"0bitmap$1591"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2292", - "fields":[{"name":"0bitmap$2117"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1732", + "fields":[{"name":"0bitmap$1594"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2293", - "fields":[{"name":"0bitmap$2116"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1733", + "fields":[{"name":"0bitmap$1593"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2294", - "fields":[{"name":"0bitmap$2119"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1734", + "fields":[{"name":"0bitmap$1596"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2296", - "fields":[{"name":"0bitmap$2122"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1735", + "fields":[{"name":"0bitmap$1595"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2299", - "fields":[{"name":"0bitmap$2125"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1736", + "fields":[{"name":"0bitmap$1598"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2303", - "fields":[{"name":"0bitmap$2139"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1737", + "fields":[{"name":"0bitmap$1597"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2304", - "fields":[{"name":"0bitmap$2128"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1738", + "fields":[{"name":"0bitmap$1600"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2306", - "fields":[{"name":"0bitmap$2130"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1739", + "fields":[{"name":"0bitmap$1599"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2307", - "fields":[{"name":"0bitmap$2129"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$174", + "fields":[{"name":"0bitmap$159"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2308", - "fields":[{"name":"0bitmap$2132"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1740", + "fields":[{"name":"0bitmap$1602"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2310", - "fields":[{"name":"0bitmap$2135"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1741", + "fields":[{"name":"0bitmap$1601"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2313", - "fields":[{"name":"0bitmap$2138"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1742", + "fields":[{"name":"0bitmap$1604"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2317", - "fields":[{"name":"0bitmap$2152"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1743", + "fields":[{"name":"0bitmap$1603"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2318", - "fields":[{"name":"0bitmap$2141"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1744", + "fields":[{"name":"0bitmap$1606"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2320", - "fields":[{"name":"0bitmap$2143"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1745", + "fields":[{"name":"0bitmap$1605"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2321", - "fields":[{"name":"0bitmap$2142"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1746", + "fields":[{"name":"0bitmap$1608"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2322", - "fields":[{"name":"0bitmap$2145"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1747", + "fields":[{"name":"0bitmap$1607"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2324", - "fields":[{"name":"0bitmap$2148"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1748", + "fields":[{"name":"0bitmap$1610"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2327", - "fields":[{"name":"0bitmap$2151"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1749", + "fields":[{"name":"0bitmap$1609"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2331", - "fields":[{"name":"0bitmap$2165"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1750", + "fields":[{"name":"0bitmap$1612"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2332", - "fields":[{"name":"0bitmap$2154"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1751", + "fields":[{"name":"0bitmap$1611"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2334", - "fields":[{"name":"0bitmap$2156"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1752", + "fields":[{"name":"0bitmap$1614"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2335", - "fields":[{"name":"0bitmap$2155"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1753", + "fields":[{"name":"0bitmap$1613"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2336", - "fields":[{"name":"0bitmap$2158"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1754", + "fields":[{"name":"0bitmap$1616"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2338", - "fields":[{"name":"0bitmap$2161"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1755", + "fields":[{"name":"0bitmap$1615"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2341", - "fields":[{"name":"0bitmap$2164"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1756", + "fields":[{"name":"0bitmap$1891"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2345", - "fields":[{"name":"0bitmap$2178"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1757", + "fields":[{"name":"0bitmap$1630"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2346", - "fields":[{"name":"0bitmap$2167"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1771", + "fields":[{"name":"0bitmap$1643"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2348", - "fields":[{"name":"0bitmap$2169"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1772", + "fields":[{"name":"0bitmap$1632"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2349", - "fields":[{"name":"0bitmap$2168"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1774", + "fields":[{"name":"0bitmap$1634"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2350", - "fields":[{"name":"0bitmap$2171"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1775", + "fields":[{"name":"0bitmap$1633"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2352", - "fields":[{"name":"0bitmap$2174"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1776", + "fields":[{"name":"0bitmap$1636"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2355", - "fields":[{"name":"0bitmap$2177"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1778", + "fields":[{"name":"0bitmap$1639"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2359", - "fields":[{"name":"0bitmap$2191"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1781", + "fields":[{"name":"0bitmap$1642"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2360", - "fields":[{"name":"0bitmap$2180"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1785", + "fields":[{"name":"0bitmap$1656"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2362", - "fields":[{"name":"0bitmap$2182"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1786", + "fields":[{"name":"0bitmap$1645"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2363", - "fields":[{"name":"0bitmap$2181"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1788", + "fields":[{"name":"0bitmap$1647"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2364", - "fields":[{"name":"0bitmap$2184"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1790", + "fields":[{"name":"0bitmap$1649"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2366", - "fields":[{"name":"0bitmap$2187"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1792", + "fields":[{"name":"0bitmap$1652"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2369", - "fields":[{"name":"0bitmap$2190"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1793", + "fields":[{"name":"0bitmap$1651"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2373", - "fields":[{"name":"0bitmap$2204"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1795", + "fields":[{"name":"0bitmap$1655"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2374", - "fields":[{"name":"0bitmap$2193"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1799", + "fields":[{"name":"0bitmap$1669"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2376", - "fields":[{"name":"0bitmap$2195"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1800", + "fields":[{"name":"0bitmap$1658"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2377", - "fields":[{"name":"0bitmap$2194"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1802", + "fields":[{"name":"0bitmap$1660"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2378", - "fields":[{"name":"0bitmap$2197"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1803", + "fields":[{"name":"0bitmap$1659"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2380", - "fields":[{"name":"0bitmap$2200"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1804", + "fields":[{"name":"0bitmap$1662"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2383", - "fields":[{"name":"0bitmap$2203"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1806", + "fields":[{"name":"0bitmap$1665"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2387", - "fields":[{"name":"0bitmap$2217"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1809", + "fields":[{"name":"0bitmap$1668"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2388", - "fields":[{"name":"0bitmap$2206"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$181", + "fields":[{"name":"0bitmap$164"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2390", - "fields":[{"name":"0bitmap$2208"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1813", + "fields":[{"name":"0bitmap$1682"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2391", - "fields":[{"name":"0bitmap$2207"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1814", + "fields":[{"name":"0bitmap$1671"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2392", - "fields":[{"name":"0bitmap$2210"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1816", + "fields":[{"name":"0bitmap$1673"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2394", - "fields":[{"name":"0bitmap$2213"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1817", + "fields":[{"name":"0bitmap$1672"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2397", - "fields":[{"name":"0bitmap$2216"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1818", + "fields":[{"name":"0bitmap$1675"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2401", - "fields":[{"name":"0bitmap$2230"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$182", + "fields":[{"name":"0bitmap$163"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2402", - "fields":[{"name":"0bitmap$2219"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1820", + "fields":[{"name":"0bitmap$1678"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2404", - "fields":[{"name":"0bitmap$2221"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1823", + "fields":[{"name":"0bitmap$1681"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2405", - "fields":[{"name":"0bitmap$2220"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1827", + "fields":[{"name":"0bitmap$1695"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2406", - "fields":[{"name":"0bitmap$2223"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1828", + "fields":[{"name":"0bitmap$1684"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2408", - "fields":[{"name":"0bitmap$2226"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$183", + "fields":[{"name":"0bitmap$160"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2411", - "fields":[{"name":"0bitmap$2229"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1830", + "fields":[{"name":"0bitmap$1686"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2415", - "fields":[{"name":"0bitmap$2243"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1832", + "fields":[{"name":"0bitmap$1688"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2416", - "fields":[{"name":"0bitmap$2232"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1834", + "fields":[{"name":"0bitmap$1691"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2418", - "fields":[{"name":"0bitmap$2234"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1835", + "fields":[{"name":"0bitmap$1690"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2419", - "fields":[{"name":"0bitmap$2233"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1837", + "fields":[{"name":"0bitmap$1694"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2420", - "fields":[{"name":"0bitmap$2236"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$184", + "fields":[{"name":"0bitmap$161"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2422", - "fields":[{"name":"0bitmap$2239"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1841", + "fields":[{"name":"0bitmap$1708"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2425", - "fields":[{"name":"0bitmap$2242"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$185", + "fields":[{"name":"0bitmap$162"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2429", - "fields":[{"name":"0bitmap$2256"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1855", + "fields":[{"name":"0bitmap$1721"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2430", - "fields":[{"name":"0bitmap$2245"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1856", + "fields":[{"name":"0bitmap$1710"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2432", - "fields":[{"name":"0bitmap$2247"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1858", + "fields":[{"name":"0bitmap$1712"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2433", - "fields":[{"name":"0bitmap$2246"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1859", + "fields":[{"name":"0bitmap$1711"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2434", - "fields":[{"name":"0bitmap$2249"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1860", + "fields":[{"name":"0bitmap$1714"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2436", - "fields":[{"name":"0bitmap$2252"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1862", + "fields":[{"name":"0bitmap$1717"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2439", - "fields":[{"name":"0bitmap$2255"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1865", + "fields":[{"name":"0bitmap$1720"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2443", - "fields":[{"name":"0bitmap$2269"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1869", + "fields":[{"name":"0bitmap$1734"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2444", - "fields":[{"name":"0bitmap$2258"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$187", + "fields":[{"name":"0bitmap$168"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2446", - "fields":[{"name":"0bitmap$2260"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$188", + "fields":[{"name":"0bitmap$183"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2447", - "fields":[{"name":"0bitmap$2259"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1883", + "fields":[{"name":"0bitmap$1747"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2448", - "fields":[{"name":"0bitmap$2262"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1884", + "fields":[{"name":"0bitmap$1736"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2450", - "fields":[{"name":"0bitmap$2265"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1886", + "fields":[{"name":"0bitmap$1738"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2453", - "fields":[{"name":"0bitmap$2268"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1887", + "fields":[{"name":"0bitmap$1737"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2457", - "fields":[{"name":"0bitmap$2282"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1888", + "fields":[{"name":"0bitmap$1740"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2458", - "fields":[{"name":"0bitmap$2271"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$189", + "fields":[{"name":"0bitmap$174"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2460", - "fields":[{"name":"0bitmap$2273"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1890", + "fields":[{"name":"0bitmap$1743"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2461", - "fields":[{"name":"0bitmap$2272"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1893", + "fields":[{"name":"0bitmap$1746"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2462", - "fields":[{"name":"0bitmap$2275"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1897", + "fields":[{"name":"0bitmap$1760"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2464", - "fields":[{"name":"0bitmap$2278"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1898", + "fields":[{"name":"0bitmap$1749"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2467", - "fields":[{"name":"0bitmap$2281"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1900", + "fields":[{"name":"0bitmap$1751"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$247", - "fields":[{"name":"0bitmap$247"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1901", + "fields":[{"name":"0bitmap$1750"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2471", - "fields":[{"name":"0bitmap$2295"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1902", + "fields":[{"name":"0bitmap$1753"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2472", - "fields":[{"name":"0bitmap$2284"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1904", + "fields":[{"name":"0bitmap$1756"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2474", - "fields":[{"name":"0bitmap$2286"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1907", + "fields":[{"name":"0bitmap$1759"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2475", - "fields":[{"name":"0bitmap$2285"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1911", + "fields":[{"name":"0bitmap$1773"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2476", - "fields":[{"name":"0bitmap$2288"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1925", + "fields":[{"name":"0bitmap$1786"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2478", - "fields":[{"name":"0bitmap$2291"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1939", + "fields":[{"name":"0bitmap$1799"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$248", - "fields":[{"name":"0bitmap$227"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$195", + "fields":[{"name":"0bitmap$177"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2481", - "fields":[{"name":"0bitmap$2294"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1953", + "fields":[{"name":"0bitmap$1812"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$249", - "fields":[{"name":"0bitmap$224"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1954", + "fields":[{"name":"0bitmap$1801"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$250", - "fields":[{"name":"0bitmap$225"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1956", + "fields":[{"name":"0bitmap$1803"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$251", - "fields":[{"name":"0bitmap$226"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1957", + "fields":[{"name":"0bitmap$1802"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$253", - "fields":[{"name":"0bitmap$241"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1958", + "fields":[{"name":"0bitmap$1805"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$254", - "fields":[{"name":"0bitmap$228"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$196", + "fields":[{"name":"0bitmap$176"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$255", - "fields":[{"name":"0bitmap$229"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1960", + "fields":[{"name":"0bitmap$1808"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$256", - "fields":[{"name":"0bitmap$230"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1963", + "fields":[{"name":"0bitmap$1811"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$257", - "fields":[{"name":"0bitmap$231"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1967", + "fields":[{"name":"0bitmap$1825"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$258", - "fields":[{"name":"0bitmap$232"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1968", + "fields":[{"name":"0bitmap$1814"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$259", - "fields":[{"name":"0bitmap$233"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1970", + "fields":[{"name":"0bitmap$1816"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$260", - "fields":[{"name":"0bitmap$234"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1971", + "fields":[{"name":"0bitmap$1815"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$261", - "fields":[{"name":"0bitmap$235"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1972", + "fields":[{"name":"0bitmap$1818"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$262", - "fields":[{"name":"0bitmap$236"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1974", + "fields":[{"name":"0bitmap$1821"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$263", - "fields":[{"name":"0bitmap$237"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1977", + "fields":[{"name":"0bitmap$1824"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$264", - "fields":[{"name":"0bitmap$238"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$198", + "fields":[{"name":"0bitmap$182"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$265", - "fields":[{"name":"0bitmap$239"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1981", + "fields":[{"name":"0bitmap$1838"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$266", - "fields":[{"name":"0bitmap$240"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$199", + "fields":[{"name":"0bitmap$178"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$268", - "fields":[{"name":"0bitmap$246"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1995", + "fields":[{"name":"0bitmap$1851"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$273", - "fields":[{"name":"0bitmap$252"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1996", + "fields":[{"name":"0bitmap$1840"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$274", - "fields":[{"name":"0bitmap$248"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1998", + "fields":[{"name":"0bitmap$1842"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$275", - "fields":[{"name":"0bitmap$249"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$1999", + "fields":[{"name":"0bitmap$1841"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$276", - "fields":[{"name":"0bitmap$250"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2", + "fields":[{"name":"0bitmap$3"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$277", - "fields":[{"name":"0bitmap$251"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$200", + "fields":[{"name":"0bitmap$179"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$278", - "fields":[{"name":"0bitmap$269"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2000", + "fields":[{"name":"0bitmap$1844"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$279", - "fields":[{"name":"0bitmap$263"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2002", + "fields":[{"name":"0bitmap$1847"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$290", - "fields":[{"name":"0bitmap$268"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2005", + "fields":[{"name":"0bitmap$1850"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$291", - "fields":[{"name":"0bitmap$264"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2009", + "fields":[{"name":"0bitmap$1864"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$292", - "fields":[{"name":"0bitmap$265"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$201", + "fields":[{"name":"0bitmap$180"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$293", - "fields":[{"name":"0bitmap$266"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2010", + "fields":[{"name":"0bitmap$1853"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$294", - "fields":[{"name":"0bitmap$267"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2012", + "fields":[{"name":"0bitmap$1855"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$295", - "fields":[{"name":"0bitmap$300"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2013", + "fields":[{"name":"0bitmap$1854"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$296", - "fields":[{"name":"0bitmap$282"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2014", + "fields":[{"name":"0bitmap$1857"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$311", - "fields":[{"name":"0bitmap$285"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2016", + "fields":[{"name":"0bitmap$1860"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$312", - "fields":[{"name":"0bitmap$283"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2019", + "fields":[{"name":"0bitmap$1863"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$313", - "fields":[{"name":"0bitmap$284"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$202", + "fields":[{"name":"0bitmap$181"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$315", - "fields":[{"name":"0bitmap$299"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2023", + "fields":[{"name":"0bitmap$1877"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$316", - "fields":[{"name":"0bitmap$298"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2024", + "fields":[{"name":"0bitmap$1866"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$317", - "fields":[{"name":"0bitmap$286"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2026", + "fields":[{"name":"0bitmap$1868"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$318", - "fields":[{"name":"0bitmap$292"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2027", + "fields":[{"name":"0bitmap$1867"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$325", - "fields":[{"name":"0bitmap$297"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2028", + "fields":[{"name":"0bitmap$1870"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$326", - "fields":[{"name":"0bitmap$296"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$203", + "fields":[{"name":"0bitmap$287"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$327", - "fields":[{"name":"0bitmap$293"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2030", + "fields":[{"name":"0bitmap$1873"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$328", - "fields":[{"name":"0bitmap$294"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2033", + "fields":[{"name":"0bitmap$1876"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$329", - "fields":[{"name":"0bitmap$295"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$2037", + "fields":[{"name":"0bitmap$1890"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$331", - "fields":[{"name":"0bitmap$301"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$204", + "fields":[{"name":"0bitmap$184"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$332", - "fields":[{"name":"0bitmap$316"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$205", + "fields":[{"name":"0bitmap$235"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$333", - "fields":[{"name":"0bitmap$307"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$206", + "fields":[{"name":"0bitmap$220"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$339", - "fields":[{"name":"0bitmap$310"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$245", + "fields":[{"name":"0bitmap$231"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$340", - "fields":[{"name":"0bitmap$309"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$246", + "fields":[{"name":"0bitmap$225"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$342", - "fields":[{"name":"0bitmap$315"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$247", + "fields":[{"name":"0bitmap$221"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$343", - "fields":[{"name":"0bitmap$311"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$248", + "fields":[{"name":"0bitmap$222"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$344", - "fields":[{"name":"0bitmap$312"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$249", + "fields":[{"name":"0bitmap$223"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$345", - "fields":[{"name":"0bitmap$313"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$250", + "fields":[{"name":"0bitmap$224"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$346", - "fields":[{"name":"0bitmap$314"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$252", + "fields":[{"name":"0bitmap$230"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$347", - "fields":[{"name":"0bitmap$420"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$257", + "fields":[{"name":"0bitmap$234"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$348", - "fields":[{"name":"0bitmap$317"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$258", + "fields":[{"name":"0bitmap$232"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$349", - "fields":[{"name":"0bitmap$368"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$259", + "fields":[{"name":"0bitmap$233"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$350", - "fields":[{"name":"0bitmap$353"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$260", + "fields":[{"name":"0bitmap$286"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$389", - "fields":[{"name":"0bitmap$364"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$261", + "fields":[{"name":"0bitmap$271"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$390", - "fields":[{"name":"0bitmap$358"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$300", + "fields":[{"name":"0bitmap$282"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$391", - "fields":[{"name":"0bitmap$354"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$301", + "fields":[{"name":"0bitmap$276"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$392", - "fields":[{"name":"0bitmap$355"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$302", + "fields":[{"name":"0bitmap$272"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$393", - "fields":[{"name":"0bitmap$356"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$303", + "fields":[{"name":"0bitmap$273"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$394", - "fields":[{"name":"0bitmap$357"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$304", + "fields":[{"name":"0bitmap$274"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$396", - "fields":[{"name":"0bitmap$363"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$305", + "fields":[{"name":"0bitmap$275"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$4", - "fields":[{"name":"0bitmap$3"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$307", + "fields":[{"name":"0bitmap$281"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$401", - "fields":[{"name":"0bitmap$367"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$312", + "fields":[{"name":"0bitmap$285"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$402", - "fields":[{"name":"0bitmap$365"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$313", + "fields":[{"name":"0bitmap$283"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$403", - "fields":[{"name":"0bitmap$366"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$314", + "fields":[{"name":"0bitmap$284"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$404", - "fields":[{"name":"0bitmap$419"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$315", + "fields":[{"name":"0bitmap$290"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$405", - "fields":[{"name":"0bitmap$404"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$316", + "fields":[{"name":"0bitmap$289"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$444", - "fields":[{"name":"0bitmap$415"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$317", + "fields":[{"name":"0bitmap$424"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$445", - "fields":[{"name":"0bitmap$409"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$4", + "fields":[{"name":"0bitmap$4"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$446", - "fields":[{"name":"0bitmap$405"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$462", + "fields":[{"name":"0bitmap$438"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$447", - "fields":[{"name":"0bitmap$406"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$463", + "fields":[{"name":"0bitmap$437"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$448", - "fields":[{"name":"0bitmap$407"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$464", + "fields":[{"name":"0bitmap$426"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$449", - "fields":[{"name":"0bitmap$408"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$466", + "fields":[{"name":"0bitmap$436"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$451", - "fields":[{"name":"0bitmap$414"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$467", + "fields":[{"name":"0bitmap$435"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$456", - "fields":[{"name":"0bitmap$418"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$468", + "fields":[{"name":"0bitmap$427"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$457", - "fields":[{"name":"0bitmap$416"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$469", + "fields":[{"name":"0bitmap$428"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$458", - "fields":[{"name":"0bitmap$417"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$470", + "fields":[{"name":"0bitmap$429"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$459", - "fields":[{"name":"0bitmap$423"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$471", + "fields":[{"name":"0bitmap$430"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$460", - "fields":[{"name":"0bitmap$422"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$472", + "fields":[{"name":"0bitmap$431"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$461", - "fields":[{"name":"0bitmap$557"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$473", + "fields":[{"name":"0bitmap$432"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$5", - "fields":[{"name":"0bitmap$421"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$474", + "fields":[{"name":"0bitmap$433"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$6", - "fields":[{"name":"0bitmap$136"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$475", + "fields":[{"name":"0bitmap$434"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$606", - "fields":[{"name":"0bitmap$571"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$477", + "fields":[{"name":"0bitmap$439"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$607", - "fields":[{"name":"0bitmap$570"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$478", + "fields":[{"name":"0bitmap$576"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$608", - "fields":[{"name":"0bitmap$559"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$479", + "fields":[{"name":"0bitmap$490"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$610", - "fields":[{"name":"0bitmap$569"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$480", + "fields":[{"name":"0bitmap$475"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$611", - "fields":[{"name":"0bitmap$568"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$5", + "fields":[{"name":"0bitmap$288"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$612", - "fields":[{"name":"0bitmap$560"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$519", + "fields":[{"name":"0bitmap$486"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$613", - "fields":[{"name":"0bitmap$561"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$520", + "fields":[{"name":"0bitmap$480"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$614", - "fields":[{"name":"0bitmap$562"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$521", + "fields":[{"name":"0bitmap$476"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$615", - "fields":[{"name":"0bitmap$563"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$522", + "fields":[{"name":"0bitmap$477"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$616", - "fields":[{"name":"0bitmap$564"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$523", + "fields":[{"name":"0bitmap$478"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$617", - "fields":[{"name":"0bitmap$565"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$524", + "fields":[{"name":"0bitmap$479"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$618", - "fields":[{"name":"0bitmap$566"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$526", + "fields":[{"name":"0bitmap$485"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$619", - "fields":[{"name":"0bitmap$567"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$531", + "fields":[{"name":"0bitmap$489"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$621", - "fields":[{"name":"0bitmap$706"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$532", + "fields":[{"name":"0bitmap$487"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$622", - "fields":[{"name":"0bitmap$705"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$533", + "fields":[{"name":"0bitmap$488"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$623", - "fields":[{"name":"0bitmap$622"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$534", + "fields":[{"name":"0bitmap$493"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$624", - "fields":[{"name":"0bitmap$607"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$535", + "fields":[{"name":"0bitmap$492"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$663", - "fields":[{"name":"0bitmap$618"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$537", + "fields":[{"name":"0bitmap$559"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$664", - "fields":[{"name":"0bitmap$612"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$538", + "fields":[{"name":"0bitmap$529"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$665", - "fields":[{"name":"0bitmap$608"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$577", + "fields":[{"name":"0bitmap$553"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$666", - "fields":[{"name":"0bitmap$609"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$578", + "fields":[{"name":"0bitmap$533"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$667", - "fields":[{"name":"0bitmap$610"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$579", + "fields":[{"name":"0bitmap$530"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$668", - "fields":[{"name":"0bitmap$611"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$580", + "fields":[{"name":"0bitmap$531"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$670", - "fields":[{"name":"0bitmap$617"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$581", + "fields":[{"name":"0bitmap$532"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$675", - "fields":[{"name":"0bitmap$621"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$583", + "fields":[{"name":"0bitmap$547"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$676", - "fields":[{"name":"0bitmap$619"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$584", + "fields":[{"name":"0bitmap$534"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$677", - "fields":[{"name":"0bitmap$620"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$585", + "fields":[{"name":"0bitmap$535"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$678", - "fields":[{"name":"0bitmap$688"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$586", + "fields":[{"name":"0bitmap$536"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$679", - "fields":[{"name":"0bitmap$658"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$587", + "fields":[{"name":"0bitmap$537"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$718", - "fields":[{"name":"0bitmap$682"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$588", + "fields":[{"name":"0bitmap$538"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$719", - "fields":[{"name":"0bitmap$662"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$589", + "fields":[{"name":"0bitmap$539"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$720", - "fields":[{"name":"0bitmap$659"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$590", + "fields":[{"name":"0bitmap$540"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$721", - "fields":[{"name":"0bitmap$660"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$591", + "fields":[{"name":"0bitmap$541"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$722", - "fields":[{"name":"0bitmap$661"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$592", + "fields":[{"name":"0bitmap$542"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$724", - "fields":[{"name":"0bitmap$676"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$593", + "fields":[{"name":"0bitmap$543"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$725", - "fields":[{"name":"0bitmap$663"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$594", + "fields":[{"name":"0bitmap$544"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$726", - "fields":[{"name":"0bitmap$664"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$595", + "fields":[{"name":"0bitmap$545"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$727", - "fields":[{"name":"0bitmap$665"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$596", + "fields":[{"name":"0bitmap$546"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$728", - "fields":[{"name":"0bitmap$666"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$598", + "fields":[{"name":"0bitmap$552"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$729", - "fields":[{"name":"0bitmap$667"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$6", + "fields":[{"name":"0bitmap$137"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$730", - "fields":[{"name":"0bitmap$668"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$603", + "fields":[{"name":"0bitmap$558"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$731", - "fields":[{"name":"0bitmap$669"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$604", + "fields":[{"name":"0bitmap$554"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$732", - "fields":[{"name":"0bitmap$670"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$605", + "fields":[{"name":"0bitmap$555"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$733", - "fields":[{"name":"0bitmap$671"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$606", + "fields":[{"name":"0bitmap$556"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$734", - "fields":[{"name":"0bitmap$672"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$607", + "fields":[{"name":"0bitmap$557"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$735", - "fields":[{"name":"0bitmap$673"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$608", + "fields":[{"name":"0bitmap$575"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$736", - "fields":[{"name":"0bitmap$674"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$609", + "fields":[{"name":"0bitmap$569"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$737", - "fields":[{"name":"0bitmap$675"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$620", + "fields":[{"name":"0bitmap$574"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$739", - "fields":[{"name":"0bitmap$681"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$621", + "fields":[{"name":"0bitmap$570"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$744", - "fields":[{"name":"0bitmap$687"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$622", + "fields":[{"name":"0bitmap$571"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$745", - "fields":[{"name":"0bitmap$683"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$623", + "fields":[{"name":"0bitmap$572"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$746", - "fields":[{"name":"0bitmap$684"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$624", + "fields":[{"name":"0bitmap$573"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$747", - "fields":[{"name":"0bitmap$685"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$625", + "fields":[{"name":"0bitmap$577"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$748", - "fields":[{"name":"0bitmap$686"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$626", + "fields":[{"name":"0bitmap$677"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$749", - "fields":[{"name":"0bitmap$704"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$627", + "fields":[{"name":"0bitmap$589"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$766", - "fields":[{"name":"0bitmap$806"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$628", + "fields":[{"name":"0bitmap$587"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$767", - "fields":[{"name":"0bitmap$718"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$629", + "fields":[{"name":"0bitmap$586"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$768", - "fields":[{"name":"0bitmap$716"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$630", + "fields":[{"name":"0bitmap$578"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$769", - "fields":[{"name":"0bitmap$715"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$631", + "fields":[{"name":"0bitmap$579"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$770", - "fields":[{"name":"0bitmap$707"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$632", + "fields":[{"name":"0bitmap$580"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$771", - "fields":[{"name":"0bitmap$708"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$633", + "fields":[{"name":"0bitmap$581"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$772", - "fields":[{"name":"0bitmap$709"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$634", + "fields":[{"name":"0bitmap$582"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$773", - "fields":[{"name":"0bitmap$710"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$635", + "fields":[{"name":"0bitmap$583"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$774", - "fields":[{"name":"0bitmap$711"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$636", + "fields":[{"name":"0bitmap$584"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$775", - "fields":[{"name":"0bitmap$712"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$637", + "fields":[{"name":"0bitmap$585"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$776", - "fields":[{"name":"0bitmap$713"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$639", + "fields":[{"name":"0bitmap$588"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$777", - "fields":[{"name":"0bitmap$714"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$641", + "fields":[{"name":"0bitmap$605"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$779", - "fields":[{"name":"0bitmap$717"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$642", + "fields":[{"name":"0bitmap$599"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$781", - "fields":[{"name":"0bitmap$734"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$653", + "fields":[{"name":"0bitmap$603"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$782", - "fields":[{"name":"0bitmap$728"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$654", + "fields":[{"name":"0bitmap$602"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$793", - "fields":[{"name":"0bitmap$732"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$655", + "fields":[{"name":"0bitmap$600"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$794", - "fields":[{"name":"0bitmap$731"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$656", + "fields":[{"name":"0bitmap$601"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$795", - "fields":[{"name":"0bitmap$729"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$658", + "fields":[{"name":"0bitmap$604"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$796", - "fields":[{"name":"0bitmap$730"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$660", + "fields":[{"name":"0bitmap$615"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$798", - "fields":[{"name":"0bitmap$733"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$671", + "fields":[{"name":"0bitmap$619"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$800", - "fields":[{"name":"0bitmap$744"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$676", + "fields":[{"name":"0bitmap$620"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$811", - "fields":[{"name":"0bitmap$748"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$677", + "fields":[{"name":"0bitmap$621"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$816", - "fields":[{"name":"0bitmap$749"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$678", + "fields":[{"name":"0bitmap$622"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$817", - "fields":[{"name":"0bitmap$750"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$679", + "fields":[{"name":"0bitmap$624"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$818", - "fields":[{"name":"0bitmap$751"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$680", + "fields":[{"name":"0bitmap$623"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$819", - "fields":[{"name":"0bitmap$753"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$681", + "fields":[{"name":"0bitmap$626"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$820", - "fields":[{"name":"0bitmap$752"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$682", + "fields":[{"name":"0bitmap$625"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$821", - "fields":[{"name":"0bitmap$755"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$683", + "fields":[{"name":"0bitmap$643"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$822", - "fields":[{"name":"0bitmap$754"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$684", + "fields":[{"name":"0bitmap$627"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$823", - "fields":[{"name":"0bitmap$772"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$685", + "fields":[{"name":"0bitmap$628"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$824", - "fields":[{"name":"0bitmap$756"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$686", + "fields":[{"name":"0bitmap$642"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$825", - "fields":[{"name":"0bitmap$757"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$687", + "fields":[{"name":"0bitmap$641"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$826", - "fields":[{"name":"0bitmap$771"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$688", + "fields":[{"name":"0bitmap$629"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$827", - "fields":[{"name":"0bitmap$770"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$689", + "fields":[{"name":"0bitmap$635"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$828", - "fields":[{"name":"0bitmap$758"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$690", + "fields":[{"name":"0bitmap$634"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$829", - "fields":[{"name":"0bitmap$764"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$691", + "fields":[{"name":"0bitmap$630"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$830", - "fields":[{"name":"0bitmap$763"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$692", + "fields":[{"name":"0bitmap$631"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$831", - "fields":[{"name":"0bitmap$759"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$693", + "fields":[{"name":"0bitmap$632"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$832", - "fields":[{"name":"0bitmap$760"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$694", + "fields":[{"name":"0bitmap$633"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$833", - "fields":[{"name":"0bitmap$761"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$696", + "fields":[{"name":"0bitmap$640"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$834", - "fields":[{"name":"0bitmap$762"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$697", + "fields":[{"name":"0bitmap$639"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$836", - "fields":[{"name":"0bitmap$769"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$698", + "fields":[{"name":"0bitmap$636"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$837", - "fields":[{"name":"0bitmap$768"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$699", + "fields":[{"name":"0bitmap$637"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$838", - "fields":[{"name":"0bitmap$765"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$700", + "fields":[{"name":"0bitmap$638"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$839", - "fields":[{"name":"0bitmap$766"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$702", + "fields":[{"name":"0bitmap$656"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$840", - "fields":[{"name":"0bitmap$767"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$703", + "fields":[{"name":"0bitmap$645"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$842", - "fields":[{"name":"0bitmap$785"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$705", + "fields":[{"name":"0bitmap$655"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$843", - "fields":[{"name":"0bitmap$774"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$706", + "fields":[{"name":"0bitmap$654"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$845", - "fields":[{"name":"0bitmap$784"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$707", + "fields":[{"name":"0bitmap$646"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$846", - "fields":[{"name":"0bitmap$783"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$708", + "fields":[{"name":"0bitmap$647"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$847", - "fields":[{"name":"0bitmap$775"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$709", + "fields":[{"name":"0bitmap$648"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$848", - "fields":[{"name":"0bitmap$776"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$710", + "fields":[{"name":"0bitmap$649"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$849", - "fields":[{"name":"0bitmap$777"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$711", + "fields":[{"name":"0bitmap$650"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$850", - "fields":[{"name":"0bitmap$778"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$712", + "fields":[{"name":"0bitmap$651"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$851", - "fields":[{"name":"0bitmap$779"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$713", + "fields":[{"name":"0bitmap$652"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$852", - "fields":[{"name":"0bitmap$780"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$714", + "fields":[{"name":"0bitmap$653"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$853", - "fields":[{"name":"0bitmap$781"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$716", + "fields":[{"name":"0bitmap$674"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$854", - "fields":[{"name":"0bitmap$782"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$717", + "fields":[{"name":"0bitmap$658"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$856", - "fields":[{"name":"0bitmap$803"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$719", + "fields":[{"name":"0bitmap$659"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$857", - "fields":[{"name":"0bitmap$787"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$720", + "fields":[{"name":"0bitmap$673"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$859", - "fields":[{"name":"0bitmap$788"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$721", + "fields":[{"name":"0bitmap$672"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$860", - "fields":[{"name":"0bitmap$802"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$722", + "fields":[{"name":"0bitmap$660"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$861", - "fields":[{"name":"0bitmap$801"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$723", + "fields":[{"name":"0bitmap$666"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$862", - "fields":[{"name":"0bitmap$789"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$724", + "fields":[{"name":"0bitmap$665"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$863", - "fields":[{"name":"0bitmap$795"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$725", + "fields":[{"name":"0bitmap$661"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$864", - "fields":[{"name":"0bitmap$794"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$726", + "fields":[{"name":"0bitmap$662"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$865", - "fields":[{"name":"0bitmap$790"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$727", + "fields":[{"name":"0bitmap$663"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$866", - "fields":[{"name":"0bitmap$791"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$728", + "fields":[{"name":"0bitmap$664"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$867", - "fields":[{"name":"0bitmap$792"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$730", + "fields":[{"name":"0bitmap$671"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$868", - "fields":[{"name":"0bitmap$793"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$731", + "fields":[{"name":"0bitmap$670"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$870", - "fields":[{"name":"0bitmap$800"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$732", + "fields":[{"name":"0bitmap$667"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$871", - "fields":[{"name":"0bitmap$799"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$733", + "fields":[{"name":"0bitmap$668"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$872", - "fields":[{"name":"0bitmap$796"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$734", + "fields":[{"name":"0bitmap$669"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$873", - "fields":[{"name":"0bitmap$797"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$736", + "fields":[{"name":"0bitmap$675"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$874", - "fields":[{"name":"0bitmap$798"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$737", + "fields":[{"name":"0bitmap$676"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$876", - "fields":[{"name":"0bitmap$804"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$738", + "fields":[{"name":"0bitmap$699"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$877", - "fields":[{"name":"0bitmap$805"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$739", + "fields":[{"name":"0bitmap$698"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$878", - "fields":[{"name":"0bitmap$828"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$740", + "fields":[{"name":"0bitmap$687"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$879", - "fields":[{"name":"0bitmap$827"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$741", + "fields":[{"name":"0bitmap$686"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$880", - "fields":[{"name":"0bitmap$816"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$742", + "fields":[{"name":"0bitmap$678"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$881", - "fields":[{"name":"0bitmap$815"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$743", + "fields":[{"name":"0bitmap$679"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$882", - "fields":[{"name":"0bitmap$807"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$744", + "fields":[{"name":"0bitmap$680"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$883", - "fields":[{"name":"0bitmap$808"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$745", + "fields":[{"name":"0bitmap$681"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$884", - "fields":[{"name":"0bitmap$809"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$746", + "fields":[{"name":"0bitmap$682"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$885", - "fields":[{"name":"0bitmap$810"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$747", + "fields":[{"name":"0bitmap$683"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$886", - "fields":[{"name":"0bitmap$811"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$748", + "fields":[{"name":"0bitmap$684"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$887", - "fields":[{"name":"0bitmap$812"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$749", + "fields":[{"name":"0bitmap$685"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$888", - "fields":[{"name":"0bitmap$813"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$751", + "fields":[{"name":"0bitmap$688"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$889", - "fields":[{"name":"0bitmap$814"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$752", + "fields":[{"name":"0bitmap$692"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$891", - "fields":[{"name":"0bitmap$817"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$753", + "fields":[{"name":"0bitmap$691"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$892", - "fields":[{"name":"0bitmap$821"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$754", + "fields":[{"name":"0bitmap$689"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$893", - "fields":[{"name":"0bitmap$820"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$755", + "fields":[{"name":"0bitmap$690"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$894", - "fields":[{"name":"0bitmap$818"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$757", + "fields":[{"name":"0bitmap$693"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$895", - "fields":[{"name":"0bitmap$819"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$758", + "fields":[{"name":"0bitmap$694"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$897", - "fields":[{"name":"0bitmap$822"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$759", + "fields":[{"name":"0bitmap$697"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$898", - "fields":[{"name":"0bitmap$823"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$760", + "fields":[{"name":"0bitmap$696"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$899", - "fields":[{"name":"0bitmap$826"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$761", + "fields":[{"name":"0bitmap$695"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$900", - "fields":[{"name":"0bitmap$825"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$762", + "fields":[{"name":"0bitmap$721"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$901", - "fields":[{"name":"0bitmap$824"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$763", + "fields":[{"name":"0bitmap$720"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$902", - "fields":[{"name":"0bitmap$850"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$764", + "fields":[{"name":"0bitmap$709"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$903", - "fields":[{"name":"0bitmap$849"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$765", + "fields":[{"name":"0bitmap$708"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$904", - "fields":[{"name":"0bitmap$838"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$766", + "fields":[{"name":"0bitmap$700"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$905", - "fields":[{"name":"0bitmap$837"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$767", + "fields":[{"name":"0bitmap$701"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$906", - "fields":[{"name":"0bitmap$829"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$768", + "fields":[{"name":"0bitmap$702"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$907", - "fields":[{"name":"0bitmap$830"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$769", + "fields":[{"name":"0bitmap$703"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$908", - "fields":[{"name":"0bitmap$831"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$770", + "fields":[{"name":"0bitmap$704"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$909", - "fields":[{"name":"0bitmap$832"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$771", + "fields":[{"name":"0bitmap$705"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$910", - "fields":[{"name":"0bitmap$833"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$772", + "fields":[{"name":"0bitmap$706"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$911", - "fields":[{"name":"0bitmap$834"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$773", + "fields":[{"name":"0bitmap$707"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$912", - "fields":[{"name":"0bitmap$835"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$775", + "fields":[{"name":"0bitmap$710"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$913", - "fields":[{"name":"0bitmap$836"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$776", + "fields":[{"name":"0bitmap$714"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$915", - "fields":[{"name":"0bitmap$839"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$777", + "fields":[{"name":"0bitmap$713"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$916", - "fields":[{"name":"0bitmap$843"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$778", + "fields":[{"name":"0bitmap$711"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$917", - "fields":[{"name":"0bitmap$842"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$779", + "fields":[{"name":"0bitmap$712"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$918", - "fields":[{"name":"0bitmap$840"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$781", + "fields":[{"name":"0bitmap$715"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$919", - "fields":[{"name":"0bitmap$841"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$782", + "fields":[{"name":"0bitmap$716"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$921", - "fields":[{"name":"0bitmap$844"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$783", + "fields":[{"name":"0bitmap$719"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$922", - "fields":[{"name":"0bitmap$845"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$784", + "fields":[{"name":"0bitmap$718"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$923", - "fields":[{"name":"0bitmap$848"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$785", + "fields":[{"name":"0bitmap$717"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$924", - "fields":[{"name":"0bitmap$847"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$786", + "fields":[{"name":"0bitmap$739"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$925", - "fields":[{"name":"0bitmap$846"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$787", + "fields":[{"name":"0bitmap$738"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$926", - "fields":[{"name":"0bitmap$868"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$788", + "fields":[{"name":"0bitmap$722"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$927", - "fields":[{"name":"0bitmap$867"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$789", + "fields":[{"name":"0bitmap$723"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$928", - "fields":[{"name":"0bitmap$851"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$790", + "fields":[{"name":"0bitmap$737"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$929", - "fields":[{"name":"0bitmap$852"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$806", + "fields":[{"name":"0bitmap$758"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$930", - "fields":[{"name":"0bitmap$866"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$807", + "fields":[{"name":"0bitmap$757"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$946", - "fields":[{"name":"0bitmap$887"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$808", + "fields":[{"name":"0bitmap$741"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$947", - "fields":[{"name":"0bitmap$886"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$810", + "fields":[{"name":"0bitmap$742"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$948", - "fields":[{"name":"0bitmap$870"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$811", + "fields":[{"name":"0bitmap$756"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$950", - "fields":[{"name":"0bitmap$871"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$827", + "fields":[{"name":"0bitmap$788"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$951", - "fields":[{"name":"0bitmap$885"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$828", + "fields":[{"name":"0bitmap$782"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$967", - "fields":[{"name":"0bitmap$917"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$829", + "fields":[{"name":"0bitmap$772"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$968", - "fields":[{"name":"0bitmap$911"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$845", + "fields":[{"name":"0bitmap$781"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$969", - "fields":[{"name":"0bitmap$901"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$846", + "fields":[{"name":"0bitmap$778"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$985", - "fields":[{"name":"0bitmap$910"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$847", + "fields":[{"name":"0bitmap$777"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$986", - "fields":[{"name":"0bitmap$907"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$848", + "fields":[{"name":"0bitmap$773"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$987", - "fields":[{"name":"0bitmap$906"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$849", + "fields":[{"name":"0bitmap$774"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$988", - "fields":[{"name":"0bitmap$902"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$850", + "fields":[{"name":"0bitmap$775"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$989", - "fields":[{"name":"0bitmap$903"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$851", + "fields":[{"name":"0bitmap$776"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$990", - "fields":[{"name":"0bitmap$904"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$852", + "fields":[{"name":"0bitmap$779"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$991", - "fields":[{"name":"0bitmap$905"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$853", + "fields":[{"name":"0bitmap$780"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$992", - "fields":[{"name":"0bitmap$908"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$855", + "fields":[{"name":"0bitmap$787"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$993", - "fields":[{"name":"0bitmap$909"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$856", + "fields":[{"name":"0bitmap$783"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$995", - "fields":[{"name":"0bitmap$916"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$857", + "fields":[{"name":"0bitmap$786"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$996", - "fields":[{"name":"0bitmap$912"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$858", + "fields":[{"name":"0bitmap$784"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$997", - "fields":[{"name":"0bitmap$915"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$859", + "fields":[{"name":"0bitmap$785"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$998", - "fields":[{"name":"0bitmap$913"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$861", + "fields":[{"name":"0bitmap$1072"}] }, { - "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$999", - "fields":[{"name":"0bitmap$914"}] + "name":"fpp.compiler.codegen.AnalysisJsonEncoder$$anon$862", + "fields":[{"name":"0bitmap$921"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$", @@ -3528,7 +2824,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$10", - "fields":[{"name":"0bitmap$278"}] + "fields":[{"name":"0bitmap$277"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$100", @@ -3608,7 +2904,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$12", - "fields":[{"name":"0bitmap$284"}] + "fields":[{"name":"0bitmap$283"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$120", @@ -3624,15 +2920,15 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$124", - "fields":[{"name":"0bitmap$76"}] + "fields":[{"name":"0bitmap$75"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$125", - "fields":[{"name":"0bitmap$75"}] + "fields":[{"name":"0bitmap$74"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$126", - "fields":[{"name":"0bitmap$74"}] + "fields":[{"name":"0bitmap$73"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$127", @@ -3663,12 +2959,12 @@ "fields":[{"name":"0bitmap$72"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$134", - "fields":[{"name":"0bitmap$73"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$136", + "fields":[{"name":"0bitmap$79"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$137", - "fields":[{"name":"0bitmap$80"}] + "fields":[{"name":"0bitmap$77"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$138", @@ -3676,51 +2972,51 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$139", - "fields":[{"name":"0bitmap$79"}] + "fields":[{"name":"0bitmap$109"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$140", - "fields":[{"name":"0bitmap$110"}] + "fields":[{"name":"0bitmap$81"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$141", - "fields":[{"name":"0bitmap$82"}] + "fields":[{"name":"0bitmap$80"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$142", - "fields":[{"name":"0bitmap$81"}] + "fields":[{"name":"0bitmap$83"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$143", - "fields":[{"name":"0bitmap$84"}] + "fields":[{"name":"0bitmap$82"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$144", - "fields":[{"name":"0bitmap$83"}] + "fields":[{"name":"0bitmap$85"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$145", - "fields":[{"name":"0bitmap$86"}] + "fields":[{"name":"0bitmap$84"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$146", - "fields":[{"name":"0bitmap$85"}] + "fields":[{"name":"0bitmap$87"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$147", - "fields":[{"name":"0bitmap$88"}] + "fields":[{"name":"0bitmap$86"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$148", - "fields":[{"name":"0bitmap$87"}] + "fields":[{"name":"0bitmap$91"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$149", - "fields":[{"name":"0bitmap$92"}] + "fields":[{"name":"0bitmap$90"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$150", - "fields":[{"name":"0bitmap$91"}] + "fields":[{"name":"0bitmap$88"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$151", @@ -3728,91 +3024,91 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$152", - "fields":[{"name":"0bitmap$90"}] + "fields":[{"name":"0bitmap$93"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$153", - "fields":[{"name":"0bitmap$94"}] + "fields":[{"name":"0bitmap$92"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$154", - "fields":[{"name":"0bitmap$93"}] + "fields":[{"name":"0bitmap$96"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$155", - "fields":[{"name":"0bitmap$97"}] + "fields":[{"name":"0bitmap$95"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$156", - "fields":[{"name":"0bitmap$96"}] + "fields":[{"name":"0bitmap$94"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$157", - "fields":[{"name":"0bitmap$95"}] + "fields":[{"name":"0bitmap$99"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$158", - "fields":[{"name":"0bitmap$100"}] + "fields":[{"name":"0bitmap$98"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$159", - "fields":[{"name":"0bitmap$99"}] + "fields":[{"name":"0bitmap$97"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$160", - "fields":[{"name":"0bitmap$98"}] + "fields":[{"name":"0bitmap$101"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$161", - "fields":[{"name":"0bitmap$102"}] + "fields":[{"name":"0bitmap$100"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$162", - "fields":[{"name":"0bitmap$101"}] + "fields":[{"name":"0bitmap$103"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$163", - "fields":[{"name":"0bitmap$104"}] + "fields":[{"name":"0bitmap$102"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$164", - "fields":[{"name":"0bitmap$103"}] + "fields":[{"name":"0bitmap$105"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$165", - "fields":[{"name":"0bitmap$106"}] + "fields":[{"name":"0bitmap$104"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$166", - "fields":[{"name":"0bitmap$105"}] + "fields":[{"name":"0bitmap$108"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$167", - "fields":[{"name":"0bitmap$109"}] + "fields":[{"name":"0bitmap$107"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$168", - "fields":[{"name":"0bitmap$108"}] + "fields":[{"name":"0bitmap$106"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$169", - "fields":[{"name":"0bitmap$107"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$17", + "fields":[{"name":"0bitmap$308"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$17", - "fields":[{"name":"0bitmap$309"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$170", + "fields":[{"name":"0bitmap$129"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$171", - "fields":[{"name":"0bitmap$130"}] + "fields":[{"name":"0bitmap$113"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$172", - "fields":[{"name":"0bitmap$114"}] + "fields":[{"name":"0bitmap$112"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$173", - "fields":[{"name":"0bitmap$113"}] + "fields":[{"name":"0bitmap$110"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$174", @@ -3820,103 +3116,103 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$175", - "fields":[{"name":"0bitmap$112"}] + "fields":[{"name":"0bitmap$115"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$176", - "fields":[{"name":"0bitmap$116"}] + "fields":[{"name":"0bitmap$114"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$177", - "fields":[{"name":"0bitmap$115"}] + "fields":[{"name":"0bitmap$118"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$178", - "fields":[{"name":"0bitmap$119"}] + "fields":[{"name":"0bitmap$117"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$179", - "fields":[{"name":"0bitmap$118"}] + "fields":[{"name":"0bitmap$116"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$18", - "fields":[{"name":"0bitmap$289"}] + "fields":[{"name":"0bitmap$288"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$180", - "fields":[{"name":"0bitmap$117"}] + "fields":[{"name":"0bitmap$120"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$181", - "fields":[{"name":"0bitmap$121"}] + "fields":[{"name":"0bitmap$119"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$182", - "fields":[{"name":"0bitmap$120"}] + "fields":[{"name":"0bitmap$122"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$183", - "fields":[{"name":"0bitmap$123"}] + "fields":[{"name":"0bitmap$121"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$184", - "fields":[{"name":"0bitmap$122"}] + "fields":[{"name":"0bitmap$128"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$185", - "fields":[{"name":"0bitmap$129"}] + "fields":[{"name":"0bitmap$127"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$186", - "fields":[{"name":"0bitmap$128"}] + "fields":[{"name":"0bitmap$126"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$187", - "fields":[{"name":"0bitmap$127"}] + "fields":[{"name":"0bitmap$124"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$188", - "fields":[{"name":"0bitmap$125"}] + "fields":[{"name":"0bitmap$123"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$189", - "fields":[{"name":"0bitmap$124"}] + "fields":[{"name":"0bitmap$125"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$190", - "fields":[{"name":"0bitmap$126"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$191", + "fields":[{"name":"0bitmap$147"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$192", - "fields":[{"name":"0bitmap$148"}] + "fields":[{"name":"0bitmap$133"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$193", - "fields":[{"name":"0bitmap$134"}] + "fields":[{"name":"0bitmap$132"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$194", - "fields":[{"name":"0bitmap$133"}] + "fields":[{"name":"0bitmap$130"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$195", "fields":[{"name":"0bitmap$131"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$196", - "fields":[{"name":"0bitmap$132"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$197", + "fields":[{"name":"0bitmap$143"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$198", - "fields":[{"name":"0bitmap$144"}] + "fields":[{"name":"0bitmap$142"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$199", - "fields":[{"name":"0bitmap$143"}] + "fields":[{"name":"0bitmap$134"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$2", - "fields":[{"name":"0bitmap$314"}] + "fields":[{"name":"0bitmap$313"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$200", @@ -3947,8 +3243,8 @@ "fields":[{"name":"0bitmap$141"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$207", - "fields":[{"name":"0bitmap$142"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$208", + "fields":[{"name":"0bitmap$144"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$209", @@ -3959,92 +3255,92 @@ "fields":[{"name":"0bitmap$146"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$211", - "fields":[{"name":"0bitmap$147"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$212", + "fields":[{"name":"0bitmap$273"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$213", - "fields":[{"name":"0bitmap$274"}] + "fields":[{"name":"0bitmap$149"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$214", - "fields":[{"name":"0bitmap$150"}] + "fields":[{"name":"0bitmap$148"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$215", - "fields":[{"name":"0bitmap$149"}] + "fields":[{"name":"0bitmap$151"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$216", - "fields":[{"name":"0bitmap$152"}] + "fields":[{"name":"0bitmap$150"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$217", - "fields":[{"name":"0bitmap$151"}] + "fields":[{"name":"0bitmap$153"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$218", - "fields":[{"name":"0bitmap$154"}] + "fields":[{"name":"0bitmap$152"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$219", - "fields":[{"name":"0bitmap$153"}] + "fields":[{"name":"0bitmap$155"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$220", - "fields":[{"name":"0bitmap$156"}] + "fields":[{"name":"0bitmap$154"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$221", - "fields":[{"name":"0bitmap$155"}] + "fields":[{"name":"0bitmap$158"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$222", - "fields":[{"name":"0bitmap$159"}] + "fields":[{"name":"0bitmap$157"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$223", - "fields":[{"name":"0bitmap$158"}] + "fields":[{"name":"0bitmap$156"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$224", - "fields":[{"name":"0bitmap$157"}] + "fields":[{"name":"0bitmap$160"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$225", - "fields":[{"name":"0bitmap$161"}] + "fields":[{"name":"0bitmap$159"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$226", - "fields":[{"name":"0bitmap$160"}] + "fields":[{"name":"0bitmap$163"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$227", - "fields":[{"name":"0bitmap$164"}] + "fields":[{"name":"0bitmap$162"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$228", - "fields":[{"name":"0bitmap$163"}] + "fields":[{"name":"0bitmap$161"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$229", - "fields":[{"name":"0bitmap$162"}] + "fields":[{"name":"0bitmap$178"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$23", - "fields":[{"name":"0bitmap$303"}] + "fields":[{"name":"0bitmap$302"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$230", - "fields":[{"name":"0bitmap$179"}] + "fields":[{"name":"0bitmap$177"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$231", - "fields":[{"name":"0bitmap$178"}] + "fields":[{"name":"0bitmap$167"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$232", - "fields":[{"name":"0bitmap$168"}] + "fields":[{"name":"0bitmap$164"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$233", @@ -4055,16 +3351,16 @@ "fields":[{"name":"0bitmap$166"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$235", - "fields":[{"name":"0bitmap$167"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$236", + "fields":[{"name":"0bitmap$171"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$237", - "fields":[{"name":"0bitmap$172"}] + "fields":[{"name":"0bitmap$170"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$238", - "fields":[{"name":"0bitmap$171"}] + "fields":[{"name":"0bitmap$168"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$239", @@ -4072,15 +3368,15 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$24", - "fields":[{"name":"0bitmap$290"}] + "fields":[{"name":"0bitmap$289"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$240", - "fields":[{"name":"0bitmap$170"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$241", + "fields":[{"name":"0bitmap$176"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$242", - "fields":[{"name":"0bitmap$177"}] + "fields":[{"name":"0bitmap$172"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$243", @@ -4096,47 +3392,47 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$246", - "fields":[{"name":"0bitmap$176"}] + "fields":[{"name":"0bitmap$180"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$247", - "fields":[{"name":"0bitmap$181"}] + "fields":[{"name":"0bitmap$179"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$248", - "fields":[{"name":"0bitmap$180"}] + "fields":[{"name":"0bitmap$194"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$249", - "fields":[{"name":"0bitmap$195"}] + "fields":[{"name":"0bitmap$193"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$25", - "fields":[{"name":"0bitmap$291"}] + "fields":[{"name":"0bitmap$290"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$250", - "fields":[{"name":"0bitmap$194"}] + "fields":[{"name":"0bitmap$184"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$251", - "fields":[{"name":"0bitmap$185"}] + "fields":[{"name":"0bitmap$183"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$252", - "fields":[{"name":"0bitmap$184"}] + "fields":[{"name":"0bitmap$181"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$253", "fields":[{"name":"0bitmap$182"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$254", - "fields":[{"name":"0bitmap$183"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$255", + "fields":[{"name":"0bitmap$192"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$256", - "fields":[{"name":"0bitmap$193"}] + "fields":[{"name":"0bitmap$185"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$257", @@ -4152,7 +3448,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$26", - "fields":[{"name":"0bitmap$292"}] + "fields":[{"name":"0bitmap$291"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$260", @@ -4167,44 +3463,44 @@ "fields":[{"name":"0bitmap$191"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$263", - "fields":[{"name":"0bitmap$192"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$264", + "fields":[{"name":"0bitmap$196"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$265", - "fields":[{"name":"0bitmap$197"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$266", + "fields":[{"name":"0bitmap$207"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$267", - "fields":[{"name":"0bitmap$208"}] + "fields":[{"name":"0bitmap$206"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$268", - "fields":[{"name":"0bitmap$207"}] + "fields":[{"name":"0bitmap$200"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$269", - "fields":[{"name":"0bitmap$201"}] + "fields":[{"name":"0bitmap$199"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$27", - "fields":[{"name":"0bitmap$293"}] + "fields":[{"name":"0bitmap$292"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$270", - "fields":[{"name":"0bitmap$200"}] + "fields":[{"name":"0bitmap$197"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$271", "fields":[{"name":"0bitmap$198"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$272", - "fields":[{"name":"0bitmap$199"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$273", + "fields":[{"name":"0bitmap$205"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$274", - "fields":[{"name":"0bitmap$206"}] + "fields":[{"name":"0bitmap$201"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$275", @@ -4220,35 +3516,35 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$278", - "fields":[{"name":"0bitmap$205"}] + "fields":[{"name":"0bitmap$209"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$279", - "fields":[{"name":"0bitmap$210"}] + "fields":[{"name":"0bitmap$208"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$28", - "fields":[{"name":"0bitmap$294"}] + "fields":[{"name":"0bitmap$293"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$280", - "fields":[{"name":"0bitmap$209"}] + "fields":[{"name":"0bitmap$246"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$281", - "fields":[{"name":"0bitmap$247"}] + "fields":[{"name":"0bitmap$245"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$282", - "fields":[{"name":"0bitmap$246"}] + "fields":[{"name":"0bitmap$220"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$283", - "fields":[{"name":"0bitmap$221"}] + "fields":[{"name":"0bitmap$214"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$284", - "fields":[{"name":"0bitmap$215"}] + "fields":[{"name":"0bitmap$210"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$285", @@ -4263,16 +3559,16 @@ "fields":[{"name":"0bitmap$213"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$288", - "fields":[{"name":"0bitmap$214"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$289", + "fields":[{"name":"0bitmap$219"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$29", - "fields":[{"name":"0bitmap$295"}] + "fields":[{"name":"0bitmap$294"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$290", - "fields":[{"name":"0bitmap$220"}] + "fields":[{"name":"0bitmap$215"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$291", @@ -4288,15 +3584,15 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$294", - "fields":[{"name":"0bitmap$219"}] + "fields":[{"name":"0bitmap$244"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$295", - "fields":[{"name":"0bitmap$245"}] + "fields":[{"name":"0bitmap$224"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$296", - "fields":[{"name":"0bitmap$225"}] + "fields":[{"name":"0bitmap$221"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$297", @@ -4306,21 +3602,21 @@ "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$298", "fields":[{"name":"0bitmap$223"}] }, -{ - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$299", - "fields":[{"name":"0bitmap$224"}] -}, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$3", - "fields":[{"name":"0bitmap$311"}] + "fields":[{"name":"0bitmap$310"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$30", - "fields":[{"name":"0bitmap$296"}] + "fields":[{"name":"0bitmap$295"}] +}, +{ + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$300", + "fields":[{"name":"0bitmap$238"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$301", - "fields":[{"name":"0bitmap$239"}] + "fields":[{"name":"0bitmap$225"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$302", @@ -4356,7 +3652,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$31", - "fields":[{"name":"0bitmap$297"}] + "fields":[{"name":"0bitmap$296"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$310", @@ -4375,12 +3671,12 @@ "fields":[{"name":"0bitmap$237"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$314", - "fields":[{"name":"0bitmap$238"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$315", + "fields":[{"name":"0bitmap$243"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$316", - "fields":[{"name":"0bitmap$244"}] + "fields":[{"name":"0bitmap$239"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$317", @@ -4396,39 +3692,39 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$32", - "fields":[{"name":"0bitmap$298"}] + "fields":[{"name":"0bitmap$297"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$320", - "fields":[{"name":"0bitmap$243"}] + "fields":[{"name":"0bitmap$248"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$321", - "fields":[{"name":"0bitmap$249"}] + "fields":[{"name":"0bitmap$247"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$322", - "fields":[{"name":"0bitmap$248"}] + "fields":[{"name":"0bitmap$250"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$323", - "fields":[{"name":"0bitmap$251"}] + "fields":[{"name":"0bitmap$249"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$324", - "fields":[{"name":"0bitmap$250"}] + "fields":[{"name":"0bitmap$257"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$325", - "fields":[{"name":"0bitmap$258"}] + "fields":[{"name":"0bitmap$256"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$326", - "fields":[{"name":"0bitmap$257"}] + "fields":[{"name":"0bitmap$255"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$327", - "fields":[{"name":"0bitmap$256"}] + "fields":[{"name":"0bitmap$251"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$328", @@ -4440,7 +3736,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$33", - "fields":[{"name":"0bitmap$299"}] + "fields":[{"name":"0bitmap$298"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$330", @@ -4448,31 +3744,31 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$331", - "fields":[{"name":"0bitmap$255"}] + "fields":[{"name":"0bitmap$270"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$332", - "fields":[{"name":"0bitmap$271"}] + "fields":[{"name":"0bitmap$269"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$333", - "fields":[{"name":"0bitmap$270"}] + "fields":[{"name":"0bitmap$260"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$334", - "fields":[{"name":"0bitmap$261"}] + "fields":[{"name":"0bitmap$258"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$335", "fields":[{"name":"0bitmap$259"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$336", - "fields":[{"name":"0bitmap$260"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$337", + "fields":[{"name":"0bitmap$264"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$338", - "fields":[{"name":"0bitmap$265"}] + "fields":[{"name":"0bitmap$261"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$339", @@ -4480,19 +3776,19 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$34", - "fields":[{"name":"0bitmap$300"}] + "fields":[{"name":"0bitmap$299"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$340", "fields":[{"name":"0bitmap$263"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$341", - "fields":[{"name":"0bitmap$264"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$342", + "fields":[{"name":"0bitmap$268"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$343", - "fields":[{"name":"0bitmap$269"}] + "fields":[{"name":"0bitmap$265"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$344", @@ -4503,48 +3799,48 @@ "fields":[{"name":"0bitmap$267"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$346", - "fields":[{"name":"0bitmap$268"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$347", + "fields":[{"name":"0bitmap$272"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$348", - "fields":[{"name":"0bitmap$273"}] + "fields":[{"name":"0bitmap$271"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$349", - "fields":[{"name":"0bitmap$272"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$35", + "fields":[{"name":"0bitmap$300"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$35", - "fields":[{"name":"0bitmap$301"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$350", + "fields":[{"name":"0bitmap$349"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$351", - "fields":[{"name":"0bitmap$351"}] + "fields":[{"name":"0bitmap$325"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$352", - "fields":[{"name":"0bitmap$326"}] + "fields":[{"name":"0bitmap$324"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$353", - "fields":[{"name":"0bitmap$325"}] + "fields":[{"name":"0bitmap$340"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$354", - "fields":[{"name":"0bitmap$341"}] + "fields":[{"name":"0bitmap$339"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$355", - "fields":[{"name":"0bitmap$340"}] + "fields":[{"name":"0bitmap$329"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$356", - "fields":[{"name":"0bitmap$330"}] + "fields":[{"name":"0bitmap$328"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$357", - "fields":[{"name":"0bitmap$329"}] + "fields":[{"name":"0bitmap$326"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$358", @@ -4552,19 +3848,19 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$359", - "fields":[{"name":"0bitmap$328"}] + "fields":[{"name":"0bitmap$338"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$36", - "fields":[{"name":"0bitmap$302"}] + "fields":[{"name":"0bitmap$301"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$360", - "fields":[{"name":"0bitmap$339"}] + "fields":[{"name":"0bitmap$337"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$361", - "fields":[{"name":"0bitmap$338"}] + "fields":[{"name":"0bitmap$330"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$362", @@ -4591,20 +3887,20 @@ "fields":[{"name":"0bitmap$336"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$368", - "fields":[{"name":"0bitmap$337"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$369", + "fields":[{"name":"0bitmap$342"}] }, { - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$370", - "fields":[{"name":"0bitmap$343"}] + "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$371", + "fields":[{"name":"0bitmap$345"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$372", - "fields":[{"name":"0bitmap$345"}] + "fields":[{"name":"0bitmap$344"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$373", - "fields":[{"name":"0bitmap$344"}] + "fields":[{"name":"0bitmap$343"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$374", @@ -4618,69 +3914,61 @@ "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$376", "fields":[{"name":"0bitmap$346"}] }, -{ - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$377", - "fields":[{"name":"0bitmap$350"}] -}, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$378", - "fields":[{"name":"0bitmap$349"}] + "fields":[{"name":"0bitmap$350"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$38", - "fields":[{"name":"0bitmap$308"}] -}, -{ - "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$380", - "fields":[{"name":"0bitmap$352"}] + "fields":[{"name":"0bitmap$307"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$4", - "fields":[{"name":"0bitmap$310"}] + "fields":[{"name":"0bitmap$309"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$43", - "fields":[{"name":"0bitmap$313"}] + "fields":[{"name":"0bitmap$312"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$44", - "fields":[{"name":"0bitmap$312"}] + "fields":[{"name":"0bitmap$311"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$46", - "fields":[{"name":"0bitmap$324"}] + "fields":[{"name":"0bitmap$323"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$47", - "fields":[{"name":"0bitmap$316"}] + "fields":[{"name":"0bitmap$315"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$49", - "fields":[{"name":"0bitmap$323"}] + "fields":[{"name":"0bitmap$322"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$5", - "fields":[{"name":"0bitmap$285"}] + "fields":[{"name":"0bitmap$284"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$50", - "fields":[{"name":"0bitmap$322"}] + "fields":[{"name":"0bitmap$321"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$51", - "fields":[{"name":"0bitmap$321"}] + "fields":[{"name":"0bitmap$320"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$52", - "fields":[{"name":"0bitmap$318"}] + "fields":[{"name":"0bitmap$317"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$54", - "fields":[{"name":"0bitmap$320"}] + "fields":[{"name":"0bitmap$319"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$55", - "fields":[{"name":"0bitmap$319"}] + "fields":[{"name":"0bitmap$318"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$58", @@ -4692,7 +3980,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$6", - "fields":[{"name":"0bitmap$279"}] + "fields":[{"name":"0bitmap$278"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$60", @@ -4736,7 +4024,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$7", - "fields":[{"name":"0bitmap$275"}] + "fields":[{"name":"0bitmap$274"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$70", @@ -4780,7 +4068,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$8", - "fields":[{"name":"0bitmap$276"}] + "fields":[{"name":"0bitmap$275"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$80", @@ -4792,7 +4080,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$83", - "fields":[{"name":"0bitmap$77"}] + "fields":[{"name":"0bitmap$76"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$84", @@ -4820,7 +4108,7 @@ }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$9", - "fields":[{"name":"0bitmap$277"}] + "fields":[{"name":"0bitmap$276"}] }, { "name":"fpp.compiler.codegen.AstJsonEncoder$$anon$90", diff --git a/compiler/lib/src/main/scala/analysis/Analysis.scala b/compiler/lib/src/main/scala/analysis/Analysis.scala index c2707bb73..19acbc0dc 100644 --- a/compiler/lib/src/main/scala/analysis/Analysis.scala +++ b/compiler/lib/src/main/scala/analysis/Analysis.scala @@ -71,6 +71,9 @@ case class Analysis( interfaceMap: Map[Symbol.Interface, Interface] = Map(), /** The interface under construction */ interface: Option[Interface] = None, + /** The map from topology symbols to 'partial' topologies + * with only port interface/instance information */ + partialTopologyMap: Map[Symbol.Topology, Topology] = Map(), /** The map from topology symbols to topologies */ topologyMap: Map[Symbol.Topology, Topology] = Map(), /** The topology under construction */ @@ -249,6 +252,29 @@ case class Analysis( for (cis <- getComponentInstanceSymbol(id)) yield this.componentInstanceMap(cis) + /** Gets an interface instance symbol from the use-def map */ + def getInterfaceInstanceSymbol(id: AstNode.Id): Result.Result[InterfaceInstanceSymbol] = + this.useDefMap(id) match { + case cis: Symbol.ComponentInstance => Right(cis) + case ts: Symbol.Topology => Right(ts) + case s => Left( + SemanticError.InvalidSymbol( + s.getUnqualifiedName, + Locations.get(id), + "not a component instance or topology symbol", + s.getLoc + ) + ) + } + + /** Gets an interface instance from the topology or component instance map */ + def getInterfaceInstance(id: AstNode.Id): Result.Result[InterfaceInstance] = + for (iis <- getInterfaceInstanceSymbol(id)) + yield iis match { + case cis: Symbol.ComponentInstance => InterfaceInstance.fromComponentInstance(this.componentInstanceMap(cis)) + case top: Symbol.Topology => InterfaceInstance.fromTopology(this.topologyMap(top)) + } + /** Gets an interface symbol from use-def map */ def getInterfaceSymbol(id: AstNode.Id): Result.Result[Symbol.Interface] = this.useDefMap(id) match { diff --git a/compiler/lib/src/main/scala/analysis/Analyzers/BasicUseAnalyzer.scala b/compiler/lib/src/main/scala/analysis/Analyzers/BasicUseAnalyzer.scala index 429177a02..5aebe17f5 100644 --- a/compiler/lib/src/main/scala/analysis/Analyzers/BasicUseAnalyzer.scala +++ b/compiler/lib/src/main/scala/analysis/Analyzers/BasicUseAnalyzer.scala @@ -11,9 +11,9 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { /** A use of a component definition */ def componentUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified): Result = default(a) - - /** A use of a component instance definition */ - def componentInstanceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified): Result = default(a) + + /** A use of a interface instance (topology def or component instance def) */ + def interfaceInstanceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified): Result = default(a) /** A use of a constant definition or enumerated constant definition */ def constantUse(a: Analysis, node: AstNode[Ast.Expr], use: Name.Qualified): Result = default(a) @@ -21,9 +21,6 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { /** A use of a port definition */ def portUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified): Result = default(a) - /** A use of a topology definition */ - def topologyUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified): Result = default(a) - /** A use of an interface definition */ def interfaceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified): Result = default(a) @@ -46,6 +43,13 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { val id = node._2.id for { a <- visitImpliedUses(a, id) + + // Visit port interface uses in the implements clause + a <- { + Result.foldLeft (node._2.data.implements) (a) ((a, impl) => + qualIdentNode(interfaceUse) (a, impl) + )} + a <- super.defTopologyAnnotatedNode(a, node) } yield a } @@ -77,10 +81,10 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { constantUse(a, node, use) } - override def specCompInstanceAnnotatedNode(a: Analysis, node: Ast.Annotated[AstNode[Ast.SpecCompInstance]]) = { + override def specInstanceAnnotatedNode(a: Analysis, node: Ast.Annotated[AstNode[Ast.SpecInstance]]) = { val (_, node1, _) = node val data = node1.data - qualIdentNode (componentInstanceUse) (a, data.instance) + qualIdentNode (interfaceInstanceUse) (a, data.instance) } override def specStateMachineInstanceAnnotatedNode(a: Analysis, node: Ast.Annotated[AstNode[Ast.SpecStateMachineInstance]]) = { @@ -107,8 +111,8 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { data match { case direct : Ast.SpecConnectionGraph.Direct => visitList(a, direct.connections, connection) case pattern : Ast.SpecConnectionGraph.Pattern => for { - a <- qualIdentNode (componentInstanceUse) (a, pattern.source) - a <- visitList(a, pattern.targets, qualIdentNode(componentInstanceUse)) + a <- qualIdentNode (interfaceInstanceUse) (a, pattern.source) + a <- visitList(a, pattern.targets, qualIdentNode(interfaceInstanceUse)) } yield a } } @@ -165,16 +169,16 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { a <- visitList(a, aNode._2.data.omitted, tlmChannelIdentifierNode) } yield a - override def specTopImportAnnotatedNode(a: Analysis, node: Ast.Annotated[AstNode[Ast.SpecImport]]) = { + override def specInterfaceImportAnnotatedNode(a: Analysis, node: Ast.Annotated[AstNode[Ast.SpecImport]]) = { val (_, node1, _) = node val data = node1.data - qualIdentNode(topologyUse)(a, data.sym) + qualIdentNode(interfaceUse)(a, data.sym) } - override def specInterfaceImportAnnotatedNode(a: Analysis, node: Ast.Annotated[AstNode[Ast.SpecImport]]) = { + override def specTopPortAnnotatedNode(a: Analysis, node: Ast.Annotated[AstNode[Ast.SpecTopPort]]) = { val (_, node1, _) = node val data = node1.data - qualIdentNode(interfaceUse)(a, data.sym) + portInstanceIdentifierNode(a, data.underlyingPort) } override def typeNameQualIdentNode(a: Analysis, node: AstNode[Ast.TypeName], tn: Ast.TypeNameQualIdent) = { @@ -183,7 +187,7 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { } private def portInstanceIdentifierNode(a: Analysis, node: AstNode[Ast.PortInstanceIdentifier]): Result = - qualIdentNode (componentInstanceUse) (a, node.data.componentInstance) + qualIdentNode (interfaceInstanceUse) (a, node.data.interfaceInstance) private def qualIdentNode (f: (Analysis, AstNode[Ast.QualIdent], Name.Qualified) => Result) @@ -196,7 +200,7 @@ trait BasicUseAnalyzer extends TypeExpressionAnalyzer { a: Analysis, node: AstNode[Ast.TlmChannelIdentifier] ): Result = - qualIdentNode (componentInstanceUse) (a, node.data.componentInstance) + qualIdentNode (interfaceInstanceUse) (a, node.data.componentInstance) private def tlmPacketMember(a: Analysis, member: Ast.TlmPacketMember) = member match { diff --git a/compiler/lib/src/main/scala/analysis/Analyzers/UseAnalyzer.scala b/compiler/lib/src/main/scala/analysis/Analyzers/UseAnalyzer.scala index 376f1f50b..afa08dbb0 100644 --- a/compiler/lib/src/main/scala/analysis/Analyzers/UseAnalyzer.scala +++ b/compiler/lib/src/main/scala/analysis/Analyzers/UseAnalyzer.scala @@ -1,7 +1,9 @@ package fpp.compiler.analysis -import fpp.compiler.ast._ -import fpp.compiler.util._ +import fpp.compiler.ast.* +import fpp.compiler.util.* + +import scala.annotation.tailrec /** * Analyze uses @@ -10,6 +12,7 @@ import fpp.compiler.util._ trait UseAnalyzer extends BasicUseAnalyzer { /** Gets a qualified name from a dot expression */ + @tailrec private def getQualifiedName( e: Ast.Expr, qualifier: List[Name.Unqualified] = Nil @@ -18,7 +21,7 @@ trait UseAnalyzer extends BasicUseAnalyzer { Name.Qualified.fromIdentList(id :: qualifier) case Ast.ExprDot(e1, id) => getQualifiedName(e1.data, id.data :: qualifier) - case _ => throw new InternalError("expected a qualified name") + case _ => throw InternalError("expected a qualified name") } override def exprDotNode(a: Analysis, node: AstNode[Ast.Expr], e: Ast.ExprDot) = @@ -29,7 +32,7 @@ trait UseAnalyzer extends BasicUseAnalyzer { constantUse(a, node, use) case Some(_) => // This is some other type of symbol, which it shouldn't be - throw new InternalError("expected a constant use") + throw InternalError("expected a constant use") case None => // e is not a use, so it selects a member of a struct value // Analyze the left-hand expression representing the struct value diff --git a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckSpecLocs.scala b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckSpecLocs.scala index 1bc16c832..74af6f92f 100644 --- a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckSpecLocs.scala +++ b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckSpecLocs.scala @@ -32,7 +32,7 @@ object CheckSpecLocs override def defComponentInstanceAnnotatedNode( a: Analysis, aNode: Ast.Annotated[AstNode[Ast.DefComponentInstance]] - ) = checkSpecLoc(a, Ast.SpecLoc.ComponentInstance, Symbol.ComponentInstance(aNode)) + ) = checkSpecLoc(a, Ast.SpecLoc.Instance, Symbol.ComponentInstance(aNode)) override def defConstantAnnotatedNode( a: Analysis, @@ -67,7 +67,7 @@ object CheckSpecLocs override def defTopologyAnnotatedNode( a: Analysis, aNode: Ast.Annotated[AstNode[Ast.DefTopology]] - ) = checkSpecLoc(a, Ast.SpecLoc.Topology, Symbol.Topology(aNode)) + ) = checkSpecLoc(a, Ast.SpecLoc.Instance, Symbol.Topology(aNode)) private def checkSpecLoc( a: Analysis, diff --git a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckTopologyDefs.scala b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckTopologyDefs.scala index 0c34f88d4..d53249f64 100644 --- a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckTopologyDefs.scala +++ b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckTopologyDefs.scala @@ -5,7 +5,7 @@ import fpp.compiler.util._ /** Check topology definitions */ object CheckTopologyDefs - extends Analyzer + extends Analyzer with ModuleAnalyzer with TopologyAnalyzer { @@ -18,14 +18,14 @@ object CheckTopologyDefs a.topologyMap.get(symbol) match { case None => // Topology is not in the map: visit it - val a1 = a.copy(topology = Some(Topology(aNode))) + val a1 = a.copy(topology = Some(Topology(aNode, a.getQualifiedName(symbol)))) for { // Visit topology members and compute unresolved top a <- super.defTopologyAnnotatedNode(a1, aNode) top <- Right(a.topology.get) a <- { // Resolve topologies directly imported by top, updating a - val tops = top.directImportMap.toList + val tops = top.directTopologies.toList Result.foldLeft (tops) (a) ((a, tl) => { defTopologyAnnotatedNode(a, tl._1.node) }) @@ -41,18 +41,22 @@ object CheckTopologyDefs } } - override def specCompInstanceAnnotatedNode( + override def specTopPortAnnotatedNode( a: Analysis, - aNode: Ast.Annotated[AstNode[Ast.SpecCompInstance]] + aNode: Ast.Annotated[AstNode[Ast.SpecTopPort]] + ) = { + Right(a.copy(topology = Some(a.topology.get.addPortNode(aNode)))) + } + + override def specInstanceAnnotatedNode( + a: Analysis, + aNode: Ast.Annotated[AstNode[Ast.SpecInstance]] ) = { val node = aNode._2 val instanceNode = node.data.instance for { - instance <- a.getComponentInstance(instanceNode.id) - topology <- a.topology.get.addUniqueInstance( - instance, - Locations.get(node.id) - ) + symbol <- a.getInterfaceInstanceSymbol(instanceNode.id) + topology <- a.topology.get.addInstanceSymbol(symbol, Locations.get(node.id)) } yield a.copy(topology = Some(topology)) } @@ -77,20 +81,4 @@ object CheckTopologyDefs } yield a.copy(topology = Some(topology)) } - override def specTopImportAnnotatedNode( - a: Analysis, - aNode: Ast.Annotated[AstNode[Ast.SpecImport]] - ) = { - val node = aNode._2 - val topNode = node.data.sym - for { - ts <- a.getTopologySymbol(topNode.id) - topology <- a.topology.get.addImportedTopology( - ts, - Locations.get(node.id) - ) - } - yield a.copy(topology = Some(topology)) - } - } diff --git a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUseDefCycles.scala b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUseDefCycles.scala index 7a699749d..b4a2d37c0 100644 --- a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUseDefCycles.scala +++ b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUseDefCycles.scala @@ -52,7 +52,7 @@ object CheckUseDefCycles extends UseAnalyzer { override def interfaceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = visitUse(a, node, use) - override def topologyUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = + override def interfaceInstanceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = visitUse(a, node, use) override def typeUse(a: Analysis, node: AstNode[Ast.TypeName], use: Name.Qualified) = diff --git a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUses.scala b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUses.scala index 1d753857d..97a975eee 100644 --- a/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUses.scala +++ b/compiler/lib/src/main/scala/analysis/CheckSemantics/CheckUses.scala @@ -16,9 +16,6 @@ object CheckUses extends BasicUseAnalyzer { (a: Analysis, udm: Map[AstNode.Id, Symbol]) => a.copy(useDefMap = udm) ) - override def componentInstanceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = - helpers.visitQualIdentNode (NameGroup.ComponentInstance) (a, node) - override def componentUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = helpers.visitQualIdentNode (NameGroup.Component) (a, node) @@ -205,11 +202,11 @@ object CheckUses extends BasicUseAnalyzer { override def portUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = helpers.visitQualIdentNode (NameGroup.Port) (a, node) - override def topologyUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = - helpers.visitQualIdentNode (NameGroup.Topology) (a, node) + override def interfaceInstanceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = + helpers.visitQualIdentNode (NameGroup.PortInterfaceInstance) (a, node) override def interfaceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = - helpers.visitQualIdentNode (NameGroup.Interface) (a, node) + helpers.visitQualIdentNode (NameGroup.PortInterface) (a, node) override def typeUse(a: Analysis, node: AstNode[Ast.TypeName], use: Name.Qualified) = { val data = node.data diff --git a/compiler/lib/src/main/scala/analysis/CheckSemantics/EnterSymbols.scala b/compiler/lib/src/main/scala/analysis/CheckSemantics/EnterSymbols.scala index 8e07a432c..6885d2d69 100644 --- a/compiler/lib/src/main/scala/analysis/CheckSemantics/EnterSymbols.scala +++ b/compiler/lib/src/main/scala/analysis/CheckSemantics/EnterSymbols.scala @@ -95,7 +95,7 @@ object EnterSymbols val name = data.name val symbol = Symbol.ComponentInstance(aNode) val nestedScope = a.nestedScope - for (nestedScope <- nestedScope.put(NameGroup.ComponentInstance)(name, symbol)) + for (nestedScope <- nestedScope.put(NameGroup.PortInterfaceInstance)(name, symbol)) yield updateMap(a, symbol).copy(nestedScope = nestedScope) } @@ -165,7 +165,7 @@ object EnterSymbols val name = data.name val symbol = Symbol.Interface(aNode) val nestedScope = a.nestedScope - for (nestedScope <- nestedScope.put(NameGroup.Interface)(name, symbol)) + for (nestedScope <- nestedScope.put(NameGroup.PortInterface)(name, symbol)) yield updateMap(a, symbol).copy(nestedScope = nestedScope) } @@ -181,12 +181,12 @@ object EnterSymbols val a1 = a.copy(scopeNameList = newScopeNameList) for { triple <- a1.nestedScope.innerScope.get (NameGroup.Value) (name) match { - case Some(symbol: Symbol.Module) => + case Some(symbol: Symbol.Module) => // We found a module symbol with the same name at the current level. // Re-open the scope. val scope = a1.symbolScopeMap(symbol) Right((a1, symbol, scope)) - case Some(symbol) => + case Some(symbol) => // We found a non-module symbol with the same name at the current level. // This is an error. val error = SemanticError.RedefinedSymbol( @@ -195,7 +195,7 @@ object EnterSymbols symbol.getLoc ) Left(error) - case None => + case None => // We did not find a symbol with the same name at the current level. // Create a new module symbol now. val symbol = Symbol.Module(aNode) @@ -300,7 +300,7 @@ object EnterSymbols val name = data.name val symbol = Symbol.Topology(aNode) val nestedScope = a.nestedScope - for (nestedScope <- nestedScope.put(NameGroup.Topology)(name, symbol)) + for (nestedScope <- nestedScope.put(NameGroup.PortInterfaceInstance)(name, symbol)) yield updateMap(a, symbol).copy(nestedScope = nestedScope) } diff --git a/compiler/lib/src/main/scala/analysis/ComputeDependencies/AddDependencies.scala b/compiler/lib/src/main/scala/analysis/ComputeDependencies/AddDependencies.scala index ae9c253a8..9eb12dbf5 100644 --- a/compiler/lib/src/main/scala/analysis/ComputeDependencies/AddDependencies.scala +++ b/compiler/lib/src/main/scala/analysis/ComputeDependencies/AddDependencies.scala @@ -49,9 +49,6 @@ object AddDependencies extends BasicUseAnalyzer { } yield a } - override def componentInstanceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = - analyzeUse(a, Ast.SpecLoc.ComponentInstance, use) - override def stateMachineUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = analyzeUse(a, Ast.SpecLoc.StateMachine, use) @@ -75,8 +72,8 @@ object AddDependencies extends BasicUseAnalyzer { override def portUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = analyzeUse(a, Ast.SpecLoc.Port, use) - override def topologyUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = - analyzeUse(a, Ast.SpecLoc.Topology, use) + override def interfaceInstanceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = + analyzeUse(a, Ast.SpecLoc.Instance, use) override def interfaceUse(a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified) = analyzeUse(a, Ast.SpecLoc.Interface, use) diff --git a/compiler/lib/src/main/scala/analysis/Semantics/Component.scala b/compiler/lib/src/main/scala/analysis/Semantics/Component.scala index ba29f5df5..e53da9ce2 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/Component.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/Component.scala @@ -9,10 +9,8 @@ import fpp.compiler.util.* case class Component( /** The AST node defining the component */ aNode: Ast.Annotated[AstNode[Ast.DefComponent]], - /** The map from port names to port instances */ - portMap: Map[Name.Unqualified, PortInstance] = Map(), - /** The map from special port kinds to special port instances */ - specialPortMap: Map[Ast.SpecPortInstance.SpecialKind, PortInstance.Special] = Map(), + /* The port interface of the component */ + portInterface: PortInterface = PortInterface("component"), /** The map from command opcodes to commands */ commandMap: Map[Command.Opcode, Command] = Map(), /** The next default opcode */ @@ -45,13 +43,9 @@ case class Component( recordMap: Map[Record.Id, Record] = Map(), /** The next default record ID */ defaultRecordId: BigInt = 0 -) extends GenericPortInterface[Component](aNode._2.data.name, portMap, specialPortMap) { - def withPortMap(newPortMap: Map[Unqualified, PortInstance]): Component = - this.copy(portMap = newPortMap) - - def withSpecialPortMap( - newSpecialPortMap: Map[SpecPortInstance.SpecialKind, PortInstance.Special] - ): Component = this.copy(specialPortMap = newSpecialPortMap) +) { + val portMap = portInterface.portMap + val specialPortMap = portInterface.specialPortMap /** Query whether the component has parameters */ def hasParameters = this.paramMap.nonEmpty @@ -207,6 +201,21 @@ case class Component( yield component } + /** Add a port instance */ + def addPortInstance(instance: PortInstance): Result.Result[Component] = + for { + pi <- portInterface.addPortInstance(instance) + } yield this.copy(portInterface = pi) + + def addImportedInterface( + interface: Interface, + importNodeId: AstNode.Id, + ): Result.Result[Component] = { + for { + pi <- portInterface.addImportedInterface(interface, importNodeId) + } yield this.copy(portInterface = pi) + } + /** Add a data product record */ def addRecord( idOpt: Option[Record.Id], @@ -373,6 +382,7 @@ case class Component( case _ => Right(()) } case internal: PortInstance.Internal => Left(error) + case _: PortInstance.Topology => throw InternalError("topology port cannot exist in component") } } ) @@ -489,7 +499,7 @@ case class Component( val name = node.data val loc = Locations.get(node.id) for { - instance <- this.getPortInstance(node) + instance <- this.portInterface.getPortInstance(node, this.aNode._2.data.name) general <- instance match { case general: PortInstance.General => Right(general) case _ => Left( diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ComponentInstance.scala b/compiler/lib/src/main/scala/analysis/Semantics/ComponentInstance.scala index bbcb883e9..d63a89cec 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ComponentInstance.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ComponentInstance.scala @@ -35,12 +35,17 @@ final case class ComponentInstance( } } + /** Gets the qualified name of the component instance */ + def getQualifiedName = qualifiedName + /** Gets the unqualified name of the component instance */ def getUnqualifiedName = aNode._2.data.name /** Gets the location of the component instance */ def getLoc: Location = Locations.get(aNode._2.id) + def getInterface: PortInterface = component.portInterface + override def compare(that: ComponentInstance) = this.qualifiedName.toString.compare(that.qualifiedName.toString) diff --git a/compiler/lib/src/main/scala/analysis/Semantics/Connection.scala b/compiler/lib/src/main/scala/analysis/Semantics/Connection.scala index a844a62b4..e7edd464f 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/Connection.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/Connection.scala @@ -109,19 +109,29 @@ case class Connection( def portMatchingExists(pml: List[Component.PortMatching], pi: PortInstance): Boolean = pml.exists(pm => pi.equals(pm.instance1) || pi.equals(pm.instance2)) - val fromPi = from.port.portInstance - val toPi = to.port.portInstance - val fromPml = from.port.componentInstance.component.portMatchingList - val toPml = to.port.componentInstance.component.portMatchingList + (from.port.interfaceInstance, to.port.interfaceInstance) match { + case (InterfaceInstance.InterfaceComponentInstance(fromCi), InterfaceInstance.InterfaceComponentInstance(toCi)) => { + val fromPi = from.port.portInstance + val toPi = to.port.portInstance + val fromPml = fromCi.component.portMatchingList + val toPml = toCi.component.portMatchingList + + portMatchingExists(fromPml, fromPi) || portMatchingExists(toPml, toPi) + } - portMatchingExists(fromPml, fromPi) || portMatchingExists(toPml, toPi) + case _ => false + } } /** Compare two connections */ override def compare(that: Connection) = { val fromCompare = this.from.compare(that.from) if (fromCompare != 0) fromCompare - else this.to.compare(that.to) + else { + val toCompare = this.to.compare(that.to) + if (toCompare != 0) toCompare + else this.from.loc.compare(that.from.loc) + } } /** Gets the location of the connection */ @@ -173,7 +183,9 @@ object Connection { /** The port instance identifier */ port: PortInstanceIdentifier, /** The port number */ - portNumber: Option[Int] = None + portNumber: Option[Int] = None, + /** Topology port this mapped to */ + topologyPort: Option[Endpoint] = None ) extends Ordered[Endpoint] { override def toString = portNumber match { @@ -203,6 +215,20 @@ object Connection { case None => Right(()) } + /** Get underlying endpoint by stripping off topology port aliases */ + def getUnderlyingEndpoint(): Endpoint = { + port.interfaceInstance match { + // This endpoint is already a component instance + case InterfaceInstance.InterfaceComponentInstance(ci) => this + case InterfaceInstance.InterfaceTopology(top) => this.copy( + // Look up the mapping for this port instance + port = top.portMap(port.portInstance.getUnqualifiedName)._1, + topologyPort = Some(this) + // Recursively resolve the endpoint to a component instance + ).getUnderlyingEndpoint() + } + } + } object Endpoint { diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryEntries.scala b/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryEntries.scala index b07fa6399..b01e398c5 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryEntries.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryEntries.scala @@ -45,7 +45,7 @@ final case class DictionaryEntries(a: Analysis, t: Topology) { val m = getSpecMap(ci.component) m.foldLeft(entryMap) (addEntry(constructEntry, ci)) } - t.instanceMap.keys.foldLeft (Map[BigInt, Entry]()) (addEntriesForInstance) + t.componentInstanceMap.keys.foldLeft (Map[BigInt, Entry]()) (addEntriesForInstance) } private def addEntry[Specifier, Entry]( diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryUsedSymbols.scala b/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryUsedSymbols.scala index ff462d54b..196735fa2 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryUsedSymbols.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ConstructDictionary/DictionaryUsedSymbols.scala @@ -14,7 +14,7 @@ final case class DictionaryUsedSymbols(a: Analysis, t: Topology) { k => a.getImpliedUses(k, t.aNode._2.id).map(iu => a.useDefMap(iu.id)) ) val ss = Set.concat( - t.instanceMap.keys.toSet.flatMap(getUsedSymbolsForInstance), + t.componentInstanceMap.keys.toSet.flatMap(getUsedSymbolsForInstance), impliedUses, a.dictionarySymbolSet ) diff --git a/compiler/lib/src/main/scala/analysis/Semantics/Interface.scala b/compiler/lib/src/main/scala/analysis/Semantics/Interface.scala index 08df0694d..95f43b27e 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/Interface.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/Interface.scala @@ -9,17 +9,25 @@ case class Interface( aNode: Ast.Annotated[AstNode[Ast.DefInterface]], /** The imported interfaces */ importMap: Map[Symbol.Interface, (AstNode.Id, Location)] = Map(), - /** The map from port names to port instances */ - portMap: Map[Name.Unqualified, PortInstance] = Map(), - /** The map from special port kinds to special port instances */ - specialPortMap: Map[Ast.SpecPortInstance.SpecialKind, PortInstance.Special] = Map(), -) extends GenericPortInterface[Interface](aNode._2.data.name, portMap, specialPortMap) { - def withPortMap(newPortMap: Map[Name.Unqualified, PortInstance]): Interface = - this.copy(portMap = newPortMap) + /* The port interface of the component */ + portInterface: PortInterface = PortInterface("interface"), +) { + /** Add a port instance */ + def addPortInstance(instance: PortInstance): Result.Result[Interface] = + for { + pi <- portInterface.addPortInstance(instance) + } + yield this.copy(portInterface = pi) - def withSpecialPortMap( - newSpecialPortMap: Map[Ast.SpecPortInstance.SpecialKind, PortInstance.Special] - ): Interface = this.copy(specialPortMap = newSpecialPortMap) + def addImportedInterface( + interface: Interface, + importNodeId: AstNode.Id, + ): Result.Result[Interface] = { + for { + pi <- portInterface.addImportedInterface(interface, importNodeId) + } + yield this.copy(portInterface = pi) + } def addImportedInterfaceSymbol( symbol: Symbol.Interface, diff --git a/compiler/lib/src/main/scala/analysis/Semantics/InterfaceInstance.scala b/compiler/lib/src/main/scala/analysis/Semantics/InterfaceInstance.scala new file mode 100644 index 000000000..dcfb78e75 --- /dev/null +++ b/compiler/lib/src/main/scala/analysis/Semantics/InterfaceInstance.scala @@ -0,0 +1,51 @@ +package fpp.compiler.analysis + +import fpp.compiler.ast._ +import fpp.compiler.util._ + +/** An FPP interface instance */ +sealed trait InterfaceInstance { + + override def toString = getQualifiedName.toString + + /** Gets the qualified name of the interface instance */ + def getQualifiedName: Name.Qualified + + /** Gets the unqualified name of the interface instance */ + def getUnqualifiedName: String + + /** Gets the location of the interface instance */ + def getLoc: Location + + /** Get the full port interface of this instance */ + def getInterface: PortInterface + + /* Get a port instance given the name of the port instance */ + def getPortInstance(name: AstNode[Ast.Ident]): Result.Result[PortInstance] = + getInterface.getPortInstance(name, getUnqualifiedName) + +} + +object InterfaceInstance { + + final case class InterfaceComponentInstance(ci: ComponentInstance) extends InterfaceInstance { + override def getQualifiedName: Name.Qualified = ci.getQualifiedName + override def getUnqualifiedName: String = ci.getUnqualifiedName + override def getLoc: Location = ci.getLoc + override def getInterface: PortInterface = ci.getInterface + } + + final case class InterfaceTopology(top: Topology) extends InterfaceInstance { + override def getQualifiedName: Name.Qualified = top.getQualifiedName + override def getUnqualifiedName: String = top.getUnqualifiedName + override def getLoc: Location = top.getLoc + override def getInterface: PortInterface = top.portInterface + } + + def fromComponentInstance(ci: ComponentInstance) = + InterfaceComponentInstance(ci) + + def fromTopology(top: Topology) = + InterfaceTopology(top) + +} \ No newline at end of file diff --git a/compiler/lib/src/main/scala/analysis/Semantics/NameGroup.scala b/compiler/lib/src/main/scala/analysis/Semantics/NameGroup.scala index ad3640776..b41935a93 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/NameGroup.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/NameGroup.scala @@ -4,8 +4,8 @@ package fpp.compiler.analysis sealed trait NameGroup object NameGroup { - case object ComponentInstance extends NameGroup { - override def toString(): String = "component instance" + case object PortInterfaceInstance extends NameGroup { + override def toString(): String = "component instance or topology" } case object Component extends NameGroup { @@ -24,7 +24,7 @@ object NameGroup { override def toString(): String = "topology" } - case object Interface extends NameGroup { + case object PortInterface extends NameGroup { override def toString(): String = "interface" } @@ -37,12 +37,11 @@ object NameGroup { } val groups: List[NameGroup] = List( - ComponentInstance, Component, Port, StateMachine, - Topology, - Interface, + PortInterfaceInstance, + PortInterface, Type, Value ) diff --git a/compiler/lib/src/main/scala/analysis/Semantics/PortInstance.scala b/compiler/lib/src/main/scala/analysis/Semantics/PortInstance.scala index 2c4325758..e5b96d211 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/PortInstance.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/PortInstance.scala @@ -43,6 +43,18 @@ sealed trait PortInstance { loc: Location // The location whether the connection is requested ): Result.Result[Unit] = Right(()) + override def equals(obj: Any): Boolean = + obj match { + case other: PortInstance => + return ( + this.getArraySize == other.getArraySize && + this.getDirection == other.getDirection && + this.getType == other.getType && + this.getUnqualifiedName == other.getUnqualifiedName + ) + case _ => false + } + } object PortInstance { @@ -140,6 +152,29 @@ object PortInstance { def getImportNodeIds = importNodeIds } + final case class Topology( + aNode: Ast.Annotated[AstNode[Ast.SpecTopPort]], + underlyingPort: PortInstance + ) extends PortInstance { + override def getDirection = underlyingPort.getDirection + + override def getArraySize = underlyingPort.getArraySize + + override def getNodeId = aNode._2.id + + override def getType = underlyingPort.getType + + override def getUnqualifiedName = aNode._2.data.name + + // Topology ports cannot be imported + def withImportSpecifier(importNode: AstNode.Id): PortInstance = + this + + def getImportNodeIds = List() + + override def toString = s"${getUnqualifiedName.toString} -> ${underlyingPort.toString}" + } + /** A special port instance */ final case class Special( aNode: Ast.Annotated[AstNode[Ast.SpecPortInstance]], diff --git a/compiler/lib/src/main/scala/analysis/Semantics/PortInstanceIdentifier.scala b/compiler/lib/src/main/scala/analysis/Semantics/PortInstanceIdentifier.scala index ba6d4e42e..2e751edb4 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/PortInstanceIdentifier.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/PortInstanceIdentifier.scala @@ -5,8 +5,8 @@ import fpp.compiler.util._ /** An FPP port instance identifier */ case class PortInstanceIdentifier( - /** The component instance */ - componentInstance: ComponentInstance, + /** The interface instance */ + interfaceInstance: InterfaceInstance, /** The port instance */ portInstance: PortInstance ) { @@ -15,16 +15,16 @@ case class PortInstanceIdentifier( /** Gets the qualified name */ def getQualifiedName: Name.Qualified = { - val componentName = componentInstance.qualifiedName - val identList = componentName.toIdentList + val instanceName = interfaceInstance.getQualifiedName + val identList = instanceName.toIdentList Name.Qualified.fromIdentList(identList :+ portInstance.getUnqualifiedName) } /** Gets the unqualified name */ def getUnqualifiedName: Name.Qualified = { - val componentName = componentInstance.getUnqualifiedName + val instanceName = interfaceInstance.getUnqualifiedName val portName = portInstance.getUnqualifiedName - val identList = List(componentName, portName) + val identList = List(instanceName, portName) Name.Qualified.fromIdentList(identList) } @@ -37,15 +37,15 @@ object PortInstanceIdentifier { Result.Result[PortInstanceIdentifier] = { val data = node.data for { - componentInstance <- a.getComponentInstance( - data.componentInstance.id + interfaceInstance <- a.getInterfaceInstance( + data.interfaceInstance.id ) - portInstance <- componentInstance.component.getPortInstance( + portInstance <- interfaceInstance.getPortInstance( data.portName ) } yield PortInstanceIdentifier( - componentInstance, + interfaceInstance, portInstance ) } diff --git a/compiler/lib/src/main/scala/analysis/Semantics/GenericPortInterface.scala b/compiler/lib/src/main/scala/analysis/Semantics/PortInterface.scala similarity index 52% rename from compiler/lib/src/main/scala/analysis/Semantics/GenericPortInterface.scala rename to compiler/lib/src/main/scala/analysis/Semantics/PortInterface.scala index 9b7083fbf..26f9490df 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/GenericPortInterface.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/PortInterface.scala @@ -3,32 +3,81 @@ package fpp.compiler.analysis import fpp.compiler.ast.{Ast, AstNode, Locations} import fpp.compiler.util._ -trait GenericPortInterface[T <: GenericPortInterface[T]]( - /** Name of the parent symbol that defines this interface */ - defName: String, +/** An FPP Port Interface (set of port instances) */ +case class PortInterface( + /** The type of interface instance this port interface represents */ + instanceType: String, /** The map from port names to port instances */ portMap: Map[Name.Unqualified, PortInstance] = Map(), /** The map from special port kinds to special port instances */ specialPortMap: Map[Ast.SpecPortInstance.SpecialKind, PortInstance.Special] = Map(), ) { - def withPortMap(newPortMap: Map[Name.Unqualified, PortInstance]): T - def withSpecialPortMap(newSpecialPortMap: Map[Ast.SpecPortInstance.SpecialKind, PortInstance.Special]): T + private def withPortMap(newPortMap: Map[Name.Unqualified, PortInstance]) = + this.copy(portMap = newPortMap) + + private def withSpecialPortMap(newSpecialPortMap: Map[Ast.SpecPortInstance.SpecialKind, PortInstance.Special]) = + this.copy(specialPortMap = newSpecialPortMap) + + /* Check if 'this' port interface implements 'other' */ + def implements(other: PortInterface): Result.Result[Unit] = + for { + _ <- { + // Check all the ports in 'other' to make sure they exist and match to 'this' + Result.foldLeft (other.portMap.toList) (()) ((_, pii) => { + val (name, pi) = pii + this.portMap.get(name) match { + case Some(found) => + // Port exists, make sure it matches theirs + if found == pi then Right(()) + else Left(SemanticError.PortInterfaceInvalidPort( + found.getLoc, + pi.getLoc + )) + case None => + Left(SemanticError.PortInterfaceMissingPort( + pi.getLoc + )) + } + }) + } + + _ <- { + Result.foldLeft (other.specialPortMap.toList) (()) ((_, pii) => { + val (kind, pi) = pii + + this.specialPortMap.get(kind) match { + case Some(found) => + // The port exists, make sure it's the same theirs + if found == pi then Right(()) + else Left(SemanticError.PortInterfaceInvalidPort( + found.getLoc, + pi.getLoc + )) + case None => + Left(SemanticError.PortInterfaceMissingPort( + pi.getLoc + )) + } + }) + } + } yield () /** Gets a port instance by name */ - def getPortInstance(name: AstNode[Ast.Ident]): Result.Result[PortInstance] = + def getPortInstance(name: AstNode[Ast.Ident], interfaceName: String): Result.Result[PortInstance] = portMap.get(name.data) match { case Some(portInstance) => Right(portInstance) case None => Left( SemanticError.InvalidPortInstanceId( Locations.get(name.id), name.data, - defName + instanceType, + interfaceName ) ) } /** Add a port instance */ - def addPortInstance(instance: PortInstance): Result.Result[T] = + def addPortInstance(instance: PortInstance): Result.Result[PortInterface] = for { c <- updatePortMap(instance) c <- instance match { @@ -41,9 +90,9 @@ trait GenericPortInterface[T <: GenericPortInterface[T]]( def addImportedInterface( interface: Interface, importNodeId: AstNode.Id, - ): Result.Result[T] = { + ): Result.Result[PortInterface] = { val init = this.withPortMap(portMap) - Result.foldLeft(interface.portMap.values.toList)(init)((c, pi) => { + Result.foldLeft(interface.portInterface.portMap.values.toList)(init)((c, pi) => { c.addPortInstance(pi.withImportSpecifier(importNodeId)) match { case Right(cc) => Right(cc) case Left(err) => Left(SemanticError.InterfaceImport( @@ -56,7 +105,7 @@ trait GenericPortInterface[T <: GenericPortInterface[T]]( /** Add a port instance to the port map */ private def updatePortMap(instance: PortInstance): - Result.Result[T] = { + Result.Result[PortInterface] = { val name = instance.getUnqualifiedName portMap.get(name) match { case Some(prevInstance) => @@ -74,7 +123,7 @@ trait GenericPortInterface[T <: GenericPortInterface[T]]( /** Add a port instance to the special port map */ private def updateSpecialPortMap(instance: PortInstance.Special): - Result.Result[T] = { + Result.Result[PortInterface] = { val kind = instance.specifier.kind specialPortMap.get(kind) match { case Some(prevInstance) => diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/CheckTopologyInterface.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/CheckTopologyInterface.scala new file mode 100644 index 000000000..55d1df998 --- /dev/null +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/CheckTopologyInterface.scala @@ -0,0 +1,25 @@ +package fpp.compiler.analysis + +import fpp.compiler.ast._ +import fpp.compiler.util._ + +object CheckTopologyInterface { + + /** Check a topology implements all the interfaces that are listed in the AST */ + def check(a: Analysis, t: Topology): Result.Result[Unit] = + Result.foldLeft (t.aNode._2.data.implements) (()) ((_, impl) => { + for { + iface <- a.getInterface(impl.id) + _ <- { + t.portInterface.implements(iface.portInterface) match { + case Right(_) => Right(()) + case Left(err) => Left(SemanticError.InterfaceImplements( + Locations.get(impl.id), + err + )) + } + } + } yield (()) + }) + +} diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/GeneralPortNumbering.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/GeneralPortNumbering.scala index 8ea038e6d..f0a362672 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/GeneralPortNumbering.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/GeneralPortNumbering.scala @@ -45,10 +45,10 @@ object GeneralPortNumbering { /** Apply general numbering */ def apply(t: Topology): Topology = { // Fold over instances and ports - t.instanceMap.keys.foldLeft (t) ((t1, ci) => + t.componentInstanceMap.keys.foldLeft (t) ((t1, ci) => ci.component.portMap.values.foldLeft (t1) ((t2, pi) => { import PortInstance.Direction._ - val pii = PortInstanceIdentifier(ci, pi) + val pii = PortInstanceIdentifier(InterfaceInstance.fromComponentInstance(ci), pi) pi.getDirection match { case Some(Input) => numberInputPortArray(t2, pii) case Some(Output) => numberOutputPortArray(t2, pii) diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/MatchedPortNumbering.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/MatchedPortNumbering.scala index c689af208..61c73fcd6 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/MatchedPortNumbering.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/MatchedPortNumbering.scala @@ -203,7 +203,7 @@ object MatchedPortNumbering { /** Apply matched numbering */ def apply(t: Topology): Result.Result[Topology] = { // Fold over instances and matchings - Result.foldLeft (t.instanceMap.keys.toList) (t) ((t, ci) => + Result.foldLeft (t.componentInstanceMap.keys.toList) (t) ((t, ci) => Result.foldLeft (ci.component.portMatchingList) (t) ((t, pm) => handlePortMatching(t, ci, pm) ) @@ -242,14 +242,14 @@ object MatchedPortNumbering { // Map remote component instances to connections at pi def computeInstanceConnectionMap(pi: PortInstance): Result.Result[InstanceConnectionMap] = { val empty: InstanceConnectionMap = Map() - val pii = PortInstanceIdentifier(ci, pi) + val pii = PortInstanceIdentifier(InterfaceInstance.fromComponentInstance(ci), pi) val cs = t.getConnectionsAt(pii).toList.sorted Result.foldLeft (cs) (empty) ((m, c) => { if(c.isUnmatched) Right(m) else { val piiRemote = c.getOtherEndpoint(pi).port - val ciRemote = piiRemote.componentInstance + val _ @ InterfaceInstance.InterfaceComponentInstance(ciRemote) = piiRemote.interfaceInstance m.get(ciRemote) match { case Some(cPrev) => Left( SemanticError.DuplicateMatchedConnection( @@ -267,7 +267,7 @@ object MatchedPortNumbering { // Map port numbers to connections at pi // While computing the map, enforce the rule against duplicate connections def computePortConnectionMap(pi: PortInstance): Result.Result[PortConnectionMap] = { - val pii = PortInstanceIdentifier(ci, pi) + val pii = PortInstanceIdentifier(InterfaceInstance.fromComponentInstance(ci), pi) val cs = t.getConnectionsAt(pii).toList.sorted val empty: PortConnectionMap = Map() Result.foldLeft (cs) (empty) ((m, c) => { diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/PatternResolver.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/PatternResolver.scala index 7c66be44d..110cc6927 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/PatternResolver.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/PatternResolver.scala @@ -56,7 +56,7 @@ private sealed trait PatternResolver { loc, ci.getUnqualifiedName ) - } yield PortInstanceIdentifier(ci, pii) + } yield PortInstanceIdentifier(InterfaceInstance.fromComponentInstance(ci), pii) } private def resolveTargets: Result.Result[Iterable[Target]] = @@ -129,7 +129,7 @@ object PatternResolver { ): Result.Result[PortInstanceIdentifier] = { val (ci, loc) = ciUse ci.component.specialPortMap.get(kind) match { - case Some(pi) => Right(PortInstanceIdentifier(ci, pi)) + case Some(pi) => Right(PortInstanceIdentifier(InterfaceInstance.fromComponentInstance(ci), pi)) case None => missingPort(loc, kind.toString, ci.getUnqualifiedName) } } @@ -341,7 +341,7 @@ object PatternResolver { target: Target ) = // Health component does not ping itself - if (source.pingOut.componentInstance != target.pingIn.componentInstance) { + if (source.pingOut.interfaceInstance != target.pingIn.interfaceInstance) { val loc = pattern.getLoc List( connect(loc, source.pingOut, target.pingIn), diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePartiallyNumbered.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePartiallyNumbered.scala index 388edd4e1..2231be60b 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePartiallyNumbered.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePartiallyNumbered.scala @@ -9,8 +9,8 @@ object ResolvePartiallyNumbered { /** Check that connection instances are legal */ private def checkConnectionInstances(t: Topology): Result.Result[Unit] = { def checkConnection(c: Connection) = { - val fromInstance = c.from.port.componentInstance - val toInstance = c.to.port.componentInstance + val fromInstance = c.from.port.interfaceInstance + val toInstance = c.to.port.interfaceInstance for { _ <- t.lookUpInstanceAt(fromInstance, c.from.loc) _ <- t.lookUpInstanceAt(toInstance, c.to.loc) @@ -26,20 +26,38 @@ object ResolvePartiallyNumbered { yield () } + /** Check that connection instances are legal */ + private def checkPortInstances(t: Topology): Result.Result[Unit] = { + def checkPort(i: (PortInstanceIdentifier, Location)) = { + val (port, loc) = i + for { + _ <- t.lookUpInstanceAt(port.interfaceInstance, loc) + } + yield () + } + for { + _ <- Result.map( + t.portMap.toList.map(_._2), + checkPort + ) + } + yield () + } + /** Check the instances of a pattern */ private def checkPatternInstances(t: Topology, pattern: ConnectionPattern) = for { // Check the source _ <- { val (instance, loc) = pattern.source - t.lookUpInstanceAt(instance, loc) + t.lookUpInstanceAt(InterfaceInstance.fromComponentInstance(instance), loc) } // Check the targets _ <- Result.map( pattern.targets.toList, (pair: (ComponentInstance, Location)) => { val (instance, loc) = pair - t.lookUpInstanceAt(instance, loc) + t.lookUpInstanceAt(InterfaceInstance.fromComponentInstance(instance), loc) } ) } @@ -47,7 +65,7 @@ object ResolvePartiallyNumbered { /** Compute the transitively imported topologies */ private def computeTransitiveImports(a: Analysis, t: Topology) = { - val tis = t.directImportMap.keys.foldLeft (Set[Symbol.Topology]()) ((tis, ts) => { + val tis = t.directTopologies.keys.foldLeft (Set[Symbol.Topology]()) ((tis, ts) => { val t = a.topologyMap(ts) tis.union(t.transitiveImportSet) + ts }) @@ -58,7 +76,7 @@ object ResolvePartiallyNumbered { private def resolvePatterns(a: Analysis, t: Topology): Result.Result[Topology] = { import Ast.SpecConnectionGraph._ Result.foldLeft (t.patternMap.values.toList) (t) ((t, p) => { - val instances = t.instanceMap.keys + val instances = t.componentInstanceMap.keys for { _ <- checkPatternInstances(t, p) connections <- PatternResolver.resolve(a, p, instances) @@ -80,7 +98,7 @@ object ResolvePartiallyNumbered { Result.Result[Topology] = { // Check whether an instance exists def endpointExists(endpoint: Connection.Endpoint) = { - val instance = endpoint.port.componentInstance + val instance = endpoint.port.interfaceInstance t.instanceMap.get(instance) match { case Some(_) => true case None => false @@ -101,18 +119,43 @@ object ResolvePartiallyNumbered { Right(result) } + /** Resolve connections to interface instances of t to component instances */ + private def resolveInterfacesToComponentInstances(a: Analysis, t: Topology): Result.Result[Topology] = { + def visitConnection (graphName: Name.Unqualified) (tt: Topology, c: Connection): Topology = { + tt.addLocalConnection(graphName, c.copy( + from = c.from.getUnderlyingEndpoint(), + to = c.to.getUnderlyingEndpoint(), + )) + } + + def visitConnectionGraph(tt: Topology, graph: (Name.Unqualified, List[Connection])): Topology = { + graph._2.foldLeft (tt) (visitConnection (graph._1)) + } + + // Clear out connections of T and reprocess them + // Resolve all port instance identifiers to their 'true' component instance port + Right(t.localConnectionMap.foldLeft (t.copy( + localConnectionMap = Map(), + connectionMap = Map(), + outputConnectionMap = Map(), + inputConnectionMap = Map(), + fromPortNumberMap = Map(), + toPortNumberMap = Map() + )) (visitConnectionGraph)) + } + /** Resolve the instances of t */ private def resolveInstances(a: Analysis, t: Topology): Result.Result[Topology] = { def importInstance( t: Topology, - mapEntry: (ComponentInstance, Location) + mapEntry: (InterfaceInstance, Location) ) = { val (instance, loc) = mapEntry - t.addMergedInstance(instance, loc) + t.addInstance(instance, loc) } def importInstances(into: Topology, fromSymbol: Symbol.Topology) = a.topologyMap(fromSymbol).instanceMap.foldLeft (into) (importInstance) - Right(t.directImportMap.keys.foldLeft (t) (importInstances)) + Right(t.directTopologies.keys.foldLeft (t) (importInstances)) } /** Resolve this topology to a partially numbered topology */ @@ -120,7 +163,9 @@ object ResolvePartiallyNumbered { for { t <- Right(computeTransitiveImports(a, t)) t <- resolveInstances(a, t) + _ <- checkPortInstances(t) _ <- checkConnectionInstances(t) + t <- resolveInterfacesToComponentInstances(a, t) t <- resolveImportedConnections(a, t) t <- resolvePatterns(a, t) } diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePortNumbers.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePortNumbers.scala index 2ff980667..61554ad89 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePortNumbers.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolvePortNumbers.scala @@ -55,7 +55,7 @@ object ResolvePortNumbers { Right(()) else { val loc = pi.getLoc - val instanceLoc = pii.componentInstance.getLoc + val instanceLoc = pii.interfaceInstance.getLoc Left( SemanticError.TooManyOutputPorts( loc, diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopology.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopology.scala index c0b10f694..e44aead51 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopology.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopology.scala @@ -8,9 +8,14 @@ object ResolveTopology { /** Resolve a topology */ def resolve(a: Analysis, t: Topology): Result.Result[Topology] = for { + t <- ResolveTopologyInstances.resolve(a, t) + t <- ResolveTopologyPortInterface.resolve(a, t) t <- ResolvePartiallyNumbered.resolve(a, t) t <- ResolvePortNumbers.resolve(t) t <- Right(ResolveUnconnectedPorts.resolve(t)) + + // Check the topologies interface against the `implements` clause + _ <- CheckTopologyInterface.check(a, t) } yield t diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopologyInstances.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopologyInstances.scala new file mode 100644 index 000000000..1f8014ccc --- /dev/null +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopologyInstances.scala @@ -0,0 +1,27 @@ +package fpp.compiler.analysis + +import fpp.compiler.ast._ +import fpp.compiler.util._ + +object ResolveTopologyInstances { + + /** Resolve a topology */ + def resolve(a: Analysis, t: Topology): Result.Result[Topology] = + for { + t <- { + val tops = t.directTopologies.toList + Right(tops.foldLeft (t) ((t, ti) => { + t.addInstance(InterfaceInstance.fromTopology(a.topologyMap(ti._1)), ti._2) + })) + } + + t <- { + val comps = t.directComponentInstances.toList + Right(comps.foldLeft (t) ((t, ci) => { + t.addInstance(InterfaceInstance.fromComponentInstance(a.componentInstanceMap(ci._1)), ci._2) + })) + } + } + yield t + +} diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopologyPortInterface.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopologyPortInterface.scala new file mode 100644 index 000000000..3527f488a --- /dev/null +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveTopologyPortInterface.scala @@ -0,0 +1,24 @@ +package fpp.compiler.analysis + +import fpp.compiler.ast._ +import fpp.compiler.util._ + +object ResolveTopologyPortInterface { + + /** Resolve a topology's port interface */ + def resolve(a: Analysis, t: Topology): Result.Result[Topology] = + Result.foldLeft (t.ports) (t) ((t, aNode) => { + val (_, node, _) = aNode + val topPort = node.data + + for { + instance <- PortInstanceIdentifier.fromNode(a, topPort.underlyingPort) + t <- t.addPort( + aNode, + instance, + Locations.get(node.id) + ) + } yield t + }) + +} diff --git a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveUnconnectedPorts.scala b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveUnconnectedPorts.scala index 67ffe208e..90d97dfa3 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveUnconnectedPorts.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/ResolveTopology/ResolveUnconnectedPorts.scala @@ -9,9 +9,9 @@ object ResolveUnconnectedPorts { /** Compute the unconnected ports of t */ def resolve(t: Topology): Topology = { // Fold over instances and ports - t.instanceMap.keys.foldLeft (t) ((t1, ci) => + t.componentInstanceMap.keys.foldLeft (t) ((t1, ci) => ci.component.portMap.values.foldLeft (t1) ((t2, pi) => { - val pii = PortInstanceIdentifier(ci, pi) + val pii = PortInstanceIdentifier(InterfaceInstance.fromComponentInstance(ci), pi) val direction = pi.getDirection val n = t2.getConnectionsAt(pii).size (direction, n) match { diff --git a/compiler/lib/src/main/scala/analysis/Semantics/Symbol.scala b/compiler/lib/src/main/scala/analysis/Semantics/Symbol.scala index 8a8b44951..839108f98 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/Symbol.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/Symbol.scala @@ -11,6 +11,9 @@ sealed trait Symbol extends SymbolInterface { /** A type symbol */ sealed trait TypeSymbol extends Symbol +/** A port interface instance symbol */ +sealed trait InterfaceInstanceSymbol extends Symbol + object Symbol { final case class AbsType(node: Ast.Annotated[AstNode[Ast.DefAbsType]]) extends TypeSymbol { @@ -31,7 +34,7 @@ object Symbol { override def getNodeId = node._2.id override def getUnqualifiedName = node._2.data.name } - final case class ComponentInstance(node: Ast.Annotated[AstNode[Ast.DefComponentInstance]]) extends Symbol { + final case class ComponentInstance(node: Ast.Annotated[AstNode[Ast.DefComponentInstance]]) extends InterfaceInstanceSymbol { override def getNodeId = node._2.id override def getUnqualifiedName = node._2.data.name } @@ -70,7 +73,7 @@ object Symbol { override def getNodeId = node._2.id override def getUnqualifiedName = node._2.data.name } - final case class Topology(node: Ast.Annotated[AstNode[Ast.DefTopology]]) extends Symbol { + final case class Topology(node: Ast.Annotated[AstNode[Ast.DefTopology]]) extends InterfaceInstanceSymbol { override def getNodeId = node._2.id override def getUnqualifiedName = node._2.data.name } diff --git a/compiler/lib/src/main/scala/analysis/Semantics/TlmPacketSet.scala b/compiler/lib/src/main/scala/analysis/Semantics/TlmPacketSet.scala index ed021fcec..e3caac247 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/TlmPacketSet.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/TlmPacketSet.scala @@ -93,7 +93,7 @@ object TlmPacketSet { then { val entry = d.tlmChannelEntryMap(id) val channelName = entry.getQualifiedName - val instanceLoc = t.instanceMap(entry.instance) + val instanceLoc = t.instanceMap(InterfaceInstance.fromComponentInstance(entry.instance)) val channelLoc = entry.tlmChannel.getLoc val msg = s"""|telemetry channel $channelName is neither used nor marked as omitted | diff --git a/compiler/lib/src/main/scala/analysis/Semantics/Topology.scala b/compiler/lib/src/main/scala/analysis/Semantics/Topology.scala index bfab21577..1ecf32b6a 100644 --- a/compiler/lib/src/main/scala/analysis/Semantics/Topology.scala +++ b/compiler/lib/src/main/scala/analysis/Semantics/Topology.scala @@ -7,12 +7,22 @@ import fpp.compiler.util._ case class Topology( /** The AST node defining the topology */ aNode: Ast.Annotated[AstNode[Ast.DefTopology]], + /** Fully qualified name of the topology */ + qualifiedName: Name.Qualified, /** The directly imported topologies */ - directImportMap: Map[Symbol.Topology, Location] = Map(), + directTopologies: Map[Symbol.Topology, Location] = Map(), + /** The directly imported component instances */ + directComponentInstances: Map[Symbol.ComponentInstance, Location] = Map(), /** The transitively imported topologies */ transitiveImportSet: Set[Symbol.Topology] = Set(), /** The instances of this topology */ - instanceMap: Map[ComponentInstance, Location] = Map(), + instanceMap: Map[InterfaceInstance, Location] = Map(), + /** List of the ports in the topology to resolve later */ + ports: List[Ast.Annotated[AstNode[Ast.SpecTopPort]]] = List(), + /** The ports in the topology resolved to their port instance identifiers */ + portMap: Map[Name.Unqualified, (PortInstanceIdentifier, Location)] = Map(), + /** Resolved port interface of the topology */ + portInterface: PortInterface = PortInterface("topology"), /** The connection patterns of this topology */ patternMap: Map[Ast.SpecConnectionGraph.Pattern.Kind, ConnectionPattern] = Map(), /** The connections of this topology, indexed by graph name */ @@ -34,6 +44,60 @@ case class Topology( /** Gets the name of the topology */ def getName = aNode._2.data.name + /** Add a port to the topology */ + def addPortNode( + node: Ast.Annotated[AstNode[Ast.SpecTopPort]] + ) = { + this.copy(ports = this.ports :+ node) + } + + /** Add a port to the topology */ + def addPort( + node: Ast.Annotated[AstNode[Ast.SpecTopPort]], + underlyingPort: PortInstanceIdentifier, + loc: Location, + ) = { + val name = node._2.data.name + + for { + // Check that the topology port for a general port + pi <- underlyingPort.portInstance match { + case _: PortInstance.Internal => Left(SemanticError.InvalidPortInstance( + loc, + "topology port cannot point to an internal port", + Locations.get(underlyingPort.portInstance.getNodeId) + )) + + case _ => { + for { + iface <- this.portInterface.addPortInstance( + PortInstance.Topology( + node, + underlyingPort.portInstance + ) + ) + } yield iface + } + } + + t <- portMap.get(name) match { + case Some((_, prevPortLoc)) => + Left(SemanticError.DuplicatePortInstance( + name, + loc, + List(), + prevPortLoc, + List() + )) + case None => + Right(this.copy( + portMap = portMap + (name -> (underlyingPort, loc)), + portInterface = pi + )) + } + } yield t + } + /** Add a connection */ def addConnection( graphName: Name.Unqualified, @@ -100,30 +164,11 @@ case class Topology( Right(this.copy(patternMap = pm)) } - /** Add an imported topology */ - def addImportedTopology( - symbol: Symbol.Topology, - loc: Location - ): Result.Result[Topology] = - directImportMap.get(symbol) match { - case Some(prevLoc) => Left( - SemanticError.DuplicateTopology( - symbol.getUnqualifiedName, - loc, - prevLoc - ) - ) - case None => - val map = directImportMap + (symbol -> loc) - Right(this.copy(directImportMap = map)) - } - /** Add an instance that may already be there */ - def addMergedInstance( - instance: ComponentInstance, + def addInstance( + instance: InterfaceInstance, loc: Location ): Topology = { - // Private overrides public val pairOpt = instanceMap.get(instance) // Use the previous location, if it exists val mergedLoc = pairOpt.getOrElse(loc) @@ -132,19 +177,38 @@ case class Topology( } /** Add an instance that must be unique */ - def addUniqueInstance( - instance: ComponentInstance, + def addInstanceSymbol( + symbol: InterfaceInstanceSymbol, loc: Location ): Result.Result[Topology] = - instanceMap.get(instance) match { - case Some(prevLoc) => Left( - SemanticError.DuplicateInstance( - instance.getUnqualifiedName, - loc, - prevLoc - ) - ) - case None => Right(addMergedInstance(instance, loc)) + symbol match { + case ci: Symbol.ComponentInstance => + directComponentInstances.get(ci) match { + case Some(prevLoc) => Left( + SemanticError.DuplicateInstance( + symbol.getUnqualifiedName, + loc, + prevLoc + ) + ) + case None => + val map = directComponentInstances + (ci -> loc) + Right(this.copy(directComponentInstances = map)) + } + + case top: Symbol.Topology => + directTopologies.get(top) match { + case Some(prevLoc) => Left( + SemanticError.DuplicateInstance( + symbol.getUnqualifiedName, + loc, + prevLoc + ) + ) + case None => + val map = directTopologies + (top -> loc) + Right(this.copy(directTopologies = map)) + } } /** Assigns a port number to a connection at a port instance */ @@ -204,9 +268,19 @@ case class Topology( } } + def getQualifiedName = qualifiedName + /** Gets the unqualified name of the topology */ def getUnqualifiedName = aNode._2.data.name + /** Gets the location of the topology */ + def getLoc: Location = Locations.get(aNode._2.id) + + /** Precompute the set of component instances in the topology */ + val componentInstanceMap: Map[ComponentInstance, Location] = { + instanceMap collect { case (InterfaceInstance.InterfaceComponentInstance(ci), loc: Location) => (ci, loc) } + } + /** Gets the set of used port numbers */ def getUsedPortNumbers(pi: PortInstance, cs: Iterable[Connection]): Set[Int] = cs.foldLeft (Set[Int]()) ((s, c) => @@ -216,15 +290,15 @@ case class Topology( } ) - /** Look up a component instance used at a location */ + /** Look up a interface instance used at a location */ def lookUpInstanceAt( - instance: ComponentInstance, + instance: InterfaceInstance, loc: Location ): Result.Result[Location] = instanceMap.get(instance) match { case Some(result) => Right(result) case None => Left( - SemanticError.InvalidComponentInstance( + SemanticError.InvalidInterfaceInstance( loc, instance.getUnqualifiedName, this.getUnqualifiedName diff --git a/compiler/lib/src/main/scala/analysis/UsedSymbols.scala b/compiler/lib/src/main/scala/analysis/UsedSymbols.scala index d9653852c..92b939ef4 100644 --- a/compiler/lib/src/main/scala/analysis/UsedSymbols.scala +++ b/compiler/lib/src/main/scala/analysis/UsedSymbols.scala @@ -47,7 +47,7 @@ object UsedSymbols extends UseAnalyzer { use: Name.Qualified ) = addSymbol(a, node) - override def componentInstanceUse( + override def interfaceInstanceUse( a: Analysis, node: AstNode[Ast.QualIdent], use: Name.Qualified @@ -59,12 +59,6 @@ object UsedSymbols extends UseAnalyzer { use: Name.Qualified ) = addSymbol(a, node) - override def topologyUse( - a: Analysis, - node: AstNode[Ast.QualIdent], - use: Name.Qualified - ) = addSymbol(a, node) - override def interfaceUse( a: Analysis, node: AstNode[Ast.QualIdent], diff --git a/compiler/lib/src/main/scala/ast/Ast.scala b/compiler/lib/src/main/scala/ast/Ast.scala index 466e14b6d..55a7f5b3a 100644 --- a/compiler/lib/src/main/scala/ast/Ast.scala +++ b/compiler/lib/src/main/scala/ast/Ast.scala @@ -322,12 +322,11 @@ object Ast { final case class TopologyMember(node: Annotated[TopologyMember.Node]) object TopologyMember { sealed trait Node - final case class SpecCompInstance(node: AstNode[Ast.SpecCompInstance]) extends Node + final case class SpecInstance(node: AstNode[Ast.SpecInstance]) extends Node final case class SpecConnectionGraph(node: AstNode[Ast.SpecConnectionGraph]) extends Node final case class SpecInclude(node: AstNode[Ast.SpecInclude]) extends Node final case class SpecTopPort(node: AstNode[Ast.SpecTopPort]) extends Node final case class SpecTlmPacketSet(node: AstNode[Ast.SpecTlmPacketSet]) extends Node - final case class SpecTopImport(node: AstNode[Ast.SpecImport]) extends Node } /** Formal parameter */ @@ -356,7 +355,7 @@ object Ast { /** Port instance identifier */ final case class PortInstanceIdentifier( - componentInstance: AstNode[QualIdent], + interfaceInstance: AstNode[QualIdent], portName: AstNode[Ident] ) @@ -471,7 +470,7 @@ object Ast { } /** Component instance specifier */ - final case class SpecCompInstance( + final case class SpecInstance( instance: AstNode[QualIdent] ) @@ -602,7 +601,7 @@ object Ast { case object Component extends Kind { override def toString = "component" } - case object ComponentInstance extends Kind { + case object Instance extends Kind { override def toString = "instance" } case object Constant extends Kind { @@ -614,9 +613,6 @@ object Ast { case object StateMachine extends Kind { override def toString = "state machine" } - case object Topology extends Kind { - override def toString = "topology" - } case object Type extends Kind { override def toString = "type" } @@ -808,7 +804,7 @@ object Ast { /** Topology port specifier */ final case class SpecTopPort( name: Ident, - underlyingPort: AstNode[QualIdent], + underlyingPort: AstNode[PortInstanceIdentifier], ) /** Import specifier */ diff --git a/compiler/lib/src/main/scala/ast/AstTransformer.scala b/compiler/lib/src/main/scala/ast/AstTransformer.scala index 80e6d09e3..6bf5c3bb2 100644 --- a/compiler/lib/src/main/scala/ast/AstTransformer.scala +++ b/compiler/lib/src/main/scala/ast/AstTransformer.scala @@ -119,10 +119,10 @@ trait AstTransformer { node: Ast.Annotated[AstNode[Ast.SpecCommand]] ): ResultAnnotatedNode[Ast.SpecCommand] = Right(default(in), node) - def specCompInstanceAnnotatedNode( + def specInstanceAnnotatedNode( in: In, - node: Ast.Annotated[AstNode[Ast.SpecCompInstance]] - ): ResultAnnotatedNode[Ast.SpecCompInstance] = Right(default(in), node) + node: Ast.Annotated[AstNode[Ast.SpecInstance]] + ): ResultAnnotatedNode[Ast.SpecInstance] = Right(default(in), node) def specConnectionGraphAnnotatedNode( in: In, @@ -204,11 +204,6 @@ trait AstTransformer { node: Ast.Annotated[AstNode[Ast.SpecTlmPacketSet]] ): ResultAnnotatedNode[Ast.SpecTlmPacketSet] = Right(default(in), node) - def specTopImportAnnotatedNode( - in: In, - node: Ast.Annotated[AstNode[Ast.SpecImport]] - ): ResultAnnotatedNode[Ast.SpecImport] = Right(default(in), node) - def specInterfaceImportAnnotatedNode( in: In, node: Ast.Annotated[AstNode[Ast.SpecImport]] @@ -396,8 +391,8 @@ trait AstTransformer { } val (pre, node, post) = member.node node match { - case Ast.TopologyMember.SpecCompInstance(node1) => - transform(specCompInstanceAnnotatedNode(in, (pre, node1, post)), Ast.TopologyMember.SpecCompInstance(_)) + case Ast.TopologyMember.SpecInstance(node1) => + transform(specInstanceAnnotatedNode(in, (pre, node1, post)), Ast.TopologyMember.SpecInstance(_)) case Ast.TopologyMember.SpecConnectionGraph(node1) => transform(specConnectionGraphAnnotatedNode(in, (pre, node1, post)), Ast.TopologyMember.SpecConnectionGraph(_)) case Ast.TopologyMember.SpecInclude(node1) => @@ -406,8 +401,6 @@ trait AstTransformer { transform(specTopPortAnnotatedNode(in, (pre, node1, post)), Ast.TopologyMember.SpecTopPort(_)) case Ast.TopologyMember.SpecTlmPacketSet(node1) => transform(specTlmPacketSetAnnotatedNode(in, (pre, node1, post)), Ast.TopologyMember.SpecTlmPacketSet(_)) - case Ast.TopologyMember.SpecTopImport(node1) => - transform(specTopImportAnnotatedNode(in, (pre, node1, post)), Ast.TopologyMember.SpecTopImport(_)) } } diff --git a/compiler/lib/src/main/scala/ast/AstVisitor.scala b/compiler/lib/src/main/scala/ast/AstVisitor.scala index e38b2a94d..c42831b1f 100644 --- a/compiler/lib/src/main/scala/ast/AstVisitor.scala +++ b/compiler/lib/src/main/scala/ast/AstVisitor.scala @@ -86,7 +86,7 @@ trait AstVisitor { def specCommandAnnotatedNode(in: In, node: Ast.Annotated[AstNode[Ast.SpecCommand]]): Out = default(in) - def specCompInstanceAnnotatedNode(in: In, node: Ast.Annotated[AstNode[Ast.SpecCompInstance]]): Out = default(in) + def specInstanceAnnotatedNode(in: In, node: Ast.Annotated[AstNode[Ast.SpecInstance]]): Out = default(in) def specConnectionGraphAnnotatedNode(in: In, node: Ast.Annotated[AstNode[Ast.SpecConnectionGraph]]): Out = default(in) @@ -128,8 +128,6 @@ trait AstVisitor { def specTlmPacketSetAnnotatedNode(in: In, node: Ast.Annotated[AstNode[Ast.SpecTlmPacketSet]]): Out = default(in) - def specTopImportAnnotatedNode(in: In, node: Ast.Annotated[AstNode[Ast.SpecImport]]): Out = default(in) - def specInterfaceImportAnnotatedNode(in: In, node: Ast.Annotated[AstNode[Ast.SpecImport]]): Out = default(in) def transUnit(in: In, tu: Ast.TransUnit): Out = default(in) @@ -255,12 +253,11 @@ trait AstVisitor { final def matchTopologyMember(in: In, member: Ast.TopologyMember): Out = { val (pre, node, post) = member.node node match { - case Ast.TopologyMember.SpecCompInstance(node1) => specCompInstanceAnnotatedNode(in, (pre, node1, post)) + case Ast.TopologyMember.SpecInstance(node1) => specInstanceAnnotatedNode(in, (pre, node1, post)) case Ast.TopologyMember.SpecConnectionGraph(node1) => specConnectionGraphAnnotatedNode(in, (pre, node1, post)) case Ast.TopologyMember.SpecInclude(node1) => specIncludeAnnotatedNode(in, (pre, node1, post)) case Ast.TopologyMember.SpecTopPort(node1) => specTopPortAnnotatedNode(in, (pre, node1, post)) case Ast.TopologyMember.SpecTlmPacketSet(node1) => specTlmPacketSetAnnotatedNode(in, (pre, node1, post)) - case Ast.TopologyMember.SpecTopImport(node1) => specTopImportAnnotatedNode(in, (pre, node1, post)) } } diff --git a/compiler/lib/src/main/scala/codegen/AstWriter.scala b/compiler/lib/src/main/scala/codegen/AstWriter.scala index 500afbb2a..888f2f7ac 100644 --- a/compiler/lib/src/main/scala/codegen/AstWriter.scala +++ b/compiler/lib/src/main/scala/codegen/AstWriter.scala @@ -371,13 +371,13 @@ object AstWriter extends AstVisitor with LineUtils { ).map(indentIn) } - override def specCompInstanceAnnotatedNode( + override def specInstanceAnnotatedNode( in: In, - aNode: Ast.Annotated[AstNode[Ast.SpecCompInstance]] + aNode: Ast.Annotated[AstNode[Ast.SpecInstance]] ) = { val (_, node, _) = aNode val data = node.data - lines("spec comp instance") ++ ( + lines("spec interface instance") ++ ( qualIdent(data.instance.data) ).map(indentIn) } @@ -712,21 +712,11 @@ object AstWriter extends AstVisitor with LineUtils { lines("spec top port"), List.concat( ident(data.name), - qualIdent(data.underlyingPort.data) + portInstanceIdentifier(data.underlyingPort.data) ).map(indentIn) ) } - override def specTopImportAnnotatedNode( - in: In, - aNode: Ast.Annotated[AstNode[Ast.SpecImport]] - ) = { - val (_, node, _) = aNode - val data = node.data - lines("spec top import") ++ - qualIdent(data.sym.data).map(indentIn) - } - override def specInterfaceImportAnnotatedNode( in: In, aNode: Ast.Annotated[AstNode[Ast.SpecImport]] @@ -866,7 +856,7 @@ object AstWriter extends AstVisitor with LineUtils { } private def portInstanceIdentifier(pii: Ast.PortInstanceIdentifier): Out = { - val qid = Ast.QualIdent.Qualified(pii.componentInstance, pii.portName) + val qid = Ast.QualIdent.Qualified(pii.interfaceInstance, pii.portName) qualIdent(qid) } diff --git a/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/ComponentCppWriterUtils.scala b/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/ComponentCppWriterUtils.scala index 1ee8e0bb2..ebc3ea95b 100644 --- a/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/ComponentCppWriterUtils.scala +++ b/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/ComponentCppWriterUtils.scala @@ -512,6 +512,7 @@ abstract class ComponentCppWriterUtils( case PortInstance.General(aNode, _, _, _, _, _) => aNode case PortInstance.Special(aNode, _, _, _, _, _) => aNode case PortInstance.Internal(aNode, _, _) => aNode + case _: PortInstance.Topology => throw InternalError("topology port not flattened") } AnnotationCppWriter.asStringOpt(aNode) @@ -599,6 +600,7 @@ abstract class ComponentCppWriterUtils( } case _: PortInstance.Special => "special" case _: PortInstance.Internal => "internal" + case _: PortInstance.Topology => throw InternalError("topology port not flattened") } def getPortListTypeString(ports: List[PortInstance]): String = diff --git a/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/TestWriter/ComponentTesterBaseWriter.scala b/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/TestWriter/ComponentTesterBaseWriter.scala index 11b0500bd..0f9489a46 100644 --- a/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/TestWriter/ComponentTesterBaseWriter.scala +++ b/compiler/lib/src/main/scala/codegen/CppWriter/ComponentCppWriter/TestWriter/ComponentTesterBaseWriter.scala @@ -1523,6 +1523,7 @@ case class ComponentTesterBaseWriter( ) } case _: PortInstance.Internal => Nil + case _: PortInstance.Topology => throw InternalError("topology port not flattened") } lazy val member = functionClassMember( Some(s"Static function for port ${testerPortName(p)}"), diff --git a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopComponentIncludes.scala b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopComponentIncludes.scala index 6768039d7..20426c4c2 100644 --- a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopComponentIncludes.scala +++ b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopComponentIncludes.scala @@ -12,7 +12,7 @@ case class TopComponentIncludes( def getHeaderStrings: List[String] = { val t = s.a.topologyMap(Symbol.Topology(aNode)) - t.instanceMap.keys.toList.map(getHeaderString).distinct + t.componentInstanceMap.keys.toList.map(getHeaderString).distinct } private def getHeaderString(ci: ComponentInstance): String = diff --git a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopConfigObjects.scala b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopConfigObjects.scala index 2e6676810..e434c1182 100644 --- a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopConfigObjects.scala +++ b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopConfigObjects.scala @@ -145,13 +145,16 @@ case class TopConfigObjects( } // Map the port numbers to ports, and compute the max port number mapAndMaxNum <- { - val pii = PortInstanceIdentifier(ci, pingOutPort) + val pii = PortInstanceIdentifier(InterfaceInstance.fromComponentInstance(ci), pingOutPort) val m0: Map[Int, ComponentInstance] = Map() val mn = t.getConnectionsFrom(pii).foldLeft ((m0, 0)) { case ((m, n), c) => val n1 = t.getPortNumber(pii.portInstance, c).get ( - m + (n1 -> c.to.port.componentInstance), + m + (n1 -> (c.to.port.interfaceInstance match { + case InterfaceInstance.InterfaceComponentInstance(ci) => ci + case _ => throw InternalError("topology connections not flattened") + })), if (n1 > n) n1 else n ) } diff --git a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopHelperFns.scala b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopHelperFns.scala index 66d023ed5..4a0775d33 100644 --- a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopHelperFns.scala +++ b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopHelperFns.scala @@ -105,7 +105,7 @@ case class TopHelperFns( private def getConnectComponentsFn = { def getPortInfo(pii: PortInstanceIdentifier, c: Connection) = { - val cppQualifiedName = CppWriter.writeQualifiedName(pii.componentInstance.qualifiedName) + val cppQualifiedName = CppWriter.writeQualifiedName(pii.interfaceInstance.getQualifiedName) val portName = pii.portInstance.getUnqualifiedName val portNumber = t.getPortNumber(pii.portInstance, c).get (cppQualifiedName, portName, portNumber) diff --git a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopologyCppWriterUtils.scala b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopologyCppWriterUtils.scala index 886a309ad..d874b49bc 100644 --- a/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopologyCppWriterUtils.scala +++ b/compiler/lib/src/main/scala/codegen/CppWriter/TopologyCppWriter/TopologyCppWriterUtils.scala @@ -18,7 +18,7 @@ abstract class TopologyCppWriterUtils( val t: Topology = s.a.topologyMap(symbol) - val instances = t.instanceMap.keys.toList.sorted + val instances = t.componentInstanceMap.keys.toList.sorted val instancesByBaseId: List[ComponentInstance] = instances.sortWith { case (a, b) => if (a.baseId != b.baseId) a.baseId < b.baseId diff --git a/compiler/lib/src/main/scala/codegen/FppWriter.scala b/compiler/lib/src/main/scala/codegen/FppWriter.scala index d100271a1..05c19f4b4 100644 --- a/compiler/lib/src/main/scala/codegen/FppWriter.scala +++ b/compiler/lib/src/main/scala/codegen/FppWriter.scala @@ -434,9 +434,9 @@ object FppWriter extends AstVisitor with LineUtils { joinOptWithBreak (data.queueFull) ("") (applyToData(queueFull)) } - override def specCompInstanceAnnotatedNode( + override def specInstanceAnnotatedNode( in: In, - aNode: Ast.Annotated[AstNode[Ast.SpecCompInstance]] + aNode: Ast.Annotated[AstNode[Ast.SpecInstance]] ) = { val (_, node, _) = aNode val data = node.data @@ -729,16 +729,7 @@ object FppWriter extends AstVisitor with LineUtils { val (_, node, _) = aNode val data = node.data lines(s"port ${ident(data.name)} = "). - join("") (qualIdent(data.underlyingPort.data)) - } - - override def specTopImportAnnotatedNode( - in: In, - aNode: Ast.Annotated[AstNode[Ast.SpecImport]] - ) = { - val (_, node, _) = aNode - val data = node.data - Line.addPrefix("import ", qualIdent(data.sym.data)) + join("") (portInstanceId(data.underlyingPort.data)) } override def specInterfaceImportAnnotatedNode( @@ -855,7 +846,7 @@ object FppWriter extends AstVisitor with LineUtils { private def identAsLines = lines compose ident private def portInstanceId(pii: Ast.PortInstanceIdentifier) = - qualIdent(pii.componentInstance.data). + qualIdent(pii.interfaceInstance.data). addSuffix(s".${ident(pii.portName.data)}") private def qualIdent(qid: Ast.QualIdent): Out = diff --git a/compiler/lib/src/main/scala/codegen/JsonEncoder/AnalysisJsonEncoder.scala b/compiler/lib/src/main/scala/codegen/JsonEncoder/AnalysisJsonEncoder.scala index 3ce1c91fb..a5fec272e 100644 --- a/compiler/lib/src/main/scala/codegen/JsonEncoder/AnalysisJsonEncoder.scala +++ b/compiler/lib/src/main/scala/codegen/JsonEncoder/AnalysisJsonEncoder.scala @@ -46,6 +46,16 @@ object AnalysisJsonEncoder extends JsonEncoder{ ) ) + // JSON encoder for interface instances + // Report the interface instance kind and the info in the InterfaceInstance trait + private def interfaceInstanceAsJson(instance: InterfaceInstance) = addTypeNameKey( + instance, + Json.obj( + "qualifiedName" -> instance.getQualifiedName.asJson, + "unqualifiedName" -> instance.getUnqualifiedName.asJson + ) + ) + // JSON encoder for component instances // Use the default Circe encoding, but replace the component instance // with its AST node. We can use the ID to look up the component @@ -67,6 +77,15 @@ object AnalysisJsonEncoder extends JsonEncoder{ private implicit val generalPortInstanceKindEncoder: Encoder[PortInstance.General.Kind] = Encoder.encodeString.contramap(getUnqualifiedClassName(_)) + private implicit val endpointEncoder: Encoder[Connection.Endpoint] = + io.circe.generic.semiauto.deriveEncoder[Connection.Endpoint] + + private implicit val interfaceInstanceEncoder: Encoder[InterfaceInstance] = + Encoder.instance(interfaceInstanceAsJson) + + private implicit val portInstanceEncoder: Encoder[PortInstance] = + io.circe.generic.semiauto.deriveEncoder[PortInstance] + private implicit val portInstanceIdentifierEncoder: Encoder[PortInstanceIdentifier] = io.circe.generic.semiauto.deriveEncoder[PortInstanceIdentifier] @@ -111,7 +130,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ private implicit val commandMapEncoder: Encoder[Map[Command.Opcode, Command]] = { def f1(opcode: Command.Opcode) = opcode.toString def f2(command: Command) = command.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val componentInstanceMapEncoder: @@ -133,20 +152,27 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(id: Container.Id) = id.toString def f2(c: Container) = c.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } - private implicit val directImportMapEncoder: + private implicit val directTopologiesMapEncoder: Encoder[Map[Symbol.Topology, Location]] = { def f2(loc: Location) = loc.asJson Encoder.instance (mapAsJsonMap (symbolToIdString) (f2) _) } + private implicit val directComponentInstancesEncoder: + Encoder[Map[Symbol.ComponentInstance, Location]] = + { + def f2(loc: Location) = loc.asJson + Encoder.instance (mapAsJsonMap (symbolToIdString) (f2) _) + } + private implicit val eventMapEncoder: Encoder[Map[Event.Id, Event]] = { def f1(id: Event.Id) = id.toString def f2(event: Event) = event.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val interfaceMapEncoder: @@ -166,7 +192,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ private implicit val limitsEncoder: Encoder[TlmChannel.Limits] = { def f1(kind: Ast.SpecTlmChannel.LimitKind) = kind.toString def f2(tlmPoint: (AstNode.Id, Value)) = tlmPoint.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val nameGroupSymbolMapEncoder: @@ -174,7 +200,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(nameGroup: NameGroup) = getUnqualifiedClassName(nameGroup) def f2(map: NameSymbolMap) = map.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val nameSymbolMapEncoder: @@ -182,13 +208,13 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(name: Name.Unqualified) = name.toString def f2(symbol: Symbol) = symbol.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val paramMapEncoder: Encoder[Map[Param.Id, Param]] = { def f1(id: Param.Id) = id.toString def f2(param: Param) = param.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val patternMapEncoder: @@ -197,7 +223,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ def f1(kind: Ast.SpecConnectionGraph.Pattern.Kind) = getUnqualifiedClassName(kind) def f2(pattern: ConnectionPattern) = pattern.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val recordMapEncoder: @@ -205,14 +231,14 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(id: Record.Id) = id.toString def f2(c: Record) = c.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val signalStateTransitionMapEncoder: Encoder[StateMachineAnalysis.SignalStateTransitionMap] = { def f1(s: StateMachineSymbol.Signal) = s.getNodeId.toString def f2(s: StateMachineSymbol.State) = s.getNodeId.toString def f3(t: Transition.Guarded) = t.asJson - Encoder.instance (mapAsJsonMap (f1) (mapAsJsonMap (f2) (f3) _) _) + Encoder.instance (mapAsJsonMap(f1)(mapAsJsonMap(f2)(f3) _)) } private implicit val specialKindMapEncoder: @@ -220,7 +246,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(kind: Ast.SpecPortInstance.SpecialKind) = kind.toString def f2(pi: PortInstance.Special) = pi.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val stateMachineMapEncoder: @@ -235,7 +261,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(nameGroup: StateMachineNameGroup) = getUnqualifiedClassName(nameGroup) def f2(map: SmNameSymbolMap) = map.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val stateMachineNameSymbolMapEncoder: @@ -243,27 +269,27 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(name: Name.Unqualified) = name.toString def f2(symbol: StateMachineSymbol) = symbol.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val stateMachineSymbolScopeMapEncoder: Encoder[Map[StateMachineSymbol, StateMachineScope]] = { def f2(s: StateMachineScope) = s.asJson - Encoder.instance (mapAsJsonMap (stateMachineSymbolToIdString) (f2) _) + Encoder.instance (mapAsJsonMap(stateMachineSymbolToIdString)(f2)) } private implicit val stateMachineUseDefMapEncoder: Encoder[Map[AstNode.Id, StateMachineSymbol]] = { def f2(s: StateMachineSymbol) = s.asJson - Encoder.instance (mapAsJsonMap (astNodeIdToString) (f2) _) + Encoder.instance (mapAsJsonMap(astNodeIdToString)(f2)) } private implicit val symbolMapEncoder: Encoder[Map[Symbol, Symbol]] = { def f2(s: Symbol) = symbolAsJson(s) - Encoder.instance (mapAsJsonMap (symbolToIdString) (f2) _) + Encoder.instance (mapAsJsonMap(symbolToIdString)(f2)) } private implicit val symbolScopeMapEncoder: Encoder[Map[Symbol, Scope]] = { def f2(s: Scope) = s.asJson - Encoder.instance (mapAsJsonMap (symbolToIdString) (f2) _) + Encoder.instance (mapAsJsonMap(symbolToIdString)(f2)) } private implicit val tlmChannelMapEncoder: @@ -271,7 +297,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ { def f1(id: TlmChannel.Id) = id.toString def f2(channel: TlmChannel) = channel.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val topologyMapEncoder: @@ -284,34 +310,37 @@ object AnalysisJsonEncoder extends JsonEncoder{ private implicit val transitionExprMapEncoder: Encoder[StateMachineAnalysis.TransitionExprMap] = { def f1(n: AstNode[Ast.TransitionExpr]) = n.id.toString def f2(t: Transition) = t.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val transitionGraphArcMapEncoder: Encoder[TransitionGraph.ArcMap] = { def f1(n: TransitionGraph.Node) = n.soc.getSymbol.getNodeId.toString def f2(as: Set[TransitionGraph.Arc]) = (as.map(elem => elem.asJson)).toList.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } private implicit val typeMapEncoder: Encoder[Map[AstNode.Id, Type]] = { def f2(t: Type) = t.asJson - Encoder.instance (mapAsJsonMap (astNodeIdToString) (f2) _) + Encoder.instance (mapAsJsonMap(astNodeIdToString)(f2)) } private implicit val typeOptionMap: Encoder[Map[StateMachineTypedElement, Option[Type]]] = { def f1(e: StateMachineTypedElement) = e.getNodeId.toString def f2(t: Option[Type]) = t.asJson - Encoder.instance (mapAsJsonMap (f1) (f2) _) + Encoder.instance (mapAsJsonMap(f1)(f2)) } + private implicit val portInterfaceEncoder: Encoder[PortInterface] = + io.circe.generic.semiauto.deriveEncoder[PortInterface] + private implicit val useDefMapEncoder: Encoder[Map[AstNode.Id, Symbol]] = { def f2(s: Symbol) = s.asJson - Encoder.instance (mapAsJsonMap (astNodeIdToString) (f2) _) + Encoder.instance (mapAsJsonMap(astNodeIdToString)(f2)) } private implicit val valueMapEncoder: Encoder[Map[AstNode.Id, Value]] = { def f2(value: Value) = value.asJson - Encoder.instance (mapAsJsonMap (astNodeIdToString) (f2) _) + Encoder.instance (mapAsJsonMap(astNodeIdToString)(f2)) } // ---------------------------------------------------------------------- @@ -319,9 +348,15 @@ object AnalysisJsonEncoder extends JsonEncoder{ // We use this conversion when the keys cannot be converted to strings // ---------------------------------------------------------------------- - private implicit val componentInstanceLocationMapEncoder: - Encoder[Map[ComponentInstance, Location]] = - Encoder.instance(_.toList.asJson) + implicit val locationComparator: java.util.Comparator[Location] = + new java.util.Comparator[Location] { + override def compare(o1: Location, o2: Location): Int = + o1.compare(o2) + } + + private implicit val interfaceInstanceLocationMapEncoder: + Encoder[Map[InterfaceInstance, Location]] = + Encoder.instance(_.toList.sortBy(_._2).asJson) private implicit val connectionMapEncoder: Encoder[Map[PortInstanceIdentifier, Set[Connection]]] = @@ -346,7 +381,7 @@ object AnalysisJsonEncoder extends JsonEncoder{ "flattenedStateTransitionMap" -> sma.flattenedStateTransitionMap.asJson, "flattenedChoiceTransitionMap" -> sma.flattenedChoiceTransitionMap.asJson ) - Encoder.instance(stateMachineAnalysisToJson(_)) + Encoder.instance(stateMachineAnalysisToJson) } // ---------------------------------------------------------------------- diff --git a/compiler/lib/src/main/scala/codegen/LayoutWriter/LayoutWriter.scala b/compiler/lib/src/main/scala/codegen/LayoutWriter/LayoutWriter.scala index c8c90f639..483275dad 100644 --- a/compiler/lib/src/main/scala/codegen/LayoutWriter/LayoutWriter.scala +++ b/compiler/lib/src/main/scala/codegen/LayoutWriter/LayoutWriter.scala @@ -52,10 +52,10 @@ object LayoutWriter extends AstStateVisitor with LineUtils { cl: Seq[Connection] ): List[Line] = { cl.foldLeft(List[Line]()) ((l, c) => { - var fromCi = c.from.port.componentInstance + var fromCi = c.from.port.interfaceInstance var fromPi = c.from.port.portInstance var fromPn = topology.fromPortNumberMap(c) - var toCi = c.to.port.componentInstance + var toCi = c.to.port.interfaceInstance var toPi = c.to.port.portInstance var toPn = topology.toPortNumberMap(c) l ++ List( diff --git a/compiler/lib/src/main/scala/codegen/LocateDefsFppWriter.scala b/compiler/lib/src/main/scala/codegen/LocateDefsFppWriter.scala index 9c3745488..6a463802d 100644 --- a/compiler/lib/src/main/scala/codegen/LocateDefsFppWriter.scala +++ b/compiler/lib/src/main/scala/codegen/LocateDefsFppWriter.scala @@ -85,7 +85,7 @@ object LocateDefsFppWriter extends AstVisitor with LineUtils { ) = { val (_, node, _) = aNode val data = node.data - writeSpecLoc(s, Ast.SpecLoc.ComponentInstance, data.name, node) + writeSpecLoc(s, Ast.SpecLoc.Instance, data.name, node) } override def defConstantAnnotatedNode( @@ -140,7 +140,7 @@ object LocateDefsFppWriter extends AstVisitor with LineUtils { ) = { val (_, node, _) = aNode val data = node.data - writeSpecLoc(s, Ast.SpecLoc.Topology, data.name, node) + writeSpecLoc(s, Ast.SpecLoc.Instance, data.name, node) } override def transUnit(s: State, tu: Ast.TransUnit) = diff --git a/compiler/lib/src/main/scala/codegen/XmlFppWriter/TopologyXmlFppWriter.scala b/compiler/lib/src/main/scala/codegen/XmlFppWriter/TopologyXmlFppWriter.scala index f8e41b890..c92399990 100644 --- a/compiler/lib/src/main/scala/codegen/XmlFppWriter/TopologyXmlFppWriter.scala +++ b/compiler/lib/src/main/scala/codegen/XmlFppWriter/TopologyXmlFppWriter.scala @@ -67,13 +67,13 @@ object TopologyXmlFppWriter extends LineUtils { def specCompInstanceAnnotated( file: XmlFppWriter.File, node: scala.xml.Node - ): Result.Result[Ast.Annotated[Ast.SpecCompInstance]] = + ): Result.Result[Ast.Annotated[Ast.SpecInstance]] = for (name <- file.getAttribute(node, "name")) yield { val qid = XmlFppWriter.FppBuilder.translateQualIdent(name) ( Nil, - Ast.SpecCompInstance(qid), + Ast.SpecInstance(qid), Nil ) } @@ -87,7 +87,7 @@ object TopologyXmlFppWriter extends LineUtils { /** Translates the component instance specifiers */ def specCompInstanceAnnotatedList(file: XmlFppWriter.File): - Result.Result[List[Ast.Annotated[Ast.SpecCompInstance]]] = { + Result.Result[List[Ast.Annotated[Ast.SpecInstance]]] = { val instances = file.elem \ "instance" Result.map(instances.toList, specCompInstanceAnnotated(file, _)) } @@ -172,7 +172,7 @@ object TopologyXmlFppWriter extends LineUtils { Ast.TopologyMember(a1, memberNode, a2) } val instanceMembers = instancesAnnotated.map( - member(Ast.TopologyMember.SpecCompInstance.apply) + member(Ast.TopologyMember.SpecInstance.apply) ) val graphMember = member(Ast.TopologyMember.SpecConnectionGraph.apply)( graphAnnotated diff --git a/compiler/lib/src/main/scala/syntax/Parser.scala b/compiler/lib/src/main/scala/syntax/Parser.scala index 7f2487ecd..4f618e726 100644 --- a/compiler/lib/src/main/scala/syntax/Parser.scala +++ b/compiler/lib/src/main/scala/syntax/Parser.scala @@ -549,9 +549,9 @@ object Parser extends Parsers { } } - def specCompInstance: Parser[Ast.SpecCompInstance] = { - instance ~>! node(qualIdent) ^^ { - case instance => Ast.SpecCompInstance(instance) + def specInstance: Parser[Ast.SpecInstance] = { + (instance | importToken) ~>! node(qualIdent) ^^ { + case instance => Ast.SpecInstance(instance) } } @@ -677,10 +677,9 @@ object Parser extends Parsers { typeToken ^^ (_ => Ast.SpecLoc.Type) def nonDictKind = component ^^ (_ => Ast.SpecLoc.Component) | - instance ^^ (_ => Ast.SpecLoc.ComponentInstance) | + instance ^^ (_ => Ast.SpecLoc.Instance) | port ^^ (_ => Ast.SpecLoc.Port) | state ~! machine ^^ (_ => Ast.SpecLoc.StateMachine) | - topology ^^ (_ => Ast.SpecLoc.Topology) | interface ^^ (_ => Ast.SpecLoc.Interface) def maybeDictPair = opt(dictionary) ~ maybeDictKind ^^ { @@ -868,7 +867,7 @@ object Parser extends Parsers { } def specTopPort: Parser[Ast.SpecTopPort] = - port ~>! ident ~! (equals ~>! node(qualIdent)) ^^ { + port ~>! ident ~! (equals ~>! node(portInstanceIdentifier)) ^^ { case name ~ underlying => Ast.SpecTopPort(name, underlying) } @@ -962,15 +961,14 @@ object Parser extends Parsers { elementSequence(tlmPacketMember, comma) private def topologyMemberNode: Parser[Ast.TopologyMember.Node] = { - node(specCompInstance) ^^ (n => - Ast.TopologyMember.SpecCompInstance(n)) | + node(specInstance) ^^ (n => + Ast.TopologyMember.SpecInstance(n)) | node(specConnectionGraph) ^^ (n => Ast.TopologyMember.SpecConnectionGraph(n)) | node(specInclude) ^^ (n => Ast.TopologyMember.SpecInclude(n)) | node(specTopPort) ^^ (n => Ast.TopologyMember.SpecTopPort(n)) | node(specTlmPacketSet) ^^ (n => Ast.TopologyMember.SpecTlmPacketSet(n)) | - node(specImport) ^^ (n => Ast.TopologyMember.SpecTopImport(n)) | failure("topology member expected") } diff --git a/compiler/lib/src/main/scala/util/Error.scala b/compiler/lib/src/main/scala/util/Error.scala index 9d41c4565..1f87b8e0a 100644 --- a/compiler/lib/src/main/scala/util/Error.scala +++ b/compiler/lib/src/main/scala/util/Error.scala @@ -122,9 +122,6 @@ sealed trait Error { Error.print (Some(loc)) (s"duplicate telemetry packet set ${name}") System.err.println("previous set is here:") System.err.println(prevLoc) - case SemanticError.DuplicateTopology(name, loc, prevLoc) => - Error.print (Some(loc)) (s"duplicate topology ${name}") - printPrevLoc(prevLoc) case SemanticError.DuplicateInterface(name, loc, prevLoc) => Error.print (Some(loc)) (s"duplicate interface ${name}") printPrevLoc(prevLoc) @@ -166,7 +163,7 @@ sealed trait Error { printNote("size must be greater than zero") case SemanticError.InvalidCommand(loc, msg) => Error.print (Some(loc)) (msg) - case SemanticError.InvalidComponentInstance(loc, instanceName, topName) => + case SemanticError.InvalidInterfaceInstance(loc, instanceName, topName) => Error.print (Some(loc)) (s"instance $instanceName is not a member of topology $topName") case SemanticError.InvalidConnection(loc, msg, fromLoc, toLoc, fromPortDefLoc, toPortDefLoc) => Error.print (Some(loc)) (msg) @@ -207,8 +204,8 @@ sealed trait Error { Error.print (Some(loc)) (msg) System.err.println(s"port definition is here:") System.err.println(defLoc) - case SemanticError.InvalidPortInstanceId(loc, portName, componentName) => - Error.print (Some(loc)) (s"$portName is not a port instance of component $componentName") + case SemanticError.InvalidPortInstanceId(loc, portName, symbol, interfaceName) => + Error.print (Some(loc)) (s"$portName is not a port instance of $symbol $interfaceName") case SemanticError.InvalidPortKind(loc, msg, specLoc) => Error.print (Some(loc)) (msg) System.err.println(s"port instance is specified here:") @@ -345,6 +342,22 @@ sealed trait Error { ) => Error.print (Some(importLoc)) (s"failed to import interface") err.print + case SemanticError.PortInterfaceMissingPort( + loc + ) => + Error.print (Some(loc)) ("port instance missing") + case SemanticError.PortInterfaceInvalidPort( + loc, + defLoc + ) => + Error.print (Some(loc)) ("port instance does not match definition in interface:") + System.err.println(defLoc) + case SemanticError.InterfaceImplements( + loc, + err + ) => + Error.print (Some(loc)) ("port interface not implemented") + err.print case SemanticError.UseDefCycle(loc, msg) => Error.print (Some(loc)) (msg) case XmlError.ParseError(file, msg) => Error.printXml (file) (msg) case XmlError.SemanticError(file, msg) => Error.printXml (file) (msg) @@ -502,12 +515,6 @@ object SemanticError { loc: Location, prevLoc: Location ) extends Error - /** Duplicate topology */ - final case class DuplicateTopology( - name: String, - loc: Location, - prevLoc: Location - ) extends Error /** Duplicate interface */ final case class DuplicateInterface( name: String, @@ -550,8 +557,8 @@ object SemanticError { final case class InvalidArraySize(loc: Location, size: BigInt) extends Error /** Invalid command */ final case class InvalidCommand(loc: Location, msg: String) extends Error - /** Invalid component instance */ - final case class InvalidComponentInstance( + /** Invalid interface instance */ + final case class InvalidInterfaceInstance( loc: Location, instanceName: String, topName: String @@ -605,7 +612,8 @@ object SemanticError { final case class InvalidPortInstanceId( loc: Location, portName: String, - componentName: String + symbolKind: String, + interfaceName: String ) extends Error /** Invalid port kind */ final case class InvalidPortKind( @@ -716,6 +724,20 @@ object SemanticError { importLoc: Location, err: Error ) extends Error + /** A port is missing from a port interface */ + final case class PortInterfaceMissingPort( + loc: Location + ) extends Error + /** A port does not match an expected signature */ + final case class PortInterfaceInvalidPort( + loc: Location, + defLoc: Location + ) extends Error + /** Error while checking if instance implements interface */ + final case class InterfaceImplements( + loc: Location, + err: Error + ) extends Error /** Passive async input */ final case class PassiveAsync(loc: Location, importLocs: List[Location]) extends Error final case class PassiveStateMachine(loc: Location) extends Error diff --git a/compiler/lib/src/main/scala/util/Location.scala b/compiler/lib/src/main/scala/util/Location.scala index 72b227600..1d38b8624 100644 --- a/compiler/lib/src/main/scala/util/Location.scala +++ b/compiler/lib/src/main/scala/util/Location.scala @@ -48,4 +48,11 @@ final case class Location( def getRelativePath(path: String): java.nio.file.Path = getDirPath.resolve(path).normalize + def compare(that: Location) = { + val fileCompare = this.file.toString().compare(that.file.toString()) + if (fileCompare != 0) fileCompare + else if (this.pos.line != that.pos.line) this.pos.line - that.pos.line + else this.pos.column - that.pos.column + } + } diff --git a/compiler/lib/src/main/scala/util/Result.scala b/compiler/lib/src/main/scala/util/Result.scala index bfa538bcd..b5aa65311 100644 --- a/compiler/lib/src/main/scala/util/Result.scala +++ b/compiler/lib/src/main/scala/util/Result.scala @@ -17,7 +17,7 @@ object Result { /** Left fold with a function that returns a result */ @tailrec def foldLeft[A, B] - (as: List[A]) + (as: Iterable[A]) (b: B) (f: (B, A) => Result.Result[B]): Result.Result[B] = as match { diff --git a/compiler/lib/src/test/scala/syntax/Parser.scala b/compiler/lib/src/test/scala/syntax/Parser.scala index b94ccd9e4..6832454ee 100644 --- a/compiler/lib/src/test/scala/syntax/Parser.scala +++ b/compiler/lib/src/test/scala/syntax/Parser.scala @@ -426,9 +426,9 @@ class ParserSpec extends AnyWordSpec { ) } - "spec component instance OK" should { + "spec instance OK" should { parseAllOK( - Parser.specCompInstance, + Parser.specInstance, List( "instance a", "instance a.b", @@ -521,7 +521,6 @@ class ParserSpec extends AnyWordSpec { "locate instance a.b at \"c.fpp\"", "locate constant a.b at \"c.fpp\"", "locate port a.b at \"c.fpp\"", - "locate topology a.b at \"c.fpp\"", "locate type a.b at \"c.fpp\"", "locate dictionary type a.b at \"c.fpp\"", "locate dictionary constant a.b at \"c.fpp\"", @@ -677,7 +676,7 @@ class ParserSpec extends AnyWordSpec { parseAllOK( Parser.specTopPort, List( - "port a = b", + "port a = a.b.c.d", "port b = c.b", ) ) diff --git a/compiler/tools/fpp-check/test/component_instance_spec/duplicate_instance.ref.txt b/compiler/tools/fpp-check/test/component_instance_spec/duplicate_instance.ref.txt deleted file mode 100644 index 98567602b..000000000 --- a/compiler/tools/fpp-check/test/component_instance_spec/duplicate_instance.ref.txt +++ /dev/null @@ -1,9 +0,0 @@ -fpp-check -[ local path prefix ]/compiler/tools/fpp-check/test/component_instance_spec/duplicate_instance.fpp:10.3 - instance c - ^ -error: duplicate instance c -previous occurrence is here: -[ local path prefix ]/compiler/tools/fpp-check/test/component_instance_spec/duplicate_instance.fpp:9.3 - instance c - ^ diff --git a/compiler/tools/fpp-check/test/component_instance_spec/undef_instance.ref.txt b/compiler/tools/fpp-check/test/component_instance_spec/undef_instance.ref.txt deleted file mode 100644 index 5f57c02e1..000000000 --- a/compiler/tools/fpp-check/test/component_instance_spec/undef_instance.ref.txt +++ /dev/null @@ -1,6 +0,0 @@ -fpp-check -[ local path prefix ]/compiler/tools/fpp-check/test/component_instance_spec/undef_instance.fpp:3.12 - instance c - ^ -error: symbol c is not defined -note: looking for a component instance here diff --git a/compiler/tools/fpp-check/test/connection_direct/invalid_port_instance.ref.txt b/compiler/tools/fpp-check/test/connection_direct/invalid_port_instance.ref.txt index d5c0b2c18..eb2ab572e 100644 --- a/compiler/tools/fpp-check/test/connection_direct/invalid_port_instance.ref.txt +++ b/compiler/tools/fpp-check/test/connection_direct/invalid_port_instance.ref.txt @@ -2,4 +2,4 @@ fpp-check [ local path prefix ]/compiler/tools/fpp-check/test/connection_direct/invalid_port_instance.fpp:6.7 c.out -> c.in ^ -error: out is not a port instance of component C +error: out is not a port instance of component c diff --git a/compiler/tools/fpp-check/test/connection_direct/undef_instance.ref.txt b/compiler/tools/fpp-check/test/connection_direct/undef_instance.ref.txt index 79b7d3def..637d96bc9 100644 --- a/compiler/tools/fpp-check/test/connection_direct/undef_instance.ref.txt +++ b/compiler/tools/fpp-check/test/connection_direct/undef_instance.ref.txt @@ -3,4 +3,4 @@ fpp-check c.out -> c.in ^ error: symbol c is not defined -note: looking for a component instance here +note: looking for a component instance or topology here diff --git a/compiler/tools/fpp-check/test/connection_pattern/undef_source.ref.txt b/compiler/tools/fpp-check/test/connection_pattern/undef_source.ref.txt index 60b2331e5..94d13a0f5 100644 --- a/compiler/tools/fpp-check/test/connection_pattern/undef_source.ref.txt +++ b/compiler/tools/fpp-check/test/connection_pattern/undef_source.ref.txt @@ -3,4 +3,4 @@ fpp-check health connections instance $health ^ error: symbol health is not defined -note: looking for a component instance here +note: looking for a component instance or topology here diff --git a/compiler/tools/fpp-check/test/connection_pattern/undef_target.ref.txt b/compiler/tools/fpp-check/test/connection_pattern/undef_target.ref.txt index 41b8f2100..302d5e5de 100644 --- a/compiler/tools/fpp-check/test/connection_pattern/undef_target.ref.txt +++ b/compiler/tools/fpp-check/test/connection_pattern/undef_target.ref.txt @@ -3,4 +3,4 @@ fpp-check c ^ error: symbol c is not defined -note: looking for a component instance here +note: looking for a component instance or topology here diff --git a/compiler/tools/fpp-check/test/component_instance_spec/clean b/compiler/tools/fpp-check/test/instance_spec/clean similarity index 100% rename from compiler/tools/fpp-check/test/component_instance_spec/clean rename to compiler/tools/fpp-check/test/instance_spec/clean diff --git a/compiler/tools/fpp-check/test/component_instance_spec/duplicate_instance.fpp b/compiler/tools/fpp-check/test/instance_spec/duplicate_instance.fpp similarity index 100% rename from compiler/tools/fpp-check/test/component_instance_spec/duplicate_instance.fpp rename to compiler/tools/fpp-check/test/instance_spec/duplicate_instance.fpp diff --git a/compiler/tools/fpp-check/test/instance_spec/duplicate_instance.ref.txt b/compiler/tools/fpp-check/test/instance_spec/duplicate_instance.ref.txt new file mode 100644 index 000000000..89e042b48 --- /dev/null +++ b/compiler/tools/fpp-check/test/instance_spec/duplicate_instance.ref.txt @@ -0,0 +1,9 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/instance_spec/duplicate_instance.fpp:10.3 + instance c + ^ +error: duplicate instance c +previous occurrence is here: +[ local path prefix ]/compiler/tools/fpp-check/test/instance_spec/duplicate_instance.fpp:9.3 + instance c + ^ diff --git a/compiler/tools/fpp-check/test/component_instance_spec/ok.fpp b/compiler/tools/fpp-check/test/instance_spec/ok.fpp similarity index 100% rename from compiler/tools/fpp-check/test/component_instance_spec/ok.fpp rename to compiler/tools/fpp-check/test/instance_spec/ok.fpp diff --git a/compiler/tools/fpp-check/test/component_instance_spec/ok.ref.txt b/compiler/tools/fpp-check/test/instance_spec/ok.ref.txt similarity index 100% rename from compiler/tools/fpp-check/test/component_instance_spec/ok.ref.txt rename to compiler/tools/fpp-check/test/instance_spec/ok.ref.txt diff --git a/compiler/tools/fpp-check/test/component_instance_spec/run b/compiler/tools/fpp-check/test/instance_spec/run similarity index 100% rename from compiler/tools/fpp-check/test/component_instance_spec/run rename to compiler/tools/fpp-check/test/instance_spec/run diff --git a/compiler/tools/fpp-check/test/component_instance_spec/tests.sh b/compiler/tools/fpp-check/test/instance_spec/tests.sh similarity index 72% rename from compiler/tools/fpp-check/test/component_instance_spec/tests.sh rename to compiler/tools/fpp-check/test/instance_spec/tests.sh index 53ddd24ab..3026e2c86 100644 --- a/compiler/tools/fpp-check/test/component_instance_spec/tests.sh +++ b/compiler/tools/fpp-check/test/instance_spec/tests.sh @@ -1,5 +1,6 @@ tests=" duplicate_instance ok +topology_instance undef_instance " diff --git a/compiler/tools/fpp-check/test/instance_spec/topology_instance.fpp b/compiler/tools/fpp-check/test/instance_spec/topology_instance.fpp new file mode 100644 index 000000000..21eb7903e --- /dev/null +++ b/compiler/tools/fpp-check/test/instance_spec/topology_instance.fpp @@ -0,0 +1,17 @@ +passive component C { + +} + +instance c: C base id 0x100 + +topology T1 { + + instance c + +} + +topology T2 { + + instance T1 + +} diff --git a/compiler/tools/fpp-check/test/instance_spec/topology_instance.ref.txt b/compiler/tools/fpp-check/test/instance_spec/topology_instance.ref.txt new file mode 100644 index 000000000..e69de29bb diff --git a/compiler/tools/fpp-check/test/component_instance_spec/undef_instance.fpp b/compiler/tools/fpp-check/test/instance_spec/undef_instance.fpp similarity index 100% rename from compiler/tools/fpp-check/test/component_instance_spec/undef_instance.fpp rename to compiler/tools/fpp-check/test/instance_spec/undef_instance.fpp diff --git a/compiler/tools/fpp-check/test/instance_spec/undef_instance.ref.txt b/compiler/tools/fpp-check/test/instance_spec/undef_instance.ref.txt new file mode 100644 index 000000000..8efc3baa5 --- /dev/null +++ b/compiler/tools/fpp-check/test/instance_spec/undef_instance.ref.txt @@ -0,0 +1,6 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/instance_spec/undef_instance.fpp:3.12 + instance c + ^ +error: symbol c is not defined +note: looking for a component instance or topology here diff --git a/compiler/tools/fpp-check/test/component_instance_spec/update-ref b/compiler/tools/fpp-check/test/instance_spec/update-ref similarity index 100% rename from compiler/tools/fpp-check/test/component_instance_spec/update-ref rename to compiler/tools/fpp-check/test/instance_spec/update-ref diff --git a/compiler/tools/fpp-check/test/invalid_symbols/module_as_component_instance.ref.txt b/compiler/tools/fpp-check/test/invalid_symbols/module_as_component_instance.ref.txt index c8a166516..408f26b55 100644 --- a/compiler/tools/fpp-check/test/invalid_symbols/module_as_component_instance.ref.txt +++ b/compiler/tools/fpp-check/test/invalid_symbols/module_as_component_instance.ref.txt @@ -2,7 +2,7 @@ fpp-check [ local path prefix ]/compiler/tools/fpp-check/test/invalid_symbols/module_as_component_instance.fpp:5.14 instance M ^ -error: invalid symbol M: not a component instance symbol +error: invalid symbol M: not a component instance or topology symbol symbol is defined here: [ local path prefix ]/compiler/tools/fpp-check/test/invalid_symbols/module_as_component_instance.fpp:1.1 module M { diff --git a/compiler/tools/fpp-check/test/invalid_symbols/module_as_topology.ref.txt b/compiler/tools/fpp-check/test/invalid_symbols/module_as_topology.ref.txt index 8936ca74f..09573b389 100644 --- a/compiler/tools/fpp-check/test/invalid_symbols/module_as_topology.ref.txt +++ b/compiler/tools/fpp-check/test/invalid_symbols/module_as_topology.ref.txt @@ -2,7 +2,7 @@ fpp-check [ local path prefix ]/compiler/tools/fpp-check/test/invalid_symbols/module_as_topology.fpp:5.12 import M ^ -error: invalid symbol M: not a topology symbol +error: invalid symbol M: not a component instance or topology symbol symbol is defined here: [ local path prefix ]/compiler/tools/fpp-check/test/invalid_symbols/module_as_topology.fpp:1.1 module M { diff --git a/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.ref.txt b/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.ref.txt index edf0a6da9..1224fbd58 100644 --- a/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.ref.txt +++ b/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.ref.txt @@ -1,9 +1,9 @@ fpp-check -[ local path prefix ]/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.fpp:25.5 +[ local path prefix ]/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.fpp:24.5 c1.pOut[0] -> c2.pIn ^ error: duplicate connection at output port 0 previous occurrence is here: -[ local path prefix ]/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.fpp:24.5 +[ local path prefix ]/compiler/tools/fpp-check/test/port_numbering/duplicate_output_connection.fpp:25.5 c1.pOut[0] -> c2.pIn ^ diff --git a/compiler/tools/fpp-check/test/spec_loc/topology_ok.fpp b/compiler/tools/fpp-check/test/spec_loc/topology_ok.fpp index 4cf8c04a4..8ca1265b3 100644 --- a/compiler/tools/fpp-check/test/spec_loc/topology_ok.fpp +++ b/compiler/tools/fpp-check/test/spec_loc/topology_ok.fpp @@ -1,4 +1,4 @@ -locate topology T at "topology_ok.fpp" +locate instance T at "topology_ok.fpp" topology T { diff --git a/compiler/tools/fpp-check/test/spec_loc/topology_path_error.fpp b/compiler/tools/fpp-check/test/spec_loc/topology_path_error.fpp index 94696869b..21167e866 100644 --- a/compiler/tools/fpp-check/test/spec_loc/topology_path_error.fpp +++ b/compiler/tools/fpp-check/test/spec_loc/topology_path_error.fpp @@ -1,4 +1,4 @@ -locate topology T at "incorrect.fpp" +locate instance T at "incorrect.fpp" topology T { diff --git a/compiler/tools/fpp-check/test/spec_loc/topology_path_error.ref.txt b/compiler/tools/fpp-check/test/spec_loc/topology_path_error.ref.txt index b98b4b7bd..436e43a3f 100644 --- a/compiler/tools/fpp-check/test/spec_loc/topology_path_error.ref.txt +++ b/compiler/tools/fpp-check/test/spec_loc/topology_path_error.ref.txt @@ -1,6 +1,6 @@ fpp-check [ local path prefix ]/compiler/tools/fpp-check/test/spec_loc/topology_path_error.fpp:1.22 -locate topology T at "incorrect.fpp" +locate instance T at "incorrect.fpp" ^ error: incorrect location path [ local path prefix ]/compiler/tools/fpp-check/test/spec_loc/incorrect.fpp actual location is [ local path prefix ]/compiler/tools/fpp-check/test/spec_loc/topology_path_error.fpp:3.1 diff --git a/compiler/tools/fpp-check/test/tlm_packets/instance_not_defined.ref.txt b/compiler/tools/fpp-check/test/tlm_packets/instance_not_defined.ref.txt index b7fc40337..135b08ee9 100644 --- a/compiler/tools/fpp-check/test/tlm_packets/instance_not_defined.ref.txt +++ b/compiler/tools/fpp-check/test/tlm_packets/instance_not_defined.ref.txt @@ -3,4 +3,4 @@ fpp-check u.T ^ error: symbol u is not defined -note: looking for a component instance here +note: looking for a component instance or topology here diff --git a/compiler/tools/fpp-check/test/tlm_packets/omit_instance_not_defined.ref.txt b/compiler/tools/fpp-check/test/tlm_packets/omit_instance_not_defined.ref.txt index f2e29f5b2..fc243d849 100644 --- a/compiler/tools/fpp-check/test/tlm_packets/omit_instance_not_defined.ref.txt +++ b/compiler/tools/fpp-check/test/tlm_packets/omit_instance_not_defined.ref.txt @@ -3,4 +3,4 @@ fpp-check u.T ^ error: symbol u is not defined -note: looking for a component instance here +note: looking for a component instance or topology here diff --git a/compiler/tools/fpp-check/test/top_import/duplicate_topology.ref.txt b/compiler/tools/fpp-check/test/top_import/duplicate_topology.ref.txt index 4399ae3f4..3fc8d212d 100644 --- a/compiler/tools/fpp-check/test/top_import/duplicate_topology.ref.txt +++ b/compiler/tools/fpp-check/test/top_import/duplicate_topology.ref.txt @@ -2,7 +2,7 @@ fpp-check [ local path prefix ]/compiler/tools/fpp-check/test/top_import/duplicate_topology.fpp:8.3 import A ^ -error: duplicate topology A +error: duplicate instance A previous occurrence is here: [ local path prefix ]/compiler/tools/fpp-check/test/top_import/duplicate_topology.fpp:7.3 import A diff --git a/compiler/tools/fpp-check/test/top_import/instance_public.fpp b/compiler/tools/fpp-check/test/top_import/instance_public.fpp index 672ece62a..0a692ed81 100644 --- a/compiler/tools/fpp-check/test/top_import/instance_public.fpp +++ b/compiler/tools/fpp-check/test/top_import/instance_public.fpp @@ -5,7 +5,7 @@ passive component C { } instance c: C base id 0x100 topology B { - import A + import A connections C { c.pOut -> c.pIn } diff --git a/compiler/tools/fpp-check/test/top_import/undef_topology.ref.txt b/compiler/tools/fpp-check/test/top_import/undef_topology.ref.txt index a1a4dfcfd..20ab1631e 100644 --- a/compiler/tools/fpp-check/test/top_import/undef_topology.ref.txt +++ b/compiler/tools/fpp-check/test/top_import/undef_topology.ref.txt @@ -3,4 +3,4 @@ fpp-check import A ^ error: symbol A is not defined -note: looking for a topology here +note: looking for a component instance or topology here diff --git a/compiler/tools/fpp-check/test/top_ports/basic.fpp b/compiler/tools/fpp-check/test/top_ports/basic.fpp new file mode 100644 index 000000000..4f88b26bd --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/basic.fpp @@ -0,0 +1,34 @@ +port P + +passive component C1 { + + output port pOut: [2] P + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A { + instance c1 + instance c2 + + port a = c1.pOut + port b = c2.pIn +} + +topology B { + + instance A + + connections P { + A.a -> A.b + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/basic.ref.txt b/compiler/tools/fpp-check/test/top_ports/basic.ref.txt new file mode 100644 index 000000000..e69de29bb diff --git a/compiler/tools/fpp-check/test/top_ports/clean b/compiler/tools/fpp-check/test/top_ports/clean new file mode 100755 index 000000000..32e49663c --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/clean @@ -0,0 +1,6 @@ +#!/bin/sh -e + +. ../../../../scripts/utils.sh + +clean +rm -f default-tests.sh default-update-ref.sh diff --git a/compiler/tools/fpp-check/test/top_ports/implements.fpp b/compiler/tools/fpp-check/test/top_ports/implements.fpp new file mode 100644 index 000000000..b1ab1eb63 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/implements.fpp @@ -0,0 +1,38 @@ +port P + +interface I { + output port pOut: [2] P +} + +passive component C1 { + + output port pOutDifferentName: [2] P + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A implements I { + instance c1 + instance c2 + + port pOut = c1.pOutDifferentName + port b = c2.pIn +} + +topology B { + + instance A + + connections P { + A.pOut -> A.b + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/implements.ref.txt b/compiler/tools/fpp-check/test/top_ports/implements.ref.txt new file mode 100644 index 000000000..e69de29bb diff --git a/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.fpp b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.fpp new file mode 100644 index 000000000..df34851d5 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.fpp @@ -0,0 +1,38 @@ +port P + +interface I { + output port pOut: [2] P +} + +passive component C1 { + + output port pOutDifferentName: [3] P + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A implements I { + instance c1 + instance c2 + + port pOut = c1.pOutDifferentName + port b = c2.pIn +} + +topology B { + + instance A + + connections P { + A.pOut -> A.b + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.ref.txt b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.ref.txt new file mode 100644 index 000000000..c969a9a3b --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.ref.txt @@ -0,0 +1,13 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.fpp:22.23 +topology A implements I { + ^ +error: port interface not implemented +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.fpp:26.3 + port pOut = c1.pOutDifferentName + ^ +error: port instance does not match definition in interface: +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_1.fpp:4.5 + output port pOut: [2] P + ^ diff --git a/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.fpp b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.fpp new file mode 100644 index 000000000..fd90d9b18 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.fpp @@ -0,0 +1,29 @@ +port P +port P2 + +interface I { + output port pOut: [2] P +} + +passive component C1 { + + output port pOutDifferentName: [2] P2 + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A implements I { + instance c1 + instance c2 + + port pOut = c1.pOutDifferentName + port b = c2.pIn +} diff --git a/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.ref.txt b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.ref.txt new file mode 100644 index 000000000..ef9fa9d80 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.ref.txt @@ -0,0 +1,13 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.fpp:23.23 +topology A implements I { + ^ +error: port interface not implemented +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.fpp:27.3 + port pOut = c1.pOutDifferentName + ^ +error: port instance does not match definition in interface: +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_mismatch_2.fpp:5.5 + output port pOut: [2] P + ^ diff --git a/compiler/tools/fpp-check/test/top_ports/implements_port_missing.fpp b/compiler/tools/fpp-check/test/top_ports/implements_port_missing.fpp new file mode 100644 index 000000000..20f080ef0 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/implements_port_missing.fpp @@ -0,0 +1,39 @@ +port P + +interface I { + output port pOut: [2] P + output port pOut2: [3] P +} + +passive component C1 { + + output port pOutDifferentName: [2] P + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A implements I { + instance c1 + instance c2 + + port pOut = c1.pOutDifferentName + port b = c2.pIn +} + +topology B { + + instance A + + connections P { + A.pOut -> A.b + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/implements_port_missing.ref.txt b/compiler/tools/fpp-check/test/top_ports/implements_port_missing.ref.txt new file mode 100644 index 000000000..8d15e12e9 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/implements_port_missing.ref.txt @@ -0,0 +1,10 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_missing.fpp:23.23 +topology A implements I { + ^ +error: port interface not implemented +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/implements_port_missing.fpp:5.5 + output port pOut2: [3] P + ^ +error: port instance missing diff --git a/compiler/tools/fpp-check/test/top_ports/internal_port.fpp b/compiler/tools/fpp-check/test/top_ports/internal_port.fpp new file mode 100644 index 000000000..2ee186a3d --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/internal_port.fpp @@ -0,0 +1,37 @@ +port P + +active component C1 { + + output port pOut: [2] P + + internal port P(x: U32) + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 queue size 10 +instance c2: C2 base id 0x200 + +topology A { + instance c1 + instance c2 + + port a = c1.pOut + port b = c2.pIn + port c = c1.P +} + +topology B { + + instance A + + connections P { + A.a -> A.b + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/internal_port.ref.txt b/compiler/tools/fpp-check/test/top_ports/internal_port.ref.txt new file mode 100644 index 000000000..55600ab25 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/internal_port.ref.txt @@ -0,0 +1,9 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/internal_port.fpp:26.3 + port c = c1.P + ^ +error: topology port cannot point to an internal port +port definition is here: +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/internal_port.fpp:7.3 + internal port P(x: U32) + ^ diff --git a/compiler/tools/fpp-check/test/top_ports/nested.fpp b/compiler/tools/fpp-check/test/top_ports/nested.fpp new file mode 100644 index 000000000..56ac92838 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/nested.fpp @@ -0,0 +1,42 @@ +port P + +passive component C1 { + + output port pOut: [2] P + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A { + instance c1 + instance c2 + + port out = c1.pOut + port in = c2.pIn +} + +topology B { + + instance A + + port out = A.out + +} + +topology C { + + instance B + + connections P { + B.out -> A.in + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/nested.ref.txt b/compiler/tools/fpp-check/test/top_ports/nested.ref.txt new file mode 100644 index 000000000..e69de29bb diff --git a/compiler/tools/fpp-check/test/top_ports/out_to_out.fpp b/compiler/tools/fpp-check/test/top_ports/out_to_out.fpp new file mode 100644 index 000000000..f51d91c4c --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/out_to_out.fpp @@ -0,0 +1,34 @@ +port P + +passive component C1 { + + output port pOut: [2] P + +} + +passive component C2 { + + sync input port pIn: P + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A { + instance c1 + instance c2 + + port a = c1.pOut + port b = c2.pIn +} + +topology B { + + instance A + + connections P { + A.a -> A.a + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/out_to_out.ref.txt b/compiler/tools/fpp-check/test/top_ports/out_to_out.ref.txt new file mode 100644 index 000000000..5a05f6a38 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/out_to_out.ref.txt @@ -0,0 +1,13 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/out_to_out.fpp:31.5 + A.a -> A.a + ^ +error: invalid directions output -> output (should be output -> input) +from port is specified here: +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/out_to_out.fpp:22.3 + port a = c1.pOut + ^ +to port is specified here: +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/out_to_out.fpp:22.3 + port a = c1.pOut + ^ diff --git a/compiler/tools/fpp-check/test/top_ports/run b/compiler/tools/fpp-check/test/top_ports/run new file mode 100755 index 000000000..92816cad0 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/run @@ -0,0 +1,4 @@ +#!/bin/sh + +export LOCAL_PATH_PREFIX=`cd ../../../../..; echo $PWD` +../run-script diff --git a/compiler/tools/fpp-check/test/top_ports/tests.sh b/compiler/tools/fpp-check/test/top_ports/tests.sh new file mode 100644 index 000000000..e18bb7639 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/tests.sh @@ -0,0 +1,11 @@ +tests=" +basic +implements +implements_port_mismatch_1 +implements_port_mismatch_2 +implements_port_missing +internal_port +nested +out_to_out +unmatched_types +" diff --git a/compiler/tools/fpp-check/test/top_ports/unmatched_types.fpp b/compiler/tools/fpp-check/test/top_ports/unmatched_types.fpp new file mode 100644 index 000000000..89a2ea623 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/unmatched_types.fpp @@ -0,0 +1,35 @@ +port P1 +port P2 + +passive component C1 { + + output port pOut: [2] P1 + +} + +passive component C2 { + + sync input port pIn: P2 + +} + +instance c1: C1 base id 0x100 +instance c2: C2 base id 0x200 + +topology A { + instance c1 + instance c2 + + port a = c1.pOut + port b = c2.pIn +} + +topology B { + + instance A + + connections P { + A.a -> A.b + } + +} diff --git a/compiler/tools/fpp-check/test/top_ports/unmatched_types.ref.txt b/compiler/tools/fpp-check/test/top_ports/unmatched_types.ref.txt new file mode 100644 index 000000000..fb35b92d2 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/unmatched_types.ref.txt @@ -0,0 +1,13 @@ +fpp-check +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/unmatched_types.fpp:32.5 + A.a -> A.b + ^ +error: cannot connect port types P1 and P2 +from port is specified here: +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/unmatched_types.fpp:23.3 + port a = c1.pOut + ^ +to port is specified here: +[ local path prefix ]/compiler/tools/fpp-check/test/top_ports/unmatched_types.fpp:24.3 + port b = c2.pIn + ^ diff --git a/compiler/tools/fpp-check/test/top_ports/update-ref b/compiler/tools/fpp-check/test/top_ports/update-ref new file mode 100755 index 000000000..0f11071e7 --- /dev/null +++ b/compiler/tools/fpp-check/test/top_ports/update-ref @@ -0,0 +1,4 @@ +#!/bin/sh + +export LOCAL_PATH_PREFIX=`cd ../../../../..; echo $PWD` +../update-ref-script diff --git a/compiler/tools/fpp-depend/test/spec_top_import.fpp b/compiler/tools/fpp-depend/test/spec_top_import.fpp index 6ab03da80..4d8b6dc24 100644 --- a/compiler/tools/fpp-depend/test/spec_top_import.fpp +++ b/compiler/tools/fpp-depend/test/spec_top_import.fpp @@ -1,4 +1,4 @@ -locate topology T at "T.fpp" +locate instance T at "T.fpp" topology T1 { diff --git a/compiler/tools/fpp-depend/test/spec_top_port.fpp b/compiler/tools/fpp-depend/test/spec_top_port.fpp new file mode 100644 index 000000000..262857e92 --- /dev/null +++ b/compiler/tools/fpp-depend/test/spec_top_port.fpp @@ -0,0 +1,10 @@ +locate instance i1 at "instances.fpp" +locate instance i2 at "instances.fpp" + +topology T1 { + instance i1 + instance i2 + + port p1 = i1.p + port p2 = i2.p +} diff --git a/compiler/tools/fpp-depend/test/spec_top_port.ref.txt b/compiler/tools/fpp-depend/test/spec_top_port.ref.txt new file mode 100644 index 000000000..a62ca9748 --- /dev/null +++ b/compiler/tools/fpp-depend/test/spec_top_port.ref.txt @@ -0,0 +1 @@ +[ local path prefix ]/compiler/tools/fpp-depend/test/instances.fpp diff --git a/compiler/tools/fpp-depend/test/tests.sh b/compiler/tools/fpp-depend/test/tests.sh index 54116842a..f4cdcfc44 100644 --- a/compiler/tools/fpp-depend/test/tests.sh +++ b/compiler/tools/fpp-depend/test/tests.sh @@ -54,7 +54,9 @@ spec_state_machine_instance spec_tlm_channel spec_tlm_packet spec_top_import +spec_top_port special_ports +top_implements topology_implied_type transitive_instance " diff --git a/compiler/tools/fpp-depend/test/top_implements.fpp b/compiler/tools/fpp-depend/test/top_implements.fpp new file mode 100644 index 000000000..32288dcf4 --- /dev/null +++ b/compiler/tools/fpp-depend/test/top_implements.fpp @@ -0,0 +1,5 @@ +locate interface I at "I.fpp" + +topology T1 implements I { + +} diff --git a/compiler/tools/fpp-depend/test/top_implements.ref.txt b/compiler/tools/fpp-depend/test/top_implements.ref.txt new file mode 100644 index 000000000..d5dca0ae8 --- /dev/null +++ b/compiler/tools/fpp-depend/test/top_implements.ref.txt @@ -0,0 +1 @@ +[ local path prefix ]/compiler/tools/fpp-depend/test/I.fpp diff --git a/compiler/tools/fpp-format/test/include.ref.txt b/compiler/tools/fpp-format/test/include.ref.txt index 85bbf7692..fae14f102 100644 --- a/compiler/tools/fpp-format/test/include.ref.txt +++ b/compiler/tools/fpp-format/test/include.ref.txt @@ -224,8 +224,8 @@ module DefinitionsAndSpecifiers { i4 } @< Graph pattern specifier - @ Topology import specifier - import T1 @< Topology import specifier + @ Topology instance specifier + instance T1 @< Topology instance specifier @ Telemetry packet group telemetry packets P { diff --git a/compiler/tools/fpp-format/test/no_include.ref.txt b/compiler/tools/fpp-format/test/no_include.ref.txt index 6e327f2ce..57c5cbfae 100644 --- a/compiler/tools/fpp-format/test/no_include.ref.txt +++ b/compiler/tools/fpp-format/test/no_include.ref.txt @@ -224,8 +224,8 @@ module DefinitionsAndSpecifiers { i4 } @< Graph pattern specifier - @ Topology import specifier - import T1 @< Topology import specifier + @ Topology instance specifier + instance T1 @< Topology instance specifier @ Telemetry packet group telemetry packets P { diff --git a/compiler/tools/fpp-format/test/topology.ref.txt b/compiler/tools/fpp-format/test/topology.ref.txt index 0d27823b6..70e95e7a1 100644 --- a/compiler/tools/fpp-format/test/topology.ref.txt +++ b/compiler/tools/fpp-format/test/topology.ref.txt @@ -8,7 +8,7 @@ topology T implements \ instance i2 - import T2 + instance T2 port p2 = i1.p2 diff --git a/compiler/tools/fpp-locate-defs/test/defs.ref.txt b/compiler/tools/fpp-locate-defs/test/defs.ref.txt index 6bbba5d3a..8ea77bd95 100644 --- a/compiler/tools/fpp-locate-defs/test/defs.ref.txt +++ b/compiler/tools/fpp-locate-defs/test/defs.ref.txt @@ -11,7 +11,9 @@ locate dictionary type Alias2 at "defs/defs-1.fpp" locate dictionary type C.A2 at "defs/defs-1.fpp" locate dictionary type M.C.E2 at "defs/defs-2.fpp" locate dictionary type M.C.S2 at "defs/defs-2.fpp" +locate instance M.T at "defs/defs-2.fpp" locate instance M.c at "defs/defs-2.fpp" +locate instance T at "defs/defs-1.fpp" locate instance c at "defs/defs-1.fpp" locate interface I at "defs/defs-1.fpp" locate port M.P at "defs/defs-2.fpp" @@ -19,8 +21,6 @@ locate port P at "defs/defs-1.fpp" locate state machine M.C.S at "defs/defs-2.fpp" locate state machine M.SM at "defs/defs-2.fpp" locate state machine SM at "defs/defs-1.fpp" -locate topology M.T at "defs/defs-2.fpp" -locate topology T at "defs/defs-1.fpp" locate type A at "defs/defs-1.fpp" locate type Alias at "defs/defs-1.fpp" locate type C.A at "defs/defs-1.fpp" diff --git a/compiler/tools/fpp-locate-defs/test/defs_dir.ref.txt b/compiler/tools/fpp-locate-defs/test/defs_dir.ref.txt index 1f30b550a..123674b4b 100644 --- a/compiler/tools/fpp-locate-defs/test/defs_dir.ref.txt +++ b/compiler/tools/fpp-locate-defs/test/defs_dir.ref.txt @@ -11,7 +11,9 @@ locate dictionary type Alias2 at "defs-1.fpp" locate dictionary type C.A2 at "defs-1.fpp" locate dictionary type M.C.E2 at "defs-2.fpp" locate dictionary type M.C.S2 at "defs-2.fpp" +locate instance M.T at "defs-2.fpp" locate instance M.c at "defs-2.fpp" +locate instance T at "defs-1.fpp" locate instance c at "defs-1.fpp" locate interface I at "defs-1.fpp" locate port M.P at "defs-2.fpp" @@ -19,8 +21,6 @@ locate port P at "defs-1.fpp" locate state machine M.C.S at "defs-2.fpp" locate state machine M.SM at "defs-2.fpp" locate state machine SM at "defs-1.fpp" -locate topology M.T at "defs-2.fpp" -locate topology T at "defs-1.fpp" locate type A at "defs-1.fpp" locate type Alias at "defs-1.fpp" locate type C.A at "defs-1.fpp" diff --git a/compiler/tools/fpp-locate-uses/test/stdin.ref.txt b/compiler/tools/fpp-locate-uses/test/stdin.ref.txt index 739bd01cb..e69eb6cdc 100644 --- a/compiler/tools/fpp-locate-uses/test/stdin.ref.txt +++ b/compiler/tools/fpp-locate-uses/test/stdin.ref.txt @@ -21,7 +21,9 @@ locate dictionary type A at "defs.fpp" locate dictionary type C1.S at "defs.fpp" locate dictionary type RecordType at "defs.fpp" locate dictionary type SM.S at "defs.fpp" +locate instance M.T1 at "defs.fpp" locate instance M.c11 at "defs.fpp" +locate instance T1 at "defs.fpp" locate instance c11 at "defs.fpp" locate port Fw.Cmd at "defs.fpp" locate port Fw.CmdReg at "defs.fpp" @@ -40,8 +42,6 @@ locate state machine C1.SM at "defs.fpp" locate state machine M.C1.SM at "defs.fpp" locate state machine M.SM at "defs.fpp" locate state machine SM at "defs.fpp" -locate topology M.T1 at "defs.fpp" -locate topology T1 at "defs.fpp" locate type ActionType at "defs.fpp" locate type C1.A at "defs.fpp" locate type C1.E at "defs.fpp" diff --git a/compiler/tools/fpp-locate-uses/test/uses.ref.txt b/compiler/tools/fpp-locate-uses/test/uses.ref.txt index 364f50fe5..4cb7b872d 100644 --- a/compiler/tools/fpp-locate-uses/test/uses.ref.txt +++ b/compiler/tools/fpp-locate-uses/test/uses.ref.txt @@ -21,7 +21,9 @@ locate dictionary type A at "defs.fpp" locate dictionary type C1.S at "defs.fpp" locate dictionary type RecordType at "defs.fpp" locate dictionary type SM.S at "defs.fpp" +locate instance M.T1 at "defs.fpp" locate instance M.c11 at "defs.fpp" +locate instance T1 at "defs.fpp" locate instance c11 at "defs.fpp" locate interface I at "uses/uses.fpp" locate port Fw.Cmd at "defs.fpp" @@ -41,8 +43,6 @@ locate state machine C1.SM at "defs.fpp" locate state machine M.C1.SM at "defs.fpp" locate state machine M.SM at "defs.fpp" locate state machine SM at "defs.fpp" -locate topology M.T1 at "defs.fpp" -locate topology T1 at "defs.fpp" locate type ActionType at "defs.fpp" locate type C1.A at "defs.fpp" locate type C1.E at "defs.fpp" diff --git a/compiler/tools/fpp-locate-uses/test/uses_dir.ref.txt b/compiler/tools/fpp-locate-uses/test/uses_dir.ref.txt index d9473e61e..48d6fa8ea 100644 --- a/compiler/tools/fpp-locate-uses/test/uses_dir.ref.txt +++ b/compiler/tools/fpp-locate-uses/test/uses_dir.ref.txt @@ -21,7 +21,9 @@ locate dictionary type A at "../defs.fpp" locate dictionary type C1.S at "../defs.fpp" locate dictionary type RecordType at "../defs.fpp" locate dictionary type SM.S at "../defs.fpp" +locate instance M.T1 at "../defs.fpp" locate instance M.c11 at "../defs.fpp" +locate instance T1 at "../defs.fpp" locate instance c11 at "../defs.fpp" locate interface I at "uses.fpp" locate port Fw.Cmd at "../defs.fpp" @@ -41,8 +43,6 @@ locate state machine C1.SM at "../defs.fpp" locate state machine M.C1.SM at "../defs.fpp" locate state machine M.SM at "../defs.fpp" locate state machine SM at "../defs.fpp" -locate topology M.T1 at "../defs.fpp" -locate topology T1 at "../defs.fpp" locate type ActionType at "../defs.fpp" locate type C1.A at "../defs.fpp" locate type C1.E at "../defs.fpp" diff --git a/compiler/tools/fpp-syntax/test/include-topology.ref.txt b/compiler/tools/fpp-syntax/test/include-topology.ref.txt index 427d45e4f..c14553c8f 100644 --- a/compiler/tools/fpp-syntax/test/include-topology.ref.txt +++ b/compiler/tools/fpp-syntax/test/include-topology.ref.txt @@ -1,6 +1,6 @@ def topology ident T @ Included instance - spec comp instance + spec interface instance qual ident x @< Included instance diff --git a/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt b/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt index 691a33c24..d0ffbf85e 100644 --- a/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt +++ b/compiler/tools/fpp-syntax/test/syntax-ast.ref.txt @@ -335,7 +335,7 @@ def module def topology ident T @ Public instance specifier - spec comp instance + spec interface instance qual ident i1 @< Public instance specifier @ Direct connection graph specifier @@ -363,10 +363,10 @@ def module target qual ident i3 target qual ident i4 @< Graph pattern specifier - @ Topology import specifier - spec top import + @ Topology instance specifier + spec interface instance qual ident T1 - @< Topology import specifier + @< Topology instance specifier @ Telemetry packet group spec tlm packet set ident P diff --git a/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt b/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt index 87d695132..271579648 100644 --- a/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt +++ b/compiler/tools/fpp-syntax/test/syntax-include-ast.ref.txt @@ -336,7 +336,7 @@ def module def topology ident T @ Public instance specifier - spec comp instance + spec interface instance qual ident i1 @< Public instance specifier @ Direct connection graph specifier @@ -364,10 +364,10 @@ def module target qual ident i3 target qual ident i4 @< Graph pattern specifier - @ Topology import specifier - spec top import + @ Topology instance specifier + spec interface instance qual ident T1 - @< Topology import specifier + @< Topology instance specifier @ Telemetry packet group spec tlm packet set ident P diff --git a/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt b/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt index 87d695132..271579648 100644 --- a/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt +++ b/compiler/tools/fpp-syntax/test/syntax-stdin.ref.txt @@ -336,7 +336,7 @@ def module def topology ident T @ Public instance specifier - spec comp instance + spec interface instance qual ident i1 @< Public instance specifier @ Direct connection graph specifier @@ -364,10 +364,10 @@ def module target qual ident i3 target qual ident i4 @< Graph pattern specifier - @ Topology import specifier - spec top import + @ Topology instance specifier + spec interface instance qual ident T1 - @< Topology import specifier + @< Topology instance specifier @ Telemetry packet group spec tlm packet set ident P diff --git a/compiler/tools/fpp-syntax/test/syntax.fpp b/compiler/tools/fpp-syntax/test/syntax.fpp index 791edbfd6..0804b2432 100644 --- a/compiler/tools/fpp-syntax/test/syntax.fpp +++ b/compiler/tools/fpp-syntax/test/syntax.fpp @@ -191,9 +191,9 @@ module DefinitionsAndSpecifiers { command connections instance i1 { i2, i3, i4 } @< Graph pattern specifier - @ Topology import specifier + @ Topology instance specifier import T1 - @< Topology import specifier + @< Topology instance specifier @ Telemetry packet group telemetry packets P { diff --git a/compiler/tools/fpp-syntax/test/topology-ports.ref.txt b/compiler/tools/fpp-syntax/test/topology-ports.ref.txt index d896a81a2..33a35e4a9 100644 --- a/compiler/tools/fpp-syntax/test/topology-ports.ref.txt +++ b/compiler/tools/fpp-syntax/test/topology-ports.ref.txt @@ -1,6 +1,6 @@ def topology ident T - spec comp instance + spec interface instance qual ident i spec top port ident p1 diff --git a/compiler/tools/fpp-to-cpp/test/top/Ports1TopologyAc.ref.cpp b/compiler/tools/fpp-to-cpp/test/top/Ports1TopologyAc.ref.cpp new file mode 100644 index 000000000..52f2fff26 --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/Ports1TopologyAc.ref.cpp @@ -0,0 +1,150 @@ +// ====================================================================== +// \title Ports1TopologyAc.cpp +// \author Generated by fpp-to-cpp +// \brief cpp file for Ports1 topology +// ====================================================================== + +#include "Ports1TopologyAc.hpp" + +// ---------------------------------------------------------------------- +// Component instances +// ---------------------------------------------------------------------- + +namespace M { + Active active2; + +} + +namespace M { + + M::Active active3(FW_OPTIONAL_NAME("active3")); + +} + +namespace M { + + M::Passive passive1(FW_OPTIONAL_NAME("passive1")); + +} + +namespace M { + + ConcretePassive passive2(FW_OPTIONAL_NAME("passive2")); + +} + +M::Active active1(FW_OPTIONAL_NAME("active1")); + +namespace M { + + // ---------------------------------------------------------------------- + // Component configuration objects + // ---------------------------------------------------------------------- + + namespace ConfigObjects { + + namespace M_active2 { + U32 x = 0; + } + + } + + // ---------------------------------------------------------------------- + // Helper functions + // ---------------------------------------------------------------------- + + void initComponents(const TopologyState& state) { + M::active2.initSpecial(); + M::active3.init(QueueSizes::M_active3, InstanceIds::M_active3); + M::passive1.init(InstanceIds::M_passive1); + M::passive2.init(InstanceIds::M_passive2); + active1.init(QueueSizes::active1, InstanceIds::active1); + } + + void configComponents(const TopologyState& state) { + M::active2.config(); + } + + void setBaseIds() { + active1.setIdBase(BaseIds::active1); + M::active2.setIdBase(BaseIds::M_active2); + M::active3.setIdBase(BaseIds::M_active3); + M::passive1.setIdBase(BaseIds::M_passive1); + M::passive2.setIdBase(BaseIds::M_passive2); + } + + void connectComponents() { + + // C1 + M::passive1.set_p_OutputPort( + 0, + active1.get_p_InputPort(0) + ); + } + + void regCommands() { + // Nothing to do + } + + void readParameters() { + // Nothing to do + } + + void loadParameters() { + // Nothing to do + } + + void startTasks(const TopologyState& state) { + M::active2.startSpecial(); + M::active3.start( + Os::Task::TASK_PRIORITY_DEFAULT, // Default priority + Os::Task::TASK_DEFAULT, // Default stack size + Os::Task::TASK_DEFAULT, // Default CPU + static_cast(TaskIds::M_active3) + ); + active1.start( + static_cast(Priorities::active1), + static_cast(StackSizes::active1), + static_cast(CPUs::active1), + static_cast(TaskIds::active1) + ); + } + + void stopTasks(const TopologyState& state) { + M::active2.stopSpecial(); + M::active3.exit(); + active1.exit(); + } + + void freeThreads(const TopologyState& state) { + M::active2.freeSpecial(); + (void) M::active3.ActiveComponentBase::join(); + (void) active1.ActiveComponentBase::join(); + } + + void tearDownComponents(const TopologyState& state) { + M::active2.tearDown(); + } + + // ---------------------------------------------------------------------- + // Setup and teardown functions + // ---------------------------------------------------------------------- + + void setup(const TopologyState& state) { + initComponents(state); + configComponents(state); + setBaseIds(); + connectComponents(); + regCommands(); + readParameters(); + loadParameters(); + startTasks(state); + } + + void teardown(const TopologyState& state) { + stopTasks(state); + freeThreads(state); + tearDownComponents(state); + } + +} diff --git a/compiler/tools/fpp-to-cpp/test/top/Ports1TopologyAc.ref.hpp b/compiler/tools/fpp-to-cpp/test/top/Ports1TopologyAc.ref.hpp new file mode 100644 index 000000000..fc39d1050 --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/Ports1TopologyAc.ref.hpp @@ -0,0 +1,183 @@ +// ====================================================================== +// \title Ports1TopologyAc.hpp +// \author Generated by fpp-to-cpp +// \brief hpp file for Ports1 topology +// ====================================================================== + +#ifndef M_Ports1TopologyAc_HPP +#define M_Ports1TopologyAc_HPP + +#include "Active.hpp" +#include "Passive.hpp" +#include "Ports1TopologyDefs.hpp" + +// ---------------------------------------------------------------------- +// Component instances +// ---------------------------------------------------------------------- + +namespace M { + + //! active2 + extern M::Active active2; + +} + +namespace M { + + //! active3 + extern M::Active active3; + +} + +namespace M { + + //! passive1 + extern M::Passive passive1; + +} + +namespace M { + + //! passive2 + extern ConcretePassive passive2; + +} + +//! active1 +extern M::Active active1; + +namespace M { + + // ---------------------------------------------------------------------- + // Constants + // ---------------------------------------------------------------------- + + namespace ConfigConstants { + namespace M_active2 { + enum { + X = 0, + Y = 1 + }; + } + } + + namespace BaseIds { + enum { + active1 = 0x100, + M_active2 = 0x200, + M_active3 = 0x300, + M_passive1 = 0x300, + M_passive2 = 0x400, + }; + } + + namespace CPUs { + enum { + active1 = 0, + }; + } + + namespace InstanceIds { + enum { + M_active2, + M_active3, + M_passive1, + M_passive2, + active1, + }; + } + + namespace Priorities { + enum { + active1 = 1, + }; + } + + namespace QueueSizes { + enum { + M_active2 = 10, + M_active3 = 10, + active1 = 10, + }; + } + + namespace StackSizes { + enum { + active1 = 1024, + }; + } + + namespace TaskIds { + enum { + M_active2, + M_active3, + active1, + }; + } + + // ---------------------------------------------------------------------- + // Helper functions + // ---------------------------------------------------------------------- + + //! Initialize components + void initComponents( + const TopologyState& state //!< The topology state + ); + + //! Configure components + void configComponents( + const TopologyState& state //!< The topology state + ); + + //! Set component base Ids + void setBaseIds(); + + //! Connect components + void connectComponents(); + + //! Register commands + void regCommands(); + + //! Read parameters + void readParameters(); + + //! Load parameters + void loadParameters(); + + //! Start tasks + void startTasks( + const TopologyState& state //!< The topology state + ); + + //! Stop tasks + void stopTasks( + const TopologyState& state //!< The topology state + ); + + //! Free threads + void freeThreads( + const TopologyState& state //!< The topology state + ); + + //! Tear down components + void tearDownComponents( + const TopologyState& state //!< The topology state + ); + + // ---------------------------------------------------------------------- + // Setup and teardown functions + // ---------------------------------------------------------------------- + + //! Set up the topology + void setup( + const TopologyState& state //!< The topology state + ); + + //! Tear down the topology + void teardown( + const TopologyState& state //!< The topology state + ); + +} + +#endif diff --git a/compiler/tools/fpp-to-cpp/test/top/Ports2TopologyAc.ref.cpp b/compiler/tools/fpp-to-cpp/test/top/Ports2TopologyAc.ref.cpp new file mode 100644 index 000000000..d24aab092 --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/Ports2TopologyAc.ref.cpp @@ -0,0 +1,156 @@ +// ====================================================================== +// \title Ports2TopologyAc.cpp +// \author Generated by fpp-to-cpp +// \brief cpp file for Ports2 topology +// ====================================================================== + +#include "Ports2TopologyAc.hpp" + +// ---------------------------------------------------------------------- +// Component instances +// ---------------------------------------------------------------------- + +namespace M { + Active active2; + +} + +namespace M { + + M::Active active3(FW_OPTIONAL_NAME("active3")); + +} + +namespace M { + + M::Passive passive1(FW_OPTIONAL_NAME("passive1")); + +} + +namespace M { + + ConcretePassive passive2(FW_OPTIONAL_NAME("passive2")); + +} + +M::Active active1(FW_OPTIONAL_NAME("active1")); + +namespace M { + + // ---------------------------------------------------------------------- + // Component configuration objects + // ---------------------------------------------------------------------- + + namespace ConfigObjects { + + namespace M_active2 { + U32 x = 0; + } + + } + + // ---------------------------------------------------------------------- + // Helper functions + // ---------------------------------------------------------------------- + + void initComponents(const TopologyState& state) { + M::active2.initSpecial(); + M::active3.init(QueueSizes::M_active3, InstanceIds::M_active3); + M::passive1.init(InstanceIds::M_passive1); + M::passive2.init(InstanceIds::M_passive2); + active1.init(QueueSizes::active1, InstanceIds::active1); + } + + void configComponents(const TopologyState& state) { + M::active2.config(); + } + + void setBaseIds() { + active1.setIdBase(BaseIds::active1); + M::active2.setIdBase(BaseIds::M_active2); + M::active3.setIdBase(BaseIds::M_active3); + M::passive1.setIdBase(BaseIds::M_passive1); + M::passive2.setIdBase(BaseIds::M_passive2); + } + + void connectComponents() { + + // C1 + M::passive1.set_p_OutputPort( + 0, + active1.get_p_InputPort(0) + ); + + // C2 + M::passive2.set_p_OutputPort( + 0, + M::active2.get_p_InputPort(0) + ); + } + + void regCommands() { + // Nothing to do + } + + void readParameters() { + // Nothing to do + } + + void loadParameters() { + // Nothing to do + } + + void startTasks(const TopologyState& state) { + M::active2.startSpecial(); + M::active3.start( + Os::Task::TASK_PRIORITY_DEFAULT, // Default priority + Os::Task::TASK_DEFAULT, // Default stack size + Os::Task::TASK_DEFAULT, // Default CPU + static_cast(TaskIds::M_active3) + ); + active1.start( + static_cast(Priorities::active1), + static_cast(StackSizes::active1), + static_cast(CPUs::active1), + static_cast(TaskIds::active1) + ); + } + + void stopTasks(const TopologyState& state) { + M::active2.stopSpecial(); + M::active3.exit(); + active1.exit(); + } + + void freeThreads(const TopologyState& state) { + M::active2.freeSpecial(); + (void) M::active3.ActiveComponentBase::join(); + (void) active1.ActiveComponentBase::join(); + } + + void tearDownComponents(const TopologyState& state) { + M::active2.tearDown(); + } + + // ---------------------------------------------------------------------- + // Setup and teardown functions + // ---------------------------------------------------------------------- + + void setup(const TopologyState& state) { + initComponents(state); + configComponents(state); + setBaseIds(); + connectComponents(); + regCommands(); + readParameters(); + loadParameters(); + startTasks(state); + } + + void teardown(const TopologyState& state) { + stopTasks(state); + freeThreads(state); + tearDownComponents(state); + } + +} diff --git a/compiler/tools/fpp-to-cpp/test/top/Ports2TopologyAc.ref.hpp b/compiler/tools/fpp-to-cpp/test/top/Ports2TopologyAc.ref.hpp new file mode 100644 index 000000000..16bee7cda --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/Ports2TopologyAc.ref.hpp @@ -0,0 +1,183 @@ +// ====================================================================== +// \title Ports2TopologyAc.hpp +// \author Generated by fpp-to-cpp +// \brief hpp file for Ports2 topology +// ====================================================================== + +#ifndef M_Ports2TopologyAc_HPP +#define M_Ports2TopologyAc_HPP + +#include "Active.hpp" +#include "Passive.hpp" +#include "Ports2TopologyDefs.hpp" + +// ---------------------------------------------------------------------- +// Component instances +// ---------------------------------------------------------------------- + +namespace M { + + //! active2 + extern M::Active active2; + +} + +namespace M { + + //! active3 + extern M::Active active3; + +} + +namespace M { + + //! passive1 + extern M::Passive passive1; + +} + +namespace M { + + //! passive2 + extern ConcretePassive passive2; + +} + +//! active1 +extern M::Active active1; + +namespace M { + + // ---------------------------------------------------------------------- + // Constants + // ---------------------------------------------------------------------- + + namespace ConfigConstants { + namespace M_active2 { + enum { + X = 0, + Y = 1 + }; + } + } + + namespace BaseIds { + enum { + active1 = 0x100, + M_active2 = 0x200, + M_active3 = 0x300, + M_passive1 = 0x300, + M_passive2 = 0x400, + }; + } + + namespace CPUs { + enum { + active1 = 0, + }; + } + + namespace InstanceIds { + enum { + M_active2, + M_active3, + M_passive1, + M_passive2, + active1, + }; + } + + namespace Priorities { + enum { + active1 = 1, + }; + } + + namespace QueueSizes { + enum { + M_active2 = 10, + M_active3 = 10, + active1 = 10, + }; + } + + namespace StackSizes { + enum { + active1 = 1024, + }; + } + + namespace TaskIds { + enum { + M_active2, + M_active3, + active1, + }; + } + + // ---------------------------------------------------------------------- + // Helper functions + // ---------------------------------------------------------------------- + + //! Initialize components + void initComponents( + const TopologyState& state //!< The topology state + ); + + //! Configure components + void configComponents( + const TopologyState& state //!< The topology state + ); + + //! Set component base Ids + void setBaseIds(); + + //! Connect components + void connectComponents(); + + //! Register commands + void regCommands(); + + //! Read parameters + void readParameters(); + + //! Load parameters + void loadParameters(); + + //! Start tasks + void startTasks( + const TopologyState& state //!< The topology state + ); + + //! Stop tasks + void stopTasks( + const TopologyState& state //!< The topology state + ); + + //! Free threads + void freeThreads( + const TopologyState& state //!< The topology state + ); + + //! Tear down components + void tearDownComponents( + const TopologyState& state //!< The topology state + ); + + // ---------------------------------------------------------------------- + // Setup and teardown functions + // ---------------------------------------------------------------------- + + //! Set up the topology + void setup( + const TopologyState& state //!< The topology state + ); + + //! Tear down the topology + void teardown( + const TopologyState& state //!< The topology state + ); + +} + +#endif diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/.gitignore b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/.gitignore new file mode 100644 index 000000000..a0a72d811 --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/.gitignore @@ -0,0 +1,4 @@ +*.xml +*.o +*Ac.* +*Ai.* diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Active.hpp b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Active.hpp new file mode 100644 index 000000000..faf5b9332 --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Active.hpp @@ -0,0 +1,58 @@ +#ifndef M_Active_HPP +#define M_Active_HPP + +#include "ActiveComponentAc.hpp" + +namespace M { + + class Active : + public ActiveComponentBase + { + + public: + + Active() { + + } + + Active(const char* name) { + + } + + void init(U32 queueSize, U32 instanceId) { + + } + + void initSpecial() { + + } + + void config() { + + } + + void startSpecial() { + + } + + void p_handler(FwIndexType portNum) { + + } + + void stopSpecial() { + + } + + void freeSpecial() { + + } + + void tearDown() { + + } + + }; + +} + +#endif diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Passive.hpp b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Passive.hpp new file mode 100644 index 000000000..880d1918d --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Passive.hpp @@ -0,0 +1,29 @@ +#ifndef M_Passive_HPP +#define M_Passive_HPP + +#include "PassiveComponentAc.hpp" + +namespace M { + + class Passive : + public PassiveComponentBase + { + + public: + + Passive(const char* name) { + + } + + void init(U32 instanceId) { + + } + + }; + + // Simulate a concrete implementation + typedef Passive ConcretePassive; + +} + +#endif diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Ports1TopologyDefs.hpp b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Ports1TopologyDefs.hpp new file mode 100644 index 000000000..c6a6a77ae --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Ports1TopologyDefs.hpp @@ -0,0 +1,5 @@ +namespace M { + + typedef int TopologyState; + +} diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Ports2TopologyDefs.hpp b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Ports2TopologyDefs.hpp new file mode 100644 index 000000000..c6a6a77ae --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/Ports2TopologyDefs.hpp @@ -0,0 +1,5 @@ +namespace M { + + typedef int TopologyState; + +} diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/check b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/check new file mode 100755 index 000000000..996603170 --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/check @@ -0,0 +1,22 @@ +#!/bin/sh -e + +fpp_to_cpp=../../../../../../bin/fpp-to-cpp +fprime_gcc=../../../../../../scripts/fprime-gcc + +echo ' removing old files' +./clean + +dir=`cd ../..; echo $PWD` + +echo ' generating C++' +$fpp_to_cpp -p $dir -i ../../builtin.fpp ../../basic.fpp + +for suffix in hpp cpp +do + cp ../../Ports1TopologyAc.ref.$suffix Ports1TopologyAc.$suffix + cp ../../Ports2TopologyAc.ref.$suffix Ports2TopologyAc.$suffix +done + +echo ' compiling C++' +$fprime_gcc -I.. -I../../../fprime -I../../../fprime/config -Wno-unused-parameter -c Ports1TopologyAc.cpp +$fprime_gcc -I.. -I../../../fprime -I../../../fprime/config -Wno-unused-parameter -c Ports2TopologyAc.cpp diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/clean b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/clean new file mode 100755 index 000000000..702bd41ed --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/Ports/clean @@ -0,0 +1,6 @@ +#!/bin/sh -e + +for file in `find . -name '*~' -or -name '*Ac.*' -or -name '*Ai.xml' -or -name '*.o'` +do + rm $file +done diff --git a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/subdirs.txt b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/subdirs.txt index 773d58fdd..28c72d484 100644 --- a/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/subdirs.txt +++ b/compiler/tools/fpp-to-cpp/test/top/check-cpp-dir/subdirs.txt @@ -2,4 +2,5 @@ Basic Commands Health Params +Ports TlmPackets diff --git a/compiler/tools/fpp-to-cpp/test/top/ports.fpp b/compiler/tools/fpp-to-cpp/test/top/ports.fpp new file mode 100644 index 000000000..f2a5a8a2e --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/ports.fpp @@ -0,0 +1,107 @@ +module M { + + port P + + active component Active { + + async input port p: P + + } + + passive component Passive { + + output port p: P + + } + +} + +instance active1: M.Active base id 0x100 \ + at "Active.hpp" \ + queue size 10 stack size 1024 priority 1 cpu 0 + +module M { + + instance active2: Active base id 0x200 \ + queue size 10 \ + { + + phase Phases.configConstants """ + enum { + X = 0, + Y = 1 + }; + """ + + phase Phases.configObjects """ + U32 x = 0; + """ + + phase Phases.instances """ + Active active2; + """ + + phase Phases.initComponents """ + M::active2.initSpecial(); + """ + + phase Phases.configComponents """ + M::active2.config(); + """ + + phase Phases.startTasks """ + M::active2.startSpecial(); + """ + + phase Phases.stopTasks """ + M::active2.stopSpecial(); + """ + + phase Phases.freeThreads """ + M::active2.freeSpecial(); + """ + + phase Phases.tearDownComponents """ + M::active2.tearDown(); + """ + + } + instance active3: Active base id 0x300 \ + at "Active.hpp" \ + queue size 10 + + instance passive1: Passive base id 0x300 + instance passive2: Passive base id 0x400 type "ConcretePassive" + + topology Ports1 { + + instance active1 + instance active2 + instance active3 + instance passive1 + instance passive2 + + connections C1 { + + passive1.p -> active1.p + + } + + port out = passive2.p + port in = active2.p + + } + + topology Ports2 { + + instance Ports1 + + connections C2 { + + Ports1.out -> Ports1.in + + } + + } + +} diff --git a/compiler/tools/fpp-to-cpp/test/top/ports.names.ref.txt b/compiler/tools/fpp-to-cpp/test/top/ports.names.ref.txt new file mode 100644 index 000000000..49a339e0d --- /dev/null +++ b/compiler/tools/fpp-to-cpp/test/top/ports.names.ref.txt @@ -0,0 +1,10 @@ +ActiveComponentAc.cpp +ActiveComponentAc.hpp +PPortAc.cpp +PPortAc.hpp +PassiveComponentAc.cpp +PassiveComponentAc.hpp +Ports1TopologyAc.cpp +Ports1TopologyAc.hpp +Ports2TopologyAc.cpp +Ports2TopologyAc.hpp diff --git a/compiler/tools/fpp-to-cpp/test/top/ports.ref.txt b/compiler/tools/fpp-to-cpp/test/top/ports.ref.txt new file mode 100644 index 000000000..e69de29bb diff --git a/compiler/tools/fpp-to-cpp/test/top/run.sh b/compiler/tools/fpp-to-cpp/test/top/run.sh index ae6213a8f..c0e39e36d 100644 --- a/compiler/tools/fpp-to-cpp/test/top/run.sh +++ b/compiler/tools/fpp-to-cpp/test/top/run.sh @@ -35,6 +35,14 @@ params() diff_cpp ParamsTopology } +ports() +{ + run_test "-i builtin.fpp -n ports.names.txt -p $PWD" ports && \ + diff -u ports.names.txt ports.names.ref.txt && \ + diff_cpp Ports1Topology && \ + diff_cpp Ports2Topology +} + tlm_packets() { run_test "-i builtin.fpp -p $PWD" tlm_packets && \ diff --git a/compiler/tools/fpp-to-cpp/test/top/tests.sh b/compiler/tools/fpp-to-cpp/test/top/tests.sh index 7e2b18c65..bcd837351 100644 --- a/compiler/tools/fpp-to-cpp/test/top/tests.sh +++ b/compiler/tools/fpp-to-cpp/test/top/tests.sh @@ -5,5 +5,6 @@ health nested_namespaces no_namespace params +ports tlm_packets " diff --git a/compiler/tools/fpp-to-cpp/test/top/update-ref.sh b/compiler/tools/fpp-to-cpp/test/top/update-ref.sh index d13fff7c3..772d2da4c 100644 --- a/compiler/tools/fpp-to-cpp/test/top/update-ref.sh +++ b/compiler/tools/fpp-to-cpp/test/top/update-ref.sh @@ -35,6 +35,14 @@ params() move_cpp ParamsTopology } +ports() +{ + update "-i ports.fpp -n ports.names.txt -p $PWD" ports + mv ports.names.txt ports.names.ref.txt + move_cpp Ports1Topology + move_cpp Ports2Topology +} + tlm_packets() { update "-i builtin.fpp -p $PWD" tlm_packets diff --git a/compiler/tools/fpp-to-json/test/activeComponents.ref.txt b/compiler/tools/fpp-to-json/test/activeComponents.ref.txt index 0d85f5f52..0f0be0881 100644 --- a/compiler/tools/fpp-to-json/test/activeComponents.ref.txt +++ b/compiler/tools/fpp-to-json/test/activeComponents.ref.txt @@ -1974,84 +1974,87 @@ "aNode" : { "astNodeId" : 58 }, - "portMap" : { - "bufferSendIn" : { - "General" : { - "aNode" : { - "astNodeId" : 45 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "bufferSendIn" : { + "General" : { + "aNode" : { + "astNodeId" : 45 }, - "name" : "bufferSendIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 44 - } + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "bufferSendIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 44 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 2, - "unqualifiedName" : "BufferSend" + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 2, + "unqualifiedName" : "BufferSend" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "bufferSendOut" : { - "General" : { - "aNode" : { - "astNodeId" : 57 - }, - "specifier" : { - "kind" : { - "Output" : { - - } }, - "name" : "bufferSendOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 56 - } + "importNodeIds" : [ + ] + } + }, + "bufferSendOut" : { + "General" : { + "aNode" : { + "astNodeId" : 57 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 2, - "unqualifiedName" : "BufferSend" + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "bufferSendOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 56 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 2, + "unqualifiedName" : "BufferSend" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -2092,47 +2095,50 @@ "aNode" : { "astNodeId" : 137 }, - "portMap" : { - "schedIn" : { - "General" : { - "aNode" : { - "astNodeId" : 115 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "schedIn" : { + "General" : { + "aNode" : { + "astNodeId" : 115 }, - "name" : "schedIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 114 - } + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "schedIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 114 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "Sched" + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "Sched" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -2449,7 +2455,17 @@ }, "202" : { "map" : { - "ComponentInstance" : { + "StateMachine" : { + "map" : { + "Default" : { + "Module" : { + "nodeId" : 153, + "unqualifiedName" : "Default" + } + } + } + }, + "PortInterfaceInstance" : { "map" : { "Default" : { "Module" : { @@ -2471,27 +2487,7 @@ } } }, - "Topology" : { - "map" : { - "Default" : { - "Module" : { - "nodeId" : 153, - "unqualifiedName" : "Default" - } - } - } - }, - "Interface" : { - "map" : { - "Default" : { - "Module" : { - "nodeId" : 153, - "unqualifiedName" : "Default" - } - } - } - }, - "StateMachine" : { + "Value" : { "map" : { "Default" : { "Module" : { @@ -2501,7 +2497,7 @@ } } }, - "Value" : { + "Port" : { "map" : { "Default" : { "Module" : { @@ -2511,7 +2507,7 @@ } } }, - "Port" : { + "PortInterface" : { "map" : { "Default" : { "Module" : { diff --git a/compiler/tools/fpp-to-json/test/commands.ref.txt b/compiler/tools/fpp-to-json/test/commands.ref.txt index 6a342e99c..b84215019 100644 --- a/compiler/tools/fpp-to-json/test/commands.ref.txt +++ b/compiler/tools/fpp-to-json/test/commands.ref.txt @@ -717,9 +717,96 @@ "aNode" : { "astNodeId" : 45 }, - "portMap" : { - "cmdRegOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "cmdRegOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 0 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandReg" : { + + } + }, + "name" : "cmdRegOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 47, + "unqualifiedName" : "CmdReg" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 1 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandRecv" : { + + } + }, + "name" : "cmdIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 46, + "unqualifiedName" : "Cmd" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdResponseOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 2 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandResp" : { + + } + }, + "name" : "cmdResponseOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 50, + "unqualifiedName" : "CmdResponse" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "command reg" : { "aNode" : { "astNodeId" : 0 }, @@ -744,10 +831,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdIn" : { - "Special" : { + }, + "command recv" : { "aNode" : { "astNodeId" : 1 }, @@ -772,10 +857,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdResponseOut" : { - "Special" : { + }, + "command resp" : { "aNode" : { "astNodeId" : 2 }, @@ -803,86 +886,6 @@ } } }, - "specialPortMap" : { - "command reg" : { - "aNode" : { - "astNodeId" : 0 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandReg" : { - - } - }, - "name" : "cmdRegOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 47, - "unqualifiedName" : "CmdReg" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command recv" : { - "aNode" : { - "astNodeId" : 1 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandRecv" : { - - } - }, - "name" : "cmdIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 46, - "unqualifiedName" : "Cmd" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command resp" : { - "aNode" : { - "astNodeId" : 2 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandResp" : { - - } - }, - "name" : "cmdResponseOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 50, - "unqualifiedName" : "CmdResponse" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { "0" : { "NonParam" : { diff --git a/compiler/tools/fpp-to-json/test/constTypesComponents.ref.txt b/compiler/tools/fpp-to-json/test/constTypesComponents.ref.txt index 45418f4fc..b64b27c05 100644 --- a/compiler/tools/fpp-to-json/test/constTypesComponents.ref.txt +++ b/compiler/tools/fpp-to-json/test/constTypesComponents.ref.txt @@ -553,9 +553,96 @@ "aNode" : { "astNodeId" : 35 }, - "portMap" : { - "cmdRegOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "cmdRegOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 5 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandReg" : { + + } + }, + "name" : "cmdRegOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 37, + "unqualifiedName" : "CmdReg" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 6 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandRecv" : { + + } + }, + "name" : "cmdIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 36, + "unqualifiedName" : "Cmd" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdResponseOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 7 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandResp" : { + + } + }, + "name" : "cmdResponseOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 40, + "unqualifiedName" : "CmdResponse" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "command reg" : { "aNode" : { "astNodeId" : 5 }, @@ -580,10 +667,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdIn" : { - "Special" : { + }, + "command recv" : { "aNode" : { "astNodeId" : 6 }, @@ -608,10 +693,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdResponseOut" : { - "Special" : { + }, + "command resp" : { "aNode" : { "astNodeId" : 7 }, @@ -639,86 +722,6 @@ } } }, - "specialPortMap" : { - "command reg" : { - "aNode" : { - "astNodeId" : 5 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandReg" : { - - } - }, - "name" : "cmdRegOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 37, - "unqualifiedName" : "CmdReg" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command recv" : { - "aNode" : { - "astNodeId" : 6 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandRecv" : { - - } - }, - "name" : "cmdIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 36, - "unqualifiedName" : "Cmd" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command resp" : { - "aNode" : { - "astNodeId" : 7 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandResp" : { - - } - }, - "name" : "cmdResponseOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 40, - "unqualifiedName" : "CmdResponse" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { "0" : { "NonParam" : { diff --git a/compiler/tools/fpp-to-json/test/dataProducts.ref.txt b/compiler/tools/fpp-to-json/test/dataProducts.ref.txt index 45d2f13b6..ca58bd44a 100644 --- a/compiler/tools/fpp-to-json/test/dataProducts.ref.txt +++ b/compiler/tools/fpp-to-json/test/dataProducts.ref.txt @@ -592,9 +592,136 @@ "aNode" : { "astNodeId" : 28 }, - "portMap" : { - "productRequestOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "productRequestOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 7 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "ProductRequest" : { + + } + }, + "name" : "productRequestOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "DpRequest" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "productRecvIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 8 + }, + "specifier" : { + "inputKind" : { + "Some" : { + "Sync" : { + + } + } + }, + "kind" : { + "ProductRecv" : { + + } + }, + "name" : "productRecvIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 1, + "unqualifiedName" : "DpResponse" + } + }, + "priority" : "None", + "queueFull" : { + "Some" : { + "Assert" : { + + } + } + }, + "importNodeIds" : [ + ] + } + }, + "productSendOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 9 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "ProductSend" : { + + } + }, + "name" : "productSendOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 2, + "unqualifiedName" : "DpSend" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 10 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 5, + "unqualifiedName" : "Time" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "product request" : { "aNode" : { "astNodeId" : 7 }, @@ -619,10 +746,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "productRecvIn" : { - "Special" : { + }, + "product recv" : { "aNode" : { "astNodeId" : 8 }, @@ -659,10 +784,8 @@ }, "importNodeIds" : [ ] - } - }, - "productSendOut" : { - "Special" : { + }, + "product send" : { "aNode" : { "astNodeId" : 9 }, @@ -687,10 +810,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "timeGetOut" : { - "Special" : { + }, + "time get" : { "aNode" : { "astNodeId" : 10 }, @@ -718,124 +839,6 @@ } } }, - "specialPortMap" : { - "product request" : { - "aNode" : { - "astNodeId" : 7 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "ProductRequest" : { - - } - }, - "name" : "productRequestOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "DpRequest" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "product recv" : { - "aNode" : { - "astNodeId" : 8 - }, - "specifier" : { - "inputKind" : { - "Some" : { - "Sync" : { - - } - } - }, - "kind" : { - "ProductRecv" : { - - } - }, - "name" : "productRecvIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 1, - "unqualifiedName" : "DpResponse" - } - }, - "priority" : "None", - "queueFull" : { - "Some" : { - "Assert" : { - - } - } - }, - "importNodeIds" : [ - ] - }, - "product send" : { - "aNode" : { - "astNodeId" : 9 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "ProductSend" : { - - } - }, - "name" : "productSendOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 2, - "unqualifiedName" : "DpSend" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "time get" : { - "aNode" : { - "astNodeId" : 10 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 5, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, diff --git a/compiler/tools/fpp-to-json/test/events.ref.txt b/compiler/tools/fpp-to-json/test/events.ref.txt index ec5c9c515..d2917289c 100644 --- a/compiler/tools/fpp-to-json/test/events.ref.txt +++ b/compiler/tools/fpp-to-json/test/events.ref.txt @@ -1970,9 +1970,96 @@ "aNode" : { "astNodeId" : 19 }, - "portMap" : { - "eventOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "eventOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 0 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Event" : { + + } + }, + "name" : "eventOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 198, + "unqualifiedName" : "Log" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "textEventOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 1 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TextEvent" : { + + } + }, + "name" : "textEventOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 199, + "unqualifiedName" : "LogText" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 2 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 202, + "unqualifiedName" : "Time" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "event" : { "aNode" : { "astNodeId" : 0 }, @@ -1997,10 +2084,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "textEventOut" : { - "Special" : { + }, + "text event" : { "aNode" : { "astNodeId" : 1 }, @@ -2025,10 +2110,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "timeGetOut" : { - "Special" : { + }, + "time get" : { "aNode" : { "astNodeId" : 2 }, @@ -2056,86 +2139,6 @@ } } }, - "specialPortMap" : { - "event" : { - "aNode" : { - "astNodeId" : 0 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Event" : { - - } - }, - "name" : "eventOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 198, - "unqualifiedName" : "Log" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "text event" : { - "aNode" : { - "astNodeId" : 1 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TextEvent" : { - - } - }, - "name" : "textEventOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 199, - "unqualifiedName" : "LogText" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "time get" : { - "aNode" : { - "astNodeId" : 2 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 202, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -2215,9 +2218,96 @@ "aNode" : { "astNodeId" : 196 }, - "portMap" : { - "eventOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "eventOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 138 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Event" : { + + } + }, + "name" : "eventOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 198, + "unqualifiedName" : "Log" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "textEventOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 139 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TextEvent" : { + + } + }, + "name" : "textEventOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 199, + "unqualifiedName" : "LogText" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 140 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 202, + "unqualifiedName" : "Time" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "event" : { "aNode" : { "astNodeId" : 138 }, @@ -2242,10 +2332,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "textEventOut" : { - "Special" : { + }, + "text event" : { "aNode" : { "astNodeId" : 139 }, @@ -2270,10 +2358,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "timeGetOut" : { - "Special" : { + }, + "time get" : { "aNode" : { "astNodeId" : 140 }, @@ -2301,86 +2387,6 @@ } } }, - "specialPortMap" : { - "event" : { - "aNode" : { - "astNodeId" : 138 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Event" : { - - } - }, - "name" : "eventOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 198, - "unqualifiedName" : "Log" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "text event" : { - "aNode" : { - "astNodeId" : 139 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TextEvent" : { - - } - }, - "name" : "textEventOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 199, - "unqualifiedName" : "LogText" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "time get" : { - "aNode" : { - "astNodeId" : 140 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 202, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, diff --git a/compiler/tools/fpp-to-json/test/frameworkDefs.ref.txt b/compiler/tools/fpp-to-json/test/frameworkDefs.ref.txt index 3233fad07..9c77290ac 100644 --- a/compiler/tools/fpp-to-json/test/frameworkDefs.ref.txt +++ b/compiler/tools/fpp-to-json/test/frameworkDefs.ref.txt @@ -3038,7 +3038,7 @@ }, "163" : { "map" : { - "ComponentInstance" : { + "StateMachine" : { "map" : { "DpCfg" : { "Module" : { @@ -3048,7 +3048,7 @@ } } }, - "Topology" : { + "PortInterfaceInstance" : { "map" : { "DpCfg" : { "Module" : { @@ -3058,18 +3058,14 @@ } } }, - "Interface" : { + "Value" : { "map" : { - "DpCfg" : { - "Module" : { - "nodeId" : 162, - "unqualifiedName" : "DpCfg" + "DpState" : { + "Enum" : { + "nodeId" : 45, + "unqualifiedName" : "DpState" } - } - } - }, - "StateMachine" : { - "map" : { + }, "DpCfg" : { "Module" : { "nodeId" : 162, @@ -3078,14 +3074,8 @@ } } }, - "Value" : { + "Port" : { "map" : { - "DpState" : { - "Enum" : { - "nodeId" : 45, - "unqualifiedName" : "DpState" - } - }, "DpCfg" : { "Module" : { "nodeId" : 162, @@ -3094,7 +3084,7 @@ } } }, - "Port" : { + "PortInterface" : { "map" : { "DpCfg" : { "Module" : { diff --git a/compiler/tools/fpp-to-json/test/importedTopologies.fpp b/compiler/tools/fpp-to-json/test/importedTopologies.fpp index 14fb7f309..db6e6aab7 100644 --- a/compiler/tools/fpp-to-json/test/importedTopologies.fpp +++ b/compiler/tools/fpp-to-json/test/importedTopologies.fpp @@ -51,6 +51,6 @@ topology Simple2 { } @ A third Simple Topology -topology Simple3{ +topology Simple3 { import Simple2 } diff --git a/compiler/tools/fpp-to-json/test/importedTopologies.ref.txt b/compiler/tools/fpp-to-json/test/importedTopologies.ref.txt index 79feba578..c3bd8b501 100644 --- a/compiler/tools/fpp-to-json/test/importedTopologies.ref.txt +++ b/compiler/tools/fpp-to-json/test/importedTopologies.ref.txt @@ -329,7 +329,7 @@ "This specifier says that instance c1 is part of the topology" ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -357,7 +357,7 @@ "This specifier says that instance c2 is part of the topology" ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -397,7 +397,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -421,7 +421,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -471,7 +471,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -495,7 +495,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -555,11 +555,11 @@ [ ], { - "SpecTopImport" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { - "sym" : { + "instance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -583,7 +583,7 @@ "This specifier says that instance c3 is part of the topology" ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -611,7 +611,7 @@ "This specifier says that instance c4 is part of the topology" ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -651,7 +651,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -675,7 +675,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -725,7 +725,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -749,7 +749,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -809,11 +809,11 @@ [ ], { - "SpecTopImport" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { - "sym" : { + "instance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1600,84 +1600,87 @@ "aNode" : { "astNodeId" : 13 }, - "portMap" : { - "pIn" : { - "General" : { - "aNode" : { - "astNodeId" : 3 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "pIn" : { + "General" : { + "aNode" : { + "astNodeId" : 3 }, - "name" : "pIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 2 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "pIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 2 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "P" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "P" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "pOut" : { - "General" : { - "aNode" : { - "astNodeId" : 12 - }, - "specifier" : { - "kind" : { - "Output" : { - - } }, - "name" : "pOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 11 - } + "importNodeIds" : [ + ] + } + }, + "pOut" : { + "General" : { + "aNode" : { + "astNodeId" : 12 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "P" + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "pOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 11 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "P" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -1789,34 +1792,38 @@ "aNode" : { "astNodeId" : 72 }, - "directImportMap" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "Simple1" + }, + "directTopologies" : { + }, + "directComponentInstances" : { + "17" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "17.3", + "includingLoc" : "None" + }, + "21" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "19.3", + "includingLoc" : "None" + } }, "transitiveImportSet" : [ ], "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, { @@ -1827,26 +1834,13 @@ ], [ { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, { @@ -1856,6 +1850,20 @@ } ] ], + "ports" : [ + ], + "portMap" : { + + }, + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, "patternMap" : { }, @@ -1869,27 +1877,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1930,7 +1925,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -1939,27 +1935,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2000,7 +1983,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2014,27 +1998,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2075,7 +2046,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2084,27 +2056,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2145,7 +2104,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2161,27 +2121,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2222,7 +2169,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2231,27 +2179,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2292,7 +2227,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2306,27 +2242,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2367,7 +2290,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2376,27 +2300,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2437,7 +2348,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2446,27 +2358,14 @@ "outputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2516,27 +2415,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2577,7 +2463,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2586,27 +2473,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2647,7 +2521,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2655,27 +2530,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2725,27 +2587,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2786,7 +2635,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2795,27 +2645,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2856,7 +2693,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2866,27 +2704,14 @@ "inputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2936,27 +2761,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2997,7 +2809,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -3006,27 +2819,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -3067,7 +2867,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -3075,27 +2876,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3145,27 +2933,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -3206,7 +2981,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -3215,27 +2991,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3276,7 +3039,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -3293,27 +3057,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3354,7 +3105,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -3363,27 +3115,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -3424,7 +3163,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -3439,27 +3179,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -3500,7 +3227,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -3509,27 +3237,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3570,7 +3285,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -3587,27 +3303,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -3648,7 +3351,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -3657,27 +3361,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3718,7 +3409,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -3733,27 +3425,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3794,7 +3473,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -3803,27 +3483,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -3864,7 +3531,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -3878,13 +3546,30 @@ "aNode" : { "astNodeId" : 118 }, - "directImportMap" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "Simple2" + }, + "directTopologies" : { "72" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", "pos" : "35.3", "includingLoc" : "None" } }, + "directComponentInstances" : { + "25" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "37.3", + "includingLoc" : "None" + }, + "29" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "39.3", + "includingLoc" : "None" + } + }, "transitiveImportSet" : [ { "node" : { @@ -3895,129 +3580,108 @@ "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "37.3", + "pos" : "17.3", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "39.3", + "pos" : "19.3", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceTopology" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "Simple1" + }, + "unqualifiedName" : "Simple1" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "17.3", + "pos" : "35.3", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "19.3", + "pos" : "37.3", + "includingLoc" : "None" + } + ], + [ + { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" + } + }, + { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "39.3", "includingLoc" : "None" } ] ], - "patternMap" : { + "ports" : [ + ], + "portMap" : { }, - "connectionMap" : { + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, + "patternMap" : { + + }, + "connectionMap" : { "C3" : [ { "from" : { @@ -4027,27 +3691,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -4088,7 +3739,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -4097,27 +3749,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -4158,7 +3797,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -4172,27 +3812,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -4233,7 +3860,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -4242,27 +3870,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -4303,7 +3918,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -4317,27 +3933,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -4378,7 +3981,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -4387,27 +3991,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -4448,7 +4039,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -4462,27 +4054,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -4523,7 +4102,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -4532,27 +4112,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -4593,7 +4160,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -4609,27 +4177,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -4670,7 +4225,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -4679,27 +4235,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -4740,7 +4283,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -4754,27 +4298,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -4815,7 +4346,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -4824,27 +4356,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -4885,7 +4404,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -4894,27 +4414,14 @@ "outputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -4964,27 +4471,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -5025,7 +4519,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -5034,27 +4529,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -5095,7 +4577,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -5103,27 +4586,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -5173,27 +4643,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -5234,7 +4691,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -5243,27 +4701,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -5304,7 +4749,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -5312,27 +4758,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -5382,27 +4815,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -5443,7 +4863,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -5452,27 +4873,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -5513,7 +4921,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -5521,27 +4930,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -5591,27 +4987,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -5652,7 +5035,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -5661,27 +5045,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -5722,7 +5093,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -5732,27 +5104,14 @@ "inputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -5802,27 +5161,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -5863,7 +5209,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -5872,27 +5219,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -5933,7 +5267,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -5941,27 +5276,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -6011,27 +5333,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -6072,7 +5381,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -6081,27 +5391,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -6142,7 +5439,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -6150,27 +5448,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -6220,27 +5505,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -6281,7 +5553,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -6290,27 +5563,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -6351,7 +5611,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -6359,27 +5620,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -6429,27 +5677,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -6490,7 +5725,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -6499,27 +5735,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -6560,7 +5783,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -6573,31 +5797,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.5", + "pos" : "28.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -6638,36 +5849,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.16", + "pos" : "28.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -6708,7 +5907,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -6719,31 +5919,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.5", + "pos" : "43.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -6784,36 +5971,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.16", + "pos" : "43.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -6854,7 +6029,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -6869,27 +6045,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -6930,7 +6093,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -6939,27 +6103,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -7000,7 +6151,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -7011,31 +6163,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "28.5", + "pos" : "48.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -7076,36 +6215,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "28.16", + "pos" : "48.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -7146,7 +6273,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -7159,31 +6287,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.5", + "pos" : "23.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -7224,36 +6339,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.16", + "pos" : "23.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -7294,7 +6397,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -7305,31 +6409,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.5", + "pos" : "48.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -7370,36 +6461,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.16", + "pos" : "48.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -7440,7 +6519,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -7455,27 +6535,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -7516,7 +6583,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -7525,27 +6593,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -7586,7 +6641,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -7597,31 +6653,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "23.5", + "pos" : "43.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -7662,36 +6705,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "23.16", + "pos" : "43.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -7732,7 +6763,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -7746,12 +6778,20 @@ "aNode" : { "astNodeId" : 128 }, - "directImportMap" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "Simple3" + }, + "directTopologies" : { "118" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", "pos" : "55.3", "includingLoc" : "None" } + }, + "directComponentInstances" : { + }, "transitiveImportSet" : [ { @@ -7768,125 +6808,121 @@ "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "37.3", + "pos" : "17.3", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "39.3", + "pos" : "19.3", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceTopology" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "Simple1" + }, + "unqualifiedName" : "Simple1" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "17.3", + "pos" : "35.3", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "19.3", + "pos" : "37.3", + "includingLoc" : "None" + } + ], + [ + { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" + } + }, + { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "39.3", + "includingLoc" : "None" + } + ], + [ + { + "InterfaceTopology" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "Simple2" + }, + "unqualifiedName" : "Simple2" + } + }, + { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "55.3", "includingLoc" : "None" } ] ], + "ports" : [ + ], + "portMap" : { + + }, + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, "patternMap" : { }, @@ -7900,27 +6936,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -7961,7 +6984,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -7970,27 +6994,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -8031,7 +7042,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -8045,27 +7057,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -8106,7 +7105,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -8115,27 +7115,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -8176,7 +7163,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -8190,27 +7178,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -8251,7 +7226,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -8260,27 +7236,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -8321,7 +7284,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -8335,27 +7299,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -8396,7 +7347,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -8405,27 +7357,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -8466,7 +7405,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -8478,27 +7418,14 @@ "outputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -8548,27 +7475,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -8609,7 +7523,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -8618,27 +7533,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -8679,7 +7581,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -8687,27 +7590,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -8757,27 +7647,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -8818,7 +7695,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -8827,27 +7705,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -8888,7 +7753,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -8896,27 +7762,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -8966,27 +7819,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -9027,7 +7867,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -9036,27 +7877,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -9097,7 +7925,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -9105,27 +7934,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -9175,27 +7991,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -9236,7 +8039,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -9245,27 +8049,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -9306,7 +8097,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -9316,27 +8108,14 @@ "inputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -9386,27 +8165,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -9447,7 +8213,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -9456,27 +8223,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -9517,7 +8271,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -9525,27 +8280,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -9595,27 +8337,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -9656,7 +8385,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -9665,27 +8395,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -9726,7 +8443,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -9734,27 +8452,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -9804,27 +8509,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -9865,7 +8557,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -9874,27 +8567,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -9935,7 +8615,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -9943,27 +8624,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -10013,27 +8681,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -10074,7 +8729,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -10083,27 +8739,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -10144,7 +8787,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -10157,31 +8801,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.5", + "pos" : "28.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -10222,36 +8853,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, - "to" : { - "loc" : { - "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.16", - "includingLoc" : "None" - }, - "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "to" : { + "loc" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", + "pos" : "28.16", + "includingLoc" : "None" + }, + "port" : { + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -10292,7 +8911,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -10303,31 +8923,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.5", + "pos" : "43.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -10368,36 +8975,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.16", + "pos" : "43.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -10438,7 +9033,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -10453,27 +9049,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -10514,7 +9097,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -10523,27 +9107,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -10584,7 +9155,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -10595,31 +9167,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "28.5", + "pos" : "48.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -10660,36 +9219,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "28.16", + "pos" : "48.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -10730,7 +9277,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -10743,31 +9291,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.5", + "pos" : "23.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -10808,36 +9343,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "48.16", + "pos" : "23.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -10878,7 +9401,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -10889,31 +9413,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.5", + "pos" : "48.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 25 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -10954,36 +9465,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "43.16", + "pos" : "48.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 29 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -11024,7 +9523,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -11039,27 +9539,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -11100,7 +9587,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -11109,27 +9597,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -11170,7 +9645,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -11181,31 +9657,18 @@ "from" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "23.5", + "pos" : "43.5", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 17 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { @@ -11246,36 +9709,24 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/importedTopologies.fpp", - "pos" : "23.16", + "pos" : "43.16", "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 21 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 13 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { @@ -11316,7 +9767,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, diff --git a/compiler/tools/fpp-to-json/test/interfaces.ref.txt b/compiler/tools/fpp-to-json/test/interfaces.ref.txt index ba9ef93dd..b7f0a9a4a 100644 --- a/compiler/tools/fpp-to-json/test/interfaces.ref.txt +++ b/compiler/tools/fpp-to-json/test/interfaces.ref.txt @@ -972,9 +972,137 @@ "aNode" : { "astNodeId" : 71 }, - "portMap" : { - "cmdRegOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "cmdRegOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 7 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandReg" : { + + } + }, + "name" : "cmdRegOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 1, + "unqualifiedName" : "CmdReg" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + 25 + ] + } + }, + "cmdIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 8 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandRecv" : { + + } + }, + "name" : "cmdIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "Cmd" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + 25 + ] + } + }, + "cmdResponseOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 11 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandResp" : { + + } + }, + "name" : "cmdResponseOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 4, + "unqualifiedName" : "CmdResponse" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + 25 + ] + } + }, + "general" : { + "General" : { + "aNode" : { + "astNodeId" : 21 + }, + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "general", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 20 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "General" + } + } + } + }, + "importNodeIds" : [ + 28 + ] + } + } + }, + "specialPortMap" : { + "command reg" : { "aNode" : { "astNodeId" : 7 }, @@ -1000,10 +1128,8 @@ "importNodeIds" : [ 25 ] - } - }, - "cmdIn" : { - "Special" : { + }, + "command recv" : { "aNode" : { "astNodeId" : 8 }, @@ -1029,10 +1155,8 @@ "importNodeIds" : [ 25 ] - } - }, - "cmdResponseOut" : { - "Special" : { + }, + "command resp" : { "aNode" : { "astNodeId" : 11 }, @@ -1059,127 +1183,6 @@ 25 ] } - }, - "general" : { - "General" : { - "aNode" : { - "astNodeId" : 21 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } - }, - "name" : "general", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 20 - } - }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "General" - } - } - } - }, - "importNodeIds" : [ - 28 - ] - } - } - }, - "specialPortMap" : { - "command reg" : { - "aNode" : { - "astNodeId" : 7 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandReg" : { - - } - }, - "name" : "cmdRegOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 1, - "unqualifiedName" : "CmdReg" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - 25 - ] - }, - "command recv" : { - "aNode" : { - "astNodeId" : 8 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandRecv" : { - - } - }, - "name" : "cmdIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "Cmd" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - 25 - ] - }, - "command resp" : { - "aNode" : { - "astNodeId" : 11 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandResp" : { - - } - }, - "name" : "cmdResponseOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 4, - "unqualifiedName" : "CmdResponse" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - 25 - ] } }, "commandMap" : { @@ -1519,9 +1522,96 @@ "importMap" : { }, - "portMap" : { - "cmdRegOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "interface", + "portMap" : { + "cmdRegOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 7 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandReg" : { + + } + }, + "name" : "cmdRegOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 1, + "unqualifiedName" : "CmdReg" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 8 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandRecv" : { + + } + }, + "name" : "cmdIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "Cmd" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdResponseOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 11 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandResp" : { + + } + }, + "name" : "cmdResponseOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 4, + "unqualifiedName" : "CmdResponse" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "command reg" : { "aNode" : { "astNodeId" : 7 }, @@ -1546,10 +1636,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdIn" : { - "Special" : { + }, + "command recv" : { "aNode" : { "astNodeId" : 8 }, @@ -1574,10 +1662,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdResponseOut" : { - "Special" : { + }, + "command resp" : { "aNode" : { "astNodeId" : 11 }, @@ -1604,86 +1690,6 @@ ] } } - }, - "specialPortMap" : { - "command reg" : { - "aNode" : { - "astNodeId" : 7 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandReg" : { - - } - }, - "name" : "cmdRegOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 1, - "unqualifiedName" : "CmdReg" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command recv" : { - "aNode" : { - "astNodeId" : 8 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandRecv" : { - - } - }, - "name" : "cmdIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "Cmd" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command resp" : { - "aNode" : { - "astNodeId" : 11 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandResp" : { - - } - }, - "name" : "cmdResponseOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 4, - "unqualifiedName" : "CmdResponse" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } } }, "22" : { @@ -1693,47 +1699,50 @@ "importMap" : { }, - "portMap" : { - "general" : { - "General" : { - "aNode" : { - "astNodeId" : 21 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } + "portInterface" : { + "instanceType" : "interface", + "portMap" : { + "general" : { + "General" : { + "aNode" : { + "astNodeId" : 21 }, - "name" : "general", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 20 - } + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "general", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 20 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "General" + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "General" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - } } } diff --git a/compiler/tools/fpp-to-json/test/internalPorts.ref.txt b/compiler/tools/fpp-to-json/test/internalPorts.ref.txt index 30b5cc3cd..f97c93c4b 100644 --- a/compiler/tools/fpp-to-json/test/internalPorts.ref.txt +++ b/compiler/tools/fpp-to-json/test/internalPorts.ref.txt @@ -367,25 +367,28 @@ "aNode" : { "astNodeId" : 43 }, - "portMap" : { - "pInternal" : { - "Internal" : { - "aNode" : { - "astNodeId" : 42 - }, - "priority" : { - "Some" : 10 - }, - "queueFull" : { - "Drop" : { - + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "pInternal" : { + "Internal" : { + "aNode" : { + "astNodeId" : 42 + }, + "priority" : { + "Some" : 10 + }, + "queueFull" : { + "Drop" : { + + } } } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { diff --git a/compiler/tools/fpp-to-json/test/matchedPorts.ref.txt b/compiler/tools/fpp-to-json/test/matchedPorts.ref.txt index f6d3d0935..287f70ad2 100644 --- a/compiler/tools/fpp-to-json/test/matchedPorts.ref.txt +++ b/compiler/tools/fpp-to-json/test/matchedPorts.ref.txt @@ -413,92 +413,95 @@ "aNode" : { "astNodeId" : 21 }, - "portMap" : { - "pingOut" : { - "General" : { - "aNode" : { - "astNodeId" : 6 - }, - "specifier" : { - "kind" : { - "Output" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "pingOut" : { + "General" : { + "aNode" : { + "astNodeId" : 6 }, - "name" : "pingOut", - "size" : { - "Some" : { - "astNodeId" : 2 - } - }, - "port" : { - "Some" : { - "astNodeId" : 5 - } + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "pingOut", + "size" : { + "Some" : { + "astNodeId" : 2 + } + }, + "port" : { + "Some" : { + "astNodeId" : 5 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 10, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 24, - "unqualifiedName" : "Ping" + "kind" : "Output", + "size" : 10, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 24, + "unqualifiedName" : "Ping" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "pingIn" : { - "General" : { - "aNode" : { - "astNodeId" : 11 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } }, - "name" : "pingIn", - "size" : { - "Some" : { - "astNodeId" : 7 - } + "importNodeIds" : [ + ] + } + }, + "pingIn" : { + "General" : { + "aNode" : { + "astNodeId" : 11 }, - "port" : { - "Some" : { - "astNodeId" : 10 - } + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "pingIn", + "size" : { + "Some" : { + "astNodeId" : 7 + } + }, + "port" : { + "Some" : { + "astNodeId" : 10 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 10, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 24, - "unqualifiedName" : "Ping" + "kind" : "AsyncInput", + "size" : 10, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 24, + "unqualifiedName" : "Ping" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { diff --git a/compiler/tools/fpp-to-json/test/modules.ref.txt b/compiler/tools/fpp-to-json/test/modules.ref.txt index 15a6017e9..8755fc02e 100644 --- a/compiler/tools/fpp-to-json/test/modules.ref.txt +++ b/compiler/tools/fpp-to-json/test/modules.ref.txt @@ -895,17 +895,7 @@ }, "56" : { "map" : { - "ComponentInstance" : { - "map" : { - "B" : { - "Module" : { - "nodeId" : 55, - "unqualifiedName" : "B" - } - } - } - }, - "Topology" : { + "StateMachine" : { "map" : { "B" : { "Module" : { @@ -915,7 +905,7 @@ } } }, - "Interface" : { + "PortInterfaceInstance" : { "map" : { "B" : { "Module" : { @@ -925,7 +915,7 @@ } } }, - "StateMachine" : { + "Value" : { "map" : { "B" : { "Module" : { @@ -935,7 +925,7 @@ } } }, - "Value" : { + "Port" : { "map" : { "B" : { "Module" : { @@ -945,7 +935,7 @@ } } }, - "Port" : { + "PortInterface" : { "map" : { "B" : { "Module" : { diff --git a/compiler/tools/fpp-to-json/test/parameters.ref.txt b/compiler/tools/fpp-to-json/test/parameters.ref.txt index 2a4bee241..6137d6d4d 100644 --- a/compiler/tools/fpp-to-json/test/parameters.ref.txt +++ b/compiler/tools/fpp-to-json/test/parameters.ref.txt @@ -869,139 +869,274 @@ "aNode" : { "astNodeId" : 35 }, - "portMap" : { - "cmdIn" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "cmdIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 3 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandRecv" : { + + } + }, + "name" : "cmdIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 38, + "unqualifiedName" : "Cmd" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "prmGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 6 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "ParamGet" : { + + } + }, + "name" : "prmGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 36, + "unqualifiedName" : "PrmGet" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdResponseOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 5 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandResp" : { + + } + }, + "name" : "cmdResponseOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 42, + "unqualifiedName" : "CmdResponse" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "prmSetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 7 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "ParamSet" : { + + } + }, + "name" : "prmSetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 37, + "unqualifiedName" : "PrmSet" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdRegOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 4 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandReg" : { + + } + }, + "name" : "cmdRegOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 39, + "unqualifiedName" : "CmdReg" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "param set" : { "aNode" : { - "astNodeId" : 3 + "astNodeId" : 7 }, "specifier" : { "inputKind" : "None", "kind" : { - "CommandRecv" : { + "ParamSet" : { } }, - "name" : "cmdIn", + "name" : "prmSetOut", "priority" : "None", "queueFull" : "None" }, "symbol" : { "Port" : { - "nodeId" : 38, - "unqualifiedName" : "Cmd" + "nodeId" : 37, + "unqualifiedName" : "PrmSet" } }, "priority" : "None", "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "prmGetOut" : { - "Special" : { + }, + "command recv" : { "aNode" : { - "astNodeId" : 6 + "astNodeId" : 3 }, "specifier" : { "inputKind" : "None", "kind" : { - "ParamGet" : { + "CommandRecv" : { } }, - "name" : "prmGetOut", + "name" : "cmdIn", "priority" : "None", "queueFull" : "None" }, "symbol" : { "Port" : { - "nodeId" : 36, - "unqualifiedName" : "PrmGet" + "nodeId" : 38, + "unqualifiedName" : "Cmd" } }, "priority" : "None", "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdResponseOut" : { - "Special" : { + }, + "command reg" : { "aNode" : { - "astNodeId" : 5 + "astNodeId" : 4 }, "specifier" : { "inputKind" : "None", "kind" : { - "CommandResp" : { + "CommandReg" : { } }, - "name" : "cmdResponseOut", + "name" : "cmdRegOut", "priority" : "None", "queueFull" : "None" }, "symbol" : { "Port" : { - "nodeId" : 42, - "unqualifiedName" : "CmdResponse" + "nodeId" : 39, + "unqualifiedName" : "CmdReg" } }, "priority" : "None", "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "prmSetOut" : { - "Special" : { + }, + "command resp" : { "aNode" : { - "astNodeId" : 7 + "astNodeId" : 5 }, "specifier" : { "inputKind" : "None", "kind" : { - "ParamSet" : { + "CommandResp" : { } }, - "name" : "prmSetOut", + "name" : "cmdResponseOut", "priority" : "None", "queueFull" : "None" }, "symbol" : { "Port" : { - "nodeId" : 37, - "unqualifiedName" : "PrmSet" + "nodeId" : 42, + "unqualifiedName" : "CmdResponse" } }, "priority" : "None", "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdRegOut" : { - "Special" : { + }, + "param get" : { "aNode" : { - "astNodeId" : 4 + "astNodeId" : 6 }, "specifier" : { "inputKind" : "None", "kind" : { - "CommandReg" : { + "ParamGet" : { } }, - "name" : "cmdRegOut", + "name" : "prmGetOut", "priority" : "None", "queueFull" : "None" }, "symbol" : { "Port" : { - "nodeId" : 39, - "unqualifiedName" : "CmdReg" + "nodeId" : 36, + "unqualifiedName" : "PrmGet" } }, "priority" : "None", @@ -1011,138 +1146,6 @@ } } }, - "specialPortMap" : { - "param set" : { - "aNode" : { - "astNodeId" : 7 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "ParamSet" : { - - } - }, - "name" : "prmSetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 37, - "unqualifiedName" : "PrmSet" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command recv" : { - "aNode" : { - "astNodeId" : 3 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandRecv" : { - - } - }, - "name" : "cmdIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 38, - "unqualifiedName" : "Cmd" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command reg" : { - "aNode" : { - "astNodeId" : 4 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandReg" : { - - } - }, - "name" : "cmdRegOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 39, - "unqualifiedName" : "CmdReg" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command resp" : { - "aNode" : { - "astNodeId" : 5 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandResp" : { - - } - }, - "name" : "cmdResponseOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 42, - "unqualifiedName" : "CmdResponse" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "param get" : { - "aNode" : { - "astNodeId" : 6 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "ParamGet" : { - - } - }, - "name" : "prmGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 36, - "unqualifiedName" : "PrmGet" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { "34" : { "Param" : { diff --git a/compiler/tools/fpp-to-json/test/passiveComponent.ref.txt b/compiler/tools/fpp-to-json/test/passiveComponent.ref.txt index a2197a508..01e0ece82 100644 --- a/compiler/tools/fpp-to-json/test/passiveComponent.ref.txt +++ b/compiler/tools/fpp-to-json/test/passiveComponent.ref.txt @@ -826,46 +826,105 @@ "aNode" : { "astNodeId" : 44 }, - "portMap" : { - "schedIn" : { - "General" : { - "aNode" : { - "astNodeId" : 33 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "schedIn" : { + "General" : { + "aNode" : { + "astNodeId" : 33 + }, + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "schedIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 32 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 64, + "unqualifiedName" : "Sched" + } + } } }, - "name" : "schedIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 32 + "importNodeIds" : [ + ] + } + }, + "tlmOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 34 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Telemetry" : { + + } + }, + "name" : "tlmOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 66, + "unqualifiedName" : "Tlm" } }, "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 64, - "unqualifiedName" : "Sched" + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 35 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 69, + "unqualifiedName" : "Time" } - } - }, - "importNodeIds" : [ - ] + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } } }, - "tlmOut" : { - "Special" : { + "specialPortMap" : { + "telemetry" : { "aNode" : { "astNodeId" : 34 }, @@ -890,10 +949,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "timeGetOut" : { - "Special" : { + }, + "time get" : { "aNode" : { "astNodeId" : 35 }, @@ -921,60 +978,6 @@ } } }, - "specialPortMap" : { - "telemetry" : { - "aNode" : { - "astNodeId" : 34 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Telemetry" : { - - } - }, - "name" : "tlmOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 66, - "unqualifiedName" : "Tlm" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "time get" : { - "aNode" : { - "astNodeId" : 35 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 69, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1264,7 +1267,7 @@ }, "61" : { "map" : { - "ComponentInstance" : { + "PortInterfaceInstance" : { "map" : { "engineTemp" : { "ComponentInstance" : { diff --git a/compiler/tools/fpp-to-json/test/patternedConnections.ref.txt b/compiler/tools/fpp-to-json/test/patternedConnections.ref.txt index 6a160c4a4..08e615bb1 100644 --- a/compiler/tools/fpp-to-json/test/patternedConnections.ref.txt +++ b/compiler/tools/fpp-to-json/test/patternedConnections.ref.txt @@ -1174,7 +1174,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1201,7 +1201,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1228,7 +1228,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1255,7 +1255,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1282,7 +1282,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1309,7 +1309,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1336,7 +1336,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -3593,84 +3593,87 @@ "aNode" : { "astNodeId" : 67 }, - "portMap" : { - "PingSend" : { - "General" : { - "aNode" : { - "astNodeId" : 54 - }, - "specifier" : { - "kind" : { - "Output" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "PingSend" : { + "General" : { + "aNode" : { + "astNodeId" : 54 }, - "name" : "PingSend", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 53 - } + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "PingSend", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 53 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 301, - "unqualifiedName" : "Ping" + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 301, + "unqualifiedName" : "Ping" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "PingReturn" : { - "General" : { - "aNode" : { - "astNodeId" : 66 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } }, - "name" : "PingReturn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 65 - } + "importNodeIds" : [ + ] + } + }, + "PingReturn" : { + "General" : { + "aNode" : { + "astNodeId" : 66 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 301, - "unqualifiedName" : "Ping" + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "PingReturn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 65 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 301, + "unqualifiedName" : "Ping" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -3711,47 +3714,50 @@ "aNode" : { "astNodeId" : 12 }, - "portMap" : { - "timeGetPort" : { - "General" : { - "aNode" : { - "astNodeId" : 11 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "timeGetPort" : { + "General" : { + "aNode" : { + "astNodeId" : 11 }, - "name" : "timeGetPort", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 10 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "timeGetPort", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 10 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 293, - "unqualifiedName" : "Time" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 293, + "unqualifiedName" : "Time" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -3792,84 +3798,87 @@ "aNode" : { "astNodeId" : 84 }, - "portMap" : { - "paramGet" : { - "General" : { - "aNode" : { - "astNodeId" : 71 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "paramGet" : { + "General" : { + "aNode" : { + "astNodeId" : 71 }, - "name" : "paramGet", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 70 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "paramGet", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 70 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 291, - "unqualifiedName" : "PrmGet" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 291, + "unqualifiedName" : "PrmGet" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "paramSet" : { - "General" : { - "aNode" : { - "astNodeId" : 83 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } }, - "name" : "paramSet", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 82 - } + "importNodeIds" : [ + ] + } + }, + "paramSet" : { + "General" : { + "aNode" : { + "astNodeId" : 83 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 292, - "unqualifiedName" : "PrmSet" + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "paramSet", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 82 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 292, + "unqualifiedName" : "PrmSet" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -3910,47 +3919,50 @@ "aNode" : { "astNodeId" : 110 }, - "portMap" : { - "textEventLog" : { - "General" : { - "aNode" : { - "astNodeId" : 109 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "textEventLog" : { + "General" : { + "aNode" : { + "astNodeId" : 109 }, - "name" : "textEventLog", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 108 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "textEventLog", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 108 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 290, - "unqualifiedName" : "LogText" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 290, + "unqualifiedName" : "LogText" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -3991,47 +4003,50 @@ "aNode" : { "astNodeId" : 97 }, - "portMap" : { - "tlm" : { - "General" : { - "aNode" : { - "astNodeId" : 96 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "tlm" : { + "General" : { + "aNode" : { + "astNodeId" : 96 }, - "name" : "tlm", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 95 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "tlm", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 95 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 294, - "unqualifiedName" : "Tlm" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 294, + "unqualifiedName" : "Tlm" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -4072,47 +4087,50 @@ "aNode" : { "astNodeId" : 50 }, - "portMap" : { - "eventLog" : { - "General" : { - "aNode" : { - "astNodeId" : 49 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } - }, - "name" : "eventLog", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 48 - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "eventLog" : { + "General" : { + "aNode" : { + "astNodeId" : 49 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 289, - "unqualifiedName" : "Log" + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "eventLog", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 48 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 289, + "unqualifiedName" : "Log" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -4153,158 +4171,161 @@ "aNode" : { "astNodeId" : 37 }, - "portMap" : { - "cmdIn" : { - "General" : { - "aNode" : { - "astNodeId" : 16 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "cmdIn" : { + "General" : { + "aNode" : { + "astNodeId" : 16 }, - "name" : "cmdIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 15 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "cmdIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 15 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 286, - "unqualifiedName" : "Cmd" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 286, + "unqualifiedName" : "Cmd" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "cmdRegOut" : { - "General" : { - "aNode" : { - "astNodeId" : 20 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } }, - "name" : "cmdRegOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 19 - } + "importNodeIds" : [ + ] + } + }, + "cmdRegOut" : { + "General" : { + "aNode" : { + "astNodeId" : 20 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 287, - "unqualifiedName" : "CmdReg" + "specifier" : { + "kind" : { + "SyncInput" : { + } - } - } - }, - "importNodeIds" : [ - ] - } - }, - "cmdResponseOut" : { - "General" : { - "aNode" : { - "astNodeId" : 24 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + }, + "name" : "cmdRegOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 19 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "name" : "cmdResponseOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 23 + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 287, + "unqualifiedName" : "CmdReg" + } + } } }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 288, - "unqualifiedName" : "CmdResponse" + "importNodeIds" : [ + ] + } + }, + "cmdResponseOut" : { + "General" : { + "aNode" : { + "astNodeId" : 24 + }, + "specifier" : { + "kind" : { + "SyncInput" : { + } - } - } - }, - "importNodeIds" : [ - ] - } - }, - "cmdSend" : { - "General" : { - "aNode" : { - "astNodeId" : 36 - }, - "specifier" : { - "kind" : { - "Output" : { - - } + }, + "name" : "cmdResponseOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 23 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "name" : "cmdSend", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 35 + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 288, + "unqualifiedName" : "CmdResponse" + } + } } }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 286, - "unqualifiedName" : "Cmd" + "importNodeIds" : [ + ] + } + }, + "cmdSend" : { + "General" : { + "aNode" : { + "astNodeId" : 36 + }, + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "cmdSend", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 35 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 286, + "unqualifiedName" : "Cmd" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -4594,124 +4615,114 @@ "aNode" : { "astNodeId" : 285 }, - "directImportMap" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "T" + }, + "directTopologies" : { + }, + "directComponentInstances" : { + "134" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", + "pos" : "48.5", + "includingLoc" : "None" + }, + "138" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", + "pos" : "49.5", + "includingLoc" : "None" + }, + "126" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", + "pos" : "46.5", + "includingLoc" : "None" + }, + "122" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", + "pos" : "45.5", + "includingLoc" : "None" + }, + "118" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", + "pos" : "44.5", + "includingLoc" : "None" + }, + "130" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", + "pos" : "47.5", + "includingLoc" : "None" + }, + "114" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", + "pos" : "43.5", + "includingLoc" : "None" + } }, "transitiveImportSet" : [ ], "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 130 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c5" - }, - "component" : { - "astNodeId" : 84 - }, - "baseId" : 1280, - "maxId" : 1279, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", - "pos" : "47.5", + "pos" : "43.5", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 138 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c7" - }, - "component" : { - "astNodeId" : 110 - }, - "baseId" : 1792, - "maxId" : 1791, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", - "pos" : "49.5", + "pos" : "44.5", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 134 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c6" - }, - "component" : { - "astNodeId" : 97 - }, - "baseId" : 1536, - "maxId" : 1535, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", - "pos" : "48.5", + "pos" : "45.5", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 126 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 67 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, { @@ -4722,95 +4733,70 @@ ], [ { - "aNode" : { - "astNodeId" : 114 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 12 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c5" + }, + "unqualifiedName" : "c5" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", - "pos" : "43.5", + "pos" : "47.5", "includingLoc" : "None" } ], - [ - { - "aNode" : { - "astNodeId" : 118 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 37 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + [ + { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c6" + }, + "unqualifiedName" : "c6" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", - "pos" : "44.5", + "pos" : "48.5", "includingLoc" : "None" } ], [ { - "aNode" : { - "astNodeId" : 122 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 50 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c7" + }, + "unqualifiedName" : "c7" } }, { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/patternedConnections.fpp", - "pos" : "45.5", + "pos" : "49.5", "includingLoc" : "None" } ] ], + "ports" : [ + ], + "portMap" : { + + }, + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, "patternMap" : { "Event" : { "aNode" : { @@ -5172,33 +5158,20 @@ ], "unconnectedPortSet" : [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 118 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 37 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c6" + }, + "unqualifiedName" : "c6" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 24 + "astNodeId" : 96 }, "specifier" : { "kind" : { @@ -5206,11 +5179,11 @@ } }, - "name" : "cmdResponseOut", + "name" : "tlm", "size" : "None", "port" : { "Some" : { - "astNodeId" : 23 + "astNodeId" : 95 } }, "priority" : "None", @@ -5222,8 +5195,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 288, - "unqualifiedName" : "CmdResponse" + "nodeId" : 294, + "unqualifiedName" : "Tlm" } } } @@ -5234,33 +5207,20 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 118 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 37 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 16 + "astNodeId" : 24 }, "specifier" : { "kind" : { @@ -5268,11 +5228,11 @@ } }, - "name" : "cmdIn", + "name" : "cmdResponseOut", "size" : "None", "port" : { "Some" : { - "astNodeId" : 15 + "astNodeId" : 23 } }, "priority" : "None", @@ -5284,8 +5244,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 286, - "unqualifiedName" : "Cmd" + "nodeId" : 288, + "unqualifiedName" : "CmdResponse" } } } @@ -5296,33 +5256,20 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 118 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 37 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 20 + "astNodeId" : 66 }, "specifier" : { "kind" : { @@ -5330,11 +5277,11 @@ } }, - "name" : "cmdRegOut", + "name" : "PingReturn", "size" : "None", "port" : { "Some" : { - "astNodeId" : 19 + "astNodeId" : 65 } }, "priority" : "None", @@ -5346,8 +5293,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 287, - "unqualifiedName" : "CmdReg" + "nodeId" : 301, + "unqualifiedName" : "Ping" } } } @@ -5358,58 +5305,45 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 130 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c5" - }, - "component" : { - "astNodeId" : 84 - }, - "baseId" : 1280, - "maxId" : 1279, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 71 + "astNodeId" : 36 }, "specifier" : { "kind" : { - "SyncInput" : { + "Output" : { } }, - "name" : "paramGet", + "name" : "cmdSend", "size" : "None", "port" : { "Some" : { - "astNodeId" : 70 + "astNodeId" : 35 } }, "priority" : "None", "queueFull" : "None" }, - "kind" : "SyncInput", + "kind" : "Output", "size" : 1, "ty" : { "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 291, - "unqualifiedName" : "PrmGet" + "nodeId" : 286, + "unqualifiedName" : "Cmd" } } } @@ -5420,51 +5354,38 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 118 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 37 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 36 + "astNodeId" : 16 }, "specifier" : { "kind" : { - "Output" : { + "SyncInput" : { } }, - "name" : "cmdSend", + "name" : "cmdIn", "size" : "None", "port" : { "Some" : { - "astNodeId" : 35 + "astNodeId" : 15 } }, "priority" : "None", "queueFull" : "None" }, - "kind" : "Output", + "kind" : "SyncInput", "size" : 1, "ty" : { "DefPort" : { @@ -5482,33 +5403,20 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 114 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 12 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c5" + }, + "unqualifiedName" : "c5" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 11 + "astNodeId" : 83 }, "specifier" : { "kind" : { @@ -5516,11 +5424,11 @@ } }, - "name" : "timeGetPort", + "name" : "paramSet", "size" : "None", "port" : { "Some" : { - "astNodeId" : 10 + "astNodeId" : 82 } }, "priority" : "None", @@ -5532,8 +5440,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 293, - "unqualifiedName" : "Time" + "nodeId" : 292, + "unqualifiedName" : "PrmSet" } } } @@ -5544,58 +5452,45 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 138 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c7" - }, - "component" : { - "astNodeId" : 110 - }, - "baseId" : 1792, - "maxId" : 1791, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c4" + }, + "unqualifiedName" : "c4" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 109 + "astNodeId" : 54 }, "specifier" : { "kind" : { - "SyncInput" : { + "Output" : { } }, - "name" : "textEventLog", + "name" : "PingSend", "size" : "None", "port" : { "Some" : { - "astNodeId" : 108 + "astNodeId" : 53 } }, "priority" : "None", "queueFull" : "None" }, - "kind" : "SyncInput", + "kind" : "Output", "size" : 1, "ty" : { "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 290, - "unqualifiedName" : "LogText" + "nodeId" : 301, + "unqualifiedName" : "Ping" } } } @@ -5606,33 +5501,20 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 122 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c3" - }, - "component" : { - "astNodeId" : 50 - }, - "baseId" : 768, - "maxId" : 767, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 49 + "astNodeId" : 20 }, "specifier" : { "kind" : { @@ -5640,11 +5522,11 @@ } }, - "name" : "eventLog", + "name" : "cmdRegOut", "size" : "None", "port" : { "Some" : { - "astNodeId" : 48 + "astNodeId" : 19 } }, "priority" : "None", @@ -5656,8 +5538,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 289, - "unqualifiedName" : "Log" + "nodeId" : 287, + "unqualifiedName" : "CmdReg" } } } @@ -5668,33 +5550,20 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 134 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c6" - }, - "component" : { - "astNodeId" : 97 - }, - "baseId" : 1536, - "maxId" : 1535, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c7" + }, + "unqualifiedName" : "c7" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 96 + "astNodeId" : 109 }, "specifier" : { "kind" : { @@ -5702,11 +5571,11 @@ } }, - "name" : "tlm", + "name" : "textEventLog", "size" : "None", "port" : { "Some" : { - "astNodeId" : 95 + "astNodeId" : 108 } }, "priority" : "None", @@ -5718,8 +5587,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 294, - "unqualifiedName" : "Tlm" + "nodeId" : 290, + "unqualifiedName" : "LogText" } } } @@ -5730,58 +5599,45 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 126 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 67 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 54 + "astNodeId" : 11 }, "specifier" : { "kind" : { - "Output" : { + "SyncInput" : { } }, - "name" : "PingSend", + "name" : "timeGetPort", "size" : "None", "port" : { "Some" : { - "astNodeId" : 53 + "astNodeId" : 10 } }, "priority" : "None", "queueFull" : "None" }, - "kind" : "Output", + "kind" : "SyncInput", "size" : 1, "ty" : { "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 301, - "unqualifiedName" : "Ping" + "nodeId" : 293, + "unqualifiedName" : "Time" } } } @@ -5792,33 +5648,20 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 126 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c4" - }, - "component" : { - "astNodeId" : 67 - }, - "baseId" : 1024, - "maxId" : 1023, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c3" + }, + "unqualifiedName" : "c3" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 66 + "astNodeId" : 49 }, "specifier" : { "kind" : { @@ -5826,11 +5669,11 @@ } }, - "name" : "PingReturn", + "name" : "eventLog", "size" : "None", "port" : { "Some" : { - "astNodeId" : 65 + "astNodeId" : 48 } }, "priority" : "None", @@ -5842,8 +5685,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 301, - "unqualifiedName" : "Ping" + "nodeId" : 289, + "unqualifiedName" : "Log" } } } @@ -5854,33 +5697,20 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 130 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c5" - }, - "component" : { - "astNodeId" : 84 - }, - "baseId" : 1280, - "maxId" : 1279, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c5" + }, + "unqualifiedName" : "c5" } }, "portInstance" : { "General" : { "aNode" : { - "astNodeId" : 83 + "astNodeId" : 71 }, "specifier" : { "kind" : { @@ -5888,11 +5718,11 @@ } }, - "name" : "paramSet", + "name" : "paramGet", "size" : "None", "port" : { "Some" : { - "astNodeId" : 82 + "astNodeId" : 70 } }, "priority" : "None", @@ -5904,8 +5734,8 @@ "DefPort" : { "symbol" : { "Port" : { - "nodeId" : 292, - "unqualifiedName" : "PrmSet" + "nodeId" : 291, + "unqualifiedName" : "PrmGet" } } } diff --git a/compiler/tools/fpp-to-json/test/ports.ref.txt b/compiler/tools/fpp-to-json/test/ports.ref.txt index c0e0e60b1..4f038eb5a 100644 --- a/compiler/tools/fpp-to-json/test/ports.ref.txt +++ b/compiler/tools/fpp-to-json/test/ports.ref.txt @@ -808,7 +808,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1497,9 +1497,52 @@ "aNode" : { "astNodeId" : 81 }, - "portMap" : { - "productRecvIn" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "productRecvIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 80 + }, + "specifier" : { + "inputKind" : { + "Some" : { + "Async" : { + + } + } + }, + "kind" : { + "ProductRecv" : { + + } + }, + "name" : "productRecvIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 67, + "unqualifiedName" : "DpResponse" + } + }, + "priority" : "None", + "queueFull" : { + "Some" : { + "Assert" : { + + } + } + }, + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "product recv" : { "aNode" : { "astNodeId" : 80 }, @@ -1539,46 +1582,6 @@ } } }, - "specialPortMap" : { - "product recv" : { - "aNode" : { - "astNodeId" : 80 - }, - "specifier" : { - "inputKind" : { - "Some" : { - "Async" : { - - } - } - }, - "kind" : { - "ProductRecv" : { - - } - }, - "name" : "productRecvIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 67, - "unqualifiedName" : "DpResponse" - } - }, - "priority" : "None", - "queueFull" : { - "Some" : { - "Assert" : { - - } - } - }, - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1781,16 +1784,6 @@ }, "82" : { "map" : { - "Topology" : { - "map" : { - "T" : { - "Topology" : { - "nodeId" : 118, - "unqualifiedName" : "T" - } - } - } - }, "StateMachine" : { "map" : { "Q" : { @@ -1801,6 +1794,16 @@ } } }, + "PortInterfaceInstance" : { + "map" : { + "T" : { + "Topology" : { + "nodeId" : 118, + "unqualifiedName" : "T" + } + } + } + }, "Value" : { "map" : { "Q" : { @@ -1854,36 +1857,34 @@ "aNode" : { "astNodeId" : 118 }, - "directImportMap" : { + "qualifiedName" : { + "qualifier" : [ + "M" + ], + "base" : "T" + }, + "directTopologies" : { + }, + "directComponentInstances" : { + "88" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/ports.fpp", + "pos" : "39.9", + "includingLoc" : "None" + } }, "transitiveImportSet" : [ ], "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 88 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "i" - }, - "component" : { - "astNodeId" : 81 - }, - "baseId" : 8448, - "maxId" : 8447, - "file" : "None", - "queueSize" : { - "Some" : 10 - }, - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "i" + }, + "unqualifiedName" : "i" } }, { @@ -1893,6 +1894,20 @@ } ] ], + "ports" : [ + ], + "portMap" : { + + }, + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, "patternMap" : { }, @@ -1912,29 +1927,14 @@ ], "unconnectedPortSet" : [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 88 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "i" - }, - "component" : { - "astNodeId" : 81 - }, - "baseId" : 8448, - "maxId" : 8447, - "file" : "None", - "queueSize" : { - "Some" : 10 - }, - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "i" + }, + "unqualifiedName" : "i" } }, "portInstance" : { diff --git a/compiler/tools/fpp-to-json/test/queuedComponents.ref.txt b/compiler/tools/fpp-to-json/test/queuedComponents.ref.txt index 53a116b15..e21641676 100644 --- a/compiler/tools/fpp-to-json/test/queuedComponents.ref.txt +++ b/compiler/tools/fpp-to-json/test/queuedComponents.ref.txt @@ -1030,83 +1030,142 @@ "aNode" : { "astNodeId" : 60 }, - "portMap" : { - "schedIn" : { - "General" : { - "aNode" : { - "astNodeId" : 46 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "schedIn" : { + "General" : { + "aNode" : { + "astNodeId" : 46 }, - "name" : "schedIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 45 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "schedIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 45 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 83, - "unqualifiedName" : "Sched" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 83, + "unqualifiedName" : "Sched" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "calibrationIn" : { - "General" : { - "aNode" : { - "astNodeId" : 49 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - + }, + "importNodeIds" : [ + ] + } + }, + "calibrationIn" : { + "General" : { + "aNode" : { + "astNodeId" : 49 + }, + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "calibrationIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 48 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "Calibration" + } + } } }, - "name" : "calibrationIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 48 + "importNodeIds" : [ + ] + } + }, + "tlmOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 50 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Telemetry" : { + + } + }, + "name" : "tlmOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 85, + "unqualifiedName" : "Tlm" } }, "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "Calibration" + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 51 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 88, + "unqualifiedName" : "Time" } - } - }, - "importNodeIds" : [ - ] + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } } }, - "tlmOut" : { - "Special" : { + "specialPortMap" : { + "telemetry" : { "aNode" : { "astNodeId" : 50 }, @@ -1131,10 +1190,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "timeGetOut" : { - "Special" : { + }, + "time get" : { "aNode" : { "astNodeId" : 51 }, @@ -1162,60 +1219,6 @@ } } }, - "specialPortMap" : { - "telemetry" : { - "aNode" : { - "astNodeId" : 50 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Telemetry" : { - - } - }, - "name" : "tlmOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 85, - "unqualifiedName" : "Tlm" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "time get" : { - "aNode" : { - "astNodeId" : 51 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 88, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1550,7 +1553,7 @@ }, "80" : { "map" : { - "ComponentInstance" : { + "PortInterfaceInstance" : { "map" : { "engineTemp" : { "ComponentInstance" : { diff --git a/compiler/tools/fpp-to-json/test/simpleComponents.ref.txt b/compiler/tools/fpp-to-json/test/simpleComponents.ref.txt index 6ef038f57..41cc2a624 100644 --- a/compiler/tools/fpp-to-json/test/simpleComponents.ref.txt +++ b/compiler/tools/fpp-to-json/test/simpleComponents.ref.txt @@ -1042,121 +1042,124 @@ "aNode" : { "astNodeId" : 22 }, - "portMap" : { - "f32ValueIn1" : { - "General" : { - "aNode" : { - "astNodeId" : 9 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "f32ValueIn1" : { + "General" : { + "aNode" : { + "astNodeId" : 9 }, - "name" : "f32ValueIn1", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 8 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "f32ValueIn1", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 8 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "f32ValueIn2" : { - "General" : { - "aNode" : { - "astNodeId" : 12 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } }, - "name" : "f32ValueIn2", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 11 - } + "importNodeIds" : [ + ] + } + }, + "f32ValueIn2" : { + "General" : { + "aNode" : { + "astNodeId" : 12 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "specifier" : { + "kind" : { + "SyncInput" : { + } - } - } - }, - "importNodeIds" : [ - ] - } - }, - "f32ValueOut" : { - "General" : { - "aNode" : { - "astNodeId" : 21 - }, - "specifier" : { - "kind" : { - "Output" : { - - } + }, + "name" : "f32ValueIn2", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 11 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "name" : "f32ValueOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 20 + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } + } } }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "importNodeIds" : [ + ] + } + }, + "f32ValueOut" : { + "General" : { + "aNode" : { + "astNodeId" : 21 + }, + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "f32ValueOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 20 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -1197,121 +1200,124 @@ "aNode" : { "astNodeId" : 38 }, - "portMap" : { - "f32ValueIn1" : { - "General" : { - "aNode" : { - "astNodeId" : 25 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "f32ValueIn1" : { + "General" : { + "aNode" : { + "astNodeId" : 25 }, - "name" : "f32ValueIn1", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 24 - } + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "f32ValueIn1", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 24 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "f32ValueIn2" : { - "General" : { - "aNode" : { - "astNodeId" : 28 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } }, - "name" : "f32ValueIn2", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 27 - } + "importNodeIds" : [ + ] + } + }, + "f32ValueIn2" : { + "General" : { + "aNode" : { + "astNodeId" : 28 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "specifier" : { + "kind" : { + "AsyncInput" : { + } - } - } - }, - "importNodeIds" : [ - ] - } - }, - "f32ValueOut" : { - "General" : { - "aNode" : { - "astNodeId" : 37 - }, - "specifier" : { - "kind" : { - "Output" : { - - } + }, + "name" : "f32ValueIn2", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 27 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "name" : "f32ValueOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 36 + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } + } } }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "importNodeIds" : [ + ] + } + }, + "f32ValueOut" : { + "General" : { + "aNode" : { + "astNodeId" : 37 + }, + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "f32ValueOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 36 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -1352,137 +1358,140 @@ "aNode" : { "astNodeId" : 58 }, - "portMap" : { - "f32ValueIn1" : { - "General" : { - "aNode" : { - "astNodeId" : 43 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } - }, - "name" : "f32ValueIn1", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 40 - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "f32ValueIn1" : { + "General" : { + "aNode" : { + "astNodeId" : 43 }, - "priority" : { - "Some" : { - "astNodeId" : 41 + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "f32ValueIn1", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 40 + } + }, + "priority" : { + "Some" : { + "astNodeId" : 41 + } + }, + "queueFull" : { + "Some" : { + "astNodeId" : 42 + } } }, - "queueFull" : { - "Some" : { - "astNodeId" : 42 - } - } - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "f32ValueIn2" : { - "General" : { - "aNode" : { - "astNodeId" : 48 - }, - "specifier" : { - "kind" : { - "AsyncInput" : { - - } }, - "name" : "f32ValueIn2", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 45 - } + "importNodeIds" : [ + ] + } + }, + "f32ValueIn2" : { + "General" : { + "aNode" : { + "astNodeId" : 48 }, - "priority" : { - "Some" : { - "astNodeId" : 46 + "specifier" : { + "kind" : { + "AsyncInput" : { + + } + }, + "name" : "f32ValueIn2", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 45 + } + }, + "priority" : { + "Some" : { + "astNodeId" : 46 + } + }, + "queueFull" : { + "Some" : { + "astNodeId" : 47 + } } }, - "queueFull" : { - "Some" : { - "astNodeId" : 47 - } - } - }, - "kind" : "AsyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "kind" : "AsyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "f32ValueOut" : { - "General" : { - "aNode" : { - "astNodeId" : 57 - }, - "specifier" : { - "kind" : { - "Output" : { - - } }, - "name" : "f32ValueOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 56 - } + "importNodeIds" : [ + ] + } + }, + "f32ValueOut" : { + "General" : { + "aNode" : { + "astNodeId" : 57 + }, + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "f32ValueOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 56 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 6, - "unqualifiedName" : "F32Value" + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 6, + "unqualifiedName" : "F32Value" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -1523,70 +1532,73 @@ "aNode" : { "astNodeId" : 68 }, - "portMap" : { - "serialIn" : { - "General" : { - "aNode" : { - "astNodeId" : 61 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "serialIn" : { + "General" : { + "aNode" : { + "astNodeId" : 61 }, - "name" : "serialIn", - "size" : "None", - "port" : "None", - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "Serial" : { - - } - }, - "importNodeIds" : [ - ] - } - }, - "serialOut" : { - "General" : { - "aNode" : { - "astNodeId" : 67 - }, - "specifier" : { - "kind" : { - "Output" : { + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "serialIn", + "size" : "None", + "port" : "None", + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "Serial" : { } }, - "name" : "serialOut", - "size" : { - "Some" : { - "astNodeId" : 66 + "importNodeIds" : [ + ] + } + }, + "serialOut" : { + "General" : { + "aNode" : { + "astNodeId" : 67 + }, + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "serialOut", + "size" : { + "Some" : { + "astNodeId" : 66 + } + }, + "port" : "None", + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 10, + "ty" : { + "Serial" : { + } }, - "port" : "None", - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 10, - "ty" : { - "Serial" : { - - } - }, - "importNodeIds" : [ - ] + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { diff --git a/compiler/tools/fpp-to-json/test/simpleTopology.fpp b/compiler/tools/fpp-to-json/test/simpleTopology.fpp index 25b9a06c1..8d5d255f6 100644 --- a/compiler/tools/fpp-to-json/test/simpleTopology.fpp +++ b/compiler/tools/fpp-to-json/test/simpleTopology.fpp @@ -11,7 +11,7 @@ instance c1: C base id 0x100 instance c2: C base id 0x200 @ A simple topology -topology Simple implements I { +topology Simple { @ This specifier says that instance c1 is part of the topology instance c1 @@ -28,6 +28,4 @@ topology Simple implements I { c2.pOut -> c1.pIn } - port a = c1.a - } diff --git a/compiler/tools/fpp-to-json/test/simpleTopology.ref.txt b/compiler/tools/fpp-to-json/test/simpleTopology.ref.txt index 2b7e5a046..06fdd4a0d 100644 --- a/compiler/tools/fpp-to-json/test/simpleTopology.ref.txt +++ b/compiler/tools/fpp-to-json/test/simpleTopology.ref.txt @@ -257,7 +257,7 @@ "This specifier says that instance c1 is part of the topology" ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -268,11 +268,11 @@ "name" : "c1" } }, - "id" : 26 + "id" : 24 } } }, - "id" : 27 + "id" : 25 } } } @@ -285,7 +285,7 @@ "This specifier says that instance c2 is part of the topology" ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -296,11 +296,11 @@ "name" : "c2" } }, - "id" : 29 + "id" : 27 } } }, - "id" : 30 + "id" : 28 } } } @@ -325,48 +325,48 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { "name" : "c1" } }, - "id" : 33 + "id" : 31 } }, "portName" : { "AstNode" : { "data" : "pOut", - "id" : 32 + "id" : 30 } } }, - "id" : 34 + "id" : 32 } }, "fromIndex" : "None", "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { "name" : "c2" } }, - "id" : 37 + "id" : 35 } }, "portName" : { "AstNode" : { "data" : "pIn", - "id" : 36 + "id" : 34 } } }, - "id" : 38 + "id" : 36 } }, "toIndex" : "None" @@ -374,7 +374,7 @@ ] } }, - "id" : 39 + "id" : 37 } } } @@ -399,48 +399,48 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { "name" : "c2" } }, - "id" : 42 + "id" : 58 } }, "portName" : { "AstNode" : { "data" : "pOut", - "id" : 41 + "id" : 57 } } }, - "id" : 43 + "id" : 59 } }, "fromIndex" : "None", "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { "name" : "c1" } }, - "id" : 46 + "id" : 62 } }, "portName" : { "AstNode" : { "data" : "pIn", - "id" : 45 + "id" : 61 } } }, - "id" : 47 + "id" : 63 } }, "toIndex" : "None" @@ -448,50 +448,7 @@ ] } }, - "id" : 48 - } - } - } - }, - [ - ] - ], - [ - [ - ], - { - "SpecTopPort" : { - "node" : { - "AstNode" : { - "data" : { - "name" : "a", - "underlyingPort" : { - "AstNode" : { - "data" : { - "Qualified" : { - "qualifier" : { - "AstNode" : { - "data" : { - "Unqualified" : { - "name" : "c1" - } - }, - "id" : 57 - } - }, - "name" : { - "AstNode" : { - "data" : "a", - "id" : 58 - } - } - } - }, - "id" : 59 - } - } - }, - "id" : 60 + "id" : 64 } } } @@ -501,19 +458,9 @@ ] ], "implements" : [ - { - "AstNode" : { - "data" : { - "Unqualified" : { - "name" : "I" - } - }, - "id" : 24 - } - } ] }, - "id" : 61 + "id" : 65 } } } @@ -645,42 +592,42 @@ }, "23" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "14.28", + "pos" : "17.12", "includingLoc" : "None" }, "24" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "14.28", + "pos" : "17.12", "includingLoc" : "None" }, "25" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "17.12", + "pos" : "17.3", "includingLoc" : "None" }, "26" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "17.12", + "pos" : "19.12", "includingLoc" : "None" }, "27" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "17.3", + "pos" : "19.12", "includingLoc" : "None" }, "28" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "19.12", + "pos" : "19.3", "includingLoc" : "None" }, "29" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "19.12", + "pos" : "23.5", "includingLoc" : "None" }, "30" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "19.3", + "pos" : "23.8", "includingLoc" : "None" }, "31" : { @@ -690,17 +637,17 @@ }, "32" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "23.8", + "pos" : "23.5", "includingLoc" : "None" }, "33" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "23.5", + "pos" : "23.16", "includingLoc" : "None" }, "34" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "23.5", + "pos" : "23.19", "includingLoc" : "None" }, "35" : { @@ -710,22 +657,22 @@ }, "36" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "23.19", + "pos" : "23.16", "includingLoc" : "None" }, "37" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "23.16", + "pos" : "22.3", "includingLoc" : "None" }, "38" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "23.16", + "pos" : "28.5", "includingLoc" : "None" }, "39" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "22.3", + "pos" : "28.8", "includingLoc" : "None" }, "40" : { @@ -735,17 +682,17 @@ }, "41" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "28.8", + "pos" : "28.5", "includingLoc" : "None" }, "42" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "28.5", + "pos" : "28.16", "includingLoc" : "None" }, "43" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "28.5", + "pos" : "28.19", "includingLoc" : "None" }, "44" : { @@ -755,85 +702,105 @@ }, "45" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "28.19", + "pos" : "28.16", "includingLoc" : "None" }, "46" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "28.16", + "pos" : "27.3", "includingLoc" : "None" }, "47" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "28.16", + "pos" : "28.5", "includingLoc" : "None" }, "48" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "27.3", + "pos" : "28.8", "includingLoc" : "None" }, "49" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.12", + "pos" : "28.5", "includingLoc" : "None" }, "50" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.15", + "pos" : "28.5", "includingLoc" : "None" }, "51" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.12", + "pos" : "28.16", "includingLoc" : "None" }, "52" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.3", + "pos" : "28.19", "includingLoc" : "None" }, "53" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.12", + "pos" : "28.16", "includingLoc" : "None" }, "54" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.15", + "pos" : "28.16", "includingLoc" : "None" }, "55" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.12", + "pos" : "27.3", "includingLoc" : "None" }, "56" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.3", + "pos" : "28.5", "includingLoc" : "None" }, "57" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.12", + "pos" : "28.8", "includingLoc" : "None" }, "58" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.15", + "pos" : "28.5", "includingLoc" : "None" }, "59" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.12", + "pos" : "28.5", "includingLoc" : "None" }, "60" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", - "pos" : "31.3", + "pos" : "28.16", "includingLoc" : "None" }, "61" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", + "pos" : "28.19", + "includingLoc" : "None" + }, + "62" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", + "pos" : "28.16", + "includingLoc" : "None" + }, + "63" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", + "pos" : "28.16", + "includingLoc" : "None" + }, + "64" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", + "pos" : "27.3", + "includingLoc" : "None" + }, + "65" : { "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", "pos" : "14.1", "includingLoc" : "None" @@ -896,84 +863,87 @@ "aNode" : { "astNodeId" : 14 }, - "portMap" : { - "pIn" : { - "General" : { - "aNode" : { - "astNodeId" : 4 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "pIn" : { + "General" : { + "aNode" : { + "astNodeId" : 4 }, - "name" : "pIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 3 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "pIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 3 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "P" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "P" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "pOut" : { - "General" : { - "aNode" : { - "astNodeId" : 13 - }, - "specifier" : { - "kind" : { - "Output" : { - - } }, - "name" : "pOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 12 - } + "importNodeIds" : [ + ] + } + }, + "pOut" : { + "General" : { + "aNode" : { + "astNodeId" : 13 }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "P" + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "pOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 12 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "P" + } } } - } - }, - "importNodeIds" : [ - ] + }, + "importNodeIds" : [ + ] + } } + }, + "specialPortMap" : { + } - }, - "specialPortMap" : { - }, "commandMap" : { @@ -1081,38 +1051,42 @@ } }, "topologyMap" : { - "61" : { + "65" : { "aNode" : { - "astNodeId" : 61 + "astNodeId" : 65 + }, + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "Simple" }, - "directImportMap" : { + "directTopologies" : { + }, + "directComponentInstances" : { + "18" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", + "pos" : "17.3", + "includingLoc" : "None" + }, + "22" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/simpleTopology.fpp", + "pos" : "19.3", + "includingLoc" : "None" + } }, "transitiveImportSet" : [ ], "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, { @@ -1123,26 +1097,13 @@ ], [ { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, { @@ -1152,6 +1113,20 @@ } ] ], + "ports" : [ + ], + "portMap" : { + + }, + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, "patternMap" : { }, @@ -1165,27 +1140,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1226,7 +1188,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -1235,27 +1198,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -1296,7 +1246,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -1310,27 +1261,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -1371,7 +1309,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -1380,27 +1319,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1441,7 +1367,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -1457,27 +1384,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1518,7 +1432,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -1527,27 +1442,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -1588,7 +1490,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -1602,27 +1505,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -1663,7 +1553,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -1672,27 +1563,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1733,7 +1611,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -1742,27 +1621,14 @@ "outputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1812,27 +1678,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1873,7 +1726,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -1882,27 +1736,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -1943,7 +1784,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -1951,27 +1793,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2021,27 +1850,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2082,7 +1898,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2091,27 +1908,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2152,7 +1956,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2162,27 +1967,14 @@ "inputConnectionMap" : [ [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2232,27 +2024,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2293,7 +2072,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2302,27 +2082,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2363,7 +2130,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2371,27 +2139,14 @@ ], [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2441,27 +2196,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2502,7 +2244,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2511,27 +2254,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2572,7 +2302,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false } @@ -2589,27 +2320,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2650,7 +2368,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2659,27 +2378,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2720,7 +2426,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -2735,27 +2442,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2796,7 +2490,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2805,27 +2500,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -2866,7 +2548,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -2883,27 +2566,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -2944,7 +2614,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -2953,27 +2624,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3014,7 +2672,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -3029,27 +2688,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 18 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 256, - "maxId" : 255, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -3090,7 +2736,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "to" : { "loc" : { @@ -3099,27 +2746,14 @@ "includingLoc" : "None" }, "port" : { - "componentInstance" : { - "aNode" : { - "astNodeId" : 22 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 14 - }, - "baseId" : 512, - "maxId" : 511, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -3160,7 +2794,8 @@ } } }, - "portNumber" : "None" + "portNumber" : "None", + "topologyPort" : "None" }, "isUnmatched" : false }, @@ -3194,37 +2829,19 @@ "unqualifiedName" : "P" } }, - "33" : { + "62" : { "ComponentInstance" : { "nodeId" : 18, "unqualifiedName" : "c1" } }, - "46" : { + "31" : { "ComponentInstance" : { "nodeId" : 18, "unqualifiedName" : "c1" } }, - "16" : { - "Component" : { - "nodeId" : 14, - "unqualifiedName" : "C" - } - }, - "42" : { - "ComponentInstance" : { - "nodeId" : 22, - "unqualifiedName" : "c2" - } - }, - "20" : { - "Component" : { - "nodeId" : 14, - "unqualifiedName" : "C" - } - }, - "29" : { + "58" : { "ComponentInstance" : { "nodeId" : 22, "unqualifiedName" : "c2" @@ -3236,13 +2853,31 @@ "unqualifiedName" : "P" } }, - "26" : { + "24" : { "ComponentInstance" : { "nodeId" : 18, "unqualifiedName" : "c1" } }, - "37" : { + "35" : { + "ComponentInstance" : { + "nodeId" : 22, + "unqualifiedName" : "c2" + } + }, + "16" : { + "Component" : { + "nodeId" : 14, + "unqualifiedName" : "C" + } + }, + "20" : { + "Component" : { + "nodeId" : 14, + "unqualifiedName" : "C" + } + }, + "27" : { "ComponentInstance" : { "nodeId" : 22, "unqualifiedName" : "c2" @@ -3274,11 +2909,14 @@ "importMap" : { }, - "portMap" : { - - }, - "specialPortMap" : { - + "portInterface" : { + "instanceType" : "interface", + "portMap" : { + + }, + "specialPortMap" : { + + } } } } diff --git a/compiler/tools/fpp-to-json/test/specialPorts.ref.txt b/compiler/tools/fpp-to-json/test/specialPorts.ref.txt index a7a3835fe..55ef13d43 100644 --- a/compiler/tools/fpp-to-json/test/specialPorts.ref.txt +++ b/compiler/tools/fpp-to-json/test/specialPorts.ref.txt @@ -803,9 +803,96 @@ "aNode" : { "astNodeId" : 5 }, - "portMap" : { - "cmdIn" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "cmdIn" : { + "Special" : { + "aNode" : { + "astNodeId" : 0 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandRecv" : { + + } + }, + "name" : "cmdIn", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 24, + "unqualifiedName" : "Cmd" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdRegOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 1 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandReg" : { + + } + }, + "name" : "cmdRegOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 25, + "unqualifiedName" : "CmdReg" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "cmdResponseOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 4 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "CommandResp" : { + + } + }, + "name" : "cmdResponseOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 26, + "unqualifiedName" : "CmdResponse" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "command recv" : { "aNode" : { "astNodeId" : 0 }, @@ -830,10 +917,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdRegOut" : { - "Special" : { + }, + "command reg" : { "aNode" : { "astNodeId" : 1 }, @@ -858,10 +943,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "cmdResponseOut" : { - "Special" : { + }, + "command resp" : { "aNode" : { "astNodeId" : 4 }, @@ -889,86 +972,6 @@ } } }, - "specialPortMap" : { - "command recv" : { - "aNode" : { - "astNodeId" : 0 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandRecv" : { - - } - }, - "name" : "cmdIn", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 24, - "unqualifiedName" : "Cmd" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command reg" : { - "aNode" : { - "astNodeId" : 1 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandReg" : { - - } - }, - "name" : "cmdRegOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 25, - "unqualifiedName" : "CmdReg" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "command resp" : { - "aNode" : { - "astNodeId" : 4 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "CommandResp" : { - - } - }, - "name" : "cmdResponseOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 26, - "unqualifiedName" : "CmdResponse" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1008,9 +1011,68 @@ "aNode" : { "astNodeId" : 10 }, - "portMap" : { - "eventOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "eventOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 6 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Event" : { + + } + }, + "name" : "eventOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 27, + "unqualifiedName" : "Log" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "textEventOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 9 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TextEvent" : { + + } + }, + "name" : "textEventOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 28, + "unqualifiedName" : "LogText" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "event" : { "aNode" : { "astNodeId" : 6 }, @@ -1035,10 +1097,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "textEventOut" : { - "Special" : { + }, + "text event" : { "aNode" : { "astNodeId" : 9 }, @@ -1066,60 +1126,6 @@ } } }, - "specialPortMap" : { - "event" : { - "aNode" : { - "astNodeId" : 6 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Event" : { - - } - }, - "name" : "eventOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 27, - "unqualifiedName" : "Log" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "text event" : { - "aNode" : { - "astNodeId" : 9 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TextEvent" : { - - } - }, - "name" : "textEventOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 28, - "unqualifiedName" : "LogText" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1159,9 +1165,40 @@ "aNode" : { "astNodeId" : 14 }, - "portMap" : { - "tlmOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "tlmOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 13 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Telemetry" : { + + } + }, + "name" : "tlmOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 29, + "unqualifiedName" : "Tlm" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "telemetry" : { "aNode" : { "astNodeId" : 13 }, @@ -1189,34 +1226,6 @@ } } }, - "specialPortMap" : { - "telemetry" : { - "aNode" : { - "astNodeId" : 13 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Telemetry" : { - - } - }, - "name" : "tlmOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 29, - "unqualifiedName" : "Tlm" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1256,9 +1265,68 @@ "aNode" : { "astNodeId" : 19 }, - "portMap" : { - "prmGetOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "prmGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 15 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "ParamGet" : { + + } + }, + "name" : "prmGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 30, + "unqualifiedName" : "PrmGet" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "prmSetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 18 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "ParamSet" : { + + } + }, + "name" : "prmSetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 31, + "unqualifiedName" : "PrmSet" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "param get" : { "aNode" : { "astNodeId" : 15 }, @@ -1283,10 +1351,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "prmSetOut" : { - "Special" : { + }, + "param set" : { "aNode" : { "astNodeId" : 18 }, @@ -1314,60 +1380,6 @@ } } }, - "specialPortMap" : { - "param get" : { - "aNode" : { - "astNodeId" : 15 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "ParamGet" : { - - } - }, - "name" : "prmGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 30, - "unqualifiedName" : "PrmGet" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "param set" : { - "aNode" : { - "astNodeId" : 18 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "ParamSet" : { - - } - }, - "name" : "prmSetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 31, - "unqualifiedName" : "PrmSet" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1407,9 +1419,40 @@ "aNode" : { "astNodeId" : 23 }, - "portMap" : { - "timeGetOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 22 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 34, + "unqualifiedName" : "Time" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "time get" : { "aNode" : { "astNodeId" : 22 }, @@ -1437,34 +1480,6 @@ } } }, - "specialPortMap" : { - "time get" : { - "aNode" : { - "astNodeId" : 22 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 34, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, diff --git a/compiler/tools/fpp-to-json/test/syntaxOnly.ref.txt b/compiler/tools/fpp-to-json/test/syntaxOnly.ref.txt index 7d94446a7..6be4c341b 100644 --- a/compiler/tools/fpp-to-json/test/syntaxOnly.ref.txt +++ b/compiler/tools/fpp-to-json/test/syntaxOnly.ref.txt @@ -1062,7 +1062,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1089,7 +1089,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1116,7 +1116,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1143,7 +1143,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1170,7 +1170,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1197,7 +1197,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1224,7 +1224,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1263,7 +1263,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1287,7 +1287,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1314,7 +1314,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1338,7 +1338,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1365,7 +1365,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1389,7 +1389,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1416,7 +1416,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1440,7 +1440,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1467,7 +1467,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1491,7 +1491,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1518,7 +1518,7 @@ "fromPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { @@ -1542,7 +1542,7 @@ "toPort" : { "AstNode" : { "data" : { - "componentInstance" : { + "interfaceInstance" : { "AstNode" : { "data" : { "Unqualified" : { diff --git a/compiler/tools/fpp-to-json/test/telemetry.ref.txt b/compiler/tools/fpp-to-json/test/telemetry.ref.txt index e8a38c8ab..c1cad8ef8 100644 --- a/compiler/tools/fpp-to-json/test/telemetry.ref.txt +++ b/compiler/tools/fpp-to-json/test/telemetry.ref.txt @@ -700,7 +700,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1282,9 +1282,68 @@ "aNode" : { "astNodeId" : 58 }, - "portMap" : { - "tlmOut" : { - "Special" : { + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "tlmOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 0 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Telemetry" : { + + } + }, + "name" : "tlmOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 59, + "unqualifiedName" : "Tlm" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 1 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 62, + "unqualifiedName" : "Time" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + "specialPortMap" : { + "telemetry" : { "aNode" : { "astNodeId" : 0 }, @@ -1309,10 +1368,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "timeGetOut" : { - "Special" : { + }, + "time get" : { "aNode" : { "astNodeId" : 1 }, @@ -1340,60 +1397,6 @@ } } }, - "specialPortMap" : { - "telemetry" : { - "aNode" : { - "astNodeId" : 0 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Telemetry" : { - - } - }, - "name" : "tlmOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 59, - "unqualifiedName" : "Tlm" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "time get" : { - "aNode" : { - "astNodeId" : 1 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 62, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1995,7 +1998,7 @@ }, "98" : { "map" : { - "Topology" : { + "PortInterfaceInstance" : { "map" : { "T" : { "Topology" : { @@ -2013,34 +2016,34 @@ "aNode" : { "astNodeId" : 97 }, - "directImportMap" : { + "qualifiedName" : { + "qualifier" : [ + "M" + ], + "base" : "T" + }, + "directTopologies" : { + }, + "directComponentInstances" : { + "67" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/telemetry.fpp", + "pos" : "47.9", + "includingLoc" : "None" + } }, "transitiveImportSet" : [ ], "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 67 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "i" - }, - "component" : { - "astNodeId" : 58 - }, - "baseId" : 18944, - "maxId" : 18961, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "i" + }, + "unqualifiedName" : "i" } }, { @@ -2050,6 +2053,20 @@ } ] ], + "ports" : [ + ], + "portMap" : { + + }, + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, "patternMap" : { }, @@ -2069,27 +2086,14 @@ ], "unconnectedPortSet" : [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 67 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "i" - }, - "component" : { - "astNodeId" : 58 - }, - "baseId" : 18944, - "maxId" : 18961, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "i" + }, + "unqualifiedName" : "i" } }, "portInstance" : { @@ -2122,27 +2126,14 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 67 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "i" - }, - "component" : { - "astNodeId" : 58 - }, - "baseId" : 18944, - "maxId" : 18961, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "i" + }, + "unqualifiedName" : "i" } }, "portInstance" : { diff --git a/compiler/tools/fpp-to-json/test/telemetryPackets.ref.txt b/compiler/tools/fpp-to-json/test/telemetryPackets.ref.txt index 238b998fc..f9809b53a 100644 --- a/compiler/tools/fpp-to-json/test/telemetryPackets.ref.txt +++ b/compiler/tools/fpp-to-json/test/telemetryPackets.ref.txt @@ -393,7 +393,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -420,7 +420,7 @@ [ ], { - "SpecCompInstance" : { + "SpecInstance" : { "node" : { "AstNode" : { "data" : { @@ -1204,83 +1204,142 @@ "aNode" : { "astNodeId" : 20 }, - "portMap" : { - "pIn" : { - "General" : { - "aNode" : { - "astNodeId" : 8 - }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } + "portInterface" : { + "instanceType" : "component", + "portMap" : { + "pIn" : { + "General" : { + "aNode" : { + "astNodeId" : 8 }, - "name" : "pIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 7 - } + "specifier" : { + "kind" : { + "SyncInput" : { + + } + }, + "name" : "pIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 7 + } + }, + "priority" : "None", + "queueFull" : "None" }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 5, - "unqualifiedName" : "P" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 5, + "unqualifiedName" : "P" + } } } - } - }, - "importNodeIds" : [ - ] - } - }, - "pOut" : { - "General" : { - "aNode" : { - "astNodeId" : 11 - }, - "specifier" : { - "kind" : { - "Output" : { - + }, + "importNodeIds" : [ + ] + } + }, + "pOut" : { + "General" : { + "aNode" : { + "astNodeId" : 11 + }, + "specifier" : { + "kind" : { + "Output" : { + + } + }, + "name" : "pOut", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 10 + } + }, + "priority" : "None", + "queueFull" : "None" + }, + "kind" : "Output", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 5, + "unqualifiedName" : "P" + } + } } }, - "name" : "pOut", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 10 + "importNodeIds" : [ + ] + } + }, + "tlmOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 12 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Telemetry" : { + + } + }, + "name" : "tlmOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "Tlm" } }, "priority" : "None", - "queueFull" : "None" - }, - "kind" : "Output", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 5, - "unqualifiedName" : "P" + "queueFull" : "None", + "importNodeIds" : [ + ] + } + }, + "timeGetOut" : { + "Special" : { + "aNode" : { + "astNodeId" : 13 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "TimeGet" : { + } + }, + "name" : "timeGetOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 3, + "unqualifiedName" : "Time" } - } - }, - "importNodeIds" : [ - ] + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } } }, - "tlmOut" : { - "Special" : { + "specialPortMap" : { + "telemetry" : { "aNode" : { "astNodeId" : 12 }, @@ -1305,10 +1364,8 @@ "queueFull" : "None", "importNodeIds" : [ ] - } - }, - "timeGetOut" : { - "Special" : { + }, + "time get" : { "aNode" : { "astNodeId" : 13 }, @@ -1336,60 +1393,6 @@ } } }, - "specialPortMap" : { - "telemetry" : { - "aNode" : { - "astNodeId" : 12 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "Telemetry" : { - - } - }, - "name" : "tlmOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "Tlm" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - }, - "time get" : { - "aNode" : { - "astNodeId" : 13 - }, - "specifier" : { - "inputKind" : "None", - "kind" : { - "TimeGet" : { - - } - }, - "name" : "timeGetOut", - "priority" : "None", - "queueFull" : "None" - }, - "symbol" : { - "Port" : { - "nodeId" : 3, - "unqualifiedName" : "Time" - } - }, - "priority" : "None", - "queueFull" : "None", - "importNodeIds" : [ - ] - } - }, "commandMap" : { }, @@ -1585,34 +1588,38 @@ "aNode" : { "astNodeId" : 113 }, - "directImportMap" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "TelemetryPackets" + }, + "directTopologies" : { + }, + "directComponentInstances" : { + "24" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/telemetryPackets.fpp", + "pos" : "22.3", + "includingLoc" : "None" + }, + "28" : { + "file" : "[ local path prefix ]/compiler/tools/fpp-to-json/test/telemetryPackets.fpp", + "pos" : "23.3", + "includingLoc" : "None" + } }, "transitiveImportSet" : [ ], "instanceMap" : [ [ { - "aNode" : { - "astNodeId" : 24 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 256, - "maxId" : 256, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, { @@ -1623,26 +1630,13 @@ ], [ { - "aNode" : { - "astNodeId" : 28 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 512, - "maxId" : 512, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, { @@ -1652,6 +1646,20 @@ } ] ], + "ports" : [ + ], + "portMap" : { + + }, + "portInterface" : { + "instanceType" : "topology", + "portMap" : { + + }, + "specialPortMap" : { + + } + }, "patternMap" : { }, @@ -1671,27 +1679,14 @@ ], "unconnectedPortSet" : [ { - "componentInstance" : { - "aNode" : { - "astNodeId" : 28 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 512, - "maxId" : 512, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1733,27 +1728,54 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 28 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 512, - "maxId" : 512, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" + } + }, + "portInstance" : { + "Special" : { + "aNode" : { + "astNodeId" : 12 + }, + "specifier" : { + "inputKind" : "None", + "kind" : { + "Telemetry" : { + + } + }, + "name" : "tlmOut", + "priority" : "None", + "queueFull" : "None" + }, + "symbol" : { + "Port" : { + "nodeId" : 0, + "unqualifiedName" : "Tlm" + } + }, + "priority" : "None", + "queueFull" : "None", + "importNodeIds" : [ + ] + } + } + }, + { + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { @@ -1795,27 +1817,14 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 24 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 256, - "maxId" : 256, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -1857,27 +1866,14 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 24 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 256, - "maxId" : 256, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { @@ -1910,102 +1906,85 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 28 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 512, - "maxId" : 512, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c2" + }, + "unqualifiedName" : "c2" } }, "portInstance" : { - "Special" : { + "General" : { "aNode" : { - "astNodeId" : 12 + "astNodeId" : 8 }, "specifier" : { - "inputKind" : "None", "kind" : { - "Telemetry" : { + "SyncInput" : { } }, - "name" : "tlmOut", + "name" : "pIn", + "size" : "None", + "port" : { + "Some" : { + "astNodeId" : 7 + } + }, "priority" : "None", "queueFull" : "None" }, - "symbol" : { - "Port" : { - "nodeId" : 0, - "unqualifiedName" : "Tlm" + "kind" : "SyncInput", + "size" : 1, + "ty" : { + "DefPort" : { + "symbol" : { + "Port" : { + "nodeId" : 5, + "unqualifiedName" : "P" + } + } } }, - "priority" : "None", - "queueFull" : "None", "importNodeIds" : [ ] } } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 24 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 256, - "maxId" : 256, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" + }, + "unqualifiedName" : "c1" } }, "portInstance" : { "Special" : { "aNode" : { - "astNodeId" : 12 + "astNodeId" : 13 }, "specifier" : { "inputKind" : "None", "kind" : { - "Telemetry" : { + "TimeGet" : { } }, - "name" : "tlmOut", + "name" : "timeGetOut", "priority" : "None", "queueFull" : "None" }, "symbol" : { "Port" : { - "nodeId" : 0, - "unqualifiedName" : "Tlm" + "nodeId" : 3, + "unqualifiedName" : "Time" } }, "priority" : "None", @@ -2016,111 +1995,36 @@ } }, { - "componentInstance" : { - "aNode" : { - "astNodeId" : 24 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c1" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 256, - "maxId" : 256, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - - } - }, - "portInstance" : { - "General" : { - "aNode" : { - "astNodeId" : 8 + "interfaceInstance" : { + "InterfaceComponentInstance" : { + "qualifiedName" : { + "qualifier" : [ + ], + "base" : "c1" }, - "specifier" : { - "kind" : { - "SyncInput" : { - - } - }, - "name" : "pIn", - "size" : "None", - "port" : { - "Some" : { - "astNodeId" : 7 - } - }, - "priority" : "None", - "queueFull" : "None" - }, - "kind" : "SyncInput", - "size" : 1, - "ty" : { - "DefPort" : { - "symbol" : { - "Port" : { - "nodeId" : 5, - "unqualifiedName" : "P" - } - } - } - }, - "importNodeIds" : [ - ] - } - } - }, - { - "componentInstance" : { - "aNode" : { - "astNodeId" : 28 - }, - "qualifiedName" : { - "qualifier" : [ - ], - "base" : "c2" - }, - "component" : { - "astNodeId" : 20 - }, - "baseId" : 512, - "maxId" : 512, - "file" : "None", - "queueSize" : "None", - "stackSize" : "None", - "priority" : "None", - "cpu" : "None", - "initSpecifierMap" : { - + "unqualifiedName" : "c1" } }, "portInstance" : { "Special" : { "aNode" : { - "astNodeId" : 13 + "astNodeId" : 12 }, "specifier" : { "inputKind" : "None", "kind" : { - "TimeGet" : { + "Telemetry" : { } }, - "name" : "timeGetOut", + "name" : "tlmOut", "priority" : "None", "queueFull" : "None" }, "symbol" : { "Port" : { - "nodeId" : 3, - "unqualifiedName" : "Time" + "nodeId" : 0, + "unqualifiedName" : "Tlm" } }, "priority" : "None", diff --git a/compiler/tools/fpp-to-json/test/topologyPorts.fpp b/compiler/tools/fpp-to-json/test/topologyPorts.fpp new file mode 100644 index 000000000..9914e9292 --- /dev/null +++ b/compiler/tools/fpp-to-json/test/topologyPorts.fpp @@ -0,0 +1,31 @@ +port P + +interface I {} + +passive component C { + sync input port pIn: P + output port pOut: P +} + +instance c1: C base id 0x100 +instance c2: C base id 0x200 + +@ A simple topology +topology TopPorts implements I { + + @ This specifier says that instance c1 is part of the topology + instance c1 + @ This specifier says that instance c2 is part of the topology + instance c2 + + @ This code specifies a connection graph C1 + connections C1 { + c1.pOut -> c2.pIn + } + + @ This code specifies a connection graph C2 + connections C2 { + c2.pOut -> c1.pIn + } + +} diff --git a/compiler/tools/fpp/src/main/scala/fpp-locate-uses.scala b/compiler/tools/fpp/src/main/scala/fpp-locate-uses.scala index 84d5ae023..475ee62f7 100644 --- a/compiler/tools/fpp/src/main/scala/fpp-locate-uses.scala +++ b/compiler/tools/fpp/src/main/scala/fpp-locate-uses.scala @@ -73,7 +73,7 @@ object FPPLocateUses { case _: Symbol.AliasType => Ast.SpecLoc.Type case _: Symbol.Array => Ast.SpecLoc.Type case _: Symbol.Component => Ast.SpecLoc.Component - case _: Symbol.ComponentInstance => Ast.SpecLoc.ComponentInstance + case _: Symbol.ComponentInstance => Ast.SpecLoc.Instance case _: Symbol.Constant => Ast.SpecLoc.Constant case _: Symbol.Enum => Ast.SpecLoc.Type case _: Symbol.EnumConstant => Ast.SpecLoc.Type @@ -82,7 +82,7 @@ object FPPLocateUses { case _: Symbol.Port => Ast.SpecLoc.Port case _: Symbol.StateMachine => Ast.SpecLoc.StateMachine case _: Symbol.Struct => Ast.SpecLoc.Type - case _: Symbol.Topology => Ast.SpecLoc.Topology + case _: Symbol.Topology => Ast.SpecLoc.Instance } val isDictionaryDef = s match { case Symbol.Array(aNode) => aNode._2.data.isDictionaryDef diff --git a/docs/fpp-spec.html b/docs/fpp-spec.html index 116dc156f..caa5c12eb 100644 --- a/docs/fpp-spec.html +++ b/docs/fpp-spec.html @@ -7009,7 +7009,7 @@

7.9.1. Syntax

  • -

    A component instance location specifier locate instance +

    An interface instance location specifier locate instance qual-ident at string-literal

  • @@ -7044,11 +7044,6 @@

    7.9.1. Syntax

    string-literal

  • -

    A topology location specifier locate topology -qual-ident at -string-literal

    -
  • -
  • A type location specifier locate [ dictionary @@ -8471,7 +8466,7 @@

    7.19.2. Semantic

    The identifier specifies the name N of the port instance.

  • -

    The port instance identifier must be valid.

    +

    The port instance identifier must be valid and refer to a port instance I.

  • The whole specifier makes I part of the diff --git a/docs/spec/Specifiers/Location-Specifiers.adoc b/docs/spec/Specifiers/Location-Specifiers.adoc index b515baba6..cb3a1b504 100644 --- a/docs/spec/Specifiers/Location-Specifiers.adoc +++ b/docs/spec/Specifiers/Location-Specifiers.adoc @@ -8,7 +8,7 @@ of a <>. A location specifier is one of the following: -* A *component instance location specifier* `locate` `instance` +* An *interface instance location specifier* `locate` `instance` <> `at` <> @@ -37,10 +37,6 @@ _]_ <> `at` <> -* A *topology location specifier* `locate` `topology` -<> `at` -<> - * A *type location specifier* `locate` _[_ `dictionary` diff --git a/docs/spec/Specifiers/Topology-Port-Instance-Specifiers.adoc b/docs/spec/Specifiers/Topology-Port-Instance-Specifiers.adoc index 001343790..39be56243 100644 --- a/docs/spec/Specifiers/Topology-Port-Instance-Specifiers.adoc +++ b/docs/spec/Specifiers/Topology-Port-Instance-Specifiers.adoc @@ -20,7 +20,8 @@ Such a specifier can be the endpoint of a . The identifier specifies the name _N_ of the port instance. -. The port instance identifier must be valid. +. The port instance identifier must be valid and <> a port instance _I_. . The whole specifier makes _I_ part of the <