Revision: 76639
          http://sourceforge.net/p/brlcad/code/76639
Author:   starseeker
Date:     2020-08-02 00:02:15 +0000 (Sun, 02 Aug 2020)
Log Message:
-----------
Add non-bu_list based functions for solid obj reuse management

Modified Paths:
--------------
    brlcad/branches/bioh/src/libged/ged_private.h
    brlcad/branches/bioh/src/libged/ged_util.c

Modified: brlcad/branches/bioh/src/libged/ged_private.h
===================================================================
--- brlcad/branches/bioh/src/libged/ged_private.h       2020-08-01 23:40:26 UTC 
(rev 76638)
+++ brlcad/branches/bioh/src/libged/ged_private.h       2020-08-02 00:02:15 UTC 
(rev 76639)
@@ -650,6 +650,9 @@
 GED_EXPORT extern int ged_view_data_lines(struct ged *gedp, int argc, const 
char *argv[]);
 
 
+GED_EXPORT extern void ged_push_solid(struct ged *gedp, struct solid *sp);
+GED_EXPORT extern struct solid *ged_pop_solid(struct ged *gedp);
+
 __END_DECLS
 
 #endif /* LIBGED_GED_PRIVATE_H */

Modified: brlcad/branches/bioh/src/libged/ged_util.c
===================================================================
--- brlcad/branches/bioh/src/libged/ged_util.c  2020-08-01 23:40:26 UTC (rev 
76638)
+++ brlcad/branches/bioh/src/libged/ged_util.c  2020-08-02 00:02:15 UTC (rev 
76639)
@@ -64,6 +64,28 @@
     return gdvp;
 }
 
+void
+ged_push_solid(struct ged *gedp, struct solid *sp)
+{
+    RT_FREE_VLIST(&(sp->s_vlist));
+    sp->s_fullpath.fp_len = 0; // Don't free memory, but implicitly clear 
contents
+    bu_ptbl_ins(&gedp->free_solids, (long *)sp);
+}
+
+struct solid *
+ged_pop_solid(struct ged *gedp)
+{
+    struct solid *sp = NULL;
+    if (BU_PTBL_LEN(&gedp->free_solids)) {
+       sp = (struct solid *)BU_PTBL_GET(&gedp->free_solids, 
(BU_PTBL_LEN(&gedp->free_solids) - 1));
+       bu_ptbl_rm(&gedp->free_solids, (long *)sp);
+    } else {
+       BU_ALLOC(sp, struct solid); // from GET_SOLID in rt/solid.h
+       db_full_path_init(&(sp)->s_fullpath);
+    }
+    return sp;
+}
+
 int
 _ged_results_init(struct ged_results *results)
 {

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