5 public class SizeofExpr extends Expr {
9 public SizeofExpr(SetExpr setexpr) {
10 if (setexpr == null) {
11 throw new NullPointerException();
14 this.setexpr = setexpr;
17 public String name() {
18 return "size("+setexpr.name()+")";
21 public boolean equals(Map remap, Expr e) {
22 if (e==null||!(e instanceof SizeofExpr))
24 SizeofExpr soe=(SizeofExpr)e;
25 return setexpr.equals(remap,soe.setexpr);
28 public boolean usesDescriptor(Descriptor rd) {
29 return setexpr.usesDescriptor(rd);
33 public Descriptor getDescriptor() {
34 return setexpr.getDescriptor();
37 public boolean inverted() {
38 return setexpr.inverted();
41 public SetExpr getSetExpr() {
45 public Set getRequiredDescriptors() {
46 return setexpr.getRequiredDescriptors();
49 public void generate(CodeWriter writer, VarDescriptor dest) {
50 setexpr.generate_size(writer, dest);
53 public void prettyPrint(PrettyPrinter pp) {
55 setexpr.prettyPrint(pp);
59 public TypeDescriptor typecheck(SemanticAnalyzer sa) {
60 this.td = ReservedTypeDescriptor.INT;
64 public Set getInversedRelations() {
65 return setexpr.getInversedRelations();