Revision: 76097
http://sourceforge.net/p/brlcad/code/76097
Author: starseeker
Date: 2020-06-10 00:34:25 +0000 (Wed, 10 Jun 2020)
Log Message:
-----------
Set up help reporting for the commands
Modified Paths:
--------------
brlcad/branches/bioh/src/burst2/burst.cpp
Modified: brlcad/branches/bioh/src/burst2/burst.cpp
===================================================================
--- brlcad/branches/bioh/src/burst2/burst.cpp 2020-06-09 23:39:47 UTC (rev
76096)
+++ brlcad/branches/bioh/src/burst2/burst.cpp 2020-06-10 00:34:25 UTC (rev
76097)
@@ -49,6 +49,25 @@
#define DEFAULT_BURST_PROMPT "burst> "
+
+#define PURPOSEFLAG "--print-purpose"
+#define HELPFLAG "--print-help"
+static int
+_burst_cmd_msgs(void *UNUSED(bs), int argc, const char **argv, const char *us,
const char *ps)
+{
+ //struct burst_state *s = (struct burst_state *)bs;
+ if (argc == 2 && BU_STR_EQUAL(argv[1], HELPFLAG)) {
+ printf("Usage: %s\n%s\n", us, ps);
+ return 1;
+ }
+ if (argc == 2 && BU_STR_EQUAL(argv[1], PURPOSEFLAG)) {
+ printf("%s\n", ps);
+ return 1;
+ }
+ return 0;
+}
+
+
void
burst_state_init(struct burst_state *s)
{
@@ -171,6 +190,12 @@
extern "C" int
_burst_cmd_attack_dir(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "attack-direction azim_angle elev_angle";
+ const char *purpose_string = "specify azimuth and elevation of attack
relative to target";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
struct bu_vls msg = BU_VLS_INIT_ZERO;
@@ -202,6 +227,12 @@
extern "C" int
_burst_cmd_critical_comp_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "critical-comp-file file";
+ const char *purpose_string = "input critical component idents from file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -234,6 +265,12 @@
extern "C" int
_burst_cmd_deflect_spall_cone (void *bs, int argc, const char **argv)
{
+ const char *usage_string = "deflect-spall-cone flag";
+ const char *purpose_string = "deflect axis of spall cone half way towards
exit normal";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -259,6 +296,12 @@
extern "C" int
_burst_cmd_dither_cells(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "dither-cells flag";
+ const char *purpose_string = "if yes, randomly offset shotline within grid
cell";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -282,8 +325,14 @@
}
extern "C" int
-_burst_cmd_enclose_target(void *bs, int UNUSED(argc), const char
**UNUSED(argv))
+_burst_cmd_enclose_target(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "enclose-target";
+ const char *purpose_string = "generate rectangular grid of shotlines for
full target envelope";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
s->firemode = FM_GRID;
return BRLCAD_OK;
@@ -292,6 +341,12 @@
extern "C" int
_burst_cmd_enclose_portion(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "enclose-portion left right bottom top";
+ const char *purpose_string = "generate partial envelope by specifying grid
boundaries";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -338,6 +393,12 @@
extern "C" int
_burst_cmd_error_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "error-file file";
+ const char *purpose_string = "divert all diagnostics to file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -371,8 +432,14 @@
}
extern "C" int
-_burst_cmd_execute(void *bs, int UNUSED(argc), const char **UNUSED(argv))
+_burst_cmd_execute(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "execute";
+ const char *purpose_string = "initiate a run (no output produced without
this command)";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s) return BRLCAD_ERROR;
@@ -391,6 +458,12 @@
extern "C" int
_burst_cmd_grid_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "grid-file file";
+ const char *purpose_string = "save shotline locations (Y' Z') in file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -425,6 +498,12 @@
extern "C" int
_burst_cmd_ground_plane(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "ground-plane flag [Z +X -X +Y -Y]";
+ const char *purpose_string = "if yes, burst on ground";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -494,12 +573,37 @@
{
struct burst_state *s = (struct burst_state *)bs;
- if (!s || !argc || !argv) return BRLCAD_ERROR;
+ if (argc == 1 || BU_STR_EQUAL(argv[1], "help")) {
+ printf("Available commands:\n");
+ const struct bu_cmdtab *ctp = NULL;
+ int ret;
+ const char *helpflag[2];
+ helpflag[1] = PURPOSEFLAG;
+ size_t maxcmdlen = 0;
+ for (ctp = s->cmds; ctp->ct_name != (char *)NULL; ctp++) {
+ maxcmdlen = (maxcmdlen > strlen(ctp->ct_name)) ? maxcmdlen :
strlen(ctp->ct_name);
+ }
+ for (ctp = s->cmds; ctp->ct_name != (char *)NULL; ctp++) {
+ printf(" %s%*s", ctp->ct_name, (int)(maxcmdlen -
strlen(ctp->ct_name)) + 2, " ");
+ if (!BU_STR_EQUAL(ctp->ct_name, "help")) {
+ helpflag[0] = ctp->ct_name;
+ bu_cmd(s->cmds, 2, helpflag, 0, (void *)s, &ret);
+ } else {
+ printf("print help\n");
+ }
+ }
+ } else {
+ int ret;
+ const char **helpargv = (const char **)bu_calloc(argc+1, sizeof(char
*), "help argv");
+ helpargv[0] = argv[1];
+ helpargv[1] = HELPFLAG;
+ for (int i = 2; i < argc; i++) {
+ helpargv[i+1] = argv[i];
+ }
+ bu_cmd(s->cmds, argc, helpargv, 0, (void *)s, &ret);
+ bu_free(helpargv, "help argv");
+ }
- const struct bu_cmdtab *ctp = NULL;
- for (ctp = s->cmds; ctp->ct_name != (char *)NULL; ctp++) {
- printf("%s\n", ctp->ct_name);
- }
return BRLCAD_OK;
}
@@ -506,6 +610,12 @@
extern "C" int
_burst_cmd_burst_air_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "burst-air-file file";
+ const char *purpose_string = "input burst air idents from file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -537,6 +647,12 @@
extern "C" int
_burst_cmd_histogram_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "histogram-file file";
+ const char *purpose_string = "write hit frequency histogram to file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -572,6 +688,12 @@
extern "C" int
_burst_cmd_image_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "image-file file";
+ const char *purpose_string = "generate frame buffer image on a specified
file or device";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -588,6 +710,12 @@
extern "C" int
_burst_cmd_input_2d_shot(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "input-2d-shot Y' Z'";
+ const char *purpose_string = "input single shotline location as grid
offsets";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -621,6 +749,12 @@
extern "C" int
_burst_cmd_input_3d_shot(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "input-3d-shot X Y Z";
+ const char *purpose_string = "input single shotline location in target
coordinates";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -661,6 +795,12 @@
extern "C" int
_burst_cmd_max_barriers(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "max-barriers count";
+ const char *purpose_string = "specify the maximum number of components to
report along spall ray";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -683,6 +823,12 @@
extern "C" int
_burst_cmd_max_spall_rays(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "max-spall-rays count";
+ const char *purpose_string = "specify the desired number of spall rays
generated per burst point";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -705,6 +851,12 @@
extern "C" int
_burst_cmd_plot_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "plot-file file";
+ const char *purpose_string = "generate plot data in file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -715,7 +867,7 @@
}
bu_vls_sprintf(&s->plotfile, "%s", argv[1]);
-
+
return BRLCAD_OK;
}
@@ -722,6 +874,12 @@
extern "C" int
_burst_cmd_quit(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "quit";
+ const char *purpose_string = "quit the appliation";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -734,6 +892,12 @@
extern "C" int
_burst_cmd_read_2d_shot_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "read-2d-shot-file file";
+ const char *purpose_string = "read shot locations from file as grid
offsets (see input-2d-shot)";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -770,6 +934,12 @@
extern "C" int
_burst_cmd_read_3d_shot_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "read-3d-shot-file file";
+ const char *purpose_string = "read shot locations from file in target
coordinates (see input-3d-shot)";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -799,7 +969,7 @@
}
s->firemode = FM_SHOT | FM_FILE | FM_3DIM;
-
+
return BRLCAD_OK;
}
@@ -806,6 +976,12 @@
extern "C" int
_burst_cmd_burst_armor_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "burst-armor-file file";
+ const char *purpose_string = "input burst armor idents from file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -837,6 +1013,12 @@
extern "C" int
_burst_cmd_read_burst_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "read-burst-file file";
+ const char *purpose_string = "read burst point locations from file (see
burst-coordinates)";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -873,6 +1055,12 @@
extern "C" int
_burst_cmd_read_input_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "read-input-file file";
+ const char *purpose_string = "read key word commands from file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -893,6 +1081,12 @@
extern "C" int
_burst_cmd_report_overlaps(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "report-overlaps file";
+ const char *purpose_string = "if yes, log overlap diagnostics";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -918,6 +1112,12 @@
extern "C" int
_burst_cmd_shotline_burst(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "shotline-burst flag";
+ const char *purpose_string = "if yes, generate burst points along
shotlines";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -963,6 +1163,12 @@
extern "C" int
_burst_cmd_shotline_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "shotline-file file";
+ const char *purpose_string = "output shot line data to file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -999,6 +1205,12 @@
extern "C" int
_burst_cmd_target_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "target-file file";
+ const char *purpose_string = "read BRL-CAD database from file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -1015,6 +1227,12 @@
extern "C" int
_burst_cmd_target_objects(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "target-objects object0 [object1 object2 ...]";
+ const char *purpose_string = "list objects from BRL-CAD database to
interrogate";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -1031,6 +1249,12 @@
extern "C" int
_burst_cmd_units(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "units name";
+ const char *purpose_string = "linear units (inches, feet, millimeters,
centimeters,meters)";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -1053,6 +1277,12 @@
extern "C" int
_burst_cmd_write_input_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "write-input-file file";
+ const char *purpose_string = "save script of commands in file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -1076,6 +1306,12 @@
extern "C" int
_burst_cmd_burst_coordinates(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "burst-coordinates X Y Z";
+ const char *purpose_string = "input single burst point location in target
coordinates";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -1115,6 +1351,12 @@
extern "C" int
_burst_cmd_burst_distance(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "burst-distance distance";
+ const char *purpose_string = "offset burst point along shotline";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -1139,6 +1381,12 @@
extern "C" int
_burst_cmd_burst_file(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "burst-file file";
+ const char *purpose_string = "output burst point library to file";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
@@ -1174,6 +1422,12 @@
extern "C" int
_burst_cmd_cell_size(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "cell-size distance";
+ const char *purpose_string = "specify shotline separation (equidistant
horizontal and vertical)";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -1198,7 +1452,13 @@
extern "C" int
_burst_cmd_color_file(void *bs, int argc, const char **argv)
{
- int ret = BRLCAD_OK;
+ const char *usage_string = "color-file file";
+ const char *purpose_string = "input ident to color mapping from file (for
graphics)";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
+ int ret = BRLCAD_OK;
struct burst_state *s = (struct burst_state *)bs;
if (!s || !argc || !argv) return BRLCAD_ERROR;
@@ -1217,7 +1477,7 @@
// TODO readColors
printf("Reading ident-to-color mappings... done.\n");
-
+
fclose(colorfp);
return ret;
@@ -1226,6 +1486,12 @@
extern "C" int
_burst_cmd_cone_half_angle(void *bs, int argc, const char **argv)
{
+ const char *usage_string = "cone-half-angle angle";
+ const char *purpose_string = "specify limiting angle for spall ray
generation";
+ if (_burst_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return BRLCAD_OK;
+ }
+
int ret = BRLCAD_OK;
struct bu_vls msg = BU_VLS_INIT_ZERO;
struct burst_state *s = (struct burst_state *)bs;
@@ -1266,6 +1532,8 @@
{ "max-spall-rays" , _burst_cmd_max_spall_rays },
{ "plot-file" , _burst_cmd_plot_file },
{ "quit" , _burst_cmd_quit },
+ { "q" , _burst_cmd_quit },
+ { "exit" , _burst_cmd_quit },
{ "read-2d-shot-file" , _burst_cmd_read_2d_shot_file },
{ "read-3d-shot-file" , _burst_cmd_read_3d_shot_file },
{ "burst-armor-file" , _burst_cmd_burst_armor_file },
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