#include "figure.h" draw_figure::draw_figure(figure_descriptor* d):descriptor(d) { } void draw_figure::add_expression(expression* e) { argv.insert(e); } // EXECUTE EACH STATEMENT void draw_figure::execute(graphics_context& gc,drawable_list& L,coordsys& S, double* B) { // THE CALL STACK! double* LB = new double[descriptor->get_argc()]; list_iterator EI = argv.first(); int i = 0; // FIRST EVALUATE PARAMETERS while(EI.has_more_elements()) { LB[i++] = (*EI)->evaluate(B); EI++; } list_iterator I = descriptor->first_statement(); // EXECUTE STATEMENTS while(I.has_more_elements()) { (*I)->execute(gc,L,S,LB); I++; } delete [] LB; } draw_figure::~draw_figure() { }