Revision: 33438
          http://brlcad.svn.sourceforge.net/brlcad/?rev=33438&view=rev
Author:   bob1961
Date:     2008-12-31 20:04:40 +0000 (Wed, 31 Dec 2008)

Log Message:
-----------
Split out the arg parsing into separate functions.

Modified Paths:
--------------
    brlcad/trunk/src/libged/arot.c
    brlcad/trunk/src/libged/rot.c
    brlcad/trunk/src/libged/scale.c
    brlcad/trunk/src/libged/tra.c

Modified: brlcad/trunk/src/libged/arot.c
===================================================================
--- brlcad/trunk/src/libged/arot.c      2008-12-31 20:03:49 UTC (rev 33437)
+++ brlcad/trunk/src/libged/arot.c      2008-12-31 20:04:40 UTC (rev 33438)
@@ -33,9 +33,8 @@
 #include "ged_private.h"
 
 int
-ged_arot(struct ged *gedp, int argc, const char *argv[])
+ged_arot_args(struct ged *gedp, int argc, const char *argv[], mat_t rmat)
 {
-    mat_t rmat;
     point_t pt;
     vect_t axis;
     fastf_t angle;
@@ -60,30 +59,41 @@
     }
 
     if (sscanf(argv[1], "%lf", &axis[X]) != 1) {
-       bu_vls_printf(&gedp->ged_result_str, "ged_arot: bad X value - %s\n", 
argv[1]);
+       bu_vls_printf(&gedp->ged_result_str, "%s: bad X value - %s\n", argv[0], 
argv[1]);
        return BRLCAD_ERROR;
     }
 
     if (sscanf(argv[2], "%lf", &axis[Y]) != 1) {
-       bu_vls_printf(&gedp->ged_result_str, "ged_arot: bad Y value - %s\n", 
argv[2]);
+       bu_vls_printf(&gedp->ged_result_str, "%s: bad Y value - %s\n", argv[0], 
argv[2]);
        return BRLCAD_ERROR;
     }
 
     if (sscanf(argv[3], "%lf", &axis[Z]) != 1) {
-       bu_vls_printf(&gedp->ged_result_str, "ged_arot: bad Z value - %s\n", 
argv[3]);
+       bu_vls_printf(&gedp->ged_result_str, "%s: bad Z value - %s\n", argv[0], 
argv[3]);
        return BRLCAD_ERROR;
     }
 
     if (sscanf(argv[4], "%lf", &angle) != 1) {
-       bu_vls_printf(&gedp->ged_result_str, "ged_arot: bad angle - %s\n", 
argv[4]);
+       bu_vls_printf(&gedp->ged_result_str, "%s: bad angle - %s\n", argv[0], 
argv[4]);
        return BRLCAD_ERROR;
     }
 
     VSETALL(pt, 0.0);
     VUNITIZE(axis);
-
     bn_mat_arb_rot(rmat, pt, axis, angle*bn_degtorad);
 
+    return BRLCAD_OK;
+}
+
+int
+ged_arot(struct ged *gedp, int argc, const char *argv[])
+{
+    int ret;
+    mat_t rmat;
+
+    if ((ret = ged_arot_args(gedp, argc, argv, rmat)) != BRLCAD_OK)
+       return ret;
+
     return ged_do_rot(gedp, gedp->ged_gvp->gv_coord, rmat, (int (*)())0);
 }
 

Modified: brlcad/trunk/src/libged/rot.c
===================================================================
--- brlcad/trunk/src/libged/rot.c       2008-12-31 20:03:49 UTC (rev 33437)
+++ brlcad/trunk/src/libged/rot.c       2008-12-31 20:04:40 UTC (rev 33438)
@@ -33,11 +33,9 @@
 #include "ged_private.h"
 
 int
-ged_rot(struct ged *gedp, int argc, const char *argv[])
+ged_rot_args(struct ged *gedp, int argc, const char *argv[], char *coord, 
mat_t rmat)
 {
     vect_t rvec;
-    mat_t rmat;
-    char coord;
     static const char *usage = "[-m|-v] x y z";
 
     GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR);
@@ -55,11 +53,11 @@
 
     /* process possible coord flag */
     if (argv[1][0] == '-' && (argv[1][1] == 'v' || argv[1][1] == 'm') && 
argv[1][2] == '\0') {
-       coord = argv[1][1];
+       *coord = argv[1][1];
        --argc;
        ++argv;
     } else
-       coord = gedp->ged_gvp->gv_coord;
+       *coord = gedp->ged_gvp->gv_coord;
 
     if (argc != 2 && argc != 4) {
        bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
@@ -91,6 +89,19 @@
     VSCALE(rvec, rvec, -1.0);
     bn_mat_angles(rmat, rvec[X], rvec[Y], rvec[Z]);
 
+    return BRLCAD_OK;
+}
+
+int
+ged_rot(struct ged *gedp, int argc, const char *argv[])
+{
+    int ret;
+    char coord;
+    mat_t rmat;
+
+    if ((ret = ged_rot_args(gedp, argc, argv, &coord, rmat)) != BRLCAD_OK)
+       return ret;
+
     return ged_do_rot(gedp, coord, rmat, (int (*)())0);
 }
 

Modified: brlcad/trunk/src/libged/scale.c
===================================================================
--- brlcad/trunk/src/libged/scale.c     2008-12-31 20:03:49 UTC (rev 33437)
+++ brlcad/trunk/src/libged/scale.c     2008-12-31 20:04:40 UTC (rev 33438)
@@ -34,9 +34,8 @@
 
 
 int
