[brlcad-commits] SF.net SVN: brlcad:[32586] brlcad/trunk/src
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <br...@us...> - 2008-09-06 05:45:33
|
Revision: 32586 http://brlcad.svn.sourceforge.net/brlcad/?rev=32586&view=rev Author: brlcad Date: 2008-09-06 05:45:44 +0000 (Sat, 06 Sep 2008) Log Message: ----------- add a stub interface for commands (like 'db') that don't exist until after other commands are run (e.g. opendb). this lets us get help on commands even if they don't exactly exist Modified Paths: -------------- brlcad/trunk/src/libged/wdb_obj.c brlcad/trunk/src/mged/cmd.c brlcad/trunk/src/mged/cmd.h brlcad/trunk/src/mged/setup.c Modified: brlcad/trunk/src/libged/wdb_obj.c =================================================================== --- brlcad/trunk/src/libged/wdb_obj.c 2008-09-06 05:40:58 UTC (rev 32585) +++ brlcad/trunk/src/libged/wdb_obj.c 2008-09-06 05:45:44 UTC (rev 32586) @@ -264,6 +264,7 @@ static int wdb_rmap_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int wdb_importFg4Section_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); static int wdb_newcmds_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); +static int wdb_stub_tcl(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[]); void wdb_deleteProc(ClientData clientData); static void wdb_deleteProc_rt(ClientData clientData); @@ -325,6 +326,7 @@ {"concat", wdb_concat_tcl}, {"copyeval", wdb_copyeval_tcl}, {"cp", wdb_copy_tcl}, + {"db", wdb_stub_tcl}, {"dbip", wdb_dbip_tcl}, {"dump", wdb_dump_tcl}, {"dup", wdb_dup_tcl}, @@ -1925,8 +1927,47 @@ /** * + */ +int +wdb_stub_cmd(struct rt_wdb *wdbp, + Tcl_Interp *interp, + int argc, + char *argv[]) +{ + if (argc != 1) { + struct bu_vls vls; + bu_vls_init(&vls); + bu_vls_printf(&vls, "helplib_alias wdb_%s %s", argv[0], argv[0]); + Tcl_Eval(interp, bu_vls_addr(&vls)); + bu_vls_free(&vls); + return TCL_ERROR; + } + + Tcl_AppendResult(interp, "%s: no database is currently opened!", argv[0], (char *)NULL); + return TCL_ERROR; +} + +/** + * Stub command callback for commands that only exist after a database + * is opened (e.g., db). * + * @returns false */ +static int +wdb_stub_tcl(ClientData clientData, + Tcl_Interp *interp, + int argc, + char *argv[]) +{ + struct rt_wdb *wdbp = (struct rt_wdb *)clientData; + + return wdb_stub_cmd(wdbp, interp, argc-1, argv+1); +} + +/** + * + * + */ int wdb_dbip_cmd(struct rt_wdb *wdbp, Tcl_Interp *interp, Modified: brlcad/trunk/src/mged/cmd.c =================================================================== --- brlcad/trunk/src/mged/cmd.c 2008-09-06 05:40:58 UTC (rev 32585) +++ brlcad/trunk/src/mged/cmd.c 2008-09-06 05:45:44 UTC (rev 32586) @@ -3052,6 +3052,17 @@ return TCL_OK; } +int +cmd_stub(ClientData clientData, + Tcl_Interp *interp, + int argc, + char **argv) +{ + CHECK_DBI_NULL; + + return wdb_stub_cmd(wdbp, interp, argc, argv); +} + /* * Local Variables: * mode: C Modified: brlcad/trunk/src/mged/cmd.h =================================================================== --- brlcad/trunk/src/mged/cmd.h 2008-09-06 05:40:58 UTC (rev 32585) +++ brlcad/trunk/src/mged/cmd.h 2008-09-06 05:45:44 UTC (rev 32586) @@ -125,6 +125,7 @@ MGED_EXTERN(int cmd_size, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int cmd_solid_report, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int cmd_solids_on_ray, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); +MGED_EXTERN(int cmd_stub, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int cmd_stuff_str, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int cmd_summary, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); MGED_EXTERN(int cmd_title, (ClientData clientData, Tcl_Interp *interp, int argc, char **argv)); Modified: brlcad/trunk/src/mged/setup.c =================================================================== --- brlcad/trunk/src/mged/setup.c 2008-09-06 05:40:58 UTC (rev 32585) +++ brlcad/trunk/src/mged/setup.c 2008-09-06 05:45:44 UTC (rev 32586) @@ -111,6 +111,7 @@ {"cpi", f_copy_inv}, {"d", cmd_erase}, {"dall", cmd_erase_all}, + {"db", cmd_stub}, {"db_glob", cmd_mged_glob}, {"dbconcat", cmd_concat}, {"dbfind", cmd_find}, @@ -149,11 +150,11 @@ {"eye_pt", cmd_eye_pt}, {"facedef", f_facedef}, {"facetize", f_facetize}, - {"form", cmd_form}, + {"form", cmd_form}, {"fracture", f_fracture}, - {"front", bv_front}, + {"front", bv_front}, {"g", cmd_group}, - {"get", cmd_get}, + {"get", cmd_get}, {"get_autoview", cmd_get_autoview}, {"get_comb", cmd_get_comb}, {"get_dbip", cmd_get_ptr}, @@ -254,7 +255,7 @@ {"preview", f_preview}, {"ps", f_ps}, {"push", cmd_push}, - {"put", cmd_put}, + {"put", cmd_put}, {"put_comb", cmd_put_comb}, {"put_sed", f_put_sedit}, {"putmat", f_putmat}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |