Index: /trunk/doc/pslib/psLibSDRS.tex
===================================================================
--- /trunk/doc/pslib/psLibSDRS.tex	(revision 7206)
+++ /trunk/doc/pslib/psLibSDRS.tex	(revision 7207)
@@ -1,3 +1,3 @@
-%%% $Id: psLibSDRS.tex,v 1.394 2006-05-25 20:52:35 price Exp $
+%%% $Id: psLibSDRS.tex,v 1.395 2006-05-25 21:01:20 price Exp $
 \documentclass[panstarrs,spec]{panstarrs}
 
@@ -1816,10 +1816,14 @@
     // Parse optional command-line arguments
     psMetadata *arguments = psMetadataAlloc(); // The arguments, with default values
-    psMetadataAdd(arguments, PS_LIST_TAIL, "-string", PS_META_STR, "Test string", "SomeString");
-    psMetadataAdd(arguments, PS_LIST_TAIL, "-bool", PS_META_BOOL, "Test bool", false);
-    psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_META_S32 | PS_META_DUPLICATE_OK, "Test integer 1", 1);
-    psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_META_S32 | PS_META_DUPLICATE_OK, "Test integer 2", 2);
-    psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_META_S32 | PS_META_DUPLICATE_OK, "Test integer 3", 3);
-    psMetadataAdd(arguments, PS_LIST_TAIL, "-float", PS_META_F32, "Test float", 1.234567);
+    psMetadataAdd(arguments, PS_LIST_TAIL, "-string", PS_DATA_STR | PS_META_DUPLICATE_OK,
+                  "Test strings", NULL); // Multiple strings are permitted
+    psMetadataAdd(arguments, PS_LIST_TAIL, "-bool", PS_TYPE_BOOL, "Test bool", false);
+    psMetadata *intParams = psMetadataAlloc(); // Parameters for -int
+    psMetadataAdd(intParams, PS_LIST_TAIL, "int1", PS_TYPE_S32, "Test integer 1", 1);
+    psMetadataAdd(intParams, PS_LIST_TAIL, "int2", PS_TYPE_S32, "Test integer 2", 2);
+    psMetadataAdd(intParams, PS_LIST_TAIL, "int3", PS_TYPE_S32, "Test integer 3", 3);
+    psMetadataAdd(arguments, PS_LIST_TAIL, "-int", PS_DATA_METADATA, "Test integers", intParams);
+    psFree(intParams); // Drop reference
+    psMetadataAdd(arguments, PS_LIST_TAIL, "-float", PS_TYPE_F32, "Test float", 1.234567);
     if (! psArgumentParse(arguments, &argc, argv) || argc != 3) {
 	printf("\nName of the program here\n\n");
@@ -1833,21 +1837,23 @@
     printf("Success: %s %s\n", inputName, outputName);
 
-    psString string = psMetadataLookupStr(NULL, arguments, "-string");
+    psMetadataItem *strings = psMetadataLookup(arguments, "-string"); // This is a MULTI
+    psListIterator *stringsIter = psListIteratorAlloc(strings->data.V, PS_LIST_HEAD, false);
+    psString string;
+    while ((string = psListGetAndIncrement(stringsIter))) {
+        printf("String: %s\n", string);
+    }
+    psFree(stringsIter);
     float floating = psMetadataLookupF32(NULL, arguments, "-float");
-    bool boolean = psMetadataLookupBool(NULL, arguments, "-truth");
-    printf("String: %s\n", string);
+    bool boolean = psMetadataLookupBool(NULL, arguments, "-bool");
     printf("Float: %f\n", floating);
     printf("Boolean: %d\n", boolean);
 
-    psMetadataItem *intItem = psMetadataLookup(arguments, "-int");
-    if (intItem->type == PS_META_MULTI) {
-	psList *intMulti = intItem->data.V;
-	psListIterator *intIter = psListIteratorAlloc(intMulti, PS_LIST_HEAD, false);
-	psMetadataItem *intMultiItem = NULL;
-	while (intMultiItem = psListGetAndIncrement(intIter)) {
-	    printf("Integer: %d\n", intMultiItem->data.S32);
-	}
-	psFree(intIter);
-    }
+    psMetadata *ints = psMetadataLookupMD(NULL, arguments, "-int");
+    int int1 = psMetadataLookupS32(NULL, ints, "int1");
+    int int2 = psMetadataLookupS32(NULL, ints, "int2");
+    int int3 = psMetadataLookupS32(NULL, ints, "int3");
+    printf("Integer 1: %d\n", int1);
+    printf("Integer 2: %d\n", int2);
+    printf("Integer 3: %d\n", int3);
 }
 \end{verbatim}
@@ -1861,5 +1867,5 @@
 
 Optional arguments, with default values:
-    -string    (SomeString)      Test string
+    -string    ()                Test strings
     -bool      (FALSE)           Test bool
     -int       (1)               Test integer 1
@@ -1869,15 +1875,16 @@
 \end{verbatim}
 
-and called with: \code{./program -string whatevers -float 9.876543
+and called with: \code{./program -string foo -string bar -float 9.876543
 -int 4 5 6 -bool input output}, then it should produce:
 
 \begin{verbatim}
 Success: input output
-String: SomeString
-Float: 1.234567
-Boolean: 0
-Integer: 1
-Integer: 2
-Integer: 3
+String: foo
+String: bar
+Float: 9.876543
+Boolean: 1
+Integer1: 4
+Integer2: 5
+Integer3: 6
 \end{verbatim}
 
