@cvvergara i have the same question for pgr_planarFaces, so adding what i found
in case it helps answer both.
planarFaces needs 3 values (face_id, edge_id, side) so II_t_rt doesn’t fit either. i mapped it to IID_t_rt as face_id->from_vid, edge_id->to_vid, side->cost, and made planar_process.h/planar_driver.cpp for it.
i looked at joining allpairs_process since it already takes IID_t_rt, but do_allpairs dispatches with if (which == JOHNSON) {…} else {floydWarshall}, not a switch. adding a third case there without restructuring would silently run floydWarshall on planarFaces calls. its process() helper also goes through matrix_to_tuple, which is built for distance-matrix output and doesn’t fit
face traversal results.
what made me keep a separate pair is that astar_process.h and\ shortestPath_process.h both use Path_rt as two separate files, so the organizing unit looks like the family rather than the return type.
mayur’s case looks similar, maxWeightedMatching sits in max_flow but maxFlow_process
uses Flow_t so it can’t join that one either.
is one process/driver per family the intended rule, or should functions share whichever existing pair already matches their return type?
one more thing that might matter for the answer the planar family now has 5 functions across 3 of us, with 3 different return shapes:
isPlanar ------------------------> bool (scalar)
boyerMyrvold ------------------> IID_t_rt
planarFaces -------------------> IID_t_rt (mine)
makeMaximalPlanar----------> II_t_rt (mohit)
makeBiconnectedPlanar ----> II_t_rt (mohit)
so if the rule is one pair per family, the planar family can’t have a singleone unless something converts. right now mohit’s two are going through coloring_driver and mine through planar_driver, so the same directory is split across two drivers. wanted to flag that since it affects how the three of us coordinate, not just my function.