Represents an indirect invocation of the form " x.y(e1,..en) ". Here, x.y returns a function value and e1 ... en are the argument expressions . @author David J. Pearce
| 2892 | * |
| 2893 | */ |
| 2894 | public static class IndirectInvoke extends AbstractItem implements Expr { |
| 2895 | |
| 2896 | public IndirectInvoke(Type type, Expr source, Tuple<Expr> arguments) { |
| 2897 | super(EXPR_indirectinvoke, type, source, arguments); |
| 2898 | } |
| 2899 | |
| 2900 | @Override |
| 2901 | public Type getType() { |
| 2902 | return (Type) operands[0]; |
| 2903 | } |
| 2904 | |
| 2905 | @Override |
| 2906 | public void setType(Type type) { |
| 2907 | operands[0] = type; |
| 2908 | } |
| 2909 | |
| 2910 | public Expr getSource() { |
| 2911 | return (Expr) get(1); |
| 2912 | } |
| 2913 | |
| 2914 | @SuppressWarnings("unchecked") |
| 2915 | public Tuple<Expr> getArguments() { |
| 2916 | return (Tuple<Expr>) get(2); |
| 2917 | } |
| 2918 | |
| 2919 | @SuppressWarnings("unchecked") |
| 2920 | @Override |
| 2921 | public IndirectInvoke clone(Syntactic.Item[] operands) { |
| 2922 | return new IndirectInvoke((Type) operands[0], (Expr) operands[1], |
| 2923 | (Tuple<Expr>) operands[2]); |
| 2924 | } |
| 2925 | |
| 2926 | @Override |
| 2927 | public String toString() { |
| 2928 | String r = getSource().toString(); |
| 2929 | r += getArguments(); |
| 2930 | return r; |
| 2931 | } |
| 2932 | |
| 2933 | public static final Descriptor DESCRIPTOR_0 = new Descriptor(Operands.THREE, Data.ZERO, "EXPR_indirectinvoke") { |
| 2934 | @SuppressWarnings("unchecked") |
| 2935 | @Override |
| 2936 | public Syntactic.Item construct(int opcode, Syntactic.Item[] operands, byte[] data) { |
| 2937 | return new IndirectInvoke((Type) operands[0], (Expr) operands[1], |
| 2938 | (Tuple<Expr>) operands[2]); |
| 2939 | } |
| 2940 | }; |
| 2941 | } |
| 2942 | |
| 2943 | /** |
| 2944 | * Represents an <i>old expression</i> of the form "<code>old(e)</code>". This |
nothing calls this directly
no outgoing calls
no test coverage detected