Revision: 44639
          http://brlcad.svn.sourceforge.net/brlcad/?rev=44639&view=rev
Author:   starseeker
Date:     2011-05-20 00:44:52 +0000 (Fri, 20 May 2011)

Log Message:
-----------
Take a stab at switching from bu_mro (??) to bu_attribute_value_set - this will 
need a lot more testing (certainly of nirt and raytracing) to make sure nothing 
got busted.

Modified Paths:
--------------
    brlcad/trunk/include/bu.h
    brlcad/trunk/include/magic.h
    brlcad/trunk/include/raytrace.h
    brlcad/trunk/src/libbu/CMakeLists.txt
    brlcad/trunk/src/libbu/magic.c
    brlcad/trunk/src/librt/prep.c
    brlcad/trunk/src/librt/tree.c
    brlcad/trunk/src/librtserver/rtserver.c
    brlcad/trunk/src/nirt/if.c
    brlcad/trunk/src/rt/rtshot.c

Removed Paths:
-------------
    brlcad/trunk/src/libbu/mro.c

Modified: brlcad/trunk/include/bu.h
===================================================================
--- brlcad/trunk/include/bu.h   2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/include/bu.h   2011-05-20 00:44:52 UTC (rev 44639)
@@ -1698,44 +1698,7 @@
 BU_EXPORT extern int bu_setjmp_valid;          /* !0 = bu_jmpbuf is valid */
 BU_EXPORT extern jmp_buf bu_jmpbuf;                    /* for BU_SETJMP() */
 /** @} */
-/*-------------------------------------------------------------------------*/
-/** @addtogroup mro */
-/** @{ */
-/**
- * B U _ M R O
- *
- * Support for Multiply Represented Objects
- */
 
-struct bu_mro {
-    unsigned long magic;
-    struct bu_vls string_rep;
-    char long_rep_is_valid;
-    long long_rep;
-    char double_rep_is_valid;
-    double double_rep;
-};
-
-#define BU_CK_MRO(_vp)         BU_CKMAG(_vp, BU_MRO_MAGIC, "bu_mro")
-
-#define BU_MRO_INVALIDATE(_p) {\
-       _p->long_rep_is_valid = '\0';\
-       _p->double_rep_is_valid = '\0';\
-}
-
-#define BU_MRO_GETDOUBLE(_p) (_p->double_rep_is_valid ? _p->double_rep : \
-       (_p->double_rep = strtod(bu_vls_addr(&_p->string_rep), NULL), \
-       (_p->double_rep_is_valid='y', _p->double_rep)))
-
-#define BU_MRO_GETLONG(_p) (_p->long_rep_is_valid ? _p->long_rep : \
-       (_p->long_rep = strtol(bu_vls_addr(&_p->string_rep), NULL, 10), \
-       (_p->long_rep_is_valid='y', _p->long_rep)))
-
-#define BU_MRO_GETSTRING(_p) bu_vls_addr(&_p->string_rep)
-
-#define BU_MRO_STRLEN(_p) bu_vls_strlen(&_p->string_rep)
-/** @} */
-
 /*----------------------------------------------------------------------*/
 /**
  * @addtogroup bu_debug Debugging
@@ -5883,28 +5846,6 @@
 
 /** @} */
 
-/** @addtogroup mro */
-/** @{ */
-/** @file mro.c
- *
- * @brief
- * The Multiply Represented Object package.
- *
- */
-
-BU_EXPORT BU_EXTERN(void bu_mro_init_with_string,
-                   (struct bu_mro *mrop, const char *string));
-BU_EXPORT BU_EXTERN(void bu_mro_set,
-                   (struct bu_mro *mrop,
-                    const char *string));
-BU_EXPORT BU_EXTERN(void bu_mro_init,
-                   (struct bu_mro *mrop));
-BU_EXPORT BU_EXTERN(void bu_mro_free,
-                   (struct bu_mro *mrop));
-
-
-/** @} */
-
 /** @addtogroup bu_hash */
 /** @{ */
 /** @file hash.c

Modified: brlcad/trunk/include/magic.h
===================================================================
--- brlcad/trunk/include/magic.h        2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/include/magic.h        2011-05-20 00:44:52 UTC (rev 44639)
@@ -72,7 +72,6 @@
 #define BU_IMAGE_FILE_MAGIC            0x6269666d /**< bifm */
 #define BU_LIST_HEAD_MAGIC             0x01016580
 #define BU_MAPPED_FILE_MAGIC           0x4d617066 /**< Mapf */
-#define BU_MRO_MAGIC                   0x4D524F4F /**< MROO */
 #define BU_PTBL_MAGIC                  0x7074626c /**< ptbl */
 #define BU_RB_LIST_MAGIC               0x72626c73
 #define BU_RB_NODE_MAGIC               0x72626e6f

Modified: brlcad/trunk/include/raytrace.h
===================================================================
--- brlcad/trunk/include/raytrace.h     2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/include/raytrace.h     2011-05-20 00:44:52 UTC (rev 44639)
@@ -582,9 +582,7 @@
 #define REGION_NON_FASTGEN     0
 #define REGION_FASTGEN_PLATE   1
 #define REGION_FASTGEN_VOLUME  2
-    struct bu_mro **   attr_values;    /**< @brief Null terminated array of 
MRO structs
-                                        * Each containing a value for the 
corresponding
-                                        * attribute name passed to 
rt_gettrees_and_attrs() */
+    struct bu_attribute_value_set attr_values; /**< @brief Attribute/value set 
*/
 };
 #define REGION_NULL    ((struct region *)0)
 #define RT_CK_REGION(_p)       BU_CKMAG(_p, RT_REGION_MAGIC, "struct region")

Modified: brlcad/trunk/src/libbu/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libbu/CMakeLists.txt       2011-05-19 22:19:55 UTC (rev 
44638)
+++ brlcad/trunk/src/libbu/CMakeLists.txt       2011-05-20 00:44:52 UTC (rev 
44639)
@@ -46,7 +46,6 @@
     malloc.c
     mappedfile.c
     mread.c
-    mro.c
     observer.c
     parallel.c
     parse.c

Modified: brlcad/trunk/src/libbu/magic.c
===================================================================
--- brlcad/trunk/src/libbu/magic.c      2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/src/libbu/magic.c      2011-05-20 00:44:52 UTC (rev 44639)
@@ -57,8 +57,6 @@
            return "bu_list";
        case BU_MAPPED_FILE_MAGIC:
            return "bu_mapped_file";
-       case BU_MRO_MAGIC:
-           return "bu_mro";
        case BU_PTBL_MAGIC:
            return "bu_ptbl";
        case BU_RB_LIST_MAGIC:

Deleted: brlcad/trunk/src/libbu/mro.c
===================================================================
--- brlcad/trunk/src/libbu/mro.c        2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/src/libbu/mro.c        2011-05-20 00:44:52 UTC (rev 44639)
@@ -1,78 +0,0 @@
-/*                           M R O . C
- * BRL-CAD
- *
- * Copyright (c) 2001-2011 United States Government as represented by
- * the U.S. Army Research Laboratory.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this file; see the file named COPYING for more
- * information.
- */
-
-#include "common.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include "bu.h"
-
-
-void
-bu_mro_init(struct bu_mro *mrop)
-{
-    mrop->magic = BU_MRO_MAGIC;
-    bu_vls_init(&mrop->string_rep);
-    BU_MRO_INVALIDATE(mrop);
-}
-
-
-void
-bu_mro_free(struct bu_mro *mrop)
-{
-    BU_CK_MRO(mrop);
-
-    bu_vls_free(&mrop->string_rep);
-    BU_MRO_INVALIDATE(mrop);
-}
-
-
-void
-bu_mro_set(struct bu_mro *mrop, const char *string)
-{
-    BU_CK_MRO(mrop);
-
-    bu_vls_trunc(&mrop->string_rep, 0);
-    bu_vls_strcpy(&mrop->string_rep, string);
-    BU_MRO_INVALIDATE(mrop);
-}
-
-
-void
-bu_mro_init_with_string(struct bu_mro *mrop, const char *string)
-{
-    mrop->magic = BU_MRO_MAGIC;
-    bu_vls_init(&mrop->string_rep);
-    bu_vls_strcpy(&mrop->string_rep, string);
-    BU_MRO_INVALIDATE(mrop);
-}
-
-/*
- * Local Variables:
- * mode: C
- * tab-width: 8
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */

