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