Index: trunk/psLib/src/types/psArguments.h
===================================================================
--- trunk/psLib/src/types/psArguments.h	(revision 24122)
+++ trunk/psLib/src/types/psArguments.h	(revision 24143)
@@ -78,4 +78,54 @@
 );
 
+/** Macro to implement some generic command line arguments.  A package-
+ *  specific routine called pkgnameVersionLong() is presumed to exist.
+ */
+#define PSARGUMENTS_INSTANTIATE_GENERICS( pkgname, config, argc, argv )   \
+  { int N= psArgumentGet (argc, argv, "-version");                        \
+    if (N) {                                                              \
+      psString version;                                                   \
+      version = pkgname ## VersionLong();                                 \
+      fprintf (stdout, "%s\n", version);                                  \
+      psFree (version);                                                   \
+      version = psModulesVersionLong();                                   \
+      fprintf (stdout, "%s\n", version);                                  \
+      psFree (version);                                                   \
+      version = psLibVersionLong();                                       \
+      fprintf (stdout, "%s\n", version); psFree (version);                \
+      exit (0);                                                           \
+    }                                                                     \
+    N = psArgumentGet(argc, argv, "-dumpconfig");                         \
+    if (N) {                                                              \
+      if (N<argc-1) {							  \
+        psArgumentRemove(N, &argc, argv);                                 \
+        psMetadataAddStr(config->arguments,                               \
+                         PS_LIST_TAIL, "DUMP_CONFIG", PS_META_REPLACE,    \
+                         "Filename for configuration dump", argv[N]);     \
+        psArgumentRemove(N, &argc, argv);                                 \
+      }                                                                   \
+      else {                                                              \
+        fprintf(stderr,"-dumpconfig requires a filename argument\n");     \
+        exit(-1);                                                         \
+      }                                                                   \
+    }                                                                     \
+  }
+
+/** Macro to implement handling of '-threads' argument.  A package-
+ *  specific routine called pkgnameSetThreads(int nThreads) is
+ *  presumed to exist.
+ */
+#define PSARGUMENTS_INSTANTIATE_THREADSARG( pkgname, config, argc, argv )   \
+  { int N= psArgumentGet(argc, argv, "-threads");                           \
+    if (N) {                                                                \
+      psArgumentRemove(N, &argc, argv);                                     \
+      int nThreads = atoi(argv[N]);                                         \
+      psMetadataAddS32(config->arguments, PS_LIST_TAIL, "NTHREADS", 0, "number of "#pkgname" threads", nThreads); \
+      psArgumentRemove(N, &argc, argv);                                     \
+      psThreadPoolInit (nThreads);                                          \
+    }                                                                       \
+    pkgname ## SetThreads();                                                \
+  }
+
+
 /// @}
 #endif // #ifndef PS_ARGUMENTS_H
