package edu.neu.ccs.demeterf.demfgen.pcdgp; import edu.neu.ccs.demeterf.*; import edu.neu.ccs.demeterf.demfgen.Diff; import edu.neu.ccs.demeterf.demfgen.classes.*; import edu.neu.ccs.demeterf.demfgen.StrLTrip.StrPair; import edu.neu.ccs.demeterf.lib.List; import edu.neu.ccs.demeterf.lib.ident; import edu.neu.ccs.demeterf.util.Util; /** */ public class Setters extends Typical{ public Setters(List<String> sFs){ super(sFs); } public FC functionObj(List<String> superFs){ if(!Diff.optionSet(Diff.mutable)) throw new RuntimeException("PCDGP Error: Setters requires the '--mutable' option"); return new Setters(superFs); } public String combine(ClassDef td, DoGen g, final ident n, TypeDefParams ps, List<String> sts, List<StrPair> fs){ final boolean abst = !sts.isEmpty(); return fs.foldl(new List.Fold<StrPair, String>(){ public String fold(StrPair p, String r){ String override = superFs.contains(p.b)?Diff.d.override:""; return r+(" /** Setter for field "+n+"."+p.b+" */\n"+ " public"+override+(abst?" abstract":"")+" void "+Diff.capName("set"+Util.capCase(p.b))+ "("+p.n+" _"+p.b+")"+(abst?";":"{ "+p.b+" = _"+p.b+"; }\n")); } }, ""); } }