Revision: 65158
          http://sourceforge.net/p/brlcad/code/65158
Author:   starseeker
Date:     2015-06-02 23:37:44 +0000 (Tue, 02 Jun 2015)
Log Message:
-----------
Use ft_internal_size from the functab.

Modified Paths:
--------------
    brlcad/trunk/src/librt/db_diff.c

Modified: brlcad/trunk/src/librt/db_diff.c
===================================================================
--- brlcad/trunk/src/librt/db_diff.c    2015-06-02 20:27:22 UTC (rev 65157)
+++ brlcad/trunk/src/librt/db_diff.c    2015-06-02 23:37:44 UTC (rev 65158)
@@ -42,145 +42,6 @@
 #include "raytrace.h"
 #include "rt/db_diff.h"
 
-/* TODO - there has to be a better way to do this.  Seems like overkill to 
define
- * a functab function, but this is way too fragile */
-HIDDEN int
-rt_intern_struct_size(int type) {
-    if (type >= ID_MAXIMUM) return 0;
-    switch (type) {
-       case  ID_NULL       :/**< @brief Unused */
-           return 0;
-           break;
-       case  ID_TOR        :/**< @brief Toroid */
-           return sizeof(struct rt_tor_internal);
-           break;
-       case  ID_TGC        :/**< @brief Generalized Truncated General Cone */
-           return sizeof(struct rt_tgc_internal);
-           break;
-       case  ID_ELL        :/**< @brief Ellipsoid */
-           return sizeof(struct rt_ell_internal);
-           break;
-       case  ID_ARB8       :/**< @brief Generalized ARB.  V + 7 vectors */
-           return sizeof(struct rt_arb_internal);
-           break;
-       case  ID_ARS        :/**< @brief ARS */
-           return sizeof(struct rt_ars_internal);
-           break;
-       case  ID_HALF       :/**< @brief Half-space */
-           return sizeof(struct rt_half_internal);
-           break;
-       case  ID_REC        :/**< @brief Right Elliptical Cylinder [TGC 
special] */
-           return sizeof(struct rt_tgc_internal);
-           break;
-       case  ID_POLY       :/**< @brief Polygonal faceted object */
-           return sizeof(struct rt_pg_face_internal);
-           break;
-       case  ID_BSPLINE    :/**< @brief B-spline object */
-           return sizeof(struct rt_nurb_internal);
-           break;
-       case  ID_SPH        :/**< @brief Sphere */
-           return sizeof(struct rt_ell_internal);
-           break;
-       case  ID_NMG        :/**< @brief n-Manifold Geometry solid */
-           return sizeof(struct model);
-           break;
-       case  ID_EBM        :/**< @brief Extruded bitmap solid */
-           return sizeof(struct rt_ebm_internal);
-           break;
-       case  ID_VOL        :/**< @brief 3-D Volume */
-           return sizeof(struct rt_vol_internal);
-           break;
-       case  ID_ARBN       :/**< @brief ARB with N faces */
-           return sizeof(struct rt_arbn_internal);
-           break;
-       case  ID_PIPE       :/**< @brief Pipe (wire) solid */
-           return sizeof(struct rt_pipe_internal);
-           break;
-       case  ID_PARTICLE   :/**< @brief Particle system solid */
-           return sizeof(struct rt_part_internal);
-           break;
-       case  ID_RPC        :/**< @brief Right Parabolic Cylinder  */
-           return sizeof(struct rt_rpc_internal);
-           break;
-       case  ID_RHC        :/**< @brief Right Hyperbolic Cylinder  */
-           return sizeof(struct rt_rhc_internal);
-           break;
-       case  ID_EPA        :/**< @brief Elliptical Paraboloid  */
-           return sizeof(struct rt_epa_internal);
-           break;
-       case  ID_EHY        :/**< @brief Elliptical Hyperboloid  */
-           return sizeof(struct rt_ehy_internal);
-           break;
-       case  ID_ETO        :/**< @brief Elliptical Torus  */
-           return sizeof(struct rt_eto_internal);
-           break;
-       case  ID_GRIP       :/**< @brief Pseudo Solid Grip */
-           return sizeof(struct rt_grip_internal);
-           break;
-       case  ID_JOINT      :/**< @brief Pseudo Solid/Region Joint */
-           return 0;
-           break;
-       case  ID_HF         :/**< @brief Height Field */
-           return sizeof(struct rt_hf_internal);
-           break;
-       case  ID_DSP        :/**< @brief Displacement map */
-           return sizeof(struct rt_dsp_internal);
-           break;
-       case  ID_SKETCH     :/**< @brief 2D sketch */
-           return sizeof(struct rt_sketch_internal);
-           break;
-       case  ID_EXTRUDE    :/**< @brief Solid of extrusion */
-           return sizeof(struct rt_extrude_internal);
-           break;
-       case  ID_SUBMODEL   :/**< @brief Instanced submodel */
-           return sizeof(struct rt_submodel_internal);
-           break;
-       case  ID_CLINE      :/**< @brief FASTGEN4 CLINE solid */
-           return sizeof(struct rt_cline_internal);
-           break;
-       case  ID_BOT        :/**< @brief Bag o' triangles */
-           return sizeof(struct rt_bot_internal);
-           break;
-       case  ID_COMBINATION:/**< @brief Combination Record */
-           return sizeof(struct rt_comb_internal);
-           break;
-       case  ID_BINUNIF    :/**< @brief Uniform-array binary */
-           return sizeof(struct rt_binunif_internal);
-           break;
-       case  ID_CONSTRAINT :/**< @brief Constraint object */
-           return sizeof(struct rt_constraint_internal);
-           break;
-       case  ID_SUPERELL   :/**< @brief Superquadratic ellipsoid */
-           return sizeof(struct rt_superell_internal);
-           break;
-       case  ID_METABALL   :/**< @brief Metaball */
-           return sizeof(struct rt_metaball_internal);
-           break;
-       case  ID_BREP       :/**< @brief B-rep object */
-           return sizeof(struct rt_brep_internal);
-           break;
-       case  ID_HYP        :/**< @brief Hyperboloid of one sheet */
-           return sizeof(struct rt_hyp_internal);
-           break;
-       case  ID_REVOLVE    :/**< @brief Solid of Revolution */
-           return sizeof(struct rt_revolve_internal);
-           break;
-       case  ID_PNTS       :/**< @brief Collection of Points */
-           return sizeof(struct rt_pnts_internal);
-           break;
-       case  ID_ANNOTATION :/**< @brief Annotation */
-           return sizeof(struct rt_annotation_internal);
-           break;
-       case  ID_HRT        :/**< @brief Heart */
-           return sizeof(struct rt_hrt_internal);
-           break;
-       default:
-           return 0;
-           break;
-    }
-    return 0;
-}
-
 /* Exposed as private function to librt, but not (currently) beyond librt -
  * see librt_private.h */
 int