Modified: brlcad/trunk/src/librt/prep.c
===================================================================
--- brlcad/trunk/src/librt/prep.c       2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/src/librt/prep.c       2011-05-20 00:44:52 UTC (rev 44639)
@@ -941,15 +941,7 @@
            bu_free((genptr_t)regp->reg_mater.ma_shader, "ma_shader");
            regp->reg_mater.ma_shader = (char *)NULL;
        }
-       if (regp->attr_values) {
-           i = 0;
-           while (regp->attr_values[i]) {
-               bu_mro_free(regp->attr_values[i]);
-               bu_free(regp->attr_values[i], "rp->attr_values[i]");
-               i++;
-           }
-           bu_free((char *)regp->attr_values, "regp->attr_values");
-       }
+       bu_avs_free(&(regp->attr_values));
        bu_free((genptr_t)regp, "struct region");
     }
     rtip->nregions = 0;
@@ -1104,14 +1096,7 @@
     delregp->reg_treetop = TREE_NULL;
     bu_free((char *)delregp->reg_name, "region name str");
     delregp->reg_name = (char *)0;
-    if (delregp->attr_values) {
-       int i=0;
-       while (delregp->attr_values[i]) {
-           bu_mro_free(delregp->attr_values[i]);
-           i++;
-       }
-       bu_free((char *)delregp->attr_values, "delregp->attr_values");
-    }
+    bu_avs_free(&(delregp->attr_values));
     bu_free((char *)delregp, "struct region");
     return 0;
 }
@@ -1202,7 +1187,6 @@
 
 }
 
-
 /**
  * R T _ L O A D _ A T T R S
  *
@@ -1221,76 +1205,47 @@
     const char *reg_name;
     const char *attr;
     int attr_count=0;
-    int mro_count;
-    int did_set;
     int region_count=0;
-    int i;
+    int did_set, i;
 
     RT_CHECK_RTI(rtip);
     RT_CK_DBI(rtip->rti_dbip);
 
     if (db_version(rtip->rti_dbip) < 5)
-       return 0;
+        return 0;
 
     while (attrs[attr_count])
-       attr_count++;
+        attr_count++;
 
     for (BU_LIST_FOR(regp, region, &(rtip->HeadRegion))) {
-       RT_CK_REGION(regp);
+        RT_CK_REGION(regp);
 
        did_set = 0;
-       mro_count = 0;
-       while (regp->attr_values[mro_count])
-           mro_count++;
+        if ((reg_name=strrchr(regp->reg_name, '/')) == NULL)
+            reg_name = regp->reg_name;
+        else
+            reg_name++;
 
-       if (mro_count < attr_count) {
-           /* don't have enough to store all the values */
-           for (i=0; i<mro_count; i++) {
-               bu_mro_free(regp->attr_values[i]);
-               bu_free((char *)regp->attr_values[i], "regp->attr_values[i]");
-           }
-           if (mro_count)
-               bu_free((char *)regp->attr_values, "regp->attr_values");
-           regp->attr_values = (struct bu_mro **)bu_calloc(attr_count + 1,
-                                                           sizeof(struct 
bu_mro *), "regp->attr_values");
-           for (i=0; i<attr_count; i++) {
-               regp->attr_values[i] = bu_malloc(sizeof(struct bu_mro),
-                                                "regpp->attr_values[i]");
-               bu_mro_init(regp->attr_values[i]);
-           }
-       } else if (mro_count > attr_count) {
-           /* just reuse what we have */
-           for (i=attr_count; i<mro_count; i++) {
-               bu_mro_free(regp->attr_values[i]);
-               bu_free((char *)regp->attr_values[i], "regp->attr_values[i]");
-           }
-           regp->attr_values[attr_count] = (struct bu_mro *)NULL;
-       }
+        if ((dp=db_lookup(rtip->rti_dbip, reg_name, LOOKUP_NOISY)) == 
RT_DIR_NULL)
+            continue;
 
