Revision: 76294
          http://sourceforge.net/p/brlcad/code/76294
Author:   brlcad
Date:     2020-07-10 03:34:33 +0000 (Fri, 10 Jul 2020)
Log Message:
-----------
more semantic readability and code simplification

Modified Paths:
--------------
    brlcad/trunk/src/libged/put_comb.c

Modified: brlcad/trunk/src/libged/put_comb.c
===================================================================
--- brlcad/trunk/src/libged/put_comb.c  2020-07-10 01:50:14 UTC (rev 76293)
+++ brlcad/trunk/src/libged/put_comb.c  2020-07-10 03:34:33 UTC (rev 76294)
@@ -61,29 +61,16 @@
     intern.idb_ptr = (void *)comb;
     comb->tree = final_tree;
 
-    if (!BU_STR_EQUAL(dir_name, comb_name)) {
-       int flags;
-
-       if (comb->region_flag)
-           flags = RT_DIR_COMB | RT_DIR_REGION;
-       else
-           flags = RT_DIR_COMB;
-
-       if (dp != RT_DIR_NULL) {
-           if (db_delete(gedp->ged_wdbp->dbip, dp) || 
db_dirdelete(gedp->ged_wdbp->dbip, dp)) {
-               bu_vls_printf(gedp->ged_result_str, "make_tree: Unable to 
delete directory entry for %s\n", comb_name);
-               intern.idb_meth->ft_ifree(&intern);
-               return GED_ERROR;
-           }
+    if (!BU_STR_EQUAL(dir_name, comb_name) && dp) {
+       if (db_delete(gedp->ged_wdbp->dbip, dp) || 
db_dirdelete(gedp->ged_wdbp->dbip, dp)) {
+           bu_vls_printf(gedp->ged_result_str, "make_tree: Unable to delete 
directory entry for %s\n", comb_name);
+           intern.idb_meth->ft_ifree(&intern);
+           return GED_ERROR;
        }
+       dp = RT_DIR_NULL;
+    }
 
-       dp = db_diradd(gedp->ged_wdbp->dbip, dir_name, RT_DIR_PHONY_ADDR, 0, 
flags, (void *)&intern.idb_type);
-       if (dp == RT_DIR_NULL) {
-           bu_vls_printf(gedp->ged_result_str, "make_tree: Cannot add %s to 
directory, no changes made\n", dir_name);
-           intern.idb_meth->ft_ifree(&intern);
-           return 1;
-       }
-    } else if (dp == RT_DIR_NULL) {
+    if (!dp) {
        int flags;
 
        if (comb->region_flag)
@@ -97,13 +84,13 @@
            intern.idb_meth->ft_ifree(&intern);
            return GED_ERROR;
        }
-    } else {
-       if (comb->region_flag)
-           dp->d_flags |= RT_DIR_REGION;
-       else
-           dp->d_flags &= ~RT_DIR_REGION;
     }
 
+    if (comb->region_flag)
+       dp->d_flags |= RT_DIR_REGION;
+    else
+       dp->d_flags &= ~RT_DIR_REGION;
+
     if (rt_db_put_internal(dp, gedp->ged_wdbp->dbip, &intern, &rt_uniresource) 
< 0) {
        bu_vls_printf(gedp->ged_result_str, "make_tree: Unable to write 
combination to database.\n");
        return GED_ERROR;
@@ -273,7 +260,7 @@
 
 
 static int
-put_tree_into_comb_and_export(struct ged *gedp, struct rt_comb_internal *comb, 
struct directory *dp, const char *comb_name, const char *dir_name, const char 
*imstr)
+put_tree_into_comb_and_export(struct ged *gedp, struct rt_comb_internal *comb, 
struct directory *dp, const char *comb_name, const char *dir_name, const char 
*expression)
 {
     char *line;
     char *name;
@@ -291,13 +278,13 @@
     struct rt_tree_array *rt_tree_array = NULL;
     union tree *tp;
 
-    if (imstr == (char *)NULL)
+    if (!expression)
        return GED_ERROR;
 
     BU_LIST_INIT(&comb_lines.l);
 
-    /* duplicate the immutable str (from argv) for strtok style mutation */
-    str = bu_strdup(imstr);
+    /* duplicate the expression string (from argv) for parsing */
+    str = bu_strdup(expression);
 
     /* break str into lines */
     line = str;
@@ -488,11 +475,16 @@
     static const char *noregionusage = "comb_name n color shader inherit 
boolean_expr";
     static const char *regionusage = "comb_name y regionID airID materialID 
los% color shader inherit boolean_expr";
 
-    const char *saved_name = NULL;
+    const char *cmd_name = argv[0];
     const char *comb_name = argv[1];
     const char *dir_name = NULL;
+    const char *saved_name = NULL;
 
-    char new_name_v4[NAMESIZE+1] = {0};
+    const char *color = NULL;
+    const char *shader = NULL;
+    const char *inherit = NULL;
+    const char *expression = NULL;
+
     int offset = 0;
     int save_comb_flag = 0;
     struct directory *dp = NULL;
@@ -508,12 +500,12 @@
 
     /* must be wanting help */
     if (argc == 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", cmd_name, usage);
        return GED_HELP;
     }
 
     if (argc < 7 || 11 < argc) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", cmd_name, usage);
        return GED_ERROR;
     }
 
@@ -521,12 +513,12 @@
     dp = db_lookup(gedp->ged_wdbp->dbip, comb_name, LOOKUP_QUIET);
     if (dp != RT_DIR_NULL) {
        if (!(dp->d_flags & RT_DIR_COMB)) {
-           bu_vls_printf(gedp->ged_result_str, "%s: %s is not a combination, 
so cannot be edited this way\n", argv[0], comb_name);
+           bu_vls_printf(gedp->ged_result_str, "%s: %s is not a combination, 
so cannot be edited this way\n", cmd_name, comb_name);
            return GED_ERROR;
        }
 
        if (rt_db_get_internal(&intern, dp, gedp->ged_wdbp->dbip, (fastf_t 
*)NULL, &rt_uniresource) < 0) {
-           bu_vls_printf(gedp->ged_result_str, "%s: Database read error, 
aborting\n", argv[0]);
+           bu_vls_printf(gedp->ged_result_str, "%s: Database read error, 
aborting\n", cmd_name);
            return GED_ERROR;
        }
 
@@ -542,36 +534,18 @@
     } else {
        /* make an empty combination structure */
        BU_ALLOC(comb, struct rt_comb_internal);
-       if (comb == NULL)
-           bu_bomb("Unable to allocate comb memory");
        RT_COMB_INTERNAL_INIT(comb);
     }
 
-    if (db_version(gedp->ged_wdbp->dbip) < 5) {
-       if (dp == RT_DIR_NULL)
-           bu_strlcpy(new_name_v4, comb_name, NAMESIZE+1);
-       else
-           bu_strlcpy(new_name_v4, dp->d_namep, NAMESIZE+1);
-       dir_name = new_name_v4;
-    } else {
-       if (dp == RT_DIR_NULL)
-           dir_name = comb_name;
-       else
-           dir_name = dp->d_namep;
-    }
-
-    if (bu_str_true(argv[2]))
-       comb->region_flag = 1;
-    else
-       comb->region_flag = 0;
-
-    if (comb->region_flag) {
+    /* if is_region */
+    if (bu_str_true(argv[2])) {
        if (argc != 11) {
            bu_vls_printf(gedp->ged_result_str, "region_flag is set, incorrect 
number of arguments supplied.\n");
-           bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], 
regionusage);
+           bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", cmd_name, 
regionusage);
            return GED_ERROR;
        }
 
+       comb->region_flag = 1;
        comb->region_id = atoi(argv[3]);
        comb->aircode = atoi(argv[4]);
        comb->GIFTmater = atoi(argv[5]);
@@ -580,25 +554,37 @@
        offset = 6;
     } else {
        if (argc != 7) {
-           bu_vls_printf(gedp->ged_result_str, "region_flag is not set, 
incorrect number of arguments supplied.\n");
-           bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], 
noregionusage);
+           bu_vls_printf(gedp->ged_result_str, "region_flag not set, incorrect 
number of arguments supplied.\n");
+           bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", cmd_name, 
noregionusage);
            return GED_ERROR;
        }
+
+       comb->region_flag = 0;
        offset = 2;
     }
 
-    put_rgb_into_comb(comb, argv[offset + 1]);
-    bu_vls_strcpy(&comb->shader, argv[offset +2]);
+    color = argv[offset + 1];
+    shader = argv[offset + 2];
+    inherit = argv[offset + 3];
+    expression = argv[offset + 4];
 
-    if (bu_str_true(argv[offset + 3]))
+    put_rgb_into_comb(comb, color);
+    bu_vls_strcpy(&comb->shader, shader);
+
+    if (bu_str_true(inherit))
        comb->inherit = 1;
     else
        comb->inherit = 0;
 
-    if (put_tree_into_comb_and_export(gedp, comb, dp, comb_name, dir_name, 
argv[offset + 4]) == GED_ERROR) {
-       if (comb && dp) {
+    if (dp)
+       dir_name = dp->d_namep;
+    else
+       dir_name = comb_name;
+
+    if (put_tree_into_comb_and_export(gedp, comb, dp, comb_name, dir_name, 
expression) == GED_ERROR) {
+       if (dp) {
            restore_comb(gedp, dp, saved_name);
-           bu_vls_printf(gedp->ged_result_str, "%s: \toriginal restored\n", 
argv[0]);
+           bu_vls_printf(gedp->ged_result_str, "%s: \toriginal restored\n", 
cmd_name);
        }
        return GED_ERROR;
     } else if (save_comb_flag) {

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