Mercurial > foo_out_sdl
view foosdk/sdk/pfc/primitives_part2.h @ 1:20d02a178406 default tip
*: check in everything else
yay
| author | Paper <paper@tflc.us> |
|---|---|
| date | Mon, 05 Jan 2026 02:15:46 -0500 |
| parents | |
| children |
line wrap: on
line source
#pragma once namespace pfc { template<typename t_list1, typename t_list2> static bool guess_reorder_pattern(pfc::array_t<t_size> & out, const t_list1 & from, const t_list2 & to) { typedef typename t_list1::t_item t_item; const t_size count = from.get_size(); if (count != to.get_size()) return false; out.set_size(count); for(t_size walk = 0; walk < count; ++walk) out[walk] = walk; //required output: to[n] = from[out[n]]; typedef pfc::chain_list_v2_t<t_size> t_queue; pfc::map_t<t_item, t_queue > content; for(t_size walk = 0; walk < count; ++walk) { content.find_or_add(from[walk]).add_item(walk); } for(t_size walk = 0; walk < count; ++walk) { t_queue * q = content.query_ptr(to[walk]); if (q == NULL) return false; if (q->get_count() == 0) return false; out[walk] = *q->first(); q->remove(q->first()); } return true; } }
