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 boolean usesDescriptor(RelationDescriptor rd) {
18 return setexpr.usesDescriptor(rd);
22 public Descriptor getDescriptor() {
23 return setexpr.getDescriptor();
26 public boolean inverted() {
27 return setexpr.inverted();
30 public SetExpr getSetExpr() {
34 public Set getRequiredDescriptors() {
35 return setexpr.getRequiredDescriptors();
38 public void generate(CodeWriter writer, VarDescriptor dest) {
39 setexpr.generate_size(writer, dest);
42 public void prettyPrint(PrettyPrinter pp) {
44 setexpr.prettyPrint(pp);
48 public TypeDescriptor typecheck(SemanticAnalyzer sa) {
49 this.td = ReservedTypeDescriptor.INT;
53 public Set getInversedRelations() {
54 return setexpr.getInversedRelations();