Skip to content

Commit c38c83a

Browse files
committed
add abstract setters
1 parent f9fa477 commit c38c83a

File tree

4 files changed

+314
-2
lines changed

4 files changed

+314
-2
lines changed

asmetal2java_codegen/src/org/asmeta/asm2java/main/JavaASMGenerator.xtend

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,51 @@ class JavaASMGenerator extends AsmToJavaGenerator {
695695
sb.append('''boolean «fd.name»_i),''')
696696
}
697697
*/
698+
699+
if(fd.domain instanceof EnumTd){
700+
// TODO: Enum -> Codomain
701+
}
702+
else if(fd.domain instanceof AbstractTd){
703+
for (sf : asm.headerSection.signature.function) { // controllo le funzioni statiche e prendo quelle che aggiungono al dominio astratto
704+
if(sf instanceof StaticFunction){
705+
if(sf.codomain.equals(fd.domain)){
706+
var symbol = sf.name
707+
if(fd.codomain.name.equals("Integer") && !(fd.codomain instanceof ConcreteDomain)){
708+
sb.append(System.lineSeparator()).append("\t\t")
709+
sb.append('''int «fd.name»_«symbol»,''')
710+
}
711+
else if(fd.codomain.name.equals("Boolean") && !(fd.codomain instanceof ConcreteDomain)){
712+
sb.append(System.lineSeparator()).append("\t\t")
713+
sb.append('''boolean «fd.name»_«symbol»,''')
714+
}
715+
else if(fd.codomain.name.equals("String") && !(fd.codomain instanceof ConcreteDomain)){
716+
sb.append(System.lineSeparator()).append("\t\t")
717+
sb.append('''String «fd.name»_«symbol»,''')
718+
}
719+
else if (fd.codomain instanceof EnumTd) {
720+
// TODO: fare un set per ogni elemento del dominio enum
721+
sb.append(System.lineSeparator()).append("\t\t")
722+
sb.append('''«asmName».«fd.codomain.name» «fd.name»_«symbol»,''')
723+
}
724+
else if (fd.codomain instanceof ConcreteDomain) {
725+
sb.append(System.lineSeparator()).append("\t\t")
726+
sb.append('''int «fd.name»_«symbol»,''')
727+
}
728+
else if (fd.codomain instanceof AbstractTd) {
729+
for (sfc : asm.headerSection.signature.function) { // controllo le funzioni statiche e prendo quelle che aggiungono al dominio astratto
730+
if(sfc instanceof StaticFunction){
731+
if(sfc.codomain.equals(fd.codomain)){
732+
var symbol_codomain = sf.name
733+
sb.append(System.lineSeparator()).append("\t\t")
734+
sb.append('''«asm.name».«fd.codomain» «fd.name»_«symbol»_«symbol_codomain»,''')
735+
}
736+
}
737+
}
738+
}
739+
}
740+
}
741+
}
742+
}
698743
}
699744
}
700745
}
@@ -768,10 +813,46 @@ class JavaASMGenerator extends AsmToJavaGenerator {
768813
''')
769814
}
770815
*/
816+
if(fd.domain instanceof EnumTd){
817+
// TODO: Enum -> Codomain
818+
}
819+
else if(fd.domain instanceof AbstractTd){
820+
for (sf : asm.headerSection.signature.function) { // controllo le funzioni statiche e prendo quelle che aggiungono al dominio astratto
821+
if(sf instanceof StaticFunction){
822+
if(sf.codomain.equals(fd.domain)){
823+
var symbol = sf.name
824+
if(fd.codomain instanceof AbstractTd){
825+
for (sfc : asm.headerSection.signature.function) { // controllo le funzioni statiche e prendo quelle che aggiungono al codominio astratto
826+
if(sfc instanceof StaticFunction){
827+
if(sfc.codomain.equals(fd.codomain)){
828+
var symbol_codomain = sf.name
829+
sb.append('''
830+
this.esecuzione.«fd.name».set(
831+
this.esecuzione.«fd.domain.name»_Class.get(
832+
this.esecuzione.«fd.domain.name»_elemsList.indexOf("«symbol»")),«fd.name»_«symbol»_«symbol_codomain»);
833+
System.out.println("Set «fd.name»_«symbol» = " + «fd.name»_«symbol»);''')
834+
sb.append(System.lineSeparator)
835+
sb.append(System.lineSeparator)
836+
sb.append(System.lineSeparator()).append("\t\t")
837+
sb.append('''«asm.name».«fd.codomain» «fd.name»_«symbol»_«symbol_codomain»,''')
838+
}
839+
}
840+
}
841+
} else {
842+
sb.append('''
843+
this.esecuzione.«fd.name».set(
844+
this.esecuzione.«fd.domain.name»_Class.get(
845+
this.esecuzione.«fd.domain.name»_elemsList.indexOf("«symbol»")),«fd.name»_«symbol»);
846+
System.out.println("Set «fd.name»_«symbol» = " + «fd.name»_«symbol»);''')
847+
sb.append(System.lineSeparator)
848+
sb.append(System.lineSeparator)
849+
}
850+
}
851+
}
852+
}
853+
}
771854
}
772-
773855
}
774-
775856
}
776857

777858
return sb.toString

asmetal2java_codegen/xtend-gen/org/asmeta/asm2java/main/JavaASMGenerator.java

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1590,6 +1590,116 @@ public void setMonitoredArgs(final Asm asm, final StringBuffer sb) {
15901590
}
15911591
}
15921592
} else {
1593+
Domain _domain_1 = ((MonitoredFunction)fd).getDomain();
1594+
if ((_domain_1 instanceof EnumTd)) {
1595+
} else {
1596+
Domain _domain_2 = ((MonitoredFunction)fd).getDomain();
1597+
if ((_domain_2 instanceof AbstractTd)) {
1598+
EList<Function> _function_1 = asm.getHeaderSection().getSignature().getFunction();
1599+
for (final Function sf : _function_1) {
1600+
if ((sf instanceof StaticFunction)) {
1601+
boolean _equals = ((StaticFunction)sf).getCodomain().equals(((MonitoredFunction)fd).getDomain());
1602+
if (_equals) {
1603+
String symbol = ((StaticFunction)sf).getName();
1604+
if ((((MonitoredFunction)fd).getCodomain().getName().equals("Integer") && (!(((MonitoredFunction)fd).getCodomain() instanceof ConcreteDomain)))) {
1605+
sb.append(System.lineSeparator()).append("\t\t");
1606+
StringConcatenation _builder_7 = new StringConcatenation();
1607+
_builder_7.append("int ");
1608+
String _name_7 = ((MonitoredFunction)fd).getName();
1609+
_builder_7.append(_name_7);
1610+
_builder_7.append("_");
1611+
_builder_7.append(symbol);
1612+
_builder_7.append(",");
1613+
sb.append(_builder_7);
1614+
} else {
1615+
if ((((MonitoredFunction)fd).getCodomain().getName().equals("Boolean") && (!(((MonitoredFunction)fd).getCodomain() instanceof ConcreteDomain)))) {
1616+
sb.append(System.lineSeparator()).append("\t\t");
1617+
StringConcatenation _builder_8 = new StringConcatenation();
1618+
_builder_8.append("boolean ");
1619+
String _name_8 = ((MonitoredFunction)fd).getName();
1620+
_builder_8.append(_name_8);
1621+
_builder_8.append("_");
1622+
_builder_8.append(symbol);
1623+
_builder_8.append(",");
1624+
sb.append(_builder_8);
1625+
} else {
1626+
if ((((MonitoredFunction)fd).getCodomain().getName().equals("String") && (!(((MonitoredFunction)fd).getCodomain() instanceof ConcreteDomain)))) {
1627+
sb.append(System.lineSeparator()).append("\t\t");
1628+
StringConcatenation _builder_9 = new StringConcatenation();
1629+
_builder_9.append("String ");
1630+
String _name_9 = ((MonitoredFunction)fd).getName();
1631+
_builder_9.append(_name_9);
1632+
_builder_9.append("_");
1633+
_builder_9.append(symbol);
1634+
_builder_9.append(",");
1635+
sb.append(_builder_9);
1636+
} else {
1637+
Domain _codomain_3 = ((MonitoredFunction)fd).getCodomain();
1638+
if ((_codomain_3 instanceof EnumTd)) {
1639+
sb.append(System.lineSeparator()).append("\t\t");
1640+
StringConcatenation _builder_10 = new StringConcatenation();
1641+
_builder_10.append(asmName);
1642+
_builder_10.append(".");
1643+
String _name_10 = ((MonitoredFunction)fd).getCodomain().getName();
1644+
_builder_10.append(_name_10);
1645+
_builder_10.append(" ");
1646+
String _name_11 = ((MonitoredFunction)fd).getName();
1647+
_builder_10.append(_name_11);
1648+
_builder_10.append("_");
1649+
_builder_10.append(symbol);
1650+
_builder_10.append(",");
1651+
sb.append(_builder_10);
1652+
} else {
1653+
Domain _codomain_4 = ((MonitoredFunction)fd).getCodomain();
1654+
if ((_codomain_4 instanceof ConcreteDomain)) {
1655+
sb.append(System.lineSeparator()).append("\t\t");
1656+
StringConcatenation _builder_11 = new StringConcatenation();
1657+
_builder_11.append("int ");
1658+
String _name_12 = ((MonitoredFunction)fd).getName();
1659+
_builder_11.append(_name_12);
1660+
_builder_11.append("_");
1661+
_builder_11.append(symbol);
1662+
_builder_11.append(",");
1663+
sb.append(_builder_11);
1664+
} else {
1665+
Domain _codomain_5 = ((MonitoredFunction)fd).getCodomain();
1666+
if ((_codomain_5 instanceof AbstractTd)) {
1667+
EList<Function> _function_2 = asm.getHeaderSection().getSignature().getFunction();
1668+
for (final Function sfc : _function_2) {
1669+
if ((sfc instanceof StaticFunction)) {
1670+
boolean _equals_1 = ((StaticFunction)sfc).getCodomain().equals(((MonitoredFunction)fd).getCodomain());
1671+
if (_equals_1) {
1672+
String symbol_codomain = ((StaticFunction)sf).getName();
1673+
sb.append(System.lineSeparator()).append("\t\t");
1674+
StringConcatenation _builder_12 = new StringConcatenation();
1675+
String _name_13 = asm.getName();
1676+
_builder_12.append(_name_13);
1677+
_builder_12.append(".");
1678+
Domain _codomain_6 = ((MonitoredFunction)fd).getCodomain();
1679+
_builder_12.append(_codomain_6);
1680+
_builder_12.append(" ");
1681+
String _name_14 = ((MonitoredFunction)fd).getName();
1682+
_builder_12.append(_name_14);
1683+
_builder_12.append("_");
1684+
_builder_12.append(symbol);
1685+
_builder_12.append("_");
1686+
_builder_12.append(symbol_codomain);
1687+
_builder_12.append(",");
1688+
sb.append(_builder_12);
1689+
}
1690+
}
1691+
}
1692+
}
1693+
}
1694+
}
1695+
}
1696+
}
1697+
}
1698+
}
1699+
}
1700+
}
1701+
}
1702+
}
15931703
}
15941704
}
15951705
}
@@ -1724,6 +1834,127 @@ public String setMonitored(final Asm asm) {
17241834
}
17251835
}
17261836
} else {
1837+
Domain _domain_1 = ((MonitoredFunction)fd).getDomain();
1838+
if ((_domain_1 instanceof EnumTd)) {
1839+
} else {
1840+
Domain _domain_2 = ((MonitoredFunction)fd).getDomain();
1841+
if ((_domain_2 instanceof AbstractTd)) {
1842+
EList<Function> _function_1 = asm.getHeaderSection().getSignature().getFunction();
1843+
for (final Function sf : _function_1) {
1844+
if ((sf instanceof StaticFunction)) {
1845+
boolean _equals = ((StaticFunction)sf).getCodomain().equals(((MonitoredFunction)fd).getDomain());
1846+
if (_equals) {
1847+
String symbol = ((StaticFunction)sf).getName();
1848+
Domain _codomain_3 = ((MonitoredFunction)fd).getCodomain();
1849+
if ((_codomain_3 instanceof AbstractTd)) {
1850+
EList<Function> _function_2 = asm.getHeaderSection().getSignature().getFunction();
1851+
for (final Function sfc : _function_2) {
1852+
if ((sfc instanceof StaticFunction)) {
1853+
boolean _equals_1 = ((StaticFunction)sfc).getCodomain().equals(((MonitoredFunction)fd).getCodomain());
1854+
if (_equals_1) {
1855+
String symbol_codomain = ((StaticFunction)sf).getName();
1856+
StringConcatenation _builder_4 = new StringConcatenation();
1857+
_builder_4.append("this.esecuzione.");
1858+
String _name_22 = ((MonitoredFunction)fd).getName();
1859+
_builder_4.append(_name_22);
1860+
_builder_4.append(".set(");
1861+
_builder_4.newLineIfNotEmpty();
1862+
_builder_4.append("this.esecuzione.");
1863+
String _name_23 = ((MonitoredFunction)fd).getDomain().getName();
1864+
_builder_4.append(_name_23);
1865+
_builder_4.append("_Class.get(");
1866+
_builder_4.newLineIfNotEmpty();
1867+
_builder_4.append("this.esecuzione.");
1868+
String _name_24 = ((MonitoredFunction)fd).getDomain().getName();
1869+
_builder_4.append(_name_24);
1870+
_builder_4.append("_elemsList.indexOf(\"");
1871+
_builder_4.append(symbol);
1872+
_builder_4.append("\")),");
1873+
String _name_25 = ((MonitoredFunction)fd).getName();
1874+
_builder_4.append(_name_25);
1875+
_builder_4.append("_");
1876+
_builder_4.append(symbol);
1877+
_builder_4.append("_");
1878+
_builder_4.append(symbol_codomain);
1879+
_builder_4.append(");");
1880+
_builder_4.newLineIfNotEmpty();
1881+
_builder_4.append("System.out.println(\"Set ");
1882+
String _name_26 = ((MonitoredFunction)fd).getName();
1883+
_builder_4.append(_name_26);
1884+
_builder_4.append("_");
1885+
_builder_4.append(symbol);
1886+
_builder_4.append(" = \" + ");
1887+
String _name_27 = ((MonitoredFunction)fd).getName();
1888+
_builder_4.append(_name_27);
1889+
_builder_4.append("_");
1890+
_builder_4.append(symbol);
1891+
_builder_4.append(");");
1892+
sb.append(_builder_4);
1893+
sb.append(System.lineSeparator());
1894+
sb.append(System.lineSeparator());
1895+
sb.append(System.lineSeparator()).append("\t\t");
1896+
StringConcatenation _builder_5 = new StringConcatenation();
1897+
String _name_28 = asm.getName();
1898+
_builder_5.append(_name_28);
1899+
_builder_5.append(".");
1900+
Domain _codomain_4 = ((MonitoredFunction)fd).getCodomain();
1901+
_builder_5.append(_codomain_4);
1902+
_builder_5.append(" ");
1903+
String _name_29 = ((MonitoredFunction)fd).getName();
1904+
_builder_5.append(_name_29);
1905+
_builder_5.append("_");
1906+
_builder_5.append(symbol);
1907+
_builder_5.append("_");
1908+
_builder_5.append(symbol_codomain);
1909+
_builder_5.append(",");
1910+
sb.append(_builder_5);
1911+
}
1912+
}
1913+
}
1914+
} else {
1915+
StringConcatenation _builder_6 = new StringConcatenation();
1916+
_builder_6.append("this.esecuzione.");
1917+
String _name_30 = ((MonitoredFunction)fd).getName();
1918+
_builder_6.append(_name_30);
1919+
_builder_6.append(".set(");
1920+
_builder_6.newLineIfNotEmpty();
1921+
_builder_6.append("this.esecuzione.");
1922+
String _name_31 = ((MonitoredFunction)fd).getDomain().getName();
1923+
_builder_6.append(_name_31);
1924+
_builder_6.append("_Class.get(");
1925+
_builder_6.newLineIfNotEmpty();
1926+
_builder_6.append("this.esecuzione.");
1927+
String _name_32 = ((MonitoredFunction)fd).getDomain().getName();
1928+
_builder_6.append(_name_32);
1929+
_builder_6.append("_elemsList.indexOf(\"");
1930+
_builder_6.append(symbol);
1931+
_builder_6.append("\")),");
1932+
String _name_33 = ((MonitoredFunction)fd).getName();
1933+
_builder_6.append(_name_33);
1934+
_builder_6.append("_");
1935+
_builder_6.append(symbol);
1936+
_builder_6.append(");");
1937+
_builder_6.newLineIfNotEmpty();
1938+
_builder_6.append("System.out.println(\"Set ");
1939+
String _name_34 = ((MonitoredFunction)fd).getName();
1940+
_builder_6.append(_name_34);
1941+
_builder_6.append("_");
1942+
_builder_6.append(symbol);
1943+
_builder_6.append(" = \" + ");
1944+
String _name_35 = ((MonitoredFunction)fd).getName();
1945+
_builder_6.append(_name_35);
1946+
_builder_6.append("_");
1947+
_builder_6.append(symbol);
1948+
_builder_6.append(");");
1949+
sb.append(_builder_6);
1950+
sb.append(System.lineSeparator());
1951+
sb.append(System.lineSeparator());
1952+
}
1953+
}
1954+
}
1955+
}
1956+
}
1957+
}
17271958
}
17281959
}
17291960
}

0 commit comments

Comments
 (0)