//through it *operation* int isThruAltEdgeInTheList(Vertex* s, Term* t) *wrapper* Path_constraint_exp *prefix* (@ return_val = 0; @) *wrapper* Require_through *prefix* (@ return_val = through->isThruAltEdgeInTheList(s, t); @) *wrapper* Require_bypassing *prefix* (@ if (through) return_val = through->isThruAltEdgeInTheList(s, t); else return_val = 0; @) *wrapper* Through_path_constraint *prefix* (@ return_val = through->isAltEdgeInTheList(s, t); @) //bypassing it *operation* int isXAltEdgeInTheList(Vertex* s, Term* t) *wrapper* Path_constraint_exp *prefix* (@ return_val = 0; @) *wrapper* Require_through *prefix* (@ if (bypassing) return_val = bypassing->isXAltEdgeInTheList(s, t); else return_val = 0; @) *wrapper* Require_bypassing *prefix* (@ return_val = bypassing->isXAltEdgeInTheList(s, t); @) *wrapper* Bypassing_path_constraint *prefix* (@ return_val = bypassing->isAltEdgeInTheList(s, t); @) *operation* int isAltEdgeInTheList(Vertex* s, Term* t) *wrapper* Meta_edge_Commalist *prefix* (@ Meta_edge_list_iterator next(*this); Meta_edge* each; while (each = next()) if (each->isAltEdgeInTheList(s,t)) break; if (each) return_val = 1; else return_val = 0; @) *wrapper* Meta_edge *prefix* (@ return_val = 0; @) *wrapper* Meta_alternation_edge *prefix* (@ int matched = 0; this->get_from()->match_vertex(s,matched); if (matched == 0) { return_val = 0; } else { matched = 0; this->get_to()->match_vertex(t,matched); return_val = matched; } @) //bypassing it *operation* int isXConsEdgeInTheList(Vertex* s, DemIdent* l, Term* t) *wrapper* Path_constraint_exp *prefix* (@ return_val = 0; @) *wrapper* Require_through *prefix* (@ if (bypassing) return_val = bypassing->isXConsEdgeInTheList(s, l, t); else return_val = 0; @) *wrapper* Require_bypassing *prefix* (@ return_val = bypassing->isXConsEdgeInTheList(s, l, t); @) *wrapper* Bypassing_path_constraint *prefix* (@ return_val = bypassing->isConsEdgeInTheList(s, l, t); @) //through it *operation* int isThruConsEdgeInTheList(Vertex* s, DemIdent* l, Term* t) *wrapper* Path_constraint_exp *prefix* (@ return_val = 0; @) *wrapper* Require_through *prefix* (@ return_val = through->isThruConsEdgeInTheList(s, l, t); @) *wrapper* Require_bypassing *prefix* (@ if (through) return_val = through->isThruConsEdgeInTheList(s, l, t); else return_val = 0; @) *wrapper* Through_path_constraint *prefix* (@ return_val = through->isConsEdgeInTheList(s, l, t); @) *operation* int isConsEdgeInTheList(Vertex* s, DemIdent* l, Term* t) *wrapper* Meta_edge_Commalist *prefix* (@ Meta_edge_list_iterator next(*this); Meta_edge* each; while (each = next()) if (each->isConsEdgeInTheList(s,l,t)) break; if (each) return_val = 1; else return_val = 0; @) *wrapper* Meta_edge *prefix* (@ return_val = 0; @) *wrapper* Meta_construction_edge *prefix* (@ int matched = 0; this->get_from()->match_vertex(s,matched); if (matched == 0) { return_val = 0; } else { matched = 0; this->get_to()->match_vertex(t,matched); if (matched == 0) return_val = 0; else { matched = 0; this->get_edge_label()->match_label(l,matched); return_val = matched; } } @) //bypassing it *operation* int isXInhEdgeInTheList(Vertex* s, Vertex* t) *wrapper* Path_constraint_exp *prefix* (@ return_val = 0; @) *wrapper* Require_through *prefix* (@ if (bypassing) return_val = bypassing->isXInhEdgeInTheList(s, t); else return_val = 0; @) *wrapper* Require_bypassing *prefix* (@ return_val = bypassing->isXInhEdgeInTheList(s, t); @) *wrapper* Bypassing_path_constraint *prefix* (@ return_val = bypassing->isInhEdgeInTheList(s, t); @) *operation* int isInhEdgeInTheList(Vertex * s, Vertex *t) *wrapper* Meta_edge_Commalist *prefix* (@ Meta_edge_list_iterator next(*this); Meta_edge* each; while (each = next()) if (each->isInhEdgeInTheList(s,t)) break; if (each) return_val = 1; else return_val = 0; @) *wrapper* Meta_edge *prefix* (@ return_val = 0; @) *wrapper* Meta_inheritance_edge *prefix* (@ int matched = 0; this->get_from()->match_vertex(s,matched); if (matched == 0) return_val = 0; else { matched = 0; this->get_to()->match_vertex(t,matched); return_val = matched; } @) *operation* int isRepEdgeInTheList(Vertex * s, Term *t) *wrapper* Meta_edge_Commalist *prefix* (@ Meta_edge_list_iterator next(*this); Meta_edge* each; while (each = next()) if (each->isRepEdgeInTheList(s,t)) break; if (each) return_val = 1; else return_val = 0; @) *wrapper* Meta_edge *prefix* (@ return_val = 0; @) *wrapper* Meta_repetition_edge *prefix* (@ int matched = 0; this->get_from()->match_vertex(s,matched); if (matched == 0) return_val = 0; else { matched = 0; this->get_to()->match_vertex(t,matched); return_val = matched; } @) //bypassing it *operation* int isXRepEdgeInTheList(Vertex * s, Term *t) *wrapper* Path_constraint_exp *prefix* (@ return_val = 0; @) *wrapper* Require_through *prefix* (@ if (bypassing) return_val = bypassing->isXRepEdgeInTheList(s, t); else return_val = 0; @) *wrapper* Require_bypassing *prefix* (@ return_val = bypassing->isXRepEdgeInTheList(s, t); @) *wrapper* Bypassing_path_constraint *prefix* (@ return_val = bypassing->isRepEdgeInTheList(s, t); @) //through it *operation* int isThruRepEdgeInTheList(Vertex * s, Term *t) *wrapper* Path_constraint_exp *prefix* (@ return_val = 0; @) *wrapper* Require_through *prefix* (@ return_val = through->isThruRepEdgeInTheList(s, t); @) *wrapper* Require_bypassing *prefix* (@ if (through) return_val = through->isThruRepEdgeInTheList(s, t); else return_val = 0; @) *wrapper* Through_path_constraint *prefix* (@ return_val = through->isRepEdgeInTheList(s, t); @)