// You must implement the following filter functions in the same partial class in ./ExternalFiltersAndSequencesActionsExternalFunctionsImpl.cs //public static void Filter_f1(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterBase.IMatch_filterBase> matches) //public static void Filter_nomnomnom(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterBase.IMatch_filterBase> matches) //public static void Filter_f2(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterBass.IMatch_filterBass> matches) //public static void Filter_f3(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterBass.IMatch_filterBass> matches) //public static void Filter_f4(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterHass.IMatch_filterHass> matches) // ------------------------------------------------------ // The following filter functions are automatically generated, you don't need to supply any further implementation public static void Filter_filterBase_auto(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterBase.IMatch_filterBase> matches) { if(matches.Count<2) return; List<Rule_filterBase.IMatch_filterBase> matchesArray = matches.ToList(); for(int i = 0; i < matchesArray.Count; ++i) { if(matchesArray[i] == null) continue; for(int j = i + 1; j < matchesArray.Count; ++j) { if(matchesArray[j] == null) continue; if(GRGEN_LIBGR.SymmetryChecker.AreSymmetric(matchesArray[i], matchesArray[j], procEnv.graph)) matchesArray[j] = null; } } matches.FromList(); }
public static void Filter_f4(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterHass.IMatch_filterHass> matches, System.Int32 i, System.String s) { // inspect matches carefully and manipulate as needed, depending on input parameters // transforming to a List<IMatch> for easier manipulation and back to an IMatchesExact if needed List<Rule_filterHass.IMatch_filterHass> matchesArray = matches.ToList(); for(int j = 0; j < matchesArray.Count; ++j) { Rule_filterHass.IMatch_filterHass match = matchesArray[j]; if(match.node_n.i < i) { matchesArray[j] = null; // setting to null is an efficient way to delete, better than List.RemoveAt } if(match.node_n.s != s) { match.node_n.s = s; } } matches.FromList(); }
public static void Filter_f3(GRGEN_LGSP.LGSPGraphProcessingEnvironment procEnv, GRGEN_LIBGR.IMatchesExact<Rule_filterBass.IMatch_filterBass> matches) { // inspect matches carefully and manipulate as needed, // transforming to a List<IMatch> for easier manipulation and back to an IMatchesExact if needed List<Rule_filterBass.IMatch_filterBass> matchesArray = matches.ToList(); matchesArray.Reverse(); Rule_filterBass.IMatch_filterBass match = matchesArray[matchesArray.Count-1]; matchesArray[matchesArray.Count - 1] = null; // setting to null is an efficient way to delete, better than List.RemoveAt ++match.node_n.i; matchesArray.Add(match); matchesArray.Reverse(); matches.FromList(); }