VExprConditionalStatementHandle VExprConditionalStatement::flatten(VExprIdentifierHandle pInstName) const { VExprExpressionHandle pFlatIf = getIf()->flatten(pInstName); VExprStatementOrNullHandle pFlatThen = getThen()->flatten(pInstName); if (getElse().valid()) { VExprStatementOrNullHandle pFlatElse = getElse()->flatten(pInstName); return VExprConditionalStatementHandle(VExprConditionalStatement(pFlatIf, pFlatThen, pFlatElse)); } else { return VExprConditionalStatementHandle(VExprConditionalStatement(pFlatIf, pFlatThen)); } assert(0); }
VExprConditionalStatementHandle VExprConditionalStatement::substitute(VExprExpressionHandle pDst, const HashTable<VExprExpressionHandle> & hashSrc) const { VExprExpressionHandle pNewIf = getIf()->substitute(pDst, hashSrc); VExprStatementOrNullHandle pNewThen = getThen()->substitute(pDst, hashSrc); if (getElse().valid()) { VExprStatementOrNullHandle pNewElse = getElse()->substitute(pDst, hashSrc); return VExprConditionalStatementHandle(VExprConditionalStatement(pNewIf, pNewThen, pNewElse)); } else { return VExprConditionalStatementHandle(VExprConditionalStatement(pNewIf, pNewThen)); } assert(0); }
std::string VExprConditionalStatement::getString(unsigned int indentLevel) const { std::string s = indent(indentLevel) + "if (" + getIf()->getString() + ") begin\n" + getThen()->getString(indentLevel+1); if (getElse().valid() && getElse()->getStatementHandle().valid()) { s = s + indent(indentLevel) + "end\n" + indent(indentLevel) + "else begin\n" + getElse()->getString(indentLevel+1); } // if (indentLevel != 0) // s += indent(1); // s += "}\n"; s = s + indent(indentLevel) + "end\n"; return s; }
status placeImageTableCell(TableCell cell) { Graphical gr = cell->image; Table tab = table_of_cell(cell); table_cell_dimensions d; int grx, gry; Any av[4]; Point ref = NULL; Name halign = getHalignTableCell(cell); Name valign = getValignTableCell(cell); ComputeGraphical(gr); /* make sure */ av[2] = DEFAULT; /* width */ av[3] = DEFAULT; /* height */ dims_table_cell(cell, &d); if ( halign == NAME_left ) /* determine X-placement */ grx = d.x + d.px; else if ( halign == NAME_right ) grx = d.x + d.w-d.px-valInt(gr->area->w); else if ( halign == NAME_center ) grx = d.x + (d.w-valInt(gr->area->w)+1)/2; else if ( halign == NAME_stretch ) { grx = d.x + d.px; av[2] = toInt(d.w-2*d.px); } else /* if ( halign == NAME_reference ) */ { ref = getIf(gr, NAME_reference, NIL); if ( notNil(ref) ) grx = d.x + d.rx - valInt(ref->x); else grx = d.x + d.px; } if ( valign == NAME_top ) /* determine Y-placement */ gry = d.y + d.py; else if ( valign == NAME_bottom ) gry = d.y + d.h-d.py-valInt(gr->area->h); else if ( valign == NAME_center ) gry = d.y + (d.h-valInt(gr->area->h)+1)/2; else if ( valign == NAME_stretch ) { gry = d.y + d.py; av[3] = toInt(d.h-2*d.py); } else /* if ( halign == NAME_reference ) */ { if ( !ref ) ref = getIf(gr, NAME_reference, NIL); if ( notNil(ref) ) gry = d.y + d.ry - valInt(ref->y); else gry = d.y + d.py; } av[0] = toInt(grx); av[1] = toInt(gry); if ( instanceOfObject(gr, ClassWindow) && /* HACK */ notNil(((PceWindow)gr)->decoration) ) gr = (Graphical)((PceWindow)gr)->decoration; qadSendv(gr, NAME_doSet, 4, av); if ( gr->device != tab->device ) send(tab->device, NAME_display, gr, EAV); succeed; }