package builtin.system; import builtin.BuiltinSub; import gui.Constants; import gui.Heap; import gui.MintException; import gui.Pointer; import gui.PointerTools; import gui.SmartList; /** * @author Oliver Chu */ public class ChangeString extends BuiltinSub { public static final Pointer ERROR = Heap.allocateString("<error>"); public Pointer toMintNull(String s) { if (s == null) { return Constants.MINT_NULL; } return Heap.allocateString(s); } @Override public Pointer apply(SmartList<Pointer> args) throws MintException { Pointer ptr = args.get(0); Pointer str = args.get(1); String asString = "<none>"; if (str.type != Constants.STR_TYPE) { asString = str.toString(); } else { asString = PointerTools.dereferenceString(str); } Heap.setString(ptr.value, asString); return Heap.allocateString(asString); } }