[brlcad-commits] SF.net SVN: brlcad:[59069] brlcad/trunk/src
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <j-s...@us...> - 2013-12-19 21:36:29
|
Revision: 59069 http://sourceforge.net/p/brlcad/code/59069 Author: j-schulte Date: 2013-12-19 21:36:25 +0000 (Thu, 19 Dec 2013) Log Message: ----------- replacing qsort calls to bu_sort calls in analyze.c, bot.c, nmg_fuce.c and obj-g.c (GCI task : https://google-melange.appspot.com/gci/task/view/google/gci2013/5249840397156352) Modified Paths: -------------- brlcad/trunk/src/conv/obj-g.c brlcad/trunk/src/libged/analyze.c brlcad/trunk/src/librt/primitives/bot/bot.c brlcad/trunk/src/librt/primitives/nmg/nmg_fuse.c Modified: brlcad/trunk/src/conv/obj-g.c =================================================================== --- brlcad/trunk/src/conv/obj-g.c 2013-12-19 21:30:13 UTC (rev 59068) +++ brlcad/trunk/src/conv/obj-g.c 2013-12-19 21:36:25 UTC (rev 59069) @@ -125,7 +125,6 @@ /* global definition */ -size_t *tmp_ptr = NULL; static int NMG_debug; /* saved arg of -X, for longjmp handling */ static int debug = 0; static int verbose = 0; @@ -445,12 +444,13 @@ * into a multi-dimensional array. */ static int -comp(const void *p1, const void *p2) +comp(const void *p1, const void *p2, void *arg) { size_t i = * (size_t *) p1; size_t j = * (size_t *) p2; + size_t *array = (size_t *) arg; - return (int)(tmp_ptr[i] - tmp_ptr[j]); + return (int)(array[i] - array[j]); } @@ -1558,23 +1558,17 @@ { size_t num_indexes = ti->num_tri * 3; - /* tmp_ptr is global which is required for qsort */ - tmp_ptr = (size_t *)ti->index_arr_tri; - /* process vertex indexes */ - qsort(ti->vsi, num_indexes, sizeof ti->vsi[0], - (int (*)(const void *a, const void *b))comp); + bu_sort(ti->vsi, num_indexes, sizeof ti->vsi[0], comp, (size_t *)ti->index_arr_tri); /* process vertex normal indexes */ if (ti->tri_type == FACE_NV || ti->tri_type == FACE_TNV) { - qsort(ti->vnsi, num_indexes, sizeof ti->vnsi[0], - (int (*)(const void *a, const void *b))comp); + bu_sort(ti->vnsi, num_indexes, sizeof ti->vnsi[0], comp, (size_t *)ti->index_arr_tri); } /* process texture vertex indexes */ if (ti->tri_type == FACE_TV || ti->tri_type == FACE_TNV) { - qsort(ti->tvsi, num_indexes, sizeof ti->tvsi[0], - (int (*)(const void *a, const void *b))comp); + bu_sort(ti->tvsi, num_indexes, sizeof ti->tvsi[0], comp, (size_t *)ti->index_arr_tri); } return; Modified: brlcad/trunk/src/libged/analyze.c =================================================================== --- brlcad/trunk/src/libged/analyze.c 2013-12-19 21:30:13 UTC (rev 59068) +++ brlcad/trunk/src/libged/analyze.c 2013-12-19 21:36:25 UTC (rev 59069) @@ -710,17 +710,14 @@ } -/* plane used by ccw to compare 2 points */ -static plane_t *cmp_plane = NULL; - /* qsort helper function, used to sort points into * counter-clockwise order */ HIDDEN int -ccw(const void *x, const void *y) +ccw(const void *x, const void *y, void *cmp) { vect_t tmp; VCROSS(tmp, ((fastf_t *)x), ((fastf_t *)y)); - return VDOT(*cmp_plane, tmp); + return VDOT(*((point_t *)cmp), tmp); } @@ -749,9 +746,7 @@ findang(angles, face->plane_eqn); /* sort points */ - cmp_plane = &face->plane_eqn; - qsort(face->pts, face->npts, sizeof(point_t), ccw); - cmp_plane = NULL; + bu_sort(face->pts, face->npts, sizeof(point_t), ccw, &face->plane_eqn); switch (face->npts) { case 3: Modified: brlcad/trunk/src/librt/primitives/bot/bot.c =================================================================== --- brlcad/trunk/src/librt/primitives/bot/bot.c 2013-12-19 21:30:13 UTC (rev 59068) +++ brlcad/trunk/src/librt/primitives/bot/bot.c 2013-12-19 21:36:25 UTC (rev 59069) @@ -5276,17 +5276,14 @@ } -/* plane used by ccw to compare 2 points */ -static plane_t *cmp_plane = NULL; - /* qsort helper function, used to sort points into * counter-clockwise order */ HIDDEN int -ccw_algo(const void *x, const void *y) +ccw_algo(const void *x, const void *y, void *cmp) { vect_t tmp; VCROSS(tmp, ((fastf_t *)x), ((fastf_t *)y)); - return VDOT(*cmp_plane, tmp); + return VDOT(*((point_t *)cmp), tmp); } @@ -5341,9 +5338,7 @@ /* SURFACE AREA */ /* sort points */ - cmp_plane = &face.plane_eqn; - qsort(face.pts, face.npts, sizeof(point_t), ccw_algo); - cmp_plane = NULL; + bu_sort(face.pts, face.npts, sizeof(point_t), ccw_algo, &face.plane_eqn); /* Triangular Face - for triangular face T:V0, V1, V2, * area = 0.5 * [(V2 - V0) x (V1 - V0)] */ VSUB2(v1, face.pts[1], face.pts[0]); Modified: brlcad/trunk/src/librt/primitives/nmg/nmg_fuse.c =================================================================== --- brlcad/trunk/src/librt/primitives/nmg/nmg_fuse.c 2013-12-19 21:30:13 UTC (rev 59068) +++ brlcad/trunk/src/librt/primitives/nmg/nmg_fuse.c 2013-12-19 21:36:25 UTC (rev 59069) @@ -42,13 +42,7 @@ #include "nurb.h" -/* The global variable edge_rr_xyp is used by function nmg_edge_g_fuse - * and the compare function for qsort "e_rr_xyp_comp". This is an array - * containing the rise over run ratios in the xy plane for each edge. - */ -fastf_t *edge_rr_xyp; - extern int debug_file_count; struct pt_list @@ -1204,11 +1198,11 @@ /* compare function for qsort within function nmg_edge_g_fuse */ static int -e_rr_xyp_comp(const void *p1, const void *p2) +e_rr_xyp_comp(const void *p1, const void *p2, void *arg) { fastf_t i, j; - - i = edge_rr_xyp[(*((size_t *)p1))]; + fastf_t *edge_rr_xyp = (fastf_t *)arg; + i = edge_rr_xyp[((*((size_t *)p1)))]; j = edge_rr_xyp[(*((size_t *)p2))]; if (EQUAL(i, j)) @@ -1237,7 +1231,7 @@ fastf_t tmp; /* rise over run arrays for the xz and yz planes */ - fastf_t *edge_rr, *edge_rr_xzp, *edge_rr_yzp; + fastf_t *edge_rr, *edge_rr_xzp, *edge_rr_yzp, *edge_rr_xyp; /* index into all arrays sorted by the contents of array edge_rr_xyp */ size_t *sort_idx_xyp; @@ -1325,7 +1319,7 @@ } /* create sort index based on array edge_rr_xyp */ - qsort(sort_idx_xyp, etab_cnt, sizeof(size_t), (int (*)(const void *a, const void *b))e_rr_xyp_comp); + bu_sort(sort_idx_xyp, etab_cnt, sizeof(size_t), e_rr_xyp_comp, edge_rr_xyp); /* main loop */ total = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |