(file) Return to smpl_02.c CVS log (file) (dir) Up to [Development] / JSOC / proj / cookbook

 1 rick  1.1 /*
 2            *  smpl_02.c						$DRMS/proj/cookbook/
 3            *
 4 rick  1.2  *  Annother simple module that does nothing but echo back the values of
 5            *    arguments. It illustrates the use of command line parsing and the
 6            *    variety of argument types; also introduces time string functions
 7 rick  1.1  *
 8            *  Usage:
 9 rick  1.2  *    smpl_02 [-avVH]
10            *
11            *  Bugs:
12            *    The module is of no particular use, and exists merely for heuristic
13            *      and testing purposes.
14 rick  1.1  *
15            *  Revision history is at end of file.
16            */
17           
18 rick  1.2 #include <jsoc_main.h>
19 rick  1.1 char *module_name = "CookbookRecipe:02";
20           char *version_id = "1.0";
21           
22           ModuleArgs_t module_args[] = {
23 rick  1.2   {ARG_STRING,	"name",	"Not Specified", "a string"}, 
24             {ARG_INT,	"ival",	"1", "a positive integer", "[1,)"},
25             {ARG_INTS,	"iptr", "[0]", "array of integers"},
26             {ARG_FLOAT,	"fval",	"0.0", "a real number"},
27             {ARG_FLOAT,	"fvalns", "Unspecified", "a real number"},
28             {ARG_FLOATS,	"fptr", "{2.71828, 3.14159, -1}", "array of real numbers"},
29             {ARG_TIME,	"time", "1582.10.5_00:00:00",
30                 "a time, in standard date_time format"},
31             {ARG_NUME, "colour", "", "enumerated choice without a default",
32                 "red, orange, yellow, green, blue, indigo, violet"},
33             {ARG_NUME, "mois", "Brumaire", "enumerated choice with a default",
34                 "Vendémiaire, Brumaire, Frimaire, Nivôse, Pluviôse, Ventôse, Germinal, \
35                 Florial, Prairial, Messidor, Thermidor, Fructidor"},
36             {ARG_FLAG,	"e",	"", "a flag value"}, 
37 rick  1.1   {ARG_END}
38           };
39           
40           int DoIt (void) {
41             CmdParams_t *params = &cmdparams;
42 rick  1.2   double *fpval;
43             int *ipval;
44             int i, fpvals, ipvals;
45             char *colours[] = {"red", "orange", "yellow", "green", "blue", "violet"};
46             char *moiss[] = {"Vendémiaire", "Brumaire", "Frimaire", "Nivôse", "Pluviôse",
47                 "Ventôse", "Germinal", "Florial", "Prairial", "Messidor", "Thermidor",
48                 "Fructidor"};
49             char key[64], tbuf[64];
50           
51             TIME tval = params_get_time (params, "time");
52             double fval = params_get_double (params, "fval");
53             int ival = params_get_int (params, "ival");
54             int colour = params_get_int (params, "colour");
55             int mois = params_get_int (params, "mois");
56 rick  1.3   char *name = strdup (params_get_str (params, "name"));
57 rick  1.2   int flagset = params_isflagset (params, "e");
58           
59             printf ("name = %s\n", name);
60             printf ("fval = %g\n", fval);
61             printf ("ival = %d\n", ival);
62             sprint_time (tbuf, tval, "UT", 3);
63             printf ("time = %s\n", tbuf);
64             printf ("colour = %d (%s)\n", colour, colours[colour]);
65             printf ("mois = %d (%s)\n", mois, moiss[mois]);
66             printf ("-e? : %d\n", flagset);
67           
68             printf ("fpvals = %d\n", fpvals = params_get_int (params, "fptr_nvals"));
69             fpval = (double *)malloc (fpvals * sizeof (double));
70             for (i = 0; i < fpvals; i++) {
71               sprintf (key, "fptr_%d_value", i);
72               fpval[i] = params_get_double (params, key);
73               printf ("fpval[%d] = %g\n", i, fpval[i]);
74 rick  1.1   }
75 rick  1.2   printf ("ipvals = %d\n", ipvals = params_get_int (params, "iptr_nvals"));
76             ipval = (int *)malloc (ipvals * sizeof (int));
77             for (i = 0; i < ipvals; i++) {
78               sprintf (key, "iptr_%d_value", i);
79               ipval[i] = params_get_int (params, key);
80               printf ("ipval[%d] = %d\n", i, ipval[i]);
81 rick  1.1   }
82           
83 rick  1.2   return (0);
84 rick  1.1 }
85           
86           /*
87            *  Revision History
88            *
89 rick  1.2  *  07.02.27	created by RSB, based on original using SSSC API
90            *  09.04.14	minor mods to illustrate additional features of arg parsing
91 rick  1.1  */

Karen Tian
Powered by
ViewCVS 0.9.4