#include "pp.h" // Meta_macro_def = [ Term_Commalist ] // [ Meta_edge_Commalist ] // [ Class_set_def_Amplist ] // [ Dir_meta_def_Amplist ] // [ PCP_def_Amplist ] . void Meta_macro_def::check_meta( ) { DEM_TRACE("Meta_macro_def","void Meta_macro_def::check_meta()"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers /////////////////////////////////////////////////////////////////////////// // there is no need to check class and relation variables // the algorithm goes like this: // first : find all the meta variables which contain no use // of meta variables // second: substitute with the variables found above // if there is no progress and there is still more than one // left, it is an error. //////////////////////////////////////////////////////////////////////////// static Meta_macro_def * final_madef = new Meta_macro_def(); static Meta_def * final_meta = new Meta_def(); final_meta->set_meta_def(final_madef); if ((this->get_class_sets() == NULL) && (this->get_dirs() == NULL)) return; Class_set_def_Amplist * final_csets = NULL; Dir_meta_def_Amplist * final_dirs = NULL; if (this->get_class_sets() != NULL) final_csets = new Class_set_def_Amplist(); if (this->get_dirs() != NULL) final_dirs = new Dir_meta_def_Amplist(); final_madef->set_class_sets(final_csets); final_madef->set_dirs(final_dirs); int progress = 0; while (1) { progress = 0; if (this->get_class_sets() != NULL) { Class_set_def_Amplist * t = new Class_set_def_Amplist(); Class_set_def_list_iterator next(*this->get_class_sets()); Class_set_def * each; while (each = next()) { int c = 0; each->no_meta_vars_in_cset(c); if (!c) { final_csets->append(each); progress = 1; } else t->append(each); } if (t->list_length() == 0) { delete t; t = NULL; } delete this->rset_class_sets(t); } if (this->get_dirs() != NULL) { Dir_meta_def_Amplist * t = new Dir_meta_def_Amplist(); Dir_meta_def_list_iterator next(*this->get_dirs()); Dir_meta_def * each; while (each = next()) { int c = 0; each->no_meta_vars_in_dir(c); if (!c) { final_dirs->append(each); progress = 1; } else t->append(each); } if (t->list_length() == 0) { delete t; t = NULL; } delete this->rset_dirs(t); } ///////////////////////////////////////////////////////////////// // try to reduce meta variables ///////////////////////////////////////////////////////////////// if (this->get_class_sets() != NULL) { this->get_class_sets()->check_meta_csets(final_meta); this->get_class_sets()->check_meta_cdirs(final_meta); } if (this->get_dirs() != NULL) { this->get_dirs()->check_meta_dsets(final_meta); this->get_dirs()->check_meta_ddirs(final_meta); } if (progress == 0) break; } if ((this->get_class_sets() == NULL) && (this->get_dirs() == NULL)) { this->set_class_sets(final_csets); this->set_dirs(final_dirs); return; } cout << toolname << ": illegal meta definitions : there is no way to futher reduce the meta definitions.\n" << " there may be some undefined meta variables or recursive definitions." << endl; if (this->get_class_sets() != NULL) { cout << "*class-set*" << endl; this->get_class_sets()->g_print(cout); cout << endl; } if (this->get_dirs() != NULL) { cout << "*dir*" << endl; this->get_dirs()->g_print(cout); cout << endl; } exit(-1); // outgoing calls if ( this->get_macros() != NULL ) { // construction edge prefix wrappers this->get_macros()->check_meta( ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // PCP_def = PCP_def_name // "=" // PCP // ";" . void PCP_def::check_meta( ) { DEM_TRACE("PCP_def","void PCP_def::check_meta()"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_pcp()->check_meta( ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // PCP : Propagation_directive_exp | // Propagation_pattern // *common* . void PCP::check_meta( ) { DEM_TRACE("PCP","void PCP::check_meta()"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"PCP",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Meta_def = + // "*constraints*" // *l // Meta_macro_def // "*end*" // - // *l. void Meta_def::check_meta( ) { DEM_TRACE("Meta_def","void Meta_def::check_meta()"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_meta_def()->check_meta( ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Propagation_pattern =
Header // [ Rename ] // [ Meta_def ] // Impl_or_loc . void Propagation_pattern::check_meta( ) { DEM_TRACE("Propagation_pattern","void Propagation_pattern::check_meta()"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls if ( this->get_meta_def() != NULL ) { // construction edge prefix wrappers this->get_meta_def()->check_meta( ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // PCP_def_Amplist ~ PCP_def { PCP_def }. . void PCP_def_Amplist::check_meta( ) { DEM_TRACE("PCP_def_Amplist","void PCP_def_Amplist::check_meta()"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls PCP_def_list_iterator next_PCP_def(*this); PCP_def* each_PCP_def; while ( each_PCP_def = next_PCP_def() ) { // repetition edge prefix wrappers each_PCP_def->check_meta( ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Class_set_def = Class_set_def_name // "=" // Vertex_selector // ";" . void Class_set_def::check_meta_csets( Meta_def* finalmeta ) { DEM_TRACE("Class_set_def","void Class_set_def::check_meta_csets(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers Vertex_selector * reduced = NULL; this->get_class_set()->check_meta_sets(finalmeta,reduced); if (reduced) this->rset_class_set((Vertex_selector*)reduced->g_copy())->g_delete(); // outgoing calls // suffix class wrappers // assignments for carrying out } // Class_set_def_Amplist ~ Class_set_def { Class_set_def }. . void Class_set_def_Amplist::check_meta_csets( Meta_def* finalmeta ) { DEM_TRACE("Class_set_def_Amplist","void Class_set_def_Amplist::check_meta_csets(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Class_set_def_list_iterator next_Class_set_def(*this); Class_set_def* each_Class_set_def; while ( each_Class_set_def = next_Class_set_def() ) { // repetition edge prefix wrappers each_Class_set_def->check_meta_csets( finalmeta ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Dir_meta_def = Dir_def_name // "=" // Propagation_directive_exp // ";" . void Dir_meta_def::check_meta_dsets( Meta_def* finalmeta ) { DEM_TRACE("Dir_meta_def","void Dir_meta_def::check_meta_dsets(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers Vertex_selector * reduced = NULL; this->get_pde()->check_meta_sets(finalmeta,reduced); // outgoing calls // suffix class wrappers // assignments for carrying out } // Dir_meta_def_Amplist ~ Dir_meta_def { Dir_meta_def }. . void Dir_meta_def_Amplist::check_meta_dsets( Meta_def* finalmeta ) { DEM_TRACE("Dir_meta_def_Amplist","void Dir_meta_def_Amplist::check_meta_dsets(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Dir_meta_def_list_iterator next_Dir_meta_def(*this); Dir_meta_def* each_Dir_meta_def; while ( each_Dir_meta_def = next_Dir_meta_def() ) { // repetition edge prefix wrappers each_Dir_meta_def->check_meta_dsets( finalmeta ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Class_set_def = Class_set_def_name // "=" // Vertex_selector // ";" . void Class_set_def::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Class_set_def","void Class_set_def::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_class_set()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Class_set_name = "*class-set*" // DemIdent . void Class_set_name::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Class_set_name","void Class_set_name::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers DemIdent * n = this->get_name(); Vertex_selector * r = NULL; if ( finalmeta->get_meta_def()->get_class_sets()) finalmeta->get_meta_def()->get_class_sets()->find_set(r,n); if (r != NULL) reduced = (Vertex_selector *)r->g_copy(); // outgoing calls // suffix class wrappers // assignments for carrying out } // Propagation_directive_exp : Pde | // Merge_pde | // Join_pde | // Dir_name_with_exp // *common* . void Propagation_directive_exp::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Propagation_directive_exp","void Propagation_directive_exp::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Propagation_directive_exp",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Pde = "*from*" // Vertex_selector // [ Path_constraint_exp ] // Segment_List . void Pde::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Pde","void Pde::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_source_port()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers if ( this->get_constraint() != NULL ) { // construction edge prefix wrappers this->get_constraint()->check_meta_sets( finalmeta , reduced ); // construction edge prefix wrappers } // construction edge prefix wrappers this->get_via()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers Vertex_selector * r = NULL; this->get_source_port()->check_meta_sets(finalmeta,r); if (r) this->rset_source_port((Vertex_selector*)r->g_copy())->g_delete(); reduced = NULL; // assignments for carrying out } // Merge_pde = "*merge*" // "(" // Propagation_directive_exp // "," // Propagation_directive_exp // ")" . void Merge_pde::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Merge_pde","void Merge_pde::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_pde1()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_pde2()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Join_pde = "*join*" // "(" // Propagation_directive_exp // "," // Propagation_directive_exp // ")" . void Join_pde::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Join_pde","void Join_pde::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_pde1()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_pde2()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Segment = Targets // [ Path_constraint_exp ] . void Segment::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Segment","void Segment::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_targets()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers if ( this->get_constraint() != NULL ) { // construction edge prefix wrappers this->get_constraint()->check_meta_sets( finalmeta , reduced ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // Targets = To_or_via // Vertex_selector . void Targets::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Targets","void Targets::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_targets()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers Vertex_selector * r = NULL; this->get_targets()->check_meta_sets(finalmeta,r); if (r) this->rset_targets((Vertex_selector*)r->g_copy())->g_delete(); reduced = NULL; // assignments for carrying out } // Path_constraint_exp : Require_through | // Require_bypassing // *common* . void Path_constraint_exp::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Path_constraint_exp","void Path_constraint_exp::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Path_constraint_exp",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Require_through = Through_path_constraint // [ Bypassing_path_constraint ] . void Require_through::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Require_through","void Require_through::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_through()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers if ( this->get_bypassing() != NULL ) { // construction edge prefix wrappers this->get_bypassing()->check_meta_sets( finalmeta , reduced ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // Require_bypassing = Bypassing_path_constraint // [ Through_path_constraint ] . void Require_bypassing::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Require_bypassing","void Require_bypassing::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_bypassing()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers if ( this->get_through() != NULL ) { // construction edge prefix wrappers this->get_through()->check_meta_sets( finalmeta , reduced ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // Through_path_constraint = "*through*" // Meta_edge_Commalist . void Through_path_constraint::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Through_path_constraint","void Through_path_constraint::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_through()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Bypassing_path_constraint = "*bypassing*" // Meta_edge_Commalist . void Bypassing_path_constraint::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Bypassing_path_constraint","void Bypassing_path_constraint::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_bypassing()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Require_vertex_selector = Vertex_selector // [ Meta_edges ] . void Require_vertex_selector::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Require_vertex_selector","void Require_vertex_selector::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_vertices()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers if ( this->get_edges() != NULL ) { // construction edge prefix wrappers this->get_edges()->check_meta_sets( finalmeta , reduced ); // construction edge prefix wrappers } // suffix class wrappers Vertex_selector * r = NULL; this->get_vertices()->check_meta_sets(finalmeta,r); if (r) this->rset_vertices((Vertex_selector*)r->g_copy())->g_delete(); reduced = NULL; // assignments for carrying out } // Require_meta_edges = Meta_edges // [ Vertex_selector ] . void Require_meta_edges::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Require_meta_edges","void Require_meta_edges::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_edges()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers if ( this->get_vertices() != NULL ) { // construction edge prefix wrappers this->get_vertices()->check_meta_sets( finalmeta , reduced ); // construction edge prefix wrappers } // suffix class wrappers Vertex_selector * r = NULL; this->get_vertices()->check_meta_sets(finalmeta,r); if (r) this->rset_vertices((Vertex_selector*)r->g_copy())->g_delete(); reduced = NULL; // assignments for carrying out } // Meta_edges = Meta_edge_Commalist . void Meta_edges::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Meta_edges","void Meta_edges::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_edges()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Meta_edge : Meta_construction_edge | // Meta_alternation_edge | // Meta_repetition_edge | // Meta_inheritance_edge // *common* . void Meta_edge::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Meta_edge","void Meta_edge::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Meta_edge",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Meta_construction_edge = "->" // Vertex_selector // "," // Label_selector // "," // Vertex_selector . void Meta_construction_edge::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Meta_construction_edge","void Meta_construction_edge::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers Vertex_selector * reduced_from = NULL; this->get_from()->check_meta_sets(finalmeta,reduced_from); if (reduced_from) this->rset_from((Vertex_selector*)reduced_from->g_copy())->g_delete(); Vertex_selector * reduced_to = NULL; this->get_to()->check_meta_sets(finalmeta,reduced_to); if (reduced_to) this->rset_to((Vertex_selector*)reduced_to->g_copy())->g_delete(); // assignments for carrying out } // Meta_alternation_edge = "=>" // Vertex_selector // "," // Vertex_selector . void Meta_alternation_edge::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Meta_alternation_edge","void Meta_alternation_edge::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers Vertex_selector * reduced_from = NULL; this->get_from()->check_meta_sets(finalmeta,reduced_from); if (reduced_from) this->rset_from((Vertex_selector*)reduced_from->g_copy())->g_delete(); Vertex_selector * reduced_to = NULL; this->get_to()->check_meta_sets(finalmeta,reduced_to); if (reduced_to) this->rset_to((Vertex_selector*)reduced_to->g_copy())->g_delete(); // assignments for carrying out } // Meta_inheritance_edge = ":>" // Vertex_selector // "," // Vertex_selector . void Meta_inheritance_edge::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Meta_inheritance_edge","void Meta_inheritance_edge::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers Vertex_selector * reduced_from = NULL; this->get_from()->check_meta_sets(finalmeta,reduced_from); if (reduced_from) this->rset_from((Vertex_selector*)reduced_from->g_copy())->g_delete(); Vertex_selector * reduced_to = NULL; this->get_to()->check_meta_sets(finalmeta,reduced_to); if (reduced_to) this->rset_to((Vertex_selector*)reduced_to->g_copy())->g_delete(); // assignments for carrying out } // Meta_repetition_edge = "~>" // Vertex_selector // "," // Vertex_selector . void Meta_repetition_edge::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Meta_repetition_edge","void Meta_repetition_edge::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers Vertex_selector * reduced_from = NULL; this->get_from()->check_meta_sets(finalmeta,reduced_from); if (reduced_from) this->rset_from((Vertex_selector*)reduced_from->g_copy())->g_delete(); Vertex_selector * reduced_to = NULL; this->get_to()->check_meta_sets(finalmeta,reduced_to); if (reduced_to) this->rset_to((Vertex_selector*)reduced_to->g_copy())->g_delete(); // assignments for carrying out } // Vertex_selector : Any_term | // Fixed_term | // Vertex_set // *common* . void Vertex_selector::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Vertex_selector","void Vertex_selector::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Vertex_selector",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Vertex_set : Vertex_set_sim | // Vertex_set_comp | // Class_set_inst | // Late_selected_terms // *common* . void Vertex_set::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Vertex_set","void Vertex_set::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Vertex_set",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Vertex_set_comp = Vertex_set_op // Vertex_set // Vertex_set // ")" . void Vertex_set_comp::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Vertex_set_comp","void Vertex_set_comp::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers Vertex_selector * reduced_arg1 = NULL; this->get_arg1()->check_meta_sets(finalmeta,reduced_arg1); if (reduced_arg1) this->rset_arg1((Vertex_set*)reduced_arg1->g_copy())->g_delete(); Vertex_selector * reduced_arg2 = NULL; this->get_arg2()->check_meta_sets(finalmeta,reduced_arg2); if (reduced_arg2) this->rset_arg1((Vertex_set*)reduced_arg2->g_copy())->g_delete(); reduced = NULL; // outgoing calls // construction edge prefix wrappers this->get_arg1()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_arg2()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Class_set_inst = Class_set_name . void Class_set_inst::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Class_set_inst","void Class_set_inst::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_name()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Late_selected_terms = "(*class-set*" // Propagation_directive_exp // ")" . void Late_selected_terms::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Late_selected_terms","void Late_selected_terms::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_pde()->check_meta_sets( finalmeta , reduced ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Meta_edge_Commalist ~ Meta_edge { Meta_edge }. . void Meta_edge_Commalist::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Meta_edge_Commalist","void Meta_edge_Commalist::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Meta_edge_list_iterator next_Meta_edge(*this); Meta_edge* each_Meta_edge; while ( each_Meta_edge = next_Meta_edge() ) { // repetition edge prefix wrappers each_Meta_edge->check_meta_sets( finalmeta , reduced ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Segment_List ~ { Segment }. . void Segment_List::check_meta_sets( Meta_def* finalmeta,Vertex_selector* & reduced ) { DEM_TRACE("Segment_List","void Segment_List::check_meta_sets(Meta_def* finalmeta,Vertex_selector* & reduced)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Segment_list_iterator next_Segment(*this); Segment* each_Segment; while ( each_Segment = next_Segment() ) { // repetition edge prefix wrappers each_Segment->check_meta_sets( finalmeta , reduced ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Dir_meta_def = Dir_def_name // "=" // Propagation_directive_exp // ";" . void Dir_meta_def::check_meta_ddirs( Meta_def* finalmeta ) { DEM_TRACE("Dir_meta_def","void Dir_meta_def::check_meta_ddirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // suffix class wrappers Propagation_directive_exp * pdexp = NULL; this->get_pde()->bind_pde(finalmeta,pdexp); if (pdexp != NULL) this->rset_pde((Propagation_directive_exp *)pdexp->g_copy())->g_delete(); // assignments for carrying out } // Dir_meta_def_Amplist ~ Dir_meta_def { Dir_meta_def }. . void Dir_meta_def_Amplist::check_meta_ddirs( Meta_def* finalmeta ) { DEM_TRACE("Dir_meta_def_Amplist","void Dir_meta_def_Amplist::check_meta_ddirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Dir_meta_def_list_iterator next_Dir_meta_def(*this); Dir_meta_def* each_Dir_meta_def; while ( each_Dir_meta_def = next_Dir_meta_def() ) { // repetition edge prefix wrappers each_Dir_meta_def->check_meta_ddirs( finalmeta ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Class_set_def = Class_set_def_name // "=" // Vertex_selector // ";" . void Class_set_def::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Class_set_def","void Class_set_def::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_class_set()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Propagation_directive_exp : Pde | // Merge_pde | // Join_pde | // Dir_name_with_exp // *common* . void Propagation_directive_exp::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Propagation_directive_exp","void Propagation_directive_exp::check_meta_cdirs(Meta_def* finalmeta)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Propagation_directive_exp",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Pde = "*from*" // Vertex_selector // [ Path_constraint_exp ] // Segment_List . void Pde::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Pde","void Pde::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_source_port()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers if ( this->get_constraint() != NULL ) { // construction edge prefix wrappers this->get_constraint()->check_meta_cdirs( finalmeta ); // construction edge prefix wrappers } // construction edge prefix wrappers this->get_via()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Merge_pde = "*merge*" // "(" // Propagation_directive_exp // "," // Propagation_directive_exp // ")" . void Merge_pde::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Merge_pde","void Merge_pde::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_pde1()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_pde2()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Join_pde = "*join*" // "(" // Propagation_directive_exp // "," // Propagation_directive_exp // ")" . void Join_pde::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Join_pde","void Join_pde::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_pde1()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_pde2()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Segment = Targets // [ Path_constraint_exp ] . void Segment::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Segment","void Segment::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_targets()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers if ( this->get_constraint() != NULL ) { // construction edge prefix wrappers this->get_constraint()->check_meta_cdirs( finalmeta ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // Targets = To_or_via // Vertex_selector . void Targets::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Targets","void Targets::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_targets()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Path_constraint_exp : Require_through | // Require_bypassing // *common* . void Path_constraint_exp::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Path_constraint_exp","void Path_constraint_exp::check_meta_cdirs(Meta_def* finalmeta)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Path_constraint_exp",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Require_through = Through_path_constraint // [ Bypassing_path_constraint ] . void Require_through::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Require_through","void Require_through::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_through()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers if ( this->get_bypassing() != NULL ) { // construction edge prefix wrappers this->get_bypassing()->check_meta_cdirs( finalmeta ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // Require_bypassing = Bypassing_path_constraint // [ Through_path_constraint ] . void Require_bypassing::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Require_bypassing","void Require_bypassing::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_bypassing()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers if ( this->get_through() != NULL ) { // construction edge prefix wrappers this->get_through()->check_meta_cdirs( finalmeta ); // construction edge prefix wrappers } // suffix class wrappers // assignments for carrying out } // Through_path_constraint = "*through*" // Meta_edge_Commalist . void Through_path_constraint::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Through_path_constraint","void Through_path_constraint::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_through()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Bypassing_path_constraint = "*bypassing*" // Meta_edge_Commalist . void Bypassing_path_constraint::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Bypassing_path_constraint","void Bypassing_path_constraint::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_bypassing()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Meta_edge : Meta_construction_edge | // Meta_alternation_edge | // Meta_repetition_edge | // Meta_inheritance_edge // *common* . void Meta_edge::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Meta_edge","void Meta_edge::check_meta_cdirs(Meta_def* finalmeta)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Meta_edge",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Meta_construction_edge = "->" // Vertex_selector // "," // Label_selector // "," // Vertex_selector . void Meta_construction_edge::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Meta_construction_edge","void Meta_construction_edge::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Meta_alternation_edge = "=>" // Vertex_selector // "," // Vertex_selector . void Meta_alternation_edge::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Meta_alternation_edge","void Meta_alternation_edge::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Meta_inheritance_edge = ":>" // Vertex_selector // "," // Vertex_selector . void Meta_inheritance_edge::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Meta_inheritance_edge","void Meta_inheritance_edge::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Meta_repetition_edge = "~>" // Vertex_selector // "," // Vertex_selector . void Meta_repetition_edge::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Meta_repetition_edge","void Meta_repetition_edge::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_from()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_to()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Vertex_selector : Any_term | // Fixed_term | // Vertex_set // *common* . void Vertex_selector::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Vertex_selector","void Vertex_selector::check_meta_cdirs(Meta_def* finalmeta)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Vertex_selector",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Vertex_set : Vertex_set_sim | // Vertex_set_comp | // Class_set_inst | // Late_selected_terms // *common* . void Vertex_set::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Vertex_set","void Vertex_set::check_meta_cdirs(Meta_def* finalmeta)"); #ifndef NOTRACE DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Vertex_set",form(" at %s , *** PREMATURELY TERMINATED *** ", this->get_type())); #endif } // Vertex_set_comp = Vertex_set_op // Vertex_set // Vertex_set // ")" . void Vertex_set_comp::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Vertex_set_comp","void Vertex_set_comp::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_arg1()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // construction edge prefix wrappers this->get_arg2()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers // assignments for carrying out } // Late_selected_terms = "(*class-set*" // Propagation_directive_exp // ")" . void Late_selected_terms::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Late_selected_terms","void Late_selected_terms::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls // construction edge prefix wrappers this->get_pde()->check_meta_cdirs( finalmeta ); // construction edge suffix wrappers // suffix class wrappers Propagation_directive_exp * pdexp = NULL; this->get_pde()->bind_pde(finalmeta,pdexp); if (pdexp != NULL) this->rset_pde((Propagation_directive_exp *)pdexp->g_copy())->g_delete(); // assignments for carrying out } // Meta_edge_Commalist ~ Meta_edge { Meta_edge }. . void Meta_edge_Commalist::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Meta_edge_Commalist","void Meta_edge_Commalist::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Meta_edge_list_iterator next_Meta_edge(*this); Meta_edge* each_Meta_edge; while ( each_Meta_edge = next_Meta_edge() ) { // repetition edge prefix wrappers each_Meta_edge->check_meta_cdirs( finalmeta ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Class_set_def_Amplist ~ Class_set_def { Class_set_def }. . void Class_set_def_Amplist::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Class_set_def_Amplist","void Class_set_def_Amplist::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Class_set_def_list_iterator next_Class_set_def(*this); Class_set_def* each_Class_set_def; while ( each_Class_set_def = next_Class_set_def() ) { // repetition edge prefix wrappers each_Class_set_def->check_meta_cdirs( finalmeta ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out } // Segment_List ~ { Segment }. . void Segment_List::check_meta_cdirs( Meta_def* finalmeta ) { DEM_TRACE("Segment_List","void Segment_List::check_meta_cdirs(Meta_def* finalmeta)"); // variables for carrying in and out // assignments for carrying in // prefix class wrappers // outgoing calls Segment_list_iterator next_Segment(*this); Segment* each_Segment; while ( each_Segment = next_Segment() ) { // repetition edge prefix wrappers each_Segment->check_meta_cdirs( finalmeta ); // repetition edge suffix wrappers } // suffix class wrappers // assignments for carrying out }