#include "pp.h" void Propagation_pattern::expand_for_trav( Cd_graph* schema ) { DEM_TRACE("Propagation_pattern","void Propagation_pattern::expand_for_trav(Cd_graph* schema)"); // prefix class wrappers header->expand_for_trav(schema); impl_or_loc->expand_for_trav(schema); // suffix class wrappers } void Header::expand_for_trav( Cd_graph* schema ) { DEM_TRACE("Header","void Header::expand_for_trav(Cd_graph* schema)"); // prefix class wrappers if (access) access->expand(schema,access); // suffix class wrappers } void Impl_or_loc::expand_for_trav( Cd_graph* schema ) { DEM_TRACE("Impl_or_loc","void Impl_or_loc::expand_for_trav(Cd_graph* schema)"); // prefix class wrappers derror('i',1," unexpected visit at Impl_or_loc::expand_for_trav\n"); abort(); // suffix class wrappers } void Implementation::expand_for_trav( Cd_graph* schema ) { DEM_TRACE("Implementation","void Implementation::expand_for_trav(Cd_graph* schema)"); // prefix class wrappers if (pde) pde->expand(schema); // suffix class wrappers } void Propagation_pattern::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Propagation_pattern","void Propagation_pattern::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers impl_or_loc->expand_for_trans(schema); // suffix class wrappers } void Impl_or_loc::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Impl_or_loc","void Impl_or_loc::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers derror('i',1," unexpected visit at Impl_or_loc::expand_for_trans\n"); abort(); // suffix class wrappers } void Implementation::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Implementation","void Implementation::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers carry_or_wrapper->expand_for_trans(schema); // suffix class wrappers } void Carry_or_wrapper_List::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Carry_or_wrapper_List","void Carry_or_wrapper_List::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers Carry_or_wrapper_list_iterator next(*this); Carry_or_wrapper* each; while (each=next()) each->expand_for_trans(schema); // suffix class wrappers } void Carry_or_wrapper::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Carry_or_wrapper","void Carry_or_wrapper::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers // suffix class wrappers } void Sig_ext_prim::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Sig_ext_prim","void Sig_ext_prim::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers pde->expand(schema); assignments->expand_for_trans(schema); // suffix class wrappers } void Param_assignment_block_List::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Param_assignment_block_List","void Param_assignment_block_List::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers Param_assignment_block_list_iterator next(*this); Param_assignment_block* each; while (each=next()) each->expand_for_trans(schema); // suffix class wrappers } void Param_assignment_block::expand_for_trans( Cd_graph* schema ) { DEM_TRACE("Param_assignment_block","void Param_assignment_block::expand_for_trans(Cd_graph* schema)"); // prefix class wrappers vertices->expand(schema,vertices); // suffix class wrappers } void Propagation_pattern::expand_for_cgen( Cd_graph* schema ) { DEM_TRACE("Propagation_pattern","void Propagation_pattern::expand_for_cgen(Cd_graph* schema)"); // prefix class wrappers impl_or_loc->expand_for_cgen(schema); // suffix class wrappers } void Impl_or_loc::expand_for_cgen( Cd_graph* schema ) { DEM_TRACE("Impl_or_loc","void Impl_or_loc::expand_for_cgen(Cd_graph* schema)"); // prefix class wrappers derror('i',1," unexpected visit at Impl_or_loc::expand_for_cgen\n"); abort(); // suffix class wrappers } void Implementation::expand_for_cgen( Cd_graph* schema ) { DEM_TRACE("Implementation","void Implementation::expand_for_cgen(Cd_graph* schema)"); // prefix class wrappers carry_or_wrapper->expand_for_cgen(schema); // suffix class wrappers } void Carry_or_wrapper_List::expand_for_cgen( Cd_graph* schema ) { DEM_TRACE("Carry_or_wrapper_List","void Carry_or_wrapper_List::expand_for_cgen(Cd_graph* schema)"); // prefix class wrappers Carry_or_wrapper_list_iterator next(*this); Carry_or_wrapper* each; while (each = next()) each->expand_for_cgen(schema); // suffix class wrappers } void Carry_or_wrapper::expand_for_cgen( Cd_graph* schema ) { DEM_TRACE("Carry_or_wrapper","void Carry_or_wrapper::expand_for_cgen(Cd_graph* schema)"); // prefix class wrappers // suffix class wrappers } void Code_fragment::expand_for_cgen( Cd_graph* schema ) { DEM_TRACE("Code_fragment","void Code_fragment::expand_for_cgen(Cd_graph* schema)"); // prefix class wrappers vertices_edges->expand(schema); // suffix class wrappers } void Vertex_selector::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_selector","void Vertex_selector::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('i',1," unexpected visit at Vertex_selector::expand\n"); abort(); // suffix class wrappers } void Any_term::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Any_term","void Any_term::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers Vertex_set_sim* ns = new Vertex_set_sim(); ns->set_terms(new Fixed_term_Commalist()); schema->collect_terms(ns->get_terms()); vs = ns; // suffix class wrappers } void Fixed_term::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Fixed_term","void Fixed_term::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers Adjacency_list_iterator next(*schema->get_adjacencies()); Adjacency* each; while (each = next()) if (each->get_source()->get_vertex_name()->g_equal( this->get_vertex()->get_vertex()->get_vertex_name())) break; if (each == NULL) { cout << toolname << ": error : unavailable class :'" << this->get_vertex()->get_vertex()->get_vertex_name()->get_val() << "' on line " << this->get_vertex()->get_vertex()->get_vertex_name()->get_line_number() << endl; exit(-1); } Vertex_set_sim* ns = new Vertex_set_sim(); ns->set_terms(new Fixed_term_Commalist()); ns->get_terms()->append(this); vs = ns; // suffix class wrappers } void Vertex_set_sim::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_set_sim","void Vertex_set_sim::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers Fixed_term_list_iterator next2(*this->get_terms()); Fixed_term* each2; while (each2 = next2()) { Adjacency_list_iterator next(*schema->get_adjacencies()); Adjacency* each; while (each = next()) if (each->get_source()->get_vertex_name()->g_equal( each2->get_vertex()->get_vertex()->get_vertex_name())) break; if (each == NULL) { cout << toolname << ": error : unavailable class :'" << each2->get_vertex()->get_vertex()->get_vertex_name()->get_val() << "' on line " << each2->get_vertex()->get_vertex()->get_vertex_name()->get_line_number() << endl; exit(-1); } } // suffix class wrappers } void Vertex_set::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_set","void Vertex_set::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('i',1," unexpected visit at Vertex_set::expand\n"); abort(); // suffix class wrappers } void Vertex_set_comp::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_set_comp","void Vertex_set_comp::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('e',1," not yet implemented\n"); this->g_print(); exit(-1); // suffix class wrappers } void Class_set_inst::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Class_set_inst","void Class_set_inst::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('i',1," unexpected visit at Class_set_inst::expand\n"); abort(); // suffix class wrappers } void Late_selected_terms::expand( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Late_selected_terms","void Late_selected_terms::expand(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('e',1," not yet implemented\n"); this->g_print(); exit(-1); // suffix class wrappers } void Vertices_edges::expand( Cd_graph* schema ) { DEM_TRACE("Vertices_edges","void Vertices_edges::expand(Cd_graph* schema)"); // prefix class wrappers derror('i',1," unexpected visit at Vertices_edges::expand\n"); abort(); // suffix class wrappers } void Require_vertex_selector::expand( Cd_graph* schema ) { DEM_TRACE("Require_vertex_selector","void Require_vertex_selector::expand(Cd_graph* schema)"); // prefix class wrappers vertices->expand_cgen(schema,vertices); if (edges) edges->expand(schema); // suffix class wrappers } void Require_meta_edges::expand( Cd_graph* schema ) { DEM_TRACE("Require_meta_edges","void Require_meta_edges::expand(Cd_graph* schema)"); // prefix class wrappers edges->expand(schema); if (vertices) vertices->expand_cgen(schema,vertices); // suffix class wrappers } void Propagation_directive_exp::expand( Cd_graph* schema ) { DEM_TRACE("Propagation_directive_exp","void Propagation_directive_exp::expand(Cd_graph* schema)"); // prefix class wrappers derror('i',1," unexpected visit at Propagation_directive_exp::expand\n"); abort(); // suffix class wrappers } void Dir_name_with_exp::expand( Cd_graph* schema ) { DEM_TRACE("Dir_name_with_exp","void Dir_name_with_exp::expand(Cd_graph* schema)"); // prefix class wrappers derror('i',1," unexpected visit at Dir_name_with_exp::expand\n"); abort(); // suffix class wrappers } void Pde::expand( Cd_graph* schema ) { DEM_TRACE("Pde","void Pde::expand(Cd_graph* schema)"); // prefix class wrappers source_port->expand(schema,source_port); if (constraint) constraint->expand(schema); via->expand(schema); // suffix class wrappers } void Join_pde::expand( Cd_graph* schema ) { DEM_TRACE("Join_pde","void Join_pde::expand(Cd_graph* schema)"); // prefix class wrappers pde1->expand(schema); pde2->expand(schema); // suffix class wrappers } void Merge_pde::expand( Cd_graph* schema ) { DEM_TRACE("Merge_pde","void Merge_pde::expand(Cd_graph* schema)"); // prefix class wrappers pde1->expand(schema); pde2->expand(schema); // suffix class wrappers } void Path_constraint_exp::expand( Cd_graph* schema ) { DEM_TRACE("Path_constraint_exp","void Path_constraint_exp::expand(Cd_graph* schema)"); // prefix class wrappers derror('i',1," unexpected visit at Path_constraint_exp::expand\n"); abort(); // suffix class wrappers } void Require_through::expand( Cd_graph* schema ) { DEM_TRACE("Require_through","void Require_through::expand(Cd_graph* schema)"); // prefix class wrappers through->expand(schema); if (bypassing) bypassing->expand(schema); // suffix class wrappers } void Require_bypassing::expand( Cd_graph* schema ) { DEM_TRACE("Require_bypassing","void Require_bypassing::expand(Cd_graph* schema)"); // prefix class wrappers bypassing->expand(schema); if (through) through->expand(schema); // suffix class wrappers } void Through_path_constraint::expand( Cd_graph* schema ) { DEM_TRACE("Through_path_constraint","void Through_path_constraint::expand(Cd_graph* schema)"); // prefix class wrappers through->expand(schema,through); // suffix class wrappers } void Bypassing_path_constraint::expand( Cd_graph* schema ) { DEM_TRACE("Bypassing_path_constraint","void Bypassing_path_constraint::expand(Cd_graph* schema)"); // prefix class wrappers bypassing->expand(schema,bypassing); // suffix class wrappers } void Segment_List::expand( Cd_graph* schema ) { DEM_TRACE("Segment_List","void Segment_List::expand(Cd_graph* schema)"); // prefix class wrappers Segment_list_iterator next(*this); Segment* each; while (each = next()) each->expand(schema); // suffix class wrappers } void Segment::expand( Cd_graph* schema ) { DEM_TRACE("Segment","void Segment::expand(Cd_graph* schema)"); // prefix class wrappers targets->expand(schema); if (constraint) constraint->expand(schema); // suffix class wrappers } void Targets::expand( Cd_graph* schema ) { DEM_TRACE("Targets","void Targets::expand(Cd_graph* schema)"); // prefix class wrappers targets->expand(schema,targets); // suffix class wrappers } void Meta_edges::expand( Cd_graph* schema ) { DEM_TRACE("Meta_edges","void Meta_edges::expand(Cd_graph* schema)"); // prefix class wrappers Meta_edge_Commalist * t = edges; t->expand(schema,edges); delete t; // suffix class wrappers } void Meta_edge_Commalist::expand( Cd_graph* schema,Meta_edge_Commalist* & edges ) { DEM_TRACE("Meta_edge_Commalist","void Meta_edge_Commalist::expand(Cd_graph* schema,Meta_edge_Commalist* & edges)"); // prefix class wrappers edges = new Meta_edge_Commalist(); Meta_edge_list_iterator next(*this); Meta_edge* each; while (each = next()) each->expand(schema,edges); // suffix class wrappers } void Meta_edge::expand( Cd_graph* schema,Meta_edge_Commalist* & edges ) { DEM_TRACE("Meta_edge","void Meta_edge::expand(Cd_graph* schema,Meta_edge_Commalist* & edges)"); // prefix class wrappers derror('i',1," unexpected visit at Meta_edge::expand\n"); abort(); // suffix class wrappers } void Meta_construction_edge::expand( Cd_graph* schema,Meta_edge_Commalist* & edges ) { DEM_TRACE("Meta_construction_edge","void Meta_construction_edge::expand(Cd_graph* schema,Meta_edge_Commalist* & edges)"); // prefix class wrappers int found = 0; schema->colect_cons_edges(edges,found,this); if (found == 0) { derror('e',1,"unable to find construction edges to match\n"); this->g_print(cout); cout << endl; exit(-1); } // suffix class wrappers } void Meta_alternation_edge::expand( Cd_graph* schema,Meta_edge_Commalist* & edges ) { DEM_TRACE("Meta_alternation_edge","void Meta_alternation_edge::expand(Cd_graph* schema,Meta_edge_Commalist* & edges)"); // prefix class wrappers int found = 0; schema->colect_alt_edges(edges,found,this); if (found == 0) { derror('e',1,"unable to find alternation edges to match\n"); this->g_print(cout); cout << endl; exit(-1); } // suffix class wrappers } void Meta_inheritance_edge::expand( Cd_graph* schema,Meta_edge_Commalist* & edges ) { DEM_TRACE("Meta_inheritance_edge","void Meta_inheritance_edge::expand(Cd_graph* schema,Meta_edge_Commalist* & edges)"); // prefix class wrappers int found = 0; schema->colect_inh_edges(edges,found,this); if (found == 0) { derror('e',1,"unable to find inheritance edges to match\n"); this->g_print(cout); cout << endl; exit(-1); } // suffix class wrappers } void Meta_repetition_edge::expand( Cd_graph* schema,Meta_edge_Commalist* & edges ) { DEM_TRACE("Meta_repetition_edge","void Meta_repetition_edge::expand(Cd_graph* schema,Meta_edge_Commalist* & edges)"); // prefix class wrappers int found = 0; schema->colect_rep_edges(edges,found,this); if (found == 0) { derror('e',1,"unable to find repetition edges to match\n"); this->g_print(cout); cout << endl; exit(-1); } // suffix class wrappers } void Vertex_selector::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_selector","void Vertex_selector::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('i',1," unexpected visit at Vertex_selector::expand\n"); abort(); // suffix class wrappers } void Any_term::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Any_term","void Any_term::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers Vertex_set_sim* ns = new Vertex_set_sim(); ns->set_terms(new Fixed_term_Commalist()); schema->collect_terms(ns->get_terms()); vs = ns; // suffix class wrappers } void Fixed_term::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Fixed_term","void Fixed_term::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers Adjacency_list_iterator next(*schema->get_adjacencies()); Adjacency* each; while (each = next()) if (each->get_source()->get_vertex_name()->g_equal( this->get_vertex()->get_vertex()->get_vertex_name())) break; if (each == NULL) { cout << toolname << ": error : unavailable class :'" << this->get_vertex()->get_vertex()->get_vertex_name()->get_val() << "' on line " << this->get_vertex()->get_vertex()->get_vertex_name()->get_line_number() << endl; exit(-1); } Vertex_set_sim* ns = new Vertex_set_sim(); ns->set_terms(new Fixed_term_Commalist()); ns->get_terms()->append(this); vs = ns; this->collect_subclasses(ns->get_terms(),schema); /* when code fragments attached to alternation classes the subclasses not in the ps are not calling it */ // suffix class wrappers } void Vertex_set_sim::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_set_sim","void Vertex_set_sim::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers Fixed_term_list_iterator next2(*this->get_terms()); Fixed_term* each2; while (each2 = next2()) { Adjacency_list_iterator next(*schema->get_adjacencies()); Adjacency* each; while (each = next()) if (each->get_source()->get_vertex_name()->g_equal( each2->get_vertex()->get_vertex()->get_vertex_name())) break; if (each == NULL) { cout << toolname << ": error : unavailable class :'" << each2->get_vertex()->get_vertex()->get_vertex_name()->get_val() << "' on line " << each2->get_vertex()->get_vertex()->get_vertex_name()->get_line_number() << endl; exit(-1); } each2->collect_subclasses(this->get_terms(),schema); /* when code fragments attached to alternation classes the subclasses not in the ps are not calling it */ } // suffix class wrappers } void Vertex_set::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_set","void Vertex_set::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('i',1," unexpected visit at Vertex_set::expand\n"); abort(); // suffix class wrappers } void Vertex_set_comp::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Vertex_set_comp","void Vertex_set_comp::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('e',1," not yet implemented\n"); this->g_print(); exit(-1); // suffix class wrappers } void Class_set_inst::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Class_set_inst","void Class_set_inst::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('i',1," unexpected visit at Class_set_inst::expand\n"); abort(); // suffix class wrappers } void Late_selected_terms::expand_cgen( Cd_graph* schema,Vertex_selector* & vs ) { DEM_TRACE("Late_selected_terms","void Late_selected_terms::expand_cgen(Cd_graph* schema,Vertex_selector* & vs)"); // prefix class wrappers derror('e',1," not yet implemented\n"); this->g_print(); exit(-1); // suffix class wrappers }