-       if ((reg_name=strrchr(regp->reg_name, '/')) == NULL)
-           reg_name = regp->reg_name;
-       else
-           reg_name++;
+        bu_avs_init_empty(&avs);
+        if (db5_get_attributes(rtip->rti_dbip, &avs, dp)) {
+            bu_log("rt_load_attrs: Failed to get attributes for region %s\n", 
reg_name);
+            continue;
+        }
 
-       if ((dp=db_lookup(rtip->rti_dbip, reg_name, LOOKUP_NOISY)) == 
RT_DIR_NULL)
-           continue;
-
-       bu_avs_init_empty(&avs);
-       if (db5_get_attributes(rtip->rti_dbip, &avs, dp)) {
-           bu_log("rt_load_attrs: Failed to get attributes for region %s\n", 
reg_name);
-           continue;
-       }
-
+        bu_avs_init_empty(&(regp->attr_values));
        for (i=0; i<attr_count; i++) {
-           if ((attr = bu_avs_get(&avs, attrs[i])) == NULL)
-               continue;
+               if ((attr = bu_avs_get(&avs, attrs[i])) == NULL)
+                       continue;
 
-           bu_mro_set(regp->attr_values[i], attr);
-           did_set = 1;
+               bu_avs_add(&(regp->attr_values), attrs[i], attr);
+               did_set = 1;
        }
 
        if (did_set)
-           region_count++;
+               region_count++;
 
        bu_avs_free(&avs);
     }
@@ -1708,14 +1663,7 @@
            bu_free((genptr_t)rp->reg_mater.ma_shader, "ma_shader");
            rp->reg_mater.ma_shader = (char *)NULL;
        }
-       if (rp->attr_values) {
-           i = 0;
-           while (rp->attr_values[i]) {
-               bu_mro_free(rp->attr_values[i]);
-               i++;
-           }
-           bu_free((char *)rp->attr_values, "rp->attr_values");
-       }
+       bu_avs_free(&(rp->attr_values));
        bu_free((genptr_t)rp, "struct region");
     }
 

Modified: brlcad/trunk/src/librt/tree.c
===================================================================
--- brlcad/trunk/src/librt/tree.c       2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/src/librt/tree.c       2011-05-20 00:44:52 UTC (rev 44639)
@@ -154,7 +154,6 @@
     struct directory *dp;
     size_t shader_len=0;
     struct rt_i *rtip;
-    size_t i;
     Tcl_HashTable *tbl = (Tcl_HashTable *)client_data;
     Tcl_HashEntry *entry;
     matp_t inv_mat;
@@ -179,16 +178,9 @@
     rp->reg_gmater = tsp->ts_gmater;
     rp->reg_los = tsp->ts_los;
 
+    bu_avs_init_empty(&(rp->attr_values));
     if (tsp->ts_attrs.count && tsp->ts_attrs.avp) {
-       rp->attr_values = (struct bu_mro **)bu_calloc(tsp->ts_attrs.count+1,
-                                                     sizeof(struct bu_mro *), 
"regp->attr_values");
-       for (i=0; i<(size_t)tsp->ts_attrs.count; i++) {
-           rp->attr_values[i] = bu_malloc(sizeof(struct bu_mro),
-                                          "rp->attr_values[i]");
-           bu_mro_init_with_string(rp->attr_values[i], 
tsp->ts_attrs.avp[i].value);
-       }
-    } else {
-       rp->attr_values = (struct bu_mro **)NULL;
+           bu_avs_merge(&(rp->attr_values), &(tsp->ts_attrs));
     }
 
     rp->reg_mater = tsp->ts_mater; /* struct copy */
@@ -752,11 +744,8 @@
  *
  * rtip - RT instance pointer
  *
- * attrs - array of pointers (NULL terminated) to strings (attribute
- * names). A corresponding array of "bu_mro" objects containing the
- * attribute values will be attached to region structures
- * ("attr_values")
- *
+ * attrs - attribute value set
+ * 
  * argc - number of trees to get
  *
  * argv - array of char pointers to the names of the tree tops
@@ -802,33 +791,34 @@
        tree_state.ts_rtip = rtip;
        tree_state.ts_resp = NULL;      /* sanity.  Needs to be updated */
 
-       if (attrs) {
-           if (db_version(rtip->rti_dbip) < 5) {
-               bu_log("WARNING: requesting attributes from an old database 
version (ignored)\n");
-               bu_avs_init_empty(&tree_state.ts_attrs);
-           } else {
-               while (attrs[num_attrs]) {
-                   num_attrs++;
-               }
-               if (num_attrs) {
-                   bu_avs_init(&tree_state.ts_attrs,
-                               num_attrs,
-                               "avs in tree_state");
-                   num_attrs = 0;
-                   while (attrs[num_attrs]) {
-                       bu_avs_add(&tree_state.ts_attrs,
-                                  attrs[num_attrs],
-                                  NULL);
-                       num_attrs++;
-                   }
-               } else {
-                   bu_avs_init_empty(&tree_state.ts_attrs);
-               }
-           }
-       } else {
-           bu_avs_init_empty(&tree_state.ts_attrs);
-       }
 
+        if (attrs) {
+            if (db_version(rtip->rti_dbip) < 5) {
+                bu_log("WARNING: requesting attributes from an old database 
version (ignored)\n");
+                bu_avs_init_empty(&tree_state.ts_attrs);
+            } else {
+                while (attrs[num_attrs]) {
+                    num_attrs++;
+                }
+                if (num_attrs) {
+                    bu_avs_init(&tree_state.ts_attrs,
+                                num_attrs,
+                                "avs in tree_state");
+                    num_attrs = 0;
+                    while (attrs[num_attrs]) {
+                        bu_avs_add(&tree_state.ts_attrs,
+                                   attrs[num_attrs],
+                                   NULL);
+                        num_attrs++;
+                    }
+                } else {
+                    bu_avs_init_empty(&tree_state.ts_attrs);
+                }
+            }
+        } else {
+            bu_avs_init_empty(&tree_state.ts_attrs);
+        }
+
        i = db_walk_tree(rtip->rti_dbip, argc, argv, ncpus,
                         &tree_state,
                         _rt_gettree_region_start,

Modified: brlcad/trunk/src/librtserver/rtserver.c
===================================================================
--- brlcad/trunk/src/librtserver/rtserver.c     2011-05-19 22:19:55 UTC (rev 
44638)
+++ brlcad/trunk/src/librtserver/rtserver.c     2011-05-20 00:44:52 UTC (rev 
44639)
@@ -201,20 +201,22 @@
        /* visit each region in this rt_i */
        for ( j=0; j<rtip->nregions; j++ ) {
            struct region *rp=rtip->Regions[j];
-           struct bu_mro *attrs=rp->attr_values[0];
            int new;
+           const char *attrget;
            CLIENTDATA_INT idx=0;
 
-           if ( !rp || BU_MRO_STRLEN(attrs) < 1 ) {
+           attrget = bu_avs_get(&(rp->attr_values), "MUVES_Component");
+           
+           if ( attrget == NULL ) {
                /* not a region, or does not have a MUVES_Component attribute */
                continue;
            }
 
            /* create an entry for this MUVES_Component name */
-           name_entry = Tcl_CreateHashEntry( &name_tbl, BU_MRO_GETSTRING( 
attrs ), &new );
+           name_entry = Tcl_CreateHashEntry( &name_tbl, attrget, &new );
            if ( verbose ) {
                fprintf( stderr, "region %s, name = %s\n",
-                        rp->reg_name, BU_MRO_GETSTRING( attrs ) );
+                        rp->reg_name, attrget );
            }
            /* set value to next index */
            if ( new ) {

Modified: brlcad/trunk/src/nirt/if.c
===================================================================
--- brlcad/trunk/src/nirt/if.c  2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/src/nirt/if.c  2011-05-20 00:44:52 UTC (rev 44639)
@@ -65,8 +65,8 @@
     fastf_t get_obliq(fastf_t *ray, fastf_t *normal);
     struct bu_vls *vls;
     struct bu_vls attr_vls;
-    struct bu_mro **attr_values;
     char regionPN[512] = {0};
+    struct bu_attribute_value_pair *avpp;
 
     /* quellage */
     finished_segs = finished_segs;
@@ -184,16 +184,10 @@
 
        /* format up the attribute strings into a single string */
        bu_vls_init(&attr_vls);
-       attr_values = part->pt_regionp->attr_values;
-       for (i=0; i < a_tab.attrib_use; i++) {
-
-           BU_CK_MRO(attr_values[i]);
-           vls = &attr_values[i]->string_rep;
-
-           if (bu_vls_strlen(vls) > 0) {
-               /* XXX only print attributes that actually were set */
-               bu_vls_printf(&attr_vls, "%s=%V ", a_tab.attrib[i], vls);
-           }
+       for (BU_AVS_FOR(avpp, &(part->pt_regionp->attr_values))) {
+               if (avpp->value)
+                       if (strlen(avpp->value) != 0)
+                               bu_vls_printf(&attr_vls, "%s=%s", avpp->name, 
avpp->value);
        }
 
        ValTab[VTI_ATTRIBUTES].value.sval = bu_vls_addr(&attr_vls);

Modified: brlcad/trunk/src/rt/rtshot.c
===================================================================
--- brlcad/trunk/src/rt/rtshot.c        2011-05-19 22:19:55 UTC (rev 44638)
+++ brlcad/trunk/src/rt/rtshot.c        2011-05-20 00:44:52 UTC (rev 44639)
@@ -49,7 +49,7 @@
 void
 usage(const char *argv0)
 {
-    bu_log("Usage:  rtshot [options] model.g objects...\n", argv0);
+    bu_log("Usage:  %s [options] model.g objects...\n", argv0);
     bu_log(" -U #              Set reporting of air regions (default=1)\n");
     bu_log(" -u #              Set libbu debug flag\n");
     bu_log(" -x #              Set librt debug flags\n");
@@ -539,14 +539,14 @@
            if (ap->attrs) {
                bu_log("\tattribute values:\n");
                i = 0;
-               while (ap->attrs[i] && regp->attr_values[i]) {
+               while (ap->attrs[i] && regp->attr_values.count) {
                    bu_log("\t\t%s:\n", ap->attrs[i]);
                    bu_log("\t\t\tstring rep = %s\n",
-                          BU_MRO_GETSTRING(regp->attr_values[i]));
-                   bu_log("\t\t\tlong rep = %d\n",
+                          bu_avs_get(&(regp->attr_values), ap->attrs[i]));
+                 /*  bu_log("\t\t\tlong rep = %d\n",
                           BU_MRO_GETLONG(regp->attr_values[i]));
                    bu_log("\t\t\tdouble rep = %f\n",
-                          BU_MRO_GETDOUBLE(regp->attr_values[i]));
+                          BU_MRO_GETDOUBLE(regp->attr_values[i]));*/
                    i++;
                }
            }
@@ -696,18 +696,18 @@
                int i;
 
                if (pl->ap->attrs) {
-                   bu_log("\tattribute values:\n");
-                   i = 0;
-                   while (pl->ap->attrs[i] && regp->attr_values[i]) {
-                       bu_log("\t\t%s:\n", pl->ap->attrs[i]);
-                       bu_log("\t\t\tstring rep = %s\n", BU_MRO_GETSTRING(
-                                  regp->attr_values[i]));
-                       bu_log("\t\t\tlong rep = %d\n", BU_MRO_GETLONG(
-                                  regp->attr_values[i]));
-                       bu_log("\t\t\tdouble rep = %f\n", BU_MRO_GETDOUBLE(
-                                  regp->attr_values[i]));
-                       i++;
-                   }
+                       bu_log("\tattribute values:\n");
+                       i = 0;
+                       while (pl->ap->attrs[i] && regp->attr_values.count) {
+                               bu_log("\t\t%s:\n", pl->ap->attrs[i]);
+                               bu_log("\t\t\tstring rep = %s\n",
+                                               
bu_avs_get(&(regp->attr_values), pl->ap->attrs[i]));
+                               /*  bu_log("\t\t\tlong rep = %d\n",
+                                   BU_MRO_GETLONG(regp->attr_values[i]));
+                                   bu_log("\t\t\tdouble rep = %f\n",
+                                   BU_MRO_GETDOUBLE(regp->attr_values[i]));*/
+                               i++;
+                       }
                }
            }
        }


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

------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its 
next-generation tools to help Windows* and Linux* C/C++ and Fortran 
developers boost performance applications - including clusters. 
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to