Revision: 65239
http://sourceforge.net/p/brlcad/code/65239
Author: starseeker
Date: 2015-06-10 15:32:42 +0000 (Wed, 10 Jun 2015)
Log Message:
-----------
Implement bu_opt_bool using bu_str_true
Modified Paths:
--------------
brlcad/trunk/include/bu/opt.h
brlcad/trunk/src/libbu/opt.c
brlcad/trunk/src/libbu/tests/CMakeLists.txt
brlcad/trunk/src/libbu/tests/opt.c
Modified: brlcad/trunk/include/bu/opt.h
===================================================================
--- brlcad/trunk/include/bu/opt.h 2015-06-10 15:24:08 UTC (rev 65238)
+++ brlcad/trunk/include/bu/opt.h 2015-06-10 15:32:42 UTC (rev 65239)
@@ -162,8 +162,8 @@
BU_EXPORT extern int bu_opt_int(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
BU_EXPORT extern int bu_opt_fastf_t(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
BU_EXPORT extern int bu_opt_vls(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
+BU_EXPORT extern int bu_opt_bool(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
/* TODO - unimplemented */
-BU_EXPORT extern int bu_opt_bool(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
BU_EXPORT extern int bu_opt_long(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
BU_EXPORT extern int bu_opt_float(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
BU_EXPORT extern int bu_opt_double(struct bu_vls *msg, int argc, const char
**argv, void *set_var);
Modified: brlcad/trunk/src/libbu/opt.c
===================================================================
--- brlcad/trunk/src/libbu/opt.c 2015-06-10 15:24:08 UTC (rev 65238)
+++ brlcad/trunk/src/libbu/opt.c 2015-06-10 15:32:42 UTC (rev 65239)
@@ -580,6 +580,33 @@
return 1;
}
+int
+bu_opt_bool(struct bu_vls *msg, int argc, const char **argv, void *set_var)
+{
+ int *b_set = (int *)set_var;
+ int bool_val;
+
+ if (!argv || !argv[0] || strlen(argv[0]) == 0 || argc != 1 ) {
+ return 0;
+ }
+
+ bool_val = bu_str_true(argv[0]);
+
+ if (bool_val != 0 && bool_val != 1) {
+ if (msg) bu_vls_printf(msg, "Invalid input for boolean type: %s\n",
argv[0]);
+ return -1;
+ }
+
+ if (b_set) (*b_set) = bool_val;
+ return 1;
+}
+
+
+
+
+
+
+
/*
* Local Variables:
* mode: C
Modified: brlcad/trunk/src/libbu/tests/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libbu/tests/CMakeLists.txt 2015-06-10 15:24:08 UTC (rev
65238)
+++ brlcad/trunk/src/libbu/tests/CMakeLists.txt 2015-06-10 15:32:42 UTC (rev
65239)
@@ -460,7 +460,14 @@
add_test(NAME bu_opt_1_h_07 COMMAND tester_bu_opt 1 21)
add_test(NAME bu_opt_1_h_08 COMMAND tester_bu_opt 1 22)
add_test(NAME bu_opt_1_h_09 COMMAND tester_bu_opt 1 23)
+add_test(NAME bu_opt_1_h_10 COMMAND tester_bu_opt 1 24)
+add_test(NAME bu_opt_1_b_01 COMMAND tester_bu_opt 1 25)
+add_test(NAME bu_opt_1_b_02 COMMAND tester_bu_opt 1 26)
+add_test(NAME bu_opt_1_b_03 COMMAND tester_bu_opt 1 27)
+add_test(NAME bu_opt_1_b_04 COMMAND tester_bu_opt 1 28)
+
+
add_test(NAME bu_opt_2_color_00 COMMAND tester_bu_opt 2 0)
add_test(NAME bu_opt_2_color_01 COMMAND tester_bu_opt 2 1)
add_test(NAME bu_opt_2_color_02 COMMAND tester_bu_opt 2 2)
Modified: brlcad/trunk/src/libbu/tests/opt.c
===================================================================
--- brlcad/trunk/src/libbu/tests/opt.c 2015-06-10 15:24:08 UTC (rev 65238)
+++ brlcad/trunk/src/libbu/tests/opt.c 2015-06-10 15:32:42 UTC (rev 65239)
@@ -53,6 +53,7 @@
#define voff 0
#define hoff 15
+#define boff 25
void
set_msg_str(struct bu_vls *msg, int ac, const char **av)
@@ -147,12 +148,14 @@
{
static int print_help = 0;
static int verbosity = 0;
+ static int b = -1;
/* Option descriptions */
- struct bu_opt_desc d[4] = {
- {"h", "help", 0, 0, NULL, (void *)&print_help, "", help_str},
- {"?", "", 0, 0, NULL, (void *)&print_help, "", help_str},
- {"v", "verbosity", 0, 1, &d1_verb, (void *)&verbosity, "#", "Set
verbosity (range is 0 to 3)"},
+ struct bu_opt_desc d[5] = {
+ {"h", "help", 0, 0, NULL, (void *)&print_help, "",
help_str},
+ {"?", "", 0, 0, NULL, (void *)&print_help, "",
help_str},
+ {"v", "verbosity", 0, 1, &d1_verb, (void *)&verbosity, "#", "Set
verbosity (range is 0 to 3)"},
+ {"b", "bool", 1, 1, &bu_opt_bool, (void *)&b, "bool", "Set
verbosity (range is 0 to 3)"},
BU_OPT_DESC_NULL
};
@@ -356,6 +359,41 @@
ret = bu_opt_parse(&unknown, containers, &parse_msgs, ac, av, d);
EXPECT_FAILURE("print_help", "extra arg");
break;
+ case boff:
+ ac = 2;
+ av[0] = "-b";
+ av[1] = "true";
+ set_msg_str(&parse_msgs, ac, av);
+ ret = bu_opt_parse(&unknown, containers, &parse_msgs, ac, av, d);
+ EXPECT_SUCCESS_INT("bool", b, 1);
+ break;
+ case boff + 1:
+ ac = 2;
+ av[0] = "-b";
+ av[1] = "false";
+ set_msg_str(&parse_msgs, ac, av);
+ ret = bu_opt_parse(&unknown, containers, &parse_msgs, ac, av, d);
+ EXPECT_SUCCESS_INT("bool", b, 0);
+ break;
+ case boff + 2:
+ ac = 2;
+ av[0] = "--bool";
+ av[1] = "1";
+ set_msg_str(&parse_msgs, ac, av);
+ ret = bu_opt_parse(&unknown, containers, &parse_msgs, ac, av, d);
+ EXPECT_SUCCESS_INT("bool", b, 1);
+ break;
+ case boff + 3:
+ ac = 2;
+ av[0] = "--bool";
+ av[1] = "0";
+ set_msg_str(&parse_msgs, ac, av);
+ ret = bu_opt_parse(&unknown, containers, &parse_msgs, ac, av, d);
+ EXPECT_SUCCESS_INT("bool", b, 0);
+ break;
+ default:
+ bu_vls_printf(&parse_msgs, "unknown test: %d\n", test_num);
+ return -1;
}
if (ret > 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits