IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7207


Ignore:
Timestamp:
May 25, 2006, 11:01:20 AM (20 years ago)
Author:
Paul Price
Message:

Updating psArguments example code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/doc/pslib/psLibSDRS.tex

    r7206 r7207  
    1 %%% $Id: psLibSDRS.tex,v 1.394 2006-05-25 20:52:35 price Exp $
     1%%% $Id: psLibSDRS.tex,v 1.395 2006-05-25 21:01:20 price Exp $
    22\documentclass[panstarrs,spec]{panstarrs}
    33
     
    18161816    // Parse optional command-line arguments
    18171817    psMetadata *arguments = psMetadataAlloc(); // The arguments, with default values
    1818     psMetadataAdd(arguments, PS_LIST_TAIL, "-string", PS_META_STR, "Test string", "SomeString");
    1819     psMetadataAdd(arguments, PS_LIST_TAIL, "-bool", PS_META_BOOL, "Test bool", false);
    1820     psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_META_S32 | PS_META_DUPLICATE_OK, "Test integer 1", 1);
    1821     psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_META_S32 | PS_META_DUPLICATE_OK, "Test integer 2", 2);
    1822     psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_META_S32 | PS_META_DUPLICATE_OK, "Test integer 3", 3);
    1823     psMetadataAdd(arguments, PS_LIST_TAIL, "-float", PS_META_F32, "Test float", 1.234567);
     1818    psMetadataAdd(arguments, PS_LIST_TAIL, "-string", PS_DATA_STR | PS_META_DUPLICATE_OK,
     1819                  "Test strings", NULL); // Multiple strings are permitted
     1820    psMetadataAdd(arguments, PS_LIST_TAIL, "-bool", PS_TYPE_BOOL, "Test bool", false);
     1821    psMetadata *intParams = psMetadataAlloc(); // Parameters for -int
     1822    psMetadataAdd(intParams, PS_LIST_TAIL, "int1", PS_TYPE_S32, "Test integer 1", 1);
     1823    psMetadataAdd(intParams, PS_LIST_TAIL, "int2", PS_TYPE_S32, "Test integer 2", 2);
     1824    psMetadataAdd(intParams, PS_LIST_TAIL, "int3", PS_TYPE_S32, "Test integer 3", 3);
     1825    psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_DATA_METADATA, "Test integers", intParams);
     1826    psFree(intParams); // Drop reference
     1827    psMetadataAdd(arguments, PS_LIST_TAIL, "-float", PS_TYPE_F32, "Test float", 1.234567);
    18241828    if (! psArgumentParse(arguments, &argc, argv) || argc != 3) {
    18251829        printf("\nName of the program here\n\n");
     
    18331837    printf("Success: %s %s\n", inputName, outputName);
    18341838
    1835     psString string = psMetadataLookupStr(NULL, arguments, "-string");
     1839    psMetadataItem *strings = psMetadataLookup(arguments, "-string"); // This is a MULTI
     1840    psListIterator *stringsIter = psListIteratorAlloc(strings->data.V, PS_LIST_HEAD, false);
     1841    psString string;
     1842    while ((string = psListGetAndIncrement(stringsIter))) {
     1843        printf("String: %s\n", string);
     1844    }
     1845    psFree(stringsIter);
    18361846    float floating = psMetadataLookupF32(NULL, arguments, "-float");
    1837     bool boolean = psMetadataLookupBool(NULL, arguments, "-truth");
    1838     printf("String: %s\n", string);
     1847    bool boolean = psMetadataLookupBool(NULL, arguments, "-bool");
    18391848    printf("Float: %f\n", floating);
    18401849    printf("Boolean: %d\n", boolean);
    18411850
    1842     psMetadataItem *intItem = psMetadataLookup(arguments, "-int");
    1843     if (intItem->type == PS_META_MULTI) {
    1844         psList *intMulti = intItem->data.V;
    1845         psListIterator *intIter = psListIteratorAlloc(intMulti, PS_LIST_HEAD, false);
    1846         psMetadataItem *intMultiItem = NULL;
    1847         while (intMultiItem = psListGetAndIncrement(intIter)) {
    1848             printf("Integer: %d\n", intMultiItem->data.S32);
    1849         }
    1850         psFree(intIter);
    1851     }
     1851    psMetadata *ints = psMetadataLookupMD(NULL, arguments, "-int");
     1852    int int1 = psMetadataLookupS32(NULL, ints, "int1");
     1853    int int2 = psMetadataLookupS32(NULL, ints, "int2");
     1854    int int3 = psMetadataLookupS32(NULL, ints, "int3");
     1855    printf("Integer 1: %d\n", int1);
     1856    printf("Integer 2: %d\n", int2);
     1857    printf("Integer 3: %d\n", int3);
    18521858}
    18531859\end{verbatim}
     
    18611867
    18621868Optional arguments, with default values:
    1863     -string    (SomeString)      Test string
     1869    -string    ()                Test strings
    18641870    -bool      (FALSE)           Test bool
    18651871    -int       (1)               Test integer 1
     
    18691875\end{verbatim}
    18701876
    1871 and called with: \code{./program -string whatevers -float 9.876543
     1877and called with: \code{./program -string foo -string bar -float 9.876543
    18721878-int 4 5 6 -bool input output}, then it should produce:
    18731879
    18741880\begin{verbatim}
    18751881Success: input output
    1876 String: SomeString
    1877 Float: 1.234567
    1878 Boolean: 0
    1879 Integer: 1
    1880 Integer: 2
    1881 Integer: 3
     1882String: foo
     1883String: bar
     1884Float: 9.876543
     1885Boolean: 1
     1886Integer1: 4
     1887Integer2: 5
     1888Integer3: 6
    18821889\end{verbatim}
    18831890
Note: See TracChangeset for help on using the changeset viewer.