Revision: 43786
          http://brlcad.svn.sourceforge.net/brlcad/?rev=43786&view=rev
Author:   starseeker
Date:     2011-03-08 19:50:38 +0000 (Tue, 08 Mar 2011)

Log Message:
-----------
MFC r43785

Modified Paths:
--------------
    brlcad/branches/cmake/NEWS
    brlcad/branches/cmake/TODO
    brlcad/branches/cmake/misc/Makefile.am
    brlcad/branches/cmake/misc/debian/rules
    brlcad/branches/cmake/sh/make_rpm.sh
    brlcad/branches/cmake/src/fbed/Makefile.am
    brlcad/branches/cmake/src/librt/Makefile.am
    brlcad/branches/cmake/src/librt/primitives/bot/bot.c
    brlcad/branches/cmake/src/librt/primitives/half/half.c
    brlcad/branches/cmake/src/librt/primitives/nmg/nmg.c

Modified: brlcad/branches/cmake/NEWS
===================================================================
--- brlcad/branches/cmake/NEWS  2011-03-08 18:21:11 UTC (rev 43785)
+++ brlcad/branches/cmake/NEWS  2011-03-08 19:50:38 UTC (rev 43786)
@@ -11,17 +11,21 @@
 
 
 ----------------------------------------------------------------------
---- 2011-03-XX  Release 7.18.4                                     ---
+--- 2011-03-08  Release 7.18.4                                     ---
 ----------------------------------------------------------------------
 
-After considerable development, this release marks the integration of
-our high-performance Triangle Intersection Engine (TIE) with BRL-CAD's
-LIBRT raytrace library.  TIE uses specialized acceleration techniques
-for faster raytracing of triangle mesh models.  TIE was experimentally
-developed as part of our Advanced Distributed Ray Tracer (ADRT) tool
-suite, but is now also configurably Integrated with LIBRT (BoT) mesh
-raytracing.  Particularly for BoT models with high polygon counts, the
-optimization is providing performance improvements from 2x-10x faster.
+After considerable development, this release includes the preliminary
+integration of our high-performance Triangle Intersection Engine (TIE)
+with BRL-CAD's LIBRT raytrace library.  TIE uses specialized
+acceleration techniques for faster raytracing of triangle mesh models.
+TIE was experimentally developed over several years as part of
+BRL-CAD's Advanced Distributed Ray Tracer (ADRT) tool suite.  As this
+is the initial integration, TIE is available but presently disabled by
+default.  The engine optimiation is configurably integrated with LIBRT
+mesh (BoT) raytracing and optionally enabled via settings available in
+RT and MGED.  Inital testing of "real-world" models shows average
+improvements around 20-60% while individual meshes with high (1M+)
+face counts are rendering more than 2000% faster than before.
 
 Also included in this release is the development of a new "shp-g"
 geometry importer for Shapefile data.  Shapefiles are a common file
@@ -29,6 +33,7 @@
 information systems (GIS) software.  Shapefiles may be imported as 2D
 sketch geometry that can be extruded to a 3D representation.
 
+* support matrices over halfspaces within combinations - Sean Morrison
 * fixed archer and rtwizard startup failure bug on Mac - Sean Morrison
 * fixed bug starting up the Combination Editor in mged - Sean Morrison
 * mged 'mater' command interactive prompting restored - Sean Morrison

Modified: brlcad/branches/cmake/TODO
===================================================================
--- brlcad/branches/cmake/TODO  2011-03-08 18:21:11 UTC (rev 43785)
+++ brlcad/branches/cmake/TODO  2011-03-08 19:50:38 UTC (rev 43786)
@@ -17,17 +17,14 @@
 THESE TASKS SHOULD HAPPEN BEFORE THE NEXT RELEASE
 -------------------------------------------------
 
-* unbust nmg (host/net conversion bug)
+* NA-DA!
 
-* test mintie optimization, test performance for release notes
 
-* gqa regression is bombing out with malloc(0) in
-  allocate_per_region_data()
-
-
 THESE TASKS SHOULD HAPPEN WITHIN TWO RELEASE ITERATIONS
 -------------------------------------------------------
 
+* fix bottie crash on 32b builds
+
 * resolve bot bin sort optimization crash, disabled during release
 
 * implement new makesegs for tie

Modified: brlcad/branches/cmake/misc/Makefile.am
===================================================================
--- brlcad/branches/cmake/misc/Makefile.am      2011-03-08 18:21:11 UTC (rev 
43785)
+++ brlcad/branches/cmake/misc/Makefile.am      2011-03-08 19:50:38 UTC (rev 
43786)
@@ -30,7 +30,8 @@
        brlcad-config.in \
        brlcad.spec \
        brlcad.spec.in \
-       debian/application-x-brlcad.png \
+       debian/application-x-brlcad-v4.png \
+       debian/application-x-brlcad-v5.png \
        debian/application-x-brlcad.xml \
        debian/brlcad-archer.desktop \
        debian/brlcad-archer.png \

Modified: brlcad/branches/cmake/misc/debian/rules
===================================================================
--- brlcad/branches/cmake/misc/debian/rules     2011-03-08 18:21:11 UTC (rev 
43785)
+++ brlcad/branches/cmake/misc/debian/rules     2011-03-08 19:50:38 UTC (rev 
43786)
@@ -1,6 +1,6 @@
 #!/usr/bin/make -f
 
-# Author: Jordi Sayol <g.sa...@yahoo.es> 
+# Author: Jordi Sayol <g.sa...@yahoo.es>
 
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
@@ -18,7 +18,7 @@
     PARALLEL_OPTIONS = -j$(PARALLEL_JOBS)
 else
        ifneq (,$(shell getconf _NPROCESSORS_ONLN))
-               PARALLEL_OPTIONS = -j$(shell getconf _NPROCESSORS_ONLN)
+               PARALLEL_OPTIONS = -j$(shell getconf _NPROCESSORS_ONLN | sed 
"s/.*/&*2-1/" | bc)
        endif
 endif
 # DEB_BUILD_OPTIONS
@@ -44,7 +44,7 @@
        dh_testdir
        dh_testroot
        dh_prep
-       dh_installdirs 
+       dh_installdirs
 
        $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
 
@@ -66,4 +66,4 @@
        dh_builddeb -a
 
 binary: binary-arch
-.PHONY: build clean binary-arch binary install 
+.PHONY: build clean binary-arch binary install

Modified: brlcad/branches/cmake/sh/make_rpm.sh
===================================================================
--- brlcad/branches/cmake/sh/make_rpm.sh        2011-03-08 18:21:11 UTC (rev 
43785)
+++ brlcad/branches/cmake/sh/make_rpm.sh        2011-03-08 19:50:38 UTC (rev 
43786)
@@ -153,7 +153,7 @@
 
 # compile and install in tmp dir
 ./configure --enable-optimized --enable-almost-everything --with-ogl 
--disable-debug
-make -j`getconf _NPROCESSORS_ONLN`
+make -j`getconf _NPROCESSORS_ONLN | sed "s/.*/&*2-1/" | bc`
 fakeroot make install DESTDIR=`pwd`"/$TMPDIR/tmp"
 
 # copy menu files

Modified: brlcad/branches/cmake/src/fbed/Makefile.am
===================================================================
--- brlcad/branches/cmake/src/fbed/Makefile.am  2011-03-08 18:21:11 UTC (rev 
43785)
+++ brlcad/branches/cmake/src/fbed/Makefile.am  2011-03-08 19:50:38 UTC (rev 
43786)
@@ -24,7 +24,7 @@
        std.h \
        try.h
 
-fbed_CPPFLAGS = \
+AM_CPPFLAGS = \
        ${TERMLIB_CPPFLAGS} \
        ${STRICT_FLAGS} \
        ${TCL_CPPFLAGS}

Modified: brlcad/branches/cmake/src/librt/Makefile.am
===================================================================
--- brlcad/branches/cmake/src/librt/Makefile.am 2011-03-08 18:21:11 UTC (rev 
43785)
+++ brlcad/branches/cmake/src/librt/Makefile.am 2011-03-08 19:50:38 UTC (rev 
43786)
@@ -21,7 +21,7 @@
        ${TCL_CPPFLAGS} \
        ${BREP_CPPFLAGS}
 
-AM_CFLAGS = ${STRICT_FLAGS}
+# AM_CFLAGS = ${STRICT_FLAGS}
 
 noinst_PROGRAMS = \
        ${BREP_TEST} \

Modified: brlcad/branches/cmake/src/librt/primitives/bot/bot.c
===================================================================
--- brlcad/branches/cmake/src/librt/primitives/bot/bot.c        2011-03-08 
18:21:11 UTC (rev 43785)
+++ brlcad/branches/cmake/src/librt/primitives/bot/bot.c        2011-03-08 
19:50:38 UTC (rev 43786)
@@ -205,7 +205,7 @@
     bot_ip = (struct rt_bot_internal *)ip->idb_ptr;
     RT_BOT_CK_MAGIC(bot_ip);
 
-    if ( rt_bot_mintie > 0 && bot_ip->num_faces >= rt_bot_mintie && 
(bot_ip->face_normals != NULL || bot_ip->orientation != RT_BOT_UNORIENTED) )
+    if ( rt_bot_mintie > 0 && bot_ip->num_faces >= rt_bot_mintie /* FIXME: 
(necessary?) && (bot_ip->face_normals != NULL || bot_ip->orientation != 
RT_BOT_UNORIENTED) */ )
        return bottie_prep_double(stp, bot_ip, rtip);
     else if (bot_ip->bot_flags & RT_BOT_USE_FLOATS)
        return rt_bot_prep_float(stp, bot_ip, rtip);

Modified: brlcad/branches/cmake/src/librt/primitives/half/half.c
===================================================================
--- brlcad/branches/cmake/src/librt/primitives/half/half.c      2011-03-08 
18:21:11 UTC (rev 43785)
+++ brlcad/branches/cmake/src/librt/primitives/half/half.c      2011-03-08 
19:50:38 UTC (rev 43786)
@@ -501,7 +501,22 @@
     hip = (struct rt_half_internal *)ip->idb_ptr;
     RT_HALF_CK_MAGIC(hip);
     RT_CK_DB_INTERNAL(op);
-    hop = (struct rt_half_internal *)op->idb_ptr;
+
+    if (op != ip) {
+       RT_INIT_DB_INTERNAL(op);
+       hop = (struct rt_half_internal *)bu_malloc(sizeof(struct 
rt_half_internal), "hop");
+       hop->magic = RT_HALF_INTERNAL_MAGIC;
+       op->idb_ptr = (genptr_t)hop;
+       op->idb_meth = &rt_functab[ID_HALF];
+       op->idb_major_type = DB5_MAJORTYPE_BRLCAD;
+       op->idb_type = ID_HALF;
+       if (ip->idb_avs.magic == BU_AVS_MAGIC) {
+           bu_avs_init(&op->idb_avs, ip->idb_avs.count, "avs");
+           bu_avs_merge(&op->idb_avs, &ip->idb_avs);
+       }
+    } else {
+       hop = (struct rt_half_internal *)ip->idb_ptr;
+    }
     RT_HALF_CK_MAGIC(hop);
 
     /* Pick a point on the original halfspace */

Modified: brlcad/branches/cmake/src/librt/primitives/nmg/nmg.c
===================================================================
--- brlcad/branches/cmake/src/librt/primitives/nmg/nmg.c        2011-03-08 
18:21:11 UTC (rev 43785)
+++ brlcad/branches/cmake/src/librt/primitives/nmg/nmg.c        2011-03-08 
19:50:38 UTC (rev 43786)
@@ -395,12 +395,12 @@
 }
 
 
-#define RT_CK_DISKMAGIC(_cp, _magic)                                   \
-    if (ntohl(*(uint32_t *)_cp) != _magic) {                           \
-       bu_log("RT_CK_DISKMAGIC: magic mis-match, got x%x, s/b x%x, file %s, 
line %d\n", \
-              ntohl(*(uint32_t *)_cp), _magic, __FILE__, __LINE__);    \
-       bu_bomb("bad magic\n");                                         \
-    }
+#define RT_CK_DISKMAGIC(_cp, _magic)   \
+       if (bu_glong(_cp) != _magic) { \
+               bu_log("RT_CK_DISKMAGIC: magic mis-match, got x%x, s/b x%x, 
file %s, line %d\n", \
+                       bu_glong(_cp), _magic, __FILE__, __LINE__); \
+               bu_bomb("bad magic\n"); \
+       }
 
 
 /* ----------------------------------------------------------------------
@@ -906,9 +906,9 @@
 
 
     cp = base + ecnt[subscript].byte_offset;
-    if (ntohl(*(uint32_t *)cp) != DISK_DOUBLE_ARRAY_MAGIC) {
+    if (bu_glong(cp) != DISK_DOUBLE_ARRAY_MAGIC) {
        bu_log("magic mis-match, got x%x, s/b x%x, file %s, line %d\n",
-              ntohl(*(uint32_t *)cp), DISK_DOUBLE_ARRAY_MAGIC, __FILE__, 
__LINE__);
+              bu_glong(cp), DISK_DOUBLE_ARRAY_MAGIC, __FILE__, __LINE__);
        bu_log("subscript=%d, byte_offset=%d\n",
               subscript, ecnt[subscript].byte_offset);
        bu_bomb("rt_nmg_import4_fastf() bad magic\n");
@@ -917,7 +917,7 @@
     if (pt_type)
        len *= RT_NURB_EXTRACT_COORDS(pt_type);
 
-    count = ntohl(*(uint32_t *)&cp[4]);
+    count = bu_glong(cp + 4);
     if (count != len) {
        bu_log("rt_nmg_import4_fastf() subscript=%d, expected len=%d, got=%d\n",
               subscript, len, count);
@@ -967,11 +967,11 @@
  * 0 substitute a null pointer when imported.
  * -1 substitute pointer to within-struct list head when imported.
  */
-long
+int
 rt_nmg_reindex(genptr_t p, struct nmg_exp_counts *ecnt)
 {
-    long idx;
-    long ret=0;        /* zero is NOT the default value, this is just to 
satisfy cray compilers */
+    int idx;
+    int ret=0; /* zero is NOT the default value, this is just to satisfy cray 
compilers */
 
     /* If null pointer, return new subscript of zero */
     if (p == 0) {
@@ -1346,29 +1346,29 @@
  *
  * NOTE that the "< 0" test here is a comparison with DISK_INDEX_LISTHEAD.
  */
-#define INDEX(o, i, ty, elem)  (i)->elem = (struct ty *)ptrs[ntohl(*(uint32_t 
*)(o)->elem)]
+#define INDEX(o, i, ty, elem)  (i)->elem = (struct ty 
*)ptrs[bu_glong((o)->elem)]
 #define INDEXL_HD(oo, ii, elem, hd) { \
-       long sub; \
-       if ((sub = (long)ntohl(*(uint32_t *)((oo)->elem.forw))) < 0)    \
+       int sub; \
+       if ((sub = bu_glong((oo)->elem.forw)) < 0) \
                (ii)->elem.forw = &(hd); \
        else    (ii)->elem.forw = (struct bu_list *)ptrs[sub]; \
-       if ((sub = (long)ntohl(*(uint32_t *)((oo)->elem.back))) < 0)    \
+       if ((sub = bu_glong((oo)->elem.back)) < 0) \
                (ii)->elem.back = &(hd); \
        else    (ii)->elem.back = (struct bu_list *)ptrs[sub]; }
 
 /* For use with the edgeuse l2 / edge_g eu2_hd secondary list */
 /* The subscripts will point to the edgeuse, not the edgeuse's l2 rt_list */
 #define INDEXL_HD2(oo, ii, elem, hd) { \
-       long sub; \
+       int sub; \
        struct edgeuse *eu2; \
-       if ((sub = (long)ntohl(*(uint32_t *)((oo)->elem.forw))) < 0) {  \
+       if ((sub = bu_glong((oo)->elem.forw)) < 0) { \
                (ii)->elem.forw = &(hd); \
        } else { \
                eu2 = (struct edgeuse *)ptrs[sub]; \
                NMG_CK_EDGEUSE(eu2); \
                (ii)->elem.forw = &eu2->l2; \
        } \
-       if ((sub = (long)ntohl(*(uint32_t *)((oo)->elem.back))) < 0) {  \
+       if ((sub = bu_glong((oo)->elem.back)) < 0) { \
                (ii)->elem.back = &(hd); \
        } else { \
                eu2 = (struct edgeuse *)ptrs[sub]; \
@@ -1466,7 +1466,7 @@
            RT_CK_DISKMAGIC(d->magic, DISK_FACEUSE_MAGIC);
            INDEX(d, fu, shell, s_p);
            INDEX(d, fu, faceuse, fumate_p);
-           fu->orientation = ntohl(*(uint32_t *)d->orientation);
+           fu->orientation = bu_glong(d->orientation);
            INDEX(d, fu, face, f_p);
            INDEXL_HD(d, fu, lu_hd, fu->lu_hd);
            INDEXL_HD(d, fu, l, fu->s_p->fu_hd); /* after fu->s_p */
@@ -1483,9 +1483,9 @@
            NMG_CK_FACE(f);
            RT_CK_DISKMAGIC(d->magic, DISK_FACE_MAGIC);
            INDEX(d, f, faceuse, fu_p);
-           g_index = ntohl(*(uint32_t *)d->g);
+           g_index = bu_glong(d->g);
            f->g.magic_p = ptrs[g_index];
-           f->flip = ntohl(*(uint32_t *)d->flip);
+           f->flip = bu_glong(d->flip);
            /* Enrole this face on fg's list of users */
            NMG_CK_FACE_G_EITHER(f->g.magic_p);
            INDEXL_HD(d, f, l, f->g.plane_p->f_hd); /* after fu->fg_p set */
@@ -1511,22 +1511,22 @@
            NMG_CK_FACE_G_SNURB(fg);
            RT_CK_DISKMAGIC(d->magic, DISK_FACE_G_SNURB_MAGIC);
            INDEXL_HD(d, fg, f_hd, fg->f_hd);
-           fg->order[0] = ntohl(*(uint32_t *)d->u_order);
-           fg->order[1] = ntohl(*(uint32_t *)d->v_order);
-           fg->u.k_size = ntohl(*(uint32_t *)d->u_size);
+           fg->order[0] = bu_glong(d->u_order);
+           fg->order[1] = bu_glong(d->v_order);
+           fg->u.k_size = bu_glong(d->u_size);
            fg->u.knots = rt_nmg_import4_fastf(basep, ecnt,
-                                              ntohl(*(uint32_t *)d->u_knots), 
(matp_t)NULL,
+                                              bu_glong(d->u_knots), 
(matp_t)NULL,
                                               fg->u.k_size, 0);
-           fg->v.k_size = ntohl(*(uint32_t *)d->v_size);
+           fg->v.k_size = bu_glong(d->v_size);
            fg->v.knots = rt_nmg_import4_fastf(basep, ecnt,
-                                              ntohl(*(uint32_t *)d->v_knots), 
(matp_t)NULL,
+                                              bu_glong(d->v_knots), 
(matp_t)NULL,
                                               fg->v.k_size, 0);
-           fg->s_size[0] = ntohl(*(uint32_t *)d->us_size);
-           fg->s_size[1] = ntohl(*(uint32_t *)d->vs_size);
-           fg->pt_type = ntohl(*(uint32_t *)d->pt_type);
+           fg->s_size[0] = bu_glong(d->us_size);
+           fg->s_size[1] = bu_glong(d->vs_size);
+           fg->pt_type = bu_glong(d->pt_type);
            /* Transform ctl_points by 'mat' */
            fg->ctl_points = rt_nmg_import4_fastf(basep, ecnt,
-                                                 ntohl(*(uint32_t 
*)d->ctl_points), (matp_t)mat,
+                                                 bu_glong(d->ctl_points), 
(matp_t)mat,
                                                  fg->s_size[0] * fg->s_size[1],
                                                  fg->pt_type);
        }
@@ -1540,10 +1540,10 @@
            d = &((struct disk_loopuse *)ip)[iindex];
            NMG_CK_LOOPUSE(lu);
            RT_CK_DISKMAGIC(d->magic, DISK_LOOPUSE_MAGIC);
-           up_index = ntohl(*(uint32_t *)d->up);
+           up_index = bu_glong(d->up);
            lu->up.magic_p = ptrs[up_index];
            INDEX(d, lu, loopuse, lumate_p);
-           lu->orientation = ntohl(*(uint32_t *)d->orientation);
+           lu->orientation = bu_glong(d->orientation);
            INDEX(d, lu, loop, l_p);
            up_kind = ecnt[up_index].kind;
            if (up_kind == NMG_KIND_FACEUSE) {
@@ -1589,12 +1589,12 @@
            d = &((struct disk_edgeuse *)ip)[iindex];
            NMG_CK_EDGEUSE(eu);
            RT_CK_DISKMAGIC(d->magic, DISK_EDGEUSE_MAGIC);
-           up_index = ntohl(*(uint32_t *)d->up);
+           up_index = bu_glong(d->up);
            eu->up.magic_p = ptrs[up_index];
            INDEX(d, eu, edgeuse, eumate_p);
            INDEX(d, eu, edgeuse, radial_p);
            INDEX(d, eu, edge, e_p);
-           eu->orientation = ntohl(*(uint32_t *)d->orientation);
+           eu->orientation = bu_glong(d->orientation);
            INDEX(d, eu, vertexuse, vu_p);
            up_kind = ecnt[up_index].kind;
            if (up_kind == NMG_KIND_LOOPUSE) {
@@ -1602,7 +1602,7 @@
            } else if (up_kind == NMG_KIND_SHELL) {
                INDEXL_HD(d, eu, l, eu->up.s_p->eu_hd);
            } else bu_log("bad edgeuse up, index=%d, kind=%d\n", up_index, 
up_kind);
-           eu->g.magic_p = ptrs[ntohl(*(uint32_t *)d->g)];
+           eu->g.magic_p = ptrs[bu_glong(d->g)];
            NMG_CK_EDGE(eu->e_p);
            NMG_CK_EDGEUSE(eu->eumate_p);
            NMG_CK_EDGEUSE(eu->radial_p);
@@ -1625,7 +1625,7 @@
            d = &((struct disk_edge *)ip)[iindex];
            NMG_CK_EDGE(e);
            RT_CK_DISKMAGIC(d->magic, DISK_EDGE_MAGIC);
-           e->is_real = ntohl(*(uint32_t *)d->is_real);
+           e->is_real = bu_glong(d->is_real);
            INDEX(d, e, edgeuse, eu_p);
            NMG_CK_EDGEUSE(e->eu_p);
        }
@@ -1654,17 +1654,17 @@
            NMG_CK_EDGE_G_CNURB(eg);
            RT_CK_DISKMAGIC(d->magic, DISK_EDGE_G_CNURB_MAGIC);
            INDEXL_HD2(d, eg, eu_hd2, eg->eu_hd2);
-           eg->order = ntohl(*(uint32_t *)d->order);
+           eg->order = bu_glong(d->order);
 
            /* If order is zero, so is everything else */
            if (eg->order == 0) return 0;
 
-           eg->k.k_size = ntohl(*(uint32_t *)d->k_size);
+           eg->k.k_size = bu_glong(d->k_size);
            eg->k.knots = rt_nmg_import4_fastf(basep, ecnt,
-                                              ntohl(*(uint32_t *)d->knots), 
(matp_t)NULL,
+                                              bu_glong(d->knots), (matp_t)NULL,
                                               eg->k.k_size, 0);
-           eg->c_size = ntohl(*(uint32_t *)d->c_size);
-           eg->pt_type = ntohl(*(uint32_t *)d->pt_type);
+           eg->c_size = bu_glong(d->c_size);
+           eg->pt_type = bu_glong(d->pt_type);
            /*
             * The curve's control points are in parameter space.
             * They do NOT get transformed!
@@ -1673,13 +1673,13 @@
                /* UV coords on snurb surface don't get xformed */
                eg->ctl_points = rt_nmg_import4_fastf(basep,
                                                      ecnt,
-                                                     ntohl(*(uint32_t 
*)d->ctl_points), (matp_t)NULL,
+                                                     bu_glong(d->ctl_points), 
(matp_t)NULL,
                                                      eg->c_size, eg->pt_type);
            } else {
                /* XYZ coords on planar face DO get xformed */
                eg->ctl_points = rt_nmg_import4_fastf(basep,
                                                      ecnt,
-                                                     ntohl(*(uint32_t 
*)d->ctl_points), (matp_t)mat,
+                                                     bu_glong(d->ctl_points), 
(matp_t)mat,
                                                      eg->c_size, eg->pt_type);
            }
        }
@@ -1690,9 +1690,9 @@
            d = &((struct disk_vertexuse *)ip)[iindex];
            NMG_CK_VERTEXUSE(vu);
            RT_CK_DISKMAGIC(d->magic, DISK_VERTEXUSE_MAGIC);
-           vu->up.magic_p = ptrs[ntohl(*(uint32_t *)d->up)];
+           vu->up.magic_p = ptrs[bu_glong(d->up)];
            INDEX(d, vu, vertex, v_p);
-           vu->a.magic_p = ptrs[ntohl(*(uint32_t *)d->a)];
+           vu->a.magic_p = ptrs[bu_glong(d->a)];
            NMG_CK_VERTEX(vu->v_p);
            if (vu->a.magic_p)NMG_CK_VERTEXUSE_A_EITHER(vu->a.magic_p);
            INDEXL_HD(d, vu, l, vu->v_p->vu_hd);
@@ -1980,7 +1980,7 @@
     for (i=0; i < nkind; i++) {
        int ndouble;
        RT_CK_DISKMAGIC(cp + offset, DISK_DOUBLE_ARRAY_MAGIC);
-       ndouble = ntohl(*(uint32_t *)(cp + offset + 4));
+       ndouble = bu_glong(cp + offset + 4);
        ecnt[subscript].kind = NMG_KIND_DOUBLE_ARRAY;
        /* Stored byte offset is from beginning of disk record */
        ecnt[subscript].byte_offset = offset;
@@ -2039,7 +2039,7 @@
     /* Obtain counts of each kind of structure */
     maxindex = 1;
     for (kind = 0; kind < NMG_N_KINDS; kind++) {
-       kind_counts[kind] = ntohl(*(uint32_t *)(rp->nmg.N_structs+4*kind));
+       kind_counts[kind] = bu_glong(rp->nmg.N_structs+4*kind);
        maxindex += kind_counts[kind];
     }
 
@@ -2400,7 +2400,7 @@
 
     {
        int version;
-       version = ntohl(*(uint32_t *)dp);
+       version = bu_glong(dp);
        dp+= SIZEOF_NETWORK_LONG;
        if (version != DISK_MODEL_VERSION) {
            bu_log("rt_nmg_import4: expected NMG '.g' format version %d, got 
%d, aborting nmg solid import\n",
@@ -2410,7 +2410,7 @@
     }
     maxindex = 1;
     for (kind =0; kind < NMG_N_KINDS; kind++) {
-       kind_counts[kind] = ntohl(*(uint32_t *)dp);
+       kind_counts[kind] = bu_glong(dp);
        dp+= SIZEOF_NETWORK_LONG;
        maxindex += kind_counts[kind];
     }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to