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/regtoolConfig.c

    r12347 r13578  
    9696        "define observation time", NULL);
    9797    psMetadataAddS8(addprocessedimfileArgs, PS_LIST_TAIL, "-code",  0,
    98         "set fault code (required)", 0);
     98        "set fault code", 0);
    9999
    100100    // -processedimfile
     
    179179        "define label for phase 2 processing (non-detrend data only)", NULL);
    180180    psMetadataAddS8(addprocessedexpArgs, PS_LIST_TAIL, "-code",  0,
    181         "set fault code (required)", 0);
     181        "set fault code", 0);
    182182    /*
    183183    psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-recip",  0,
     
    208208   
    209209
    210 #define PXTOOL_MODE(option, modeval, argset) \
    211 { \
    212     int N = 0; \
    213     if ((N = psArgumentGet (argc, argv, option))) { \
    214         psArgumentRemove (N, &argc, argv); \
    215         if (config->mode) { \
    216             psError(PXTOOLS_ERR_CONFIG, true, "only one mode selection is allowed"); \
    217             psFree(config); \
    218             return NULL; \
    219         } \
    220         config->mode = modeval; \
    221         config->args = psMemIncrRefCounter(argset); \
    222     } \
    223     if (!psMetadataAddMetadata(argSets, PS_LIST_TAIL, option, 0, NULL, argset)) {;\
    224         psError(PXTOOLS_ERR_PROG, false, "failed to add argset for %s", option);\
    225     } \
    226     psFree(argset); \
    227 }
    228 
    229210    psMetadata *argSets = psMetadataAlloc();
    230     // find which mode we're running under
    231     PXTOOL_MODE("-pendingimfile",   REGTOOL_MODE_PENDINGIMFILE, pendingimfileArgs);
    232     PXTOOL_MODE("-addprocessedimfile", REGTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs);
    233     PXTOOL_MODE("-processedimfile", REGTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs);
    234     PXTOOL_MODE("-updateprocessedimfile",  REGTOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs);
    235     PXTOOL_MODE("-pendingexp",      REGTOOL_MODE_PENDINGEXP,pendingexpArgs);
    236     PXTOOL_MODE("-addprocessedexp", REGTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);
    237     PXTOOL_MODE("-processedexp",    REGTOOL_MODE_PROCESSEDEXP, processedexpArgs);
    238     PXTOOL_MODE("-updateprocessedexp", REGTOOL_MODE_UPDATEPROCESSEDEXP,      updatedprocessedexpArgs);
    239 
    240     bool argErr = false;
    241     if (config->mode == REGTOOL_MODE_NONE) {
    242         psError(PXTOOLS_ERR_CONFIG, false, "missing mode argument");
    243         fprintf (stderr, "mode argument is required\n");
    244         argErr = true;
    245     } else if (! psArgumentParse(config->args, &argc, argv) || argc != 1) {
    246         psError(PXTOOLS_ERR_CONFIG, false, "unknown argument");
    247         fprintf (stderr, "error parsing arguments\n");
    248         argErr = true;
    249     }
    250 
    251     if (argErr) {
    252         printf("\nPan-STARRS Registration Tool\n");
    253         printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
    254         printf(" <mode> :\n\n");
    255 
    256         psMetadataIterator *iter = psMetadataIteratorAlloc(argSets, 0, NULL);
    257         psMetadataItem *item = NULL;
    258         while ((item = psMetadataGetAndIncrement(iter))) {
    259             if (!item->type == PS_DATA_METADATA) {
    260                 psAbort("all options must be specified as a metadata");            }
    261 
    262             fprintf(stdout, "%s ", item->name);
    263             psArgumentHelp(item->data.md);
    264         }
    265         psFree(iter);
    266 
     211    psMetadata *modes = psMetadataAlloc();
     212
     213    PXTOOL_ADD_MODE("-pendingimfile",           "", REGTOOL_MODE_PENDINGIMFILE, pendingimfileArgs);
     214    PXTOOL_ADD_MODE("-addprocessedimfile",      "",  REGTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs);
     215    PXTOOL_ADD_MODE("-processedimfile",         "", REGTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs);
     216    PXTOOL_ADD_MODE("-updateprocessedimfile",   "",   REGTOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs);
     217    PXTOOL_ADD_MODE("-pendingexp",              "",       REGTOOL_MODE_PENDINGEXP,pendingexpArgs);
     218    PXTOOL_ADD_MODE("-addprocessedexp",         "",  REGTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);
     219    PXTOOL_ADD_MODE("-processedexp",            "",     REGTOOL_MODE_PROCESSEDEXP, processedexpArgs);
     220    PXTOOL_ADD_MODE("-updateprocessedexp",      "",  REGTOOL_MODE_UPDATEPROCESSEDEXP,      updatedprocessedexpArgs);
     221
     222    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
     223        psError(PS_ERR_UNKNOWN, true, "option parsing failed");
    267224        psFree(argSets);
     225        psFree(modes);
    268226        psFree(config);
    269227        return NULL;
     
    271229
    272230    psFree(argSets);
     231    psFree(modes);
    273232
    274233    // setup search criterion
     
    333292    }
    334293
    335     // save argv/argc
    336     config->argv = argv;
    337     config->argc = argc;
    338 
    339294    return config;
    340295}
Note: See TracChangeset for help on using the changeset viewer.