8 public Sources(State s) {
12 public boolean setSource(SetDescriptor sd) {
13 if (sd.getSymbol().equals("InodeBitmapBlock"))
18 public boolean allocSource(SetDescriptor sd) {
19 return !setSource(sd);
21 public SetDescriptor getSourceSet(SetDescriptor sd) {
22 if (sd.getSymbol().equals("InodeBitmapBlock"))
23 return (SetDescriptor)state.stSets.get("FreeBlock");
26 public void generateSourceAlloc(CodeWriter cr,VarDescriptor vd, SetDescriptor sd) {
27 TypeDescriptor td=sd.getType();
28 Expr e=td.getSizeExpr();
29 VarDescriptor size=VarDescriptor.makeNew("size");
30 cr.pushSymbolTable(state.stGlobals);
33 cr.outputline(td.getGenerateType().getSafeSymbol()+" "+vd.getSafeSymbol()+"=("+td.getGenerateType().getSafeSymbol()+") malloc("+size.getSafeSymbol()+");");
36 public boolean relsetSource(RelationDescriptor rd, boolean domain) {
38 return setSource(rd.getDomain());
39 else return setSource(rd.getRange());
41 public boolean relallocSource(RelationDescriptor rd, boolean domain) {
43 return allocSource(rd.getDomain());
44 else return allocSource(rd.getRange());
47 public SetDescriptor relgetSourceSet(RelationDescriptor rd, boolean domain) {
49 return getSourceSet(rd.getDomain());
50 else return getSourceSet(rd.getRange());
52 public void relgenerateSourceAlloc(CodeWriter cr,VarDescriptor vd, RelationDescriptor rd, boolean domain) {
53 SetDescriptor sd=null;
58 TypeDescriptor td=sd.getType();
59 Expr e=td.getSizeExpr();
60 VarDescriptor size=VarDescriptor.makeNew("size");
61 cr.pushSymbolTable(state.stGlobals);
64 cr.outputline(td.getGenerateType().getSafeSymbol()+" "+vd.getSafeSymbol()+"=("+td.getGenerateType().getSafeSymbol()+") malloc("+size.getSafeSymbol()+");");