IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 31, 2007, 2:58:32 PM (19 years ago)
Author:
jhoblitt
Message:

convert to mulit-level option help

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/camtoolConfig.c

    r12237 r13578  
    154154            "define banana 1", NULL);
    155155    psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-code",  0,
    156             "set fault code (required)", 0);
     156            "set fault code", 0);
    157157    psMetadataAddBool(addprocessedexpArgs, PS_LIST_TAIL, "-faulted",  0,
    158158            "only return imfiles with a fault status set", false);
     
    199199            "name of a label to unmask", NULL);
    200200
    201 #define PXTOOL_MODE(option, modeval, argset) \
    202 { \
    203     int N = 0; \
    204     if ((N = psArgumentGet (argc, argv, option))) { \
    205         psArgumentRemove (N, &argc, argv); \
    206         if (config->mode) { \
    207             psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); \
    208             psFree(config); \
    209             return NULL; \
    210         } \
    211         config->mode = modeval; \
    212         config->args = psMemIncrRefCounter(argset); \
    213     } \
    214     if (!psMetadataAddMetadata(argSets, PS_LIST_TAIL, option, 0, NULL, argset)) {;\
    215         psError(PS_ERR_UNKNOWN, false, "failed to add argset for %s", option);\
    216     } \
    217     psFree(argset); \
    218 }
    219 
    220201    psMetadata *argSets = psMetadataAlloc();
    221     // find which mode we're running under
    222     PXTOOL_MODE("-queue",           CAMTOOL_MODE_QUEUE,         queueArgs);
    223     PXTOOL_MODE("-pendingexp",      CAMTOOL_MODE_PENDINGEXP,    pendingexpArgs);
    224     PXTOOL_MODE("-pendingimfile",CAMTOOL_MODE_PENDINGIMFILE, pendingimfileArgs);
    225     PXTOOL_MODE("-addprocessedexp", CAMTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);
    226     PXTOOL_MODE("-processedexp", CAMTOOL_MODE_PROCESSEDEXP,  processedexpArgs);
    227     PXTOOL_MODE("-updateprocessedexp", CAMTOOL_MODE_UPDATEPROCESSEDEXP,updateprocessedexpArgs);
    228     PXTOOL_MODE("-block",           CAMTOOL_MODE_BLOCK,         blockArgs);
    229     PXTOOL_MODE("-masked",          CAMTOOL_MODE_MASKED,        maskedArgs);
    230     PXTOOL_MODE("-unblock",         CAMTOOL_MODE_UNBLOCK,       unblockArgs);
    231 
    232     bool argErr = false;
    233     if (config->mode == CAMTOOL_MODE_NONE) {
    234         argErr = true;
    235         fprintf (stderr, "mode argument is required\n");
    236     } else if (! psArgumentParse(config->args, &argc, argv) || argc != 1) {
    237         argErr = true;
    238         fprintf (stderr, "error parsing arguments\n");
    239     }
    240 
    241     if (argErr) {
    242         printf("\nPan-STARRS Camera Tool\n");
    243         printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
    244         printf(" <mode> :\n\n");
    245 
    246         psMetadataIterator *iter = psMetadataIteratorAlloc(argSets, 0, NULL);
    247         psMetadataItem *item = NULL;
    248         while ((item = psMetadataGetAndIncrement(iter))) {
    249             if (!item->type == PS_DATA_METADATA) {
    250                 psAbort("all options must be specified as a metadata");            }
    251 
    252             fprintf(stdout, "%s ", item->name);
    253             psArgumentHelp(item->data.md);
    254         }
    255         psFree(iter);
    256 
     202    psMetadata *modes = psMetadataAlloc();
     203
     204    PXTOOL_ADD_MODE("-queue",               "", CAMTOOL_MODE_QUEUE,         queueArgs);
     205    PXTOOL_ADD_MODE("-pendingexp",          "", CAMTOOL_MODE_PENDINGEXP,    pendingexpArgs);
     206    PXTOOL_ADD_MODE("-pendingimfile",       "", CAMTOOL_MODE_PENDINGIMFILE, pendingimfileArgs);
     207    PXTOOL_ADD_MODE("-addprocessedexp",     "", CAMTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);
     208    PXTOOL_ADD_MODE("-processedexp",        "", CAMTOOL_MODE_PROCESSEDEXP,  processedexpArgs);
     209    PXTOOL_ADD_MODE("-updateprocessedexp",  "", CAMTOOL_MODE_UPDATEPROCESSEDEXP,updateprocessedexpArgs);
     210    PXTOOL_ADD_MODE("-block",               "", CAMTOOL_MODE_BLOCK,         blockArgs);
     211    PXTOOL_ADD_MODE("-masked",              "", CAMTOOL_MODE_MASKED,        maskedArgs);
     212    PXTOOL_ADD_MODE("-unblock",             "", CAMTOOL_MODE_UNBLOCK,       unblockArgs);
     213
     214    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
     215        psError(PS_ERR_UNKNOWN, true, "option parsing failed");
    257216        psFree(argSets);
     217        psFree(modes);
    258218        psFree(config);
    259219        return NULL;
     
    261221
    262222    psFree(argSets);
     223    psFree(modes);
    263224
    264225    // setup search criterion
     
    346307    }
    347308
    348     // save argv/argc
    349     config->argv = argv;
    350     config->argc = argc;
    351 
    352309    return config;
    353310}
Note: See TracChangeset for help on using the changeset viewer.