-ged_scale(struct ged *gedp, int argc, const char *argv[])
+ged_scale_args(struct ged *gedp, int argc, const char *argv[], fastf_t *sf)
 {
-    fastf_t sf;
     static const char *usage = "sf";
 
     GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR);
@@ -49,32 +48,44 @@
     /* must be wanting help */
     if (argc == 1) {
        bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return BRLCAD_OK;
+       return BRLCAD_HELP;
     }
 
-    /* scale the view */
-    if (argc == 2) {
-       if (sscanf(argv[1], "%lf", &sf) != 1) {
-           bu_vls_printf(&gedp->ged_result_str, "bad scale factor - %s", 
argv[1]);
-           return BRLCAD_ERROR;
-       }
+    if (argc != 2) {
+       bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return BRLCAD_ERROR;
+    }
 
-       if (sf <= SMALL_FASTF || INFINITY < sf)
-           return BRLCAD_OK;
+    if (sscanf(argv[1], "%lf", &sf) != 1) {
+       bu_vls_printf(&gedp->ged_result_str, "bad scale factor - %s", argv[1]);
+       return BRLCAD_ERROR;
+    }
 
-       gedp->ged_gvp->gv_scale *= sf;
+    return BRLCAD_OK;
+}
 
-       if (gedp->ged_gvp->gv_scale < RT_MINVIEWSIZE)
-           gedp->ged_gvp->gv_scale = RT_MINVIEWSIZE;
-       gedp->ged_gvp->gv_size = 2.0 * gedp->ged_gvp->gv_scale;
-       gedp->ged_gvp->gv_isize = 1.0 / gedp->ged_gvp->gv_size;
-       ged_view_update(gedp->ged_gvp);
+int
+ged_scale(struct ged *gedp, int argc, const char *argv[])
+{
+    int ret;
+    fastf_t sf;
 
+    if ((ret = ged_scale_args(gedp, argc, argv, &sf)) != BRLCAD_OK)
+       return ret;
+
+    if (sf <= SMALL_FASTF || INFINITY < sf)
        return BRLCAD_OK;
-    }
 
-    bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-    return BRLCAD_ERROR;
+    /* scale the view */
+    gedp->ged_gvp->gv_scale *= sf;
+
+    if (gedp->ged_gvp->gv_scale < RT_MINVIEWSIZE)
+       gedp->ged_gvp->gv_scale = RT_MINVIEWSIZE;
+    gedp->ged_gvp->gv_size = 2.0 * gedp->ged_gvp->gv_scale;
+    gedp->ged_gvp->gv_isize = 1.0 / gedp->ged_gvp->gv_size;
+    ged_view_update(gedp->ged_gvp);
+
+    return BRLCAD_OK;
 }
 
 

Modified: brlcad/trunk/src/libged/tra.c
===================================================================
--- brlcad/trunk/src/libged/tra.c       2008-12-31 20:03:49 UTC (rev 33437)
+++ brlcad/trunk/src/libged/tra.c       2008-12-31 20:04:40 UTC (rev 33438)
@@ -33,10 +33,8 @@
 #include "ged_private.h"
 
 int
-ged_tra(struct ged *gedp, int argc, const char *argv[])
+ged_tra_args(struct ged *gedp, int argc, const char *argv[], char *coord, 
vect_t tvec)
 {
-    vect_t tvec;
-    char coord;
     static const char *usage = "[-m|-v] x y z";
 
     GED_CHECK_DATABASE_OPEN(gedp, BRLCAD_ERROR);
@@ -54,11 +52,11 @@
 
     /* process possible coord flag */
     if (argv[1][0] == '-' && (argv[1][1] == 'v' || argv[1][1] == 'm') && 
argv[1][2] == '\0') {
-       coord = argv[1][1];
+       *coord = argv[1][1];
        --argc;
        ++argv;
     } else
-       coord = gedp->ged_gvp->gv_coord;
+       *coord = gedp->ged_gvp->gv_coord;
 
     if (argc != 2 && argc != 4) {
        bu_vls_printf(&gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
@@ -72,21 +70,34 @@
        }
     } else {
        if (sscanf(argv[1], "%lf", &tvec[X]) != 1) {
-           bu_vls_printf(&gedp->ged_result_str, "tra: bad X value %s\n", 
argv[1]);
+           bu_vls_printf(&gedp->ged_result_str, "%s: bad X value %s\n", 
argv[0], argv[1]);
            return BRLCAD_ERROR;
        }
 
        if (sscanf(argv[2], "%lf", &tvec[Y]) != 1) {
-           bu_vls_printf(&gedp->ged_result_str, "tra: bad Y value %s\n", 
argv[2]);
+           bu_vls_printf(&gedp->ged_result_str, "%s: bad Y value %s\n", 
argv[0], argv[2]);
            return BRLCAD_ERROR;
        }
 
        if (sscanf(argv[3], "%lf", &tvec[Z]) != 1) {
-           bu_vls_printf(&gedp->ged_result_str, "tra: bad Z value %s\n", 
argv[3]);
+           bu_vls_printf(&gedp->ged_result_str, "%s: bad Z value %s\n", 
argv[0], argv[3]);
            return BRLCAD_ERROR;
        }
     }
 
+    return BRLCAD_OK;
+}
+
+int
+ged_tra(struct ged *gedp, int argc, const char *argv[])
+{
+    int ret;
+    char coord;
+    vect_t tvec;
+
+    if ((ret = ged_tra_args(gedp, argc, argv, &coord, tvec)) != BRLCAD_OK)
+       return ret;
+
     return ged_do_tra(gedp, coord, tvec, (int (*)())0);
 }
 


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

------------------------------------------------------------------------------
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to