@@ -607,7 +468,7 @@
        /*compare the idb_ptr memory, if the types are the same.*/
        if (left_components.bin_params && right_components.bin_params && 
left_components.idb_ptr && right_components.idb_ptr) {
            if (left_components.intern->idb_minor_type == 
right_components.intern->idb_minor_type) {
-               int memsize = 
rt_intern_struct_size(left_components.intern->idb_minor_type);
+               int memsize = 
OBJ[left_components.intern->idb_type].ft_internal_size;
                if (memcmp((void *)left_components.idb_ptr, (void 
*)right_components.idb_ptr, memsize)) {
                    /* If we didn't pick up differences in the avs comparison, 
we need to use this result to flag a parameter difference */
                    if (result->param_state == DIFF_UNCHANGED || 
result->param_state == DIFF_EMPTY) result->param_state |= DIFF_CHANGED;
@@ -972,7 +833,7 @@
           if (left_components.idb_ptr && ancestor_components.idb_ptr && 
right_components.idb_ptr) {
            if ((left_components.intern->idb_minor_type == 
ancestor_components.intern->idb_minor_type) &&
                    (left_components.intern->idb_minor_type == 
right_components.intern->idb_minor_type)) {
-               int memsize = 
rt_intern_struct_size(left_components.intern->idb_minor_type);
+               int memsize = 
OBJ[left_components.intern->idb_type].ft_internal_size;
                if (memcmp((void *)left_components.idb_ptr, (void 
*)right_components.idb_ptr, memsize) &&
                        memcmp((void *)ancestor_components.idb_ptr, (void 
*)right_components.idb_ptr, memsize)) {
                    /* If we didn't pick up differences in the avs comparison, 
we need to use this result to flag a parameter difference */

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


------------------------------------------------------------------------------
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to