Merge lp:~reg-hugonweb/spods/2.0dev into lp:spods

Proposed by Justin
Status: Merged
Merged at revision: 43
Proposed branch: lp:~reg-hugonweb/spods/2.0dev
Merge into: lp:spods
Diff against target: 12267 lines (+10872/-253)
79 files modified
.bzrignore (+32/-0)
README (+1/-1)
SConstruct (+21/-5)
build.sh (+1/-1)
docs/SConscript (+76/-0)
docs/src/conf.py (+244/-0)
docs/src/index.rst (+22/-0)
docs/src/readme.rst (+144/-0)
docs/src/spodsConfig.rst (+500/-0)
external/SConscript (+2/-1)
external/tclap/AUTHORS (+6/-0)
external/tclap/COPYING (+25/-0)
external/tclap/ChangeLog (+1760/-0)
external/tclap/INSTALL (+182/-0)
external/tclap/NEWS (+95/-0)
external/tclap/README (+16/-0)
external/tclap/include/tclap/Arg.h (+692/-0)
external/tclap/include/tclap/ArgException.h (+200/-0)
external/tclap/include/tclap/ArgTraits.h (+87/-0)
external/tclap/include/tclap/CmdLine.h (+633/-0)
external/tclap/include/tclap/CmdLineInterface.h (+150/-0)
external/tclap/include/tclap/CmdLineOutput.h (+74/-0)
external/tclap/include/tclap/Constraint.h (+68/-0)
external/tclap/include/tclap/DocBookOutput.h (+299/-0)
external/tclap/include/tclap/HelpVisitor.h (+76/-0)
external/tclap/include/tclap/IgnoreRestVisitor.h (+52/-0)
external/tclap/include/tclap/MultiArg.h (+433/-0)
external/tclap/include/tclap/MultiSwitchArg.h (+216/-0)
external/tclap/include/tclap/OptionalUnlabeledTracker.h (+62/-0)
external/tclap/include/tclap/StandardTraits.h (+208/-0)
external/tclap/include/tclap/StdOutput.h (+298/-0)
external/tclap/include/tclap/SwitchArg.h (+266/-0)
external/tclap/include/tclap/UnlabeledMultiArg.h (+301/-0)
external/tclap/include/tclap/UnlabeledValueArg.h (+340/-0)
external/tclap/include/tclap/ValueArg.h (+425/-0)
external/tclap/include/tclap/ValuesConstraint.h (+148/-0)
external/tclap/include/tclap/VersionVisitor.h (+81/-0)
external/tclap/include/tclap/Visitor.h (+53/-0)
external/tclap/include/tclap/XorHandler.h (+166/-0)
external/tclap/include/tclap/ZshCompletionOutput.h (+323/-0)
include/HepMCImporter.h (+3/-2)
include/POUtilities.h (+6/-1)
include/PhysicsObjectBuilder.h (+13/-5)
include/PhysicsObjectFunctions.h (+43/-1)
include/PileupBackendBase.h (+29/-0)
include/PileupBackendHepMC.h (+31/-0)
include/PileupBackendTTree.h (+35/-0)
include/PileupSystem.h (+39/-0)
include/YamlConfig.h (+18/-4)
include/YamlReader.h (+4/-1)
src/HepMCImporter.cc (+52/-68)
src/POUtilities.cc (+106/-1)
src/PhysicsObjectBuilder.cc (+121/-47)
src/PileupBackendHepMC.cc (+45/-0)
src/PileupBackendTTree.cc (+38/-0)
src/PileupSystem.cc (+74/-0)
src/SPODS.cc (+126/-18)
src/YamlConfig.cc (+85/-31)
src/YamlReader.cc (+73/-1)
test/SConscript (+1/-1)
test/SConstruct (+1/-1)
test/atlasConfig.yaml (+158/-0)
test/cmsConfig.yaml (+44/-6)
test/getMetadata.py (+26/-0)
test/hepmcParticleGun.py (+37/-2)
test/makeWjj.sh (+1/-1)
test/noSmearingConfig.yaml (+50/-12)
test/particleGun.cc (+1/-1)
test/runMemcheck.py (+92/-0)
test/runPythia.sh (+1/-1)
test/runTests.py (+627/-3)
test/silly.yaml (+0/-29)
test/style.py (+94/-0)
test/test1.cc (+1/-1)
test/test2.cc (+1/-1)
test/test3.cc (+6/-3)
test/testMRes.cc (+1/-1)
test/testReader.cc (+5/-1)
test/testYaml.cc (+6/-1)
To merge this branch: bzr merge lp:~reg-hugonweb/spods/2.0dev
Reviewer Review Type Date Requested Status
Justin Pending
Review via email: mp+161856@code.launchpad.net

Commit message

Adds many 2.0 features:
  Skimming
  Documentation
  Pileup
  Preliminary Atlas config
  tclap command line arguments
  configurable random number seed
  metadata tree
  let TClonesArray handle max number of entries
  jet background subtraction

Description of the change

Adds many 2.0 features:
  Skimming
  Documentation
  Pileup
  Preliminary Atlas config
  tclap command line arguments
  configurable random number seed
  metadata tree
  let TClonesArray handle max number of entries
  jet background subtraction

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.bzrignore'
2--- .bzrignore 1970-01-01 00:00:00 +0000
3+++ .bzrignore 2013-05-01 15:50:43 +0000
4@@ -0,0 +1,32 @@
5+docs/html/genindex.html
6+docs/html/_images
7+docs/html/index.html
8+docs/html/objects.inv
9+docs/html/readme.html
10+docs/html/search.html
11+docs/html/searchindex.js
12+docs/html/_sources
13+docs/html/spodsConfig.html
14+docs/html/_static
15+docs/latex/fncychap.sty
16+docs/latex/Makefile
17+docs/latex/python.ist
18+docs/latex/sphinxhowto.cls
19+docs/latex/sphinxmanual.cls
20+docs/latex/sphinx.sty
21+docs/latex/spods.tex
22+docs/latex/tabulary.sty
23+docs/text/index.txt
24+docs/text/readme.txt
25+docs/text/spodsConfig.txt
26+docs/man/spods.1
27+.sconf_temp
28+.sconsign.dblite
29+config.log
30+diff.txt
31+texput.log
32+docs/html/.doctrees
33+docs/html/.buildinfo
34+docs/latex/.doctrees
35+docs/man/.doctrees
36+docs/text/.doctrees
37
38=== modified file 'README'
39--- README 2012-07-03 14:52:36 +0000
40+++ README 2013-05-01 15:50:43 +0000
41@@ -1,6 +1,6 @@
42
43 SPODS--Simple Physics Object based Detector Simulation
44-Copyright (C) 2011, 2012 Justin Hugon
45+Copyright (C) 2011, 2012, 2013 Justin Hugon
46
47 SPODS is a detector simulation for particle physics collider experiments.
48 It reconstructs muons, electrons, jets, and MET from generator events in
49
50=== modified file 'SConstruct'
51--- SConstruct 2012-08-18 11:50:47 +0000
52+++ SConstruct 2013-05-01 15:50:43 +0000
53@@ -1,18 +1,25 @@
54
55 # SPODS--Simple Physics Object based Detector Simulation
56-# Copyright (C) 2011, 2012 Justin Hugon
57+# Copyright (C) 2011, 2012, 2013 Justin Hugon
58
59 # Main SCONS Build Configuration File
60
61 import os
62 import glob
63
64+buildDocs = False
65+#buildDocs = True
66+AddOption("--gccdebug",action="store_true",dest="gccdebug",default=False,help="turns on the debug flag in GCC")
67+
68 env = Environment(ENV = {'PATH':os.environ['PATH']} )
69
70 includes = ["#include"]
71 libpath = ["#lib"]
72 libs = []
73-env.MergeFlags('-fPIC -O2 -lm')
74+if GetOption('gccdebug'):
75+ env.MergeFlags('-g -lm -fPIC') # For Debugging
76+else:
77+ env.MergeFlags('-O2 -lm -fPIC ')
78
79 #root
80 env.ParseConfig('root-config --cflags')
81@@ -48,19 +55,28 @@
82
83 #fastjet
84 includes.append("#external/fastjet/include")
85+includes.append("#external/fastjet/tools")
86 libpath.append("#external/fastjet/lib")
87+libs.append("fastjettools")
88 libs.append("fastjet")
89
90+#tclap
91+includes.append("#external/tclap/include")
92+
93 env.Append(CPPPATH=includes)
94 env.Append(LIBPATH=libpath)
95 env.Append(LIBS=libs)
96
97 libSources = glob.glob("src/*")
98
99-SConscript([
100+sconscripts = [
101 "#test/SConscript",
102- "#external/SConscript"
103- ],exports="env")
104+ "#external/SConscript",
105+ ]
106+if buildDocs:
107+ sconscripts.append("#docs/SConscript")
108+
109+SConscript(sconscripts,exports="env")
110
111 env.StaticLibrary(target="lib/spods", source=libSources)
112 #env.SharedLibrary(target="lib/spods", source=libSources)
113
114=== modified file 'build.sh'
115--- build.sh 2012-04-25 09:31:26 +0000
116+++ build.sh 2013-05-01 15:50:43 +0000
117@@ -1,7 +1,7 @@
118 #/bin/bash
119
120 # SPODS--Simple Physics Object based Detector Simulation
121-# Copyright (C) 2011, 2012 Justin Hugon
122+# Copyright (C) 2011, 2012, 2013 Justin Hugon
123
124 #script to build SPODS, use -jN for multi-processor building, and -c to clean up
125
126
127=== added directory 'docs'
128=== added file 'docs/SConscript'
129--- docs/SConscript 1970-01-01 00:00:00 +0000
130+++ docs/SConscript 2013-05-01 15:50:43 +0000
131@@ -0,0 +1,76 @@
132+
133+## SPODS--Simple Physics Object based Detector Simulation
134+## Copyright (C) 2011, 2012, 2013 Justin Hugon
135+
136+import os
137+import glob
138+
139+def checkSphinx(context):
140+ context.Message("Checking for sphinx-build...")
141+ tryBuild = env.Command("","","sphinx-build -h")
142+ ret = context.TryAction(tryBuild)
143+ context.Result(ret[0])
144+ return ret[0]
145+
146+def checkLatex(context):
147+ context.Message("Checking for latex...")
148+ tryBuild = env.Command("","","latex --help")
149+ ret = context.TryAction(tryBuild)
150+ context.Result(ret[0])
151+ return ret[0]
152+
153+def checkPdfLatex(context):
154+ context.Message("Checking for pdflatex...")
155+ tryBuild = env.Command("","","pdflatex --help")
156+ ret = context.TryAction(tryBuild)
157+ context.Result(ret[0])
158+ return ret[0]
159+
160+
161+def checkDviPng(context):
162+ context.Message("Checking for dvipng...")
163+ tryBuild = env.Command("","","dvipng --help")
164+ ret = context.TryAction(tryBuild)
165+ context.Result(ret[0])
166+ return ret[0]
167+
168+tests = {
169+ "CheckSphinx":checkSphinx,
170+ "CheckLatex":checkLatex,
171+ "CheckPdfLatex":checkPdfLatex,
172+ "CheckDviPng":checkDviPng
173+}
174+
175+###################
176+#For Particle Gun
177+env = Environment(ENV = {'PATH':os.environ['PATH']} )
178+
179+doSphinx = False
180+doSphinxHtml = False
181+doSphinxPdf = False
182+
183+if not env.GetOption("clean"):
184+ conf = Configure(env, custom_tests = tests)
185+ if conf.CheckSphinx():
186+ doSphinx = True
187+ if conf.CheckLatex() and conf.CheckDviPng():
188+ doSphinxHtml = True
189+ #if conf.CheckPdfLatex():
190+ # doSphinxPdf = True
191+ env = conf.Finish()
192+
193+sphinxOutputs = ["latex","text","man"]
194+if doSphinxHtml:
195+ sphinxOutputs.append("html")
196+
197+if doSphinx:
198+ for outputFormat in sphinxOutputs:
199+ name = Dir(outputFormat)
200+ source = Dir("src")
201+ targets = env.Command(name,source,"sphinx-build -b {0} $SOURCE $TARGET".format(outputFormat))
202+ env.Depends(targets, source)
203+ env.AlwaysBuild(name)
204+ if outputFormat == "latex" and doSphinxPdf:
205+ pdfTarget = env.Command("latex/spods.pdf","latex/spods.tex","pdflatex spods.tex",chdir=True)
206+ env.Depends(pdfTarget,"latex/spods.tex")
207+
208
209=== added directory 'docs/html'
210=== added directory 'docs/latex'
211=== added directory 'docs/man'
212=== added directory 'docs/src'
213=== added file 'docs/src/conf.py'
214--- docs/src/conf.py 1970-01-01 00:00:00 +0000
215+++ docs/src/conf.py 2013-05-01 15:50:43 +0000
216@@ -0,0 +1,244 @@
217+# -*- coding: utf-8 -*-
218+#
219+# SPODS documentation build configuration file, created by
220+# sphinx-quickstart on Sat Aug 18 09:24:05 2012.
221+#
222+# This file is execfile()d with the current directory set to its containing dir.
223+#
224+# Note that not all possible configuration values are present in this
225+# autogenerated file.
226+#
227+# All configuration values have a default; values that are commented out
228+# serve to show the default.
229+
230+import sys, os
231+
232+# If extensions (or modules to document with autodoc) are in another directory,
233+# add these directories to sys.path here. If the directory is relative to the
234+# documentation root, use os.path.abspath to make it absolute, like shown here.
235+#sys.path.insert(0, os.path.abspath('.'))
236+
237+# -- General configuration -----------------------------------------------------
238+
239+# If your documentation needs a minimal Sphinx version, state it here.
240+#needs_sphinx = '1.0'
241+
242+# Add any Sphinx extension module names here, as strings. They can be extensions
243+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
244+extensions = ["sphinx.ext.pngmath"]
245+
246+# Add any paths that contain templates here, relative to this directory.
247+#templates_path = ['_templates']
248+
249+# The suffix of source filenames.
250+source_suffix = '.rst'
251+
252+# The encoding of source files.
253+#source_encoding = 'utf-8-sig'
254+
255+# The master toctree document.
256+master_doc = 'index'
257+
258+# General information about the project.
259+project = u'SPODS'
260+copyright = u'2011, 2012, Justin Hugon'
261+
262+# The version info for the project you're documenting, acts as replacement for
263+# |version| and |release|, also used in various other places throughout the
264+# built documents.
265+#
266+# The short X.Y version.
267+version = '1.0'
268+# The full version, including alpha/beta/rc tags.
269+release = '1.0'
270+
271+# The language for content autogenerated by Sphinx. Refer to documentation
272+# for a list of supported languages.
273+#language = None
274+
275+# There are two options for replacing |today|: either, you set today to some
276+# non-false value, then it is used:
277+#today = ''
278+# Else, today_fmt is used as the format for a strftime call.
279+#today_fmt = '%B %d, %Y'
280+
281+# List of patterns, relative to source directory, that match files and
282+# directories to ignore when looking for source files.
283+#exclude_patterns = ['_build']
284+
285+# The reST default role (used for this markup: `text`) to use for all documents.
286+#default_role = None
287+
288+# If true, '()' will be appended to :func: etc. cross-reference text.
289+#add_function_parentheses = True
290+
291+# If true, the current module name will be prepended to all description
292+# unit titles (such as .. function::).
293+#add_module_names = True
294+
295+# If true, sectionauthor and moduleauthor directives will be shown in the
296+# output. They are ignored by default.
297+#show_authors = False
298+
299+# The name of the Pygments (syntax highlighting) style to use.
300+pygments_style = 'sphinx'
301+
302+# A list of ignored prefixes for module index sorting.
303+#modindex_common_prefix = []
304+
305+
306+# -- Options for HTML output ---------------------------------------------------
307+
308+# The theme to use for HTML and HTML Help pages. See the documentation for
309+# a list of builtin themes.
310+#html_theme = 'default'
311+#html_theme = 'haiku'
312+html_theme = 'agogo'
313+
314+# Theme options are theme-specific and customize the look and feel of a theme
315+# further. For a list of options available for each theme, see the
316+# documentation.
317+#html_theme_options = {}
318+
319+# Add any paths that contain custom themes here, relative to this directory.
320+#html_theme_path = []
321+
322+# The name for this set of Sphinx documents. If None, it defaults to
323+# "<project> v<release> documentation".
324+#html_title = None
325+
326+# A shorter title for the navigation bar. Default is the same as html_title.
327+#html_short_title = None
328+
329+# The name of an image file (relative to this directory) to place at the top
330+# of the sidebar.
331+#html_logo = None
332+
333+# The name of an image file (within the static path) to use as favicon of the
334+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
335+# pixels large.
336+#html_favicon = None
337+
338+# Add any paths that contain custom static files (such as style sheets) here,
339+# relative to this directory. They are copied after the builtin static files,
340+# so a file named "default.css" will overwrite the builtin "default.css".
341+#html_static_path = ['_static']
342+
343+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
344+# using the given strftime format.
345+#html_last_updated_fmt = '%b %d, %Y'
346+
347+# If true, SmartyPants will be used to convert quotes and dashes to
348+# typographically correct entities.
349+#html_use_smartypants = True
350+
351+# Custom sidebar templates, maps document names to template names.
352+#html_sidebars = {}
353+
354+# Additional templates that should be rendered to pages, maps page names to
355+# template names.
356+#html_additional_pages = {}
357+
358+# If false, no module index is generated.
359+#html_domain_indices = True
360+
361+# If false, no index is generated.
362+#html_use_index = True
363+
364+# If true, the index is split into individual pages for each letter.
365+#html_split_index = False
366+
367+# If true, links to the reST sources are added to the pages.
368+#html_show_sourcelink = True
369+
370+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
371+#html_show_sphinx = True
372+
373+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
374+#html_show_copyright = True
375+
376+# If true, an OpenSearch description file will be output, and all pages will
377+# contain a <link> tag referring to it. The value of this option must be the
378+# base URL from which the finished HTML is served.
379+#html_use_opensearch = ''
380+
381+# This is the file name suffix for HTML files (e.g. ".xhtml").
382+#html_file_suffix = None
383+
384+# Output file base name for HTML help builder.
385+htmlhelp_basename = 'spodsdoc'
386+
387+
388+# -- Options for LaTeX output --------------------------------------------------
389+
390+latex_elements = {
391+# The paper size ('letterpaper' or 'a4paper').
392+#'papersize': 'letterpaper',
393+
394+# The font size ('10pt', '11pt' or '12pt').
395+#'pointsize': '10pt',
396+
397+# Additional stuff for the LaTeX preamble.
398+#'preamble': '',
399+}
400+
401+# Grouping the document tree into LaTeX files. List of tuples
402+# (source start file, target name, title, author, documentclass [howto/manual]).
403+latex_documents = [
404+ ('index', 'spods.tex', u'SPODS Documentation',
405+ u'Justin Hugon', 'howto'),
406+]
407+
408+# The name of an image file (relative to this directory) to place at the top of
409+# the title page.
410+#latex_logo = None
411+
412+# For "manual" documents, if this is true, then toplevel headings are parts,
413+# not chapters.
414+#latex_use_parts = False
415+
416+# If true, show page references after internal links.
417+#latex_show_pagerefs = False
418+
419+# If true, show URL addresses after external links.
420+#latex_show_urls = False
421+
422+# Documents to append as an appendix to all manuals.
423+#latex_appendices = []
424+
425+# If false, no module index is generated.
426+#latex_domain_indices = True
427+
428+
429+# -- Options for manual page output --------------------------------------------
430+
431+# One entry per manual page. List of tuples
432+# (source start file, name, description, authors, manual section).
433+man_pages = [
434+ ('index', 'spods', u'SPODS Documentation',
435+ [u'Justin Hugon'], 1)
436+]
437+
438+# If true, show URL addresses after external links.
439+#man_show_urls = False
440+
441+
442+# -- Options for Texinfo output ------------------------------------------------
443+
444+# Grouping the document tree into Texinfo files. List of tuples
445+# (source start file, target name, title, author,
446+# dir menu entry, description, category)
447+texinfo_documents = [
448+ ('index', 'SPODS', u'SPODS Documentation',
449+ u'Justin Hugon', 'SPODS', 'One line description of project.',
450+ 'Miscellaneous'),
451+]
452+
453+# Documents to append as an appendix to all manuals.
454+#texinfo_appendices = []
455+
456+# If false, no module index is generated.
457+#texinfo_domain_indices = True
458+
459+# How to display URL addresses: 'footnote', 'no', or 'inline'.
460+#texinfo_show_urls = 'footnote'
461
462=== added file 'docs/src/index.rst'
463--- docs/src/index.rst 1970-01-01 00:00:00 +0000
464+++ docs/src/index.rst 2013-05-01 15:50:43 +0000
465@@ -0,0 +1,22 @@
466+.. SPODS documentation master file, created by
467+ sphinx-quickstart on Sat Aug 18 09:24:05 2012.
468+ You can adapt this file completely to your liking, but it should at least
469+ contain the root `toctree` directive.
470+
471+Welcome to SPODS's documentation!
472+=================================
473+
474+Contents:
475+
476+.. toctree::
477+ :maxdepth: 2
478+
479+ readme
480+ spodsConfig
481+
482+.. Indices and tables
483+ ==================
484+
485+.. * :ref:`genindex`
486+ * :ref:`modindex`
487+ * :ref:`search`
488
489=== added file 'docs/src/readme.rst'
490--- docs/src/readme.rst 1970-01-01 00:00:00 +0000
491+++ docs/src/readme.rst 2013-05-01 15:50:43 +0000
492@@ -0,0 +1,144 @@
493+
494+SPODS--Simple Physics Object based Detector Simulation
495+=========================================================
496+
497+Copyright (C) 2011, 2012, 2013 Justin Hugon
498+
499+SPODS is a detector simulation for particle physics collider experiments.
500+It reconstructs muons, electrons, jets, and MET from generator events in
501+the HepMC event format. These "physics objects" are then smeared by
502+Gaussians parameterized to the response of various detectors, and
503+output in a root tree.
504+
505+Building
506+-----------
507+
508+Executing ./build.sh will build SPODS. The script will accept the -jN
509+option for parallel compilation, and -c to clean up the build.
510+
511+SPODS only requirements are a C++ compiler, python, and an installation
512+of ROOT. The python version should be between v2.4 and v2.7. The
513+ROOT executable, ``root``, and build configuration lister ``root-config``,
514+should be in the ``$PATH``.
515+
516+SPODS has been tested with these versions:
517+
518+====== ======= ========
519+gcc ROOT python
520+====== ======= ========
521+4.1.2 5.32 2.4.3
522+4.5.2 5.30 2.7.1
523+4.6.3 5.32 2.7.3
524+4.7.2 5.34 2.7.3
525+====== ======= ========
526+
527+Running
528+----------
529+
530+The executable can be run as: ::
531+
532+ ./bin/SPODS <configFile.yaml> <inFile.hepmc> <outFile.root>
533+
534+Example config files are in the test directory.
535+
536+Analyzing Output
537+------------------
538+
539+A ROOT TTree is written to the output file, named "tree". Within this
540+file, each physics object is represented by a TClonesArray of TParticles.
541+The TParticles' momentum magnitudes are smeared. Other information can be
542+accessed through the functions present in include/PhysicsObjectFunctions.h.
543+Included are functions to get the factor to scale the momentum to return
544+it to the generator value, b-tagging variables, and isolation variables.
545+
546+An example of reading the output is in test/testReader.cc
547+
548+It is important to note that jets are made out of all particles besides
549+muons. This means that an isolated electron or photon will appear
550+in the jet collection if the "jetVeto*" parameters are relaxed too much.
551+
552+In addition to the arrays of particles, the output root files contain an
553+additional tree called "metadata". This tree contains useful information
554+such as the SPODS input and output filenames, a dump of the configuration,
555+and the total number of events, sum of weights, and sum of weights squared
556+in the processed input file. These numbers can be useful when computing
557+efficiencies or scaling a sample to a specific cross-section and luminosity.
558+Functions to easily access them are provided in include/PhysicsObjectFunctions.h.
559+
560+Making Input Files with Pythia 8
561+-------------------------------------
562+
563+To make HepMC files with PYTHIA 8, follow these steps:
564+
565+#. Build SPODS
566+
567+#. Download and untar PYTHIA 8, and cd into its working directory
568+
569+#. Run::
570+
571+ ./configure --with-hepmc=<SPODSDIR>/external/HepMC --with-hepmcversion=2
572+
573+#. ``make``
574+
575+#. Go into examples/, and run::
576+
577+ make main42
578+
579+(main32 in older versions of pythia8!)
580+
581+#. PYTHIA 8 requires an environmental variable to run::
582+
583+ export PYTHIA8DATA=<PYTHIADIR>/xmldoc
584+
585+#. The executable ``./main42.exe`` takes PYTHIA 8 .cmnd input files, and produces
586+HepMC event files. The ``<SPODSDIR>/test/\*.cmnd`` are further examples.
587+Run like::
588+
589+ ./main42.exe <infile.cmnd> <outfilename.hepmc>
590+
591+#. To make a SPODS ROOT file out of the HepMC file without detector smearing,
592+go back to the SPODS directory and run::
593+
594+ ./bin/SPODS test/noSmearingConfig.yaml <filename.hepmc> <outfilename.root>
595+
596+It is faster and takes less space to avoid writing the intermediate .hepmc
597+file to disk. You can write it to a named pipe and direct it into SPODS::
598+
599+ mkfifo tmpPipe.hepmc
600+ <PYTHIADIR>/examples/main42.exe <config.cmnd> tmpPipe.hepmc &
601+ <SPODSDIR>/bin/SPODS <config.yaml> tmpPipe.hepmc <outfile.root>
602+ rm tmpPipe.hepmc
603+
604+Pileup Usage
605+-------------------------------------
606+
607+SPODS can simulate the effects of pileup, extra collisions happening at the
608+same time as a collision of interest. The distribution of the number of
609+pileup collisions is configurable in the config file.
610+
611+The more efficient mode of pileup involves first running SPODS on a
612+minbias sample of a few thousand events, making sure the option
613+``keepGenParticles`` is set to true. Then, SPODS is run on the
614+sample of interest, and random events are selected from the
615+minbias sample for pileup. The commands required are: ::
616+
617+ ./bin/SPODS config.yaml minbias.hepmc minbias.root
618+ ./bin/SPODS config.yaml -p minbias.root input.hepmc output.root
619+
620+The same minbias file can be used for many different samples of interest.
621+
622+The other mode of operation is to have a sufficiently large sample of
623+minbias in HepMC format (or a named pipe of minbias as discussed in the last
624+section). These events will be piled up in-order on top of the sample of
625+interest. For example, with PYTHIA 8 using named pipes, run: ::
626+
627+ mkfifo tmpPipe.hepmc
628+ mkfifo minbiasPipe.hepmc
629+ <PYTHIADIR>/examples/main42.exe <config.cmnd> tmpPipe.hepmc &
630+ <PYTHIADIR>/examples/main42.exe <minbias.cmnd> minbiasPipe.hepmc &
631+ <SPODSDIR>/bin/SPODS <config.yaml> -p minbiasPipe.hepmc tmpPipe.hepmc <outfile.root>
632+ rm tmpPipe.hepmc
633+ rm minbiasPipe.hepmc
634+
635+This method will take much more time than the first method.
636+
637
638=== added file 'docs/src/spodsConfig.rst'
639--- docs/src/spodsConfig.rst 1970-01-01 00:00:00 +0000
640+++ docs/src/spodsConfig.rst 2013-05-01 15:50:43 +0000
641@@ -0,0 +1,500 @@
642+SPODS Configuration File Syntax
643+==================================
644+
645+Copyright (C) 2011, 2012, 2013 Justin Hugon
646+
647+The SPODS configuration file defines parameters related to cuts on generator
648+objects, as well as how those objects are smeared. Each option must be in
649+the config file for SPODS to run correctly. All options are described below.
650+
651+The configuration file syntax is `YAML <http://www.yaml.org/>`_
652+
653+Run Parameters
654+------------------
655+
656+.. describe:: maxEvents: <integer>
657+
658+ The maximum number of events to process from the input file.
659+
660+.. describe:: keepGenParticles: <bool>
661+
662+ Set true to keep the original particles from the generator, false otherwise.
663+
664+.. describe:: keepNonFinalStateGenParticles: <bool>
665+
666+ If keepGenParticles is true, controls whether particles with states != 1 are kept. Set true to keep them, false otherwise.
667+
668+Max Particle Parameters
669+----------------------------
670+
671+.. describe:: maxGenParticles: <integer>
672+
673+ The maximum number of generator particles to read in (per event).
674+
675+.. describe:: maxElectrons: <integer>
676+
677+ The maximum number of electrons to write out to the ROOT tree.
678+
679+.. describe:: maxMuons: <integer>
680+
681+ The maximum number of muons to write out to the ROOT tree.
682+
683+.. describe:: maxPhotons: <integer>
684+
685+ The maximum number of photons to write out to the ROOT tree.
686+
687+.. describe:: maxJets: <integer>
688+
689+ The maximum number of jets to write out to the ROOT tree.
690+
691+Particle Cut Parameters
692+--------------------------
693+
694+.. describe:: etaElectronMax: <float>
695+
696+ Max \|eta\| Cut
697+
698+.. describe:: etaMuonMax: <float>
699+
700+ Max \|eta\| Cut
701+
702+.. describe:: etaPhotonMax: <float>
703+
704+ Max \|eta\| Cut
705+
706+.. describe:: etaJetMax: <float>
707+
708+ Max \|eta\| cut for particles clustered into jets.
709+
710+.. describe:: etaMetMax: <float>
711+
712+ Max \|eta\| cut for particles included in the MET calculation.
713+
714+
715+.. describe:: ptElectronMin: <float>
716+
717+ Min pt Cut
718+
719+.. describe:: ptMuonMin: <float>
720+
721+ Min pt Cut
722+
723+.. describe:: ptPhotonMin: <float>
724+
725+ Min pt Cut
726+
727+.. describe:: ptJetMin: <float>
728+
729+ Min pt cut for jets.
730+
731+Jet Configuration
732+--------------------
733+
734+.. describe:: jetAlg: <kt|ca|antikt>
735+
736+ Jet Algorithm name for `FastJet <http://fastjet.fr>`_ to cluster with.
737+
738+ kt
739+ Longitudinally invariant kt algorithm
740+
741+ ca
742+ Longitudinally invariant inclusive Cambridge/Aachen algorithm
743+
744+ antikt
745+ anti-kt algorithm
746+
747+.. describe:: jetAlgR: <float>
748+
749+ Radius parameter for the jet algorithm
750+
751+.. describe:: jetVetoNPartMin: <int>
752+
753+ Minimum number of particles in a jet (for jet-ID)
754+
755+.. describe:: jetVetoNChargMin: <int>
756+
757+ Minimum number of charged particles in a jet (for jet-ID)
758+
759+.. describe:: jetVetoNHadMin: <int>
760+
761+ Minimum number of hadron particles in a jet (for jet-ID)
762+
763+Isolation Configuration
764+-------------------------
765+
766+.. describe:: muonIsoType: <trk|calo|comb>
767+
768+ Type of Isolation
769+
770+ trk
771+ Sum all charged particle pt in the isolation cone
772+ calo
773+ Sum all non-neutrino non-muon particle pt in the isolation cone
774+ combined
775+ Sum all non-neutrino particle pt in the isolation cone
776+
777+.. describe:: muonIsoConeSize: <float>
778+
779+ Radius of isolation cone in
780+ :math:`\Delta R = \sqrt{(\Delta \phi)^2 + (\Delta \eta)^2}`
781+
782+.. describe:: muonIsoMinPt: <float>
783+
784+ Min particle pt to include in the isolation calculation
785+
786+.. describe:: electronIsoType: <trk|calo|comb>
787+
788+ Type of Isolation
789+
790+ trk
791+ Sum all charged particle pt in the isolation cone
792+ calo
793+ Sum all non-neutrino non-muon particle pt in the isolation cone
794+ combined
795+ Sum all non-neutrino particle pt in the isolation cone
796+
797+.. describe:: electronIsoConeSize: <float>
798+
799+ Radius of isolation cone in
800+ :math:`\Delta R = \sqrt{(\Delta \phi)^2 + (\Delta \eta)^2}`
801+
802+.. describe:: electronIsoMinPt: <float>
803+
804+ Min particle pt to include in the isolation calculation
805+
806+.. describe:: photonIsoType: <trk|calo|comb>
807+
808+ Type of Isolation
809+
810+ trk
811+ Sum all charged particle pt in the isolation cone
812+ calo
813+ Sum all non-neutrino non-muon particle pt in the isolation cone
814+ combined
815+ Sum all non-neutrino particle pt in the isolation cone
816+
817+.. describe:: photonIsoConeSize: <float>
818+
819+ Radius of isolation cone in
820+ :math:`\Delta R = \sqrt((\Delta \phi)^2 + (\Delta \eta)^2)`
821+
822+.. describe:: photonIsoMinPt: <float>
823+
824+ Min particle pt to include in the isolation calculation
825+
826+b-Tagging Parameters
827+---------------------
828+
829+.. describe:: bTagEff: <float>
830+
831+ b-Tagging Efficiency on Jets Identified to contain b-particles
832+
833+.. describe:: bTagMistagRate: <float>
834+
835+ b-Tagging Mistagging Rate on jets not containing b-particles
836+
837+Skimming Parameters
838+---------------------
839+
840+The skimming parameters control whether an event is written to the output file or not, based on the physics objects in the event. **All** skim cuts must
841+be passed for an event to be written out (put together through a logical AND).
842+
843+The syntax for skimming is to have::
844+
845+ skim:
846+ xxx: X
847+ yyyy: Y
848+
849+Each statement after ``skim:`` must be indented by the same amount.
850+
851+All of these cuts are applied after pt smearing and after the detector
852+pt and eta cuts are applied.
853+
854+.. describe:: minPO: <integer>
855+
856+ Require a minimum number of physics objects in the event. If
857+ nMuons + nElectrons + nJets + nPhotons < minPO, then the event
858+ will not be written to the output file. To be included in the
859+ count, each of the physics objects will have to pass the pt*Min
860+ cuts described below, after smearing.
861+
862+.. describe:: minLeptons: <integer>
863+
864+ Require a minimum number of leptons in the event. If
865+ nMuons + nElectrons < minLeptons, then the event
866+ will not be written to the output file. To be included in the
867+ count, each of the leptons will have to pass the pt*Min
868+ cuts described below, after smearing.
869+
870+.. describe:: minMuons: <integer>
871+
872+ Require a minimum number of muons in the event. If
873+ nMuons < minMuons, then the event
874+ will not be written to the output file. To be included in the
875+ count, each of the muons will have to pass the ``ptMuonMin``
876+ cut described below, after smearing.
877+
878+.. describe:: minElectrons: <integer>
879+
880+ Require a minimum number of electrons in the event. If
881+ nElectrons < minElectrons, then the event
882+ will not be written to the output file. To be included in the
883+ count, each of the electrons will have to pass the ``ptElectronMin``
884+ cut described below, after smearing.
885+
886+.. describe:: minPhotons: <integer>
887+
888+ Require a minimum number of photons in the event. If
889+ nPhotons < minPhotons, then the event
890+ will not be written to the output file. To be included in the
891+ count, each of the photons will have to pass the ``ptPhotonMin``
892+ cut described below, after smearing.
893+
894+.. describe:: minJets: <integer>
895+
896+ Require a minimum number of jets in the event. If
897+ nJets < minJets, then the event
898+ will not be written to the output file. To be included in the
899+ count, each of the jets will have to pass the ``ptJetMin``
900+ cut described below, after smearing.
901+
902+.. describe:: ptMuonMin: <float>
903+
904+ To be included in the above counts, a muon must pass this
905+ pt cut, after smearing.
906+
907+.. describe:: ptElectronMin: <float>
908+
909+ To be included in the above counts, an electron must pass this
910+ pt cut, after smearing.
911+
912+.. describe:: ptPhotonMin: <float>
913+
914+ To be included in the above counts, a photon must pass this
915+ pt cut, after smearing.
916+
917+.. describe:: ptJetMin: <float>
918+
919+ To be included in the above counts, a jet must pass this
920+ pt cut, after smearing. This cut is also applied before a jet
921+ is included in the :math:`H_T` sum.
922+
923+.. describe:: metMin: <float>
924+
925+ The minimum amount of missing transverse energy
926+ (transverse energy imbalance).
927+
928+.. describe:: htMin: <float>
929+
930+ The minimum amount of :math:`H_T`, defined as the scalar sum
931+ of jet pt. Jets are only considered if the pass the minimum
932+ jet pt threshold ``ptJetMin``, above.
933+
934+Pileup Parameters
935+-------------------------------
936+
937+.. describe:: pileupN: <integer>
938+
939+ The desired amount of pileup. Behavior differs depending on
940+ pileupType parameter.
941+
942+.. describe:: pileupType: <poisson|flat|pileupN>
943+
944+ Choose the distribution of pileup events.
945+
946+ poisson
947+ Take the number of pileup interactions from the Poisson distribution
948+ with mean "pileupN".
949+
950+ flat
951+ Take the number of pileup interactions from a uniform distribution
952+ from [0,pileupN].
953+
954+ pileupN
955+ All events will have "pileupN" pileup events.
956+
957+Jet Background Subtraction (Pileup Subtraction)
958+-------------------------------------------------
959+
960+Jet area pileup subtraction using the `FastJet <http://fastjet.fr>`_
961+package may be performed. See the fastjet documentation for details.
962+
963+.. describe:: jetBakOn: <bool>
964+
965+ Set true to enable jet background subtraction, false to disable.
966+
967+.. describe:: jetBakAlg: <kt|ca|antikt>
968+
969+ The jet algorithm to use for background estimation. These options are
970+ the same as the ones for "jetAlg". "antikt" is not recommended.
971+
972+.. describe:: jetBakAlgR: <float>
973+
974+ The size parameter for the background estimation jet algorithm. The
975+ fastjet documentation recommends sizes from 0.4 to 0.6, favoring
976+ smaller values for busy events.
977+
978+.. describe:: jetBakAreaType: <active_area_explicit_ghosts|active_area|passive_area|one_ghost_passive_area>
979+
980+ The type of jet area. See fastjet documentation for details.
981+
982+Muon Resolution Parameters
983+-------------------------------
984+
985+.. describe:: muonResEtaRanges;
986+
987+ A list of \|eta\| Ranges. This list allows for different resolutions in
988+ different \|eta\| regions. Each range is itself a two element list.
989+ ::
990+
991+ muonResEtaRanges:
992+ - [minEta, MaxEta] #first eta range
993+ - [minEta, MaxEta] #second eta range
994+
995+.. describe:: muonResConstTerm:
996+
997+ A list of muon resolution constant terms. This must be the same length as
998+ muonResEtaRanges
999+
1000+.. describe:: muonResSqrtTerm:
1001+
1002+ A list of muon resolution coefficients for Sqrt(momentum) terms,
1003+ for momentum in TeV.
1004+ This must be the same length as muonResEtaRanges
1005+
1006+.. describe:: muonResHighPtCut:
1007+
1008+ A list of muon resolution HighPtCuts, for momentum in GeV.
1009+ Above this cut, the following HighPt parameters are used.
1010+ This must be the same length as muonResEtaRanges
1011+
1012+.. describe:: muonResHighPtConstTerm:
1013+
1014+ A list of muon resolution constant terms, for use above the
1015+ muonResHighPtCut.
1016+ This must be the same length as muonResEtaRanges.
1017+
1018+.. describe:: muonResHighPtConstTerm:
1019+
1020+ A list of muon resolution constant terms, for use above the
1021+ muonResHighPtCut.
1022+ This must be the same length as muonResEtaRanges.
1023+
1024+.. describe:: muonResHighPtSqrtTerm:
1025+
1026+ A list of muon resolution coefficients for Sqrt(momentum) terms,
1027+ for momentum in TeV,
1028+ for use above the muonResHighPtCut.
1029+ This must be the same length as muonResEtaRanges.
1030+
1031+Photon and Electron Resolution Parameters
1032+-------------------------------------------
1033+
1034+Photon Resolution is given by the equation:
1035+
1036+.. math::
1037+
1038+ \sigma = \sqrt{(a/E)^2+(b/Sqrt(E))^2+(c)^2}
1039+
1040+Below, these options are described as
1041+
1042+a
1043+ 1/E Term
1044+
1045+b
1046+ 1/Sqrt(E) Term
1047+
1048+c
1049+ Constant Term
1050+
1051+Electron resolution is treated the same, except at low pt, where the tracker
1052+makes the resolution better. Below a given pt cut, the electron resolution
1053+is considered constant.
1054+
1055+.. describe:: photonResEtaRanges;
1056+
1057+ A list of \|eta\| Ranges. This list allows for different resolutions in
1058+ different \|eta\| regions. Each range is itself a two element list.
1059+ ::
1060+
1061+ photonResEtaRanges:
1062+ - [minEta, MaxEta] #first eta range
1063+ - [minEta, MaxEta] #second eta range
1064+
1065+.. describe:: photonResConstTerm:
1066+
1067+ A list of photon resolution constant terms. This must be the same length as
1068+ photonResEtaRanges
1069+
1070+.. describe:: photonResOneOverETerm:
1071+
1072+ A list of photon coefficients to 1/E terms. This must be the same length as
1073+ photonResEtaRanges
1074+
1075+.. describe:: photonResOneOverSqrtETerm:
1076+
1077+ A list of photon coefficients to 1/Sqrt(E) terms.
1078+ This must be the same length as
1079+ photonResEtaRanges
1080+
1081+.. describe:: electronResPtCut: <float>
1082+
1083+ Below this pt, electrons will have a constant resolution, given below.
1084+ Above this pt, electrons will be smeared the same as photons.
1085+
1086+.. describe:: electronResConstantTerm: <float>
1087+
1088+ Below the electronResPtCut, this constant resolution is applied.
1089+
1090+
1091+Jet Resolution Parameters
1092+-------------------------------
1093+
1094+Jet Resolution is given by the equation:
1095+
1096+.. math::
1097+
1098+ \sigma = \sqrt{(a/E)^2+(b/Sqrt(E))^2+(c)^2}
1099+
1100+Below, these options are described as
1101+
1102+a
1103+ 1/E Term
1104+
1105+b
1106+ 1/Sqrt(E) Term
1107+
1108+c
1109+ Constant Term
1110+
1111+.. describe:: jetResEtaRanges;
1112+
1113+ A list of \|eta\| Ranges. This list allows for different resolutions in
1114+ different \|eta\| regions. Each range is itself a two element list.
1115+ ::
1116+
1117+ jetResEtaRanges:
1118+ - [minEta, MaxEta] #first eta range
1119+ - [minEta, MaxEta] #second eta range
1120+
1121+.. describe:: jetResConstTerm:
1122+
1123+ A list of jet resolution constant terms. This must be the same length as
1124+ jetResEtaRanges
1125+
1126+.. describe:: jetResOneOverETerm:
1127+
1128+ A list of jet coefficients to 1/E terms. This must be the same length as
1129+ jetResEtaRanges
1130+
1131+.. describe:: jetResOneOverSqrtETerm:
1132+
1133+ A list of jet coefficients to 1/Sqrt(E) terms.
1134+ This must be the same length as
1135+ jetResEtaRanges
1136+
1137+.. describe:: jetResPtCut:
1138+
1139+ Below this pt, jets are not smeared. This can be used to keep many low-pt
1140+ jets from being smeared by resolution parameters that are not applicable
1141+ to low-pt.
1142
1143=== added directory 'docs/text'
1144=== removed file 'external/HepMC/.sconsign.dblite'
1145Binary files external/HepMC/.sconsign.dblite 2012-02-17 10:56:24 +0000 and external/HepMC/.sconsign.dblite 1970-01-01 00:00:00 +0000 differ
1146=== modified file 'external/SConscript'
1147--- external/SConscript 2012-04-25 09:31:26 +0000
1148+++ external/SConscript 2013-05-01 15:50:43 +0000
1149@@ -1,11 +1,12 @@
1150 # SPODS--Simple Physics Object based Detector Simulation
1151-# Copyright (C) 2011, 2012 Justin Hugon
1152+# Copyright (C) 2011, 2012, 2013 Justin Hugon
1153
1154 #Versions
1155 # scons: 2.1.0
1156 # yaml-cpp: 0.2.7
1157 # HepMC: 2.06.05
1158 # fastjet: 3.0.1
1159+# tclap: 1.2.1
1160
1161 SConscript([
1162 "yaml-cpp/SConscript",
1163
1164=== removed file 'external/fastjet/.sconsign.dblite'
1165Binary files external/fastjet/.sconsign.dblite 2012-02-17 10:56:24 +0000 and external/fastjet/.sconsign.dblite 1970-01-01 00:00:00 +0000 differ
1166=== added directory 'external/tclap'
1167=== added file 'external/tclap/AUTHORS'
1168--- external/tclap/AUTHORS 1970-01-01 00:00:00 +0000
1169+++ external/tclap/AUTHORS 2013-05-01 15:50:43 +0000
1170@@ -0,0 +1,6 @@
1171+
1172+original author: Michael E. Smoot
1173+invaluable contributions: Daniel Aarno
1174+more contributions: Erik Zeek
1175+more contributions: Fabien Carmagnac (Tinbergen-AM)
1176+outstanding editing: Carol Smoot
1177
1178=== added file 'external/tclap/COPYING'
1179--- external/tclap/COPYING 1970-01-01 00:00:00 +0000
1180+++ external/tclap/COPYING 2013-05-01 15:50:43 +0000
1181@@ -0,0 +1,25 @@
1182+
1183+
1184+Copyright (c) 2003 Michael E. Smoot
1185+
1186+Permission is hereby granted, free of charge, to any person
1187+obtaining a copy of this software and associated documentation
1188+files (the "Software"), to deal in the Software without restriction,
1189+including without limitation the rights to use, copy, modify, merge,
1190+publish, distribute, sublicense, and/or sell copies of the Software,
1191+and to permit persons to whom the Software is furnished to do so,
1192+subject to the following conditions:
1193+
1194+The above copyright notice and this permission notice shall be
1195+included in all copies or substantial portions of the Software.
1196+
1197+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1198+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
1199+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1200+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
1201+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
1202+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
1203+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1204+THE SOFTWARE.
1205+
1206+
1207
1208=== added file 'external/tclap/ChangeLog'
1209--- external/tclap/ChangeLog 1970-01-01 00:00:00 +0000
1210+++ external/tclap/ChangeLog 2013-05-01 15:50:43 +0000
1211@@ -0,0 +1,1760 @@
1212+2011-04-10 17:08 mes5k
1213+
1214+ * include/tclap/Arg.h: patch that allows arg start strings to be
1215+ pound defined to easily conform to different platforms
1216+
1217+2011-04-09 11:58 mes5k
1218+
1219+ * docs/Makefile.am: being slightly more precise about what we clean
1220+
1221+2011-04-09 11:30 mes5k
1222+
1223+ * include/tclap/: DocBookOutput.h, StdOutput.h,
1224+ ZshCompletionOutput.h: fixed shadow variable name problem
1225+
1226+2011-04-09 11:05 mes5k
1227+
1228+ * include/tclap/CmdLine.h: fixed minor memory leak
1229+
1230+2011-03-15 04:26 macbishop
1231+
1232+ * configure.in, config/ac_cxx_warn_effective_cxx.m4: Check if
1233+ compiler supports Weffec++ and if so use it (fixes compilation
1234+ issue with e.g. SunStudio compiler)
1235+
1236+2011-01-15 09:45 macbishop
1237+
1238+ * include/tclap/ArgTraits.h: Updated documentation for ArgTraits to
1239+ reference StringLike and ValueLike classes.
1240+
1241+2011-01-15 09:32 macbishop
1242+
1243+ * examples/test10.cpp: Added explicit cast to supress warning about
1244+ deprecated conversion from string constant to char*
1245+
1246+2011-01-02 17:18 mes5k
1247+
1248+ * docs/Makefile.am: now using a slightly different variable for doc
1249+ install to support out-of-tree builds
1250+
1251+2011-01-02 16:37 mes5k
1252+
1253+ * configure.in: bumped version number to 1.2.1
1254+
1255+2011-01-02 16:30 mes5k
1256+
1257+ * docs/style.css: tweaked style so it doesn't blink
1258+
1259+2011-01-02 16:21 mes5k
1260+
1261+ * tests/: test57.out, test57.sh, test76.out: tweaked tests to
1262+ reflect fix for mutually exclusive switches
1263+
1264+2011-01-02 16:20 mes5k
1265+
1266+ * include/tclap/: SwitchArg.h, XorHandler.h: finally fixed bug
1267+ relating to mutually exclusive combined switched
1268+
1269+2011-01-02 15:12 mes5k
1270+
1271+ * include/tclap/Arg.h: minor reformat
1272+
1273+2011-01-02 15:10 mes5k
1274+
1275+ * include/tclap/CmdLine.h: minor reformatting
1276+
1277+2011-01-02 12:13 mes5k
1278+
1279+ * examples/Makefile.am, examples/test20.cpp, tests/Makefile.am,
1280+ tests/test74.out, tests/test74.sh, tests/test75.out,
1281+ tests/test75.sh, tests/test76.out, tests/test76.sh,
1282+ tests/test77.out, tests/test77.sh: added failing tests for XOR
1283+ error message bug
1284+
1285+2011-01-02 11:52 mes5k
1286+
1287+ * include/tclap/StandardTraits.h: applied Tom Fogal's win64 patch
1288+ for size_t
1289+
1290+2011-01-02 11:38 mes5k
1291+
1292+ * docs/Makefile.am: hopefully fixed out-of-tree doc installation
1293+
1294+2011-01-02 10:50 mes5k
1295+
1296+ * include/tclap/: Arg.h, ArgTraits.h, CmdLine.h, HelpVisitor.h,
1297+ MultiArg.h, ValueArg.h, ValuesConstraint.h, VersionVisitor.h,
1298+ XorHandler.h, ZshCompletionOutput.h: fixed all effective c++
1299+ warnings based on patch from Andrew Marlow
1300+
1301+2010-12-06 22:41 mes5k
1302+
1303+ * configure.in: added more compiler warnings
1304+
1305+2009-10-24 20:49 mes5k
1306+
1307+ * include/tclap/SwitchArg.h, include/tclap/ValueArg.h,
1308+ tests/test22.out, tests/test24.out: make error message a bit more
1309+ meaningful
1310+
1311+2009-10-23 14:42 mes5k
1312+
1313+ * include/tclap/StandardTraits.h: added a check for wchar_t to deal
1314+ with a potential problem with MS compilers
1315+
1316+2009-09-28 11:28 mes5k
1317+
1318+ * docs/index.html: updated for 1.2.0
1319+
1320+2009-09-26 14:41 mes5k
1321+
1322+ * docs/Makefile.am: another update to support older automake
1323+
1324+2009-09-26 14:23 mes5k
1325+
1326+ * docs/Makefile.am: removed an errant space
1327+
1328+2009-09-26 14:15 mes5k
1329+
1330+ * docs/Makefile.am: added a definition for docdir, which doesnt
1331+ exist for old versions of automake
1332+
1333+2009-09-26 14:02 mes5k
1334+
1335+ * docs/Makefile.am: corrected the doc install directory structure
1336+
1337+2009-09-26 13:55 mes5k
1338+
1339+ * NEWS: updated for 1.2.0
1340+
1341+2009-09-26 13:53 mes5k
1342+
1343+ * docs/: manual.html, manual.xml: updated for 1.2.0 including text
1344+ on ArgTraits
1345+
1346+2009-08-22 12:26 mes5k
1347+
1348+ * Makefile.am, configure.in, tclap.pc.in, docs/Makefile.am,
1349+ examples/Makefile.am: applying patches to make gnu compiler args
1350+ conditional, to install docs, and to add pkgconfig support to the
1351+ installation
1352+
1353+2009-07-28 12:49 mes5k
1354+
1355+ * configure.in, tests/Makefile.am, tests/test73.out,
1356+ tests/test73.sh: added test 73 based on bug reported by user
1357+
1358+2009-07-15 08:09 mes5k
1359+
1360+ * include/tclap/UnlabeledValueArg.h: updated incorrect api docs
1361+ again
1362+
1363+2009-07-15 08:04 mes5k
1364+
1365+ * include/tclap/UnlabeledValueArg.h: updated incorrect api doc
1366+
1367+2009-01-09 16:10 mes5k
1368+
1369+ * AUTHORS: added author
1370+
1371+2009-01-09 16:05 mes5k
1372+
1373+ * include/tclap/: Arg.h, CmdLine.h, CmdLineInterface.h, MultiArg.h,
1374+ MultiSwitchArg.h, SwitchArg.h, ValueArg.h: added support for
1375+ resetting a command line
1376+
1377+2008-11-07 12:04 mes5k
1378+
1379+ * docs/manual.html, docs/manual.xml, examples/Makefile.am,
1380+ examples/test19.cpp, include/tclap/Arg.h, tests/Makefile.am,
1381+ tests/test29.out, tests/test29.sh, tests/test71.out,
1382+ tests/test71.sh, tests/test72.out, tests/test72.sh: added support
1383+ for parsing hex and octal ints as well as small fix to support
1384+ gcc 4.4
1385+
1386+2008-09-10 11:29 mes5k
1387+
1388+ * docs/manual.xml: updated note on xor
1389+
1390+2008-09-10 11:21 mes5k
1391+
1392+ * docs/manual.xml: added note on xor
1393+
1394+2008-08-19 15:18 zeekec
1395+
1396+ * examples/test18.cpp, include/tclap/CmdLine.h, tests/Makefile.am,
1397+ tests/test70.out, tests/test70.sh: Rethrow ExitExceptions if
1398+ we're not handling exceptions.
1399+
1400+2008-08-19 14:52 zeekec
1401+
1402+ * include/tclap/Arg.h: Silence some compiler warnings. The const
1403+ on return-by-value is ignored.
1404+
1405+2008-07-21 10:20 zeekec
1406+
1407+ * include/tclap/CmdLine.h, examples/Makefile.am,
1408+ examples/test18.cpp, tests/Makefile.am, tests/test69.out,
1409+ tests/test69.sh: Allow internal handling of parse errors to be
1410+ turned off. This allows exceptions for parse errors to be
1411+ propagated to the caller. Exiting the program in parse is a bad
1412+ idea generally, as we have no way of knowing what cleanup needs
1413+ to be done in the main program.
1414+
1415+2008-06-17 09:48 mes5k
1416+
1417+ * include/tclap/StdOutput.h: bug in while loop
1418+
1419+2008-05-23 15:15 mes5k
1420+
1421+ * include/tclap/: CmdLine.h, SwitchArg.h: added length checks to
1422+ strings that can otherwise break with Metroworks compilers
1423+
1424+2008-05-21 14:21 macbishop
1425+
1426+ * examples/: Makefile.am, test17-a.cpp, test17.cpp: Added test that
1427+ tclap does not define any hard symbols (bug 1907017)
1428+
1429+2008-05-13 12:04 mes5k
1430+
1431+ * include/tclap/CmdLine.h: added a new include to support exit in
1432+ environments where it isnt defined
1433+
1434+2008-05-05 23:02 mes5k
1435+
1436+ * examples/test7.cpp, include/tclap/Arg.h, tests/test46.out:
1437+ tweaked tests to support dashes in arg names
1438+
1439+2008-05-05 22:28 mes5k
1440+
1441+ * include/tclap/Arg.h: allowed dash char in arg names
1442+
1443+2008-01-18 15:05 zeekec
1444+
1445+ * include/tclap/Makefile.am: Added Traits files to the list of
1446+ files to be installed.
1447+
1448+2007-10-09 11:18 macbishop
1449+
1450+ * examples/test14.cpp, examples/test15.cpp, examples/test16.cpp,
1451+ include/tclap/Arg.h, include/tclap/ArgTraits.h,
1452+ include/tclap/StandardTraits.h, configure.in,
1453+ config/ac_cxx_have_long_long.m4, examples/Makefile.am:
1454+ Refactoring of the arg-traits functionality. The purpose is to
1455+ make it easier to make you own classes, and types defined in the
1456+ standard library work well with tclap. I'll try to write up some
1457+ documenation of how to achieve this as-well.
1458+
1459+2007-10-01 23:33 mes5k
1460+
1461+ * examples/test13.cpp: added attribution
1462+
1463+2007-10-01 23:30 mes5k
1464+
1465+ * examples/test13.cpp: fixed a warning message
1466+
1467+2007-10-01 23:27 mes5k
1468+
1469+ * examples/Makefile.am, examples/test13.cpp,
1470+ include/tclap/SwitchArg.h, tests/Makefile.am, tests/test68.out,
1471+ tests/test68.sh: a bug fix for parsing vectors of strings and
1472+ making sure that combined switches dont get confused
1473+
1474+2007-09-27 13:49 mes5k
1475+
1476+ * include/tclap/OptionalUnlabeledTracker.h: added inline
1477+
1478+2007-09-12 19:09 mes5k
1479+
1480+ * include/tclap/Arg.h, tests/test42.out, tests/test54.out: fixed
1481+ the delimiter in Arg::longID and Arg::shortID
1482+
1483+2007-09-01 01:17 macbishop
1484+
1485+ * examples/Makefile.am, include/tclap/Arg.h,
1486+ include/tclap/DocBookOutput.h,
1487+ include/tclap/ZshCompletionOutput.h: Suppress some warnings,
1488+ compile with -Wextra by default
1489+
1490+2007-06-14 14:02 macbishop
1491+
1492+ * include/tclap/Arg.h, include/tclap/MultiArg.h,
1493+ include/tclap/ValueArg.h, tests/runtests.sh, tests/test63.out,
1494+ tests/test63.sh, tests/test64.out, tests/test64.sh,
1495+ tests/test65.out, tests/test65.sh, tests/test66.out,
1496+ tests/test66.sh, tests/test67.out, tests/test67.sh,
1497+ tests/testCheck.sh, examples/Makefile.am, examples/test11.cpp,
1498+ examples/test12.cpp: Use ArgTraits instead of ValueExtractor
1499+ specialization Bug 1711487
1500+
1501+2007-05-02 13:11 macbishop
1502+
1503+ * examples/Makefile.am, examples/test10.cpp,
1504+ include/tclap/CmdLine.h, include/tclap/CmdLineInterface.h: Run
1505+ CmdLine::parse with argv as pointer to const pointer to const
1506+ char
1507+
1508+2007-04-20 22:28 mes5k
1509+
1510+ * include/tclap/Arg.h, tests/test18.out: changed the blankChar to
1511+ the bell character instead of *
1512+
1513+2007-03-04 11:28 mes5k
1514+
1515+ * examples/test4.cpp, include/tclap/DocBookOutput.h,
1516+ include/tclap/Makefile.am, include/tclap/ZshCompletionOutput.h:
1517+ added patches for ZSH and DocBook output
1518+
1519+2007-03-04 11:08 mes5k
1520+
1521+ * include/tclap/: CmdLine.h, CmdLineInterface.h: added a new parse
1522+ method that accepts a vector
1523+
1524+2007-02-17 06:59 macbishop
1525+
1526+ * include/tclap/: MultiArg.h, MultiSwitchArg.h,
1527+ UnlabeledMultiArg.h, UnlabeledValueArg.h, ValueArg.h: Supressed
1528+ some warnings
1529+
1530+2007-02-17 06:59 macbishop
1531+
1532+ * include/tclap/CmdLine.h: Catch ExitException and exit. This
1533+ allows all resources used during parsing to be released, bug
1534+ 1662188.
1535+
1536+2007-02-17 06:57 macbishop
1537+
1538+ * include/tclap/: DocBookOutput.h, HelpVisitor.h, StdOutput.h,
1539+ VersionVisitor.h: raise ExitException instead of calling exit
1540+
1541+2007-02-17 06:54 macbishop
1542+
1543+ * include/tclap/ArgException.h: Added exit-exception class
1544+
1545+2007-02-17 06:52 macbishop
1546+
1547+ * tests/testCheck.sh: Exit with exit status 1 if a test fails
1548+ (required by runtests.sh)
1549+
1550+2007-02-17 06:52 macbishop
1551+
1552+ * tests/runtests.sh: Run the correct tests (not 0)
1553+
1554+2007-02-17 06:51 macbishop
1555+
1556+ * examples/: test4.cpp, test7.cpp: Supressed warnings
1557+
1558+2007-02-07 18:12 mes5k
1559+
1560+ * include/tclap/StdOutput.h: minor change to support a bug in
1561+ VisualC++ 2005
1562+
1563+2006-11-26 10:42 mes5k
1564+
1565+ * docs/: README, manual.html, manual.xml: updated docs to reflect
1566+ that Output must handle the exit rather than the CmdLine object
1567+
1568+2006-11-26 10:32 mes5k
1569+
1570+ * include/tclap/: CmdLine.h, DocBookOutput.h, StdOutput.h: moved
1571+ exit from CmdLine to StdOutput to provide users more control over
1572+ when/how the exit happens
1573+
1574+2006-11-26 10:29 mes5k
1575+
1576+ * examples/test4.cpp: added exit() to failure method
1577+
1578+2006-11-26 10:13 mes5k
1579+
1580+ * docs/: manual.html, manual.xml: fixed typo in SwitchArg
1581+ constructors
1582+
1583+2006-11-04 14:05 mes5k
1584+
1585+ * include/tclap/CmdLine.h, tests/Makefile.am, tests/test10.out,
1586+ tests/test17.out, tests/test4.out, tests/test51.out,
1587+ tests/test62.out, tests/test62.sh: printing more useful message
1588+ when missing required args and catching ArgException reference
1589+
1590+2006-10-06 09:49 mes5k
1591+
1592+ * include/tclap/SwitchArg.h, tests/Makefile.am, tests/test61.out,
1593+ tests/test61.sh: made a fix for a bug where - chars were within
1594+ unlabeled value args
1595+
1596+2006-08-21 23:13 mes5k
1597+
1598+ * include/tclap/StdOutput.h: minor tweak to a min function
1599+ signature
1600+
1601+2006-08-18 20:05 mes5k
1602+
1603+ * docs/index.html: updated for 1.1.0
1604+
1605+2006-08-18 20:04 mes5k
1606+
1607+ * AUTHORS: new author
1608+
1609+2006-05-14 17:55 mes5k
1610+
1611+ * config/Makefile.am: so that m4 macros will be included in release
1612+ files to ease incorporation of tclap in other projects
1613+
1614+2006-05-14 17:36 mes5k
1615+
1616+ * include/tclap/CmdLine.h: removed a deprecated constructor
1617+
1618+2006-05-14 17:35 mes5k
1619+
1620+ * docs/: manual.xml, manual.html: manual update
1621+
1622+2006-05-14 13:11 mes5k
1623+
1624+ * Makefile.am, configure.in: added m4 macros to help others
1625+ distributing the software and updated the version number
1626+
1627+2006-05-14 12:52 mes5k
1628+
1629+ * config/bb_enable_doxygen.m4: for some reason, the AS_HELP_STRING
1630+ function was messing up autoconf 2.57 -- maybe that's just an old
1631+ version? We can change it back as necessary
1632+
1633+2006-05-14 12:51 mes5k
1634+
1635+ * examples/test8.cpp, include/tclap/SwitchArg.h: SwitchArg
1636+ interface change
1637+
1638+2006-04-18 03:59 macbishop
1639+
1640+ * docs/: manual.html, manual.xml: Updated the example
1641+
1642+2006-04-05 23:44 mes5k
1643+
1644+ * include/tclap/ArgException.h: patch for a mem leak in
1645+ ArgException
1646+
1647+2006-03-18 11:16 mes5k
1648+
1649+ * include/tclap/: CmdLineOutput.h, Visitor.h: added virtual
1650+ destructors
1651+
1652+2006-02-21 18:15 zeekec
1653+
1654+ * examples/: test1.cpp, test2.cpp, test3.cpp, test4.cpp, test5.cpp,
1655+ test6.cpp, test7.cpp, test8.cpp, test9.cpp: Use local header
1656+ files first instead of installed headers.
1657+
1658+2006-02-21 18:12 zeekec
1659+
1660+ * Makefile.am: Added ACLOCAL_AMFLAGS for autoreconf.
1661+
1662+2006-02-21 18:10 zeekec
1663+
1664+ * config/: ac_cxx_have_sstream.m4, ac_cxx_have_strstream.m4: Moved
1665+ the requires, header check, and language save and restore outside
1666+ of the cache check.
1667+
1668+2006-02-21 04:00 zeekec
1669+
1670+ * config/: stamp-h.in, stamp-h1: Removed timestamp files (generated
1671+ by configure).
1672+
1673+2006-02-21 03:05 zeekec
1674+
1675+ * include/tclap/Constraint.h: Added virtual destructor to silence
1676+ warnings.
1677+
1678+2006-02-21 03:01 zeekec
1679+
1680+ * ChangeLog: Generated with cvs2cl.
1681+
1682+2005-09-10 16:25 mes5k
1683+
1684+ * config/stamp-h1, examples/test2.cpp, examples/test3.cpp,
1685+ examples/test5.cpp, examples/test8.cpp, include/tclap/Arg.h,
1686+ include/tclap/CmdLine.h, include/tclap/MultiArg.h,
1687+ include/tclap/StdOutput.h, include/tclap/UnlabeledMultiArg.h,
1688+ include/tclap/UnlabeledValueArg.h, include/tclap/ValueArg.h,
1689+ include/tclap/XorHandler.h: added gcc warning patch
1690+
1691+2005-07-12 20:36 zeekec
1692+
1693+ * examples/Makefile.am: Set INCLUDES to top_srcdir for out of
1694+ source builds.
1695+
1696+2005-07-12 20:33 zeekec
1697+
1698+ * include/tclap/: UnlabeledMultiArg.h, UnlabeledValueArg.h: Add
1699+ using toString statements (for gcc >= 3.4).
1700+
1701+2005-07-12 20:31 zeekec
1702+
1703+ * config/bb_enable_doxygen.m4: Properly quote BB_ENABLE_DOXYGEN.
1704+
1705+2005-06-29 15:04 mes5k
1706+
1707+ * include/tclap/Arg.h: merged some new changes
1708+
1709+2005-06-08 08:28 mes5k
1710+
1711+ * docs/index.html: fixed spelling mistake
1712+
1713+2005-06-02 19:35 mes5k
1714+
1715+ * include/tclap/: Makefile.am, OptionalUnlabeledTracker.h,
1716+ UnlabeledMultiArg.h, UnlabeledValueArg.h: fix to handle optional
1717+ unlabeled args
1718+
1719+2005-06-02 19:33 mes5k
1720+
1721+ * examples/: test2.cpp, test3.cpp, test7.cpp, test8.cpp, test9.cpp:
1722+ Unlabeled changes
1723+
1724+2005-02-03 15:04 mes5k
1725+
1726+ * include/tclap/: Arg.h, DocBookOutput.h, MultiArg.h: updated
1727+ docbook output
1728+
1729+2005-02-03 08:08 mes5k
1730+
1731+ * include/tclap/: ValuesConstraint.h, XorHandler.h: add std::
1732+ prefix to some finds
1733+
1734+2005-02-01 13:35 zeekec
1735+
1736+ * include/tclap/CmdLine.h: Made deleteOnExit's protected to
1737+ facilitate derivation.
1738+
1739+2005-02-01 13:30 zeekec
1740+
1741+ * config/config.h.in: Removed autotools generated file.
1742+
1743+2005-01-28 13:26 zeekec
1744+
1745+ * configure.in, docs/Doxyfile.in, tests/Makefile.am,
1746+ tests/test1.sh, tests/test10.sh, tests/test11.sh,
1747+ tests/test12.sh, tests/test13.sh, tests/test14.sh,
1748+ tests/test15.sh, tests/test16.sh, tests/test17.sh,
1749+ tests/test18.sh, tests/test19.sh, tests/test2.sh,
1750+ tests/test20.sh, tests/test21.sh, tests/test22.sh,
1751+ tests/test23.sh, tests/test24.sh, tests/test25.sh,
1752+ tests/test26.sh, tests/test27.sh, tests/test28.sh,
1753+ tests/test29.sh, tests/test3.sh, tests/test30.sh,
1754+ tests/test31.sh, tests/test32.sh, tests/test33.sh,
1755+ tests/test34.sh, tests/test35.sh, tests/test36.sh,
1756+ tests/test37.sh, tests/test38.sh, tests/test39.sh,
1757+ tests/test4.sh, tests/test40.sh, tests/test41.sh,
1758+ tests/test42.sh, tests/test43.sh, tests/test44.sh,
1759+ tests/test45.sh, tests/test46.sh, tests/test47.sh,
1760+ tests/test48.sh, tests/test49.sh, tests/test5.sh,
1761+ tests/test50.sh, tests/test51.sh, tests/test52.sh,
1762+ tests/test53.sh, tests/test54.sh, tests/test55.sh,
1763+ tests/test56.sh, tests/test57.sh, tests/test58.sh,
1764+ tests/test59.sh, tests/test6.sh, tests/test60.sh, tests/test7.sh,
1765+ tests/test8.sh, tests/test9.sh: Made changes to directory
1766+ references to allow out of source builds.
1767+
1768+2005-01-26 10:25 mes5k
1769+
1770+ * aclocal.m4: doh
1771+
1772+2005-01-23 19:18 mes5k
1773+
1774+ * include/tclap/CmdLine.h: removed -v from version switch
1775+
1776+2005-01-23 19:14 mes5k
1777+
1778+ * include/tclap/Arg.h: removed value required
1779+
1780+2005-01-23 19:03 mes5k
1781+
1782+ * examples/: test2.cpp, test3.cpp, test6.cpp, test8.cpp, test9.cpp:
1783+ UnlabeledValueArg change
1784+
1785+2005-01-23 19:02 mes5k
1786+
1787+ * tests/: test10.out, test11.out, test12.out, test15.out,
1788+ test16.out, test17.out, test22.out, test23.out, test24.out,
1789+ test26.out, test27.out, test28.out, test29.out, test30.out,
1790+ test31.out, test32.out, test35.out, test36.out, test38.out,
1791+ test39.out, test4.out, test40.out, test41.out, test42.out,
1792+ test43.out, test44.out, test45.out, test46.out, test49.out,
1793+ test50.out, test51.out, test52.out, test53.out, test54.out,
1794+ test57.out, test59.out, test60.out, test7.out: new output for
1795+ default version and value required
1796+
1797+2005-01-23 19:01 mes5k
1798+
1799+ * tests/: test59.sh, test8.sh: new style version and required
1800+ UnlabeledValueArgs
1801+
1802+2005-01-23 18:59 mes5k
1803+
1804+ * tests/testCheck.sh: a script to compare test output
1805+
1806+2005-01-23 17:54 mes5k
1807+
1808+ * include/tclap/UnlabeledValueArg.h: now optionally required
1809+
1810+2005-01-23 16:33 mes5k
1811+
1812+ * tests/: test58.out, test59.out, test58.sh, test59.sh, test60.out,
1813+ test60.sh, Makefile.am: tests for MultiSwitchArg
1814+
1815+2005-01-23 16:27 mes5k
1816+
1817+ * include/tclap/Makefile.am, examples/Makefile.am,
1818+ examples/test9.cpp: MultiSwitchArg
1819+
1820+2005-01-23 16:26 mes5k
1821+
1822+ * include/tclap/: CmdLine.h, CmdLineInterface.h, StdOutput.h: added
1823+ a bool to the constructor that allows automatic -h and -v to be
1824+ turned off
1825+
1826+2005-01-23 14:57 mes5k
1827+
1828+ * docs/: manual.html, manual.xml: added MultiSwitchArg docs
1829+
1830+2005-01-23 14:33 mes5k
1831+
1832+ * include/tclap/MultiSwitchArg.h: fixed typo
1833+
1834+2005-01-23 14:29 mes5k
1835+
1836+ * include/tclap/SwitchArg.h: Fixed minor bug involving combined
1837+ switch error messages: now they're consistent.
1838+
1839+2005-01-23 14:28 mes5k
1840+
1841+ * include/tclap/MultiSwitchArg.h: initial checkin
1842+
1843+2005-01-22 20:41 mes5k
1844+
1845+ * include/tclap/UnlabeledMultiArg.h: added alreadySet
1846+
1847+2005-01-20 20:13 mes5k
1848+
1849+ * tests/Makefile.am: xor test
1850+
1851+2005-01-20 20:04 mes5k
1852+
1853+ * examples/test5.cpp: change for xor bug
1854+
1855+2005-01-20 20:04 mes5k
1856+
1857+ * tests/: test20.out, runtests.sh, test20.sh, test21.out,
1858+ test21.sh, test22.out, test23.out, test24.out, test25.out,
1859+ test25.sh, test33.out, test33.sh, test44.out, test57.out,
1860+ test57.sh: changes for xor bug
1861+
1862+2005-01-20 20:03 mes5k
1863+
1864+ * include/tclap/: Arg.h, MultiArg.h, UnlabeledMultiArg.h,
1865+ XorHandler.h: fixed xor bug
1866+
1867+2005-01-17 12:48 macbishop
1868+
1869+ * include/tclap/Arg.h: Removed check on description in
1870+ Arg::operator== since multiple args should be able to have the
1871+ same description.
1872+
1873+2005-01-06 20:41 mes5k
1874+
1875+ * NEWS: updated for constraints
1876+
1877+2005-01-06 20:37 mes5k
1878+
1879+ * docs/: manual.html, manual.xml: updated for constraints
1880+
1881+2005-01-06 20:05 mes5k
1882+
1883+ * examples/test7.cpp: changed for constraint
1884+
1885+2005-01-06 20:00 mes5k
1886+
1887+ * include/tclap/: MultiArg.h, ValueArg.h: fixed exceptions and
1888+ typeDesc for constraints
1889+
1890+2005-01-06 19:59 mes5k
1891+
1892+ * tests/: test35.out, test36.out, test38.out, test39.out: changed
1893+ for constraints
1894+
1895+2005-01-06 19:07 mes5k
1896+
1897+ * examples/test6.cpp: changed to constraint
1898+
1899+2005-01-06 19:06 mes5k
1900+
1901+ * include/tclap/Makefile.am: added constraints
1902+
1903+2005-01-06 19:05 mes5k
1904+
1905+ * include/tclap/: Constraint.h, ValuesConstraint.h: initial checkin
1906+
1907+2005-01-06 19:05 mes5k
1908+
1909+ * include/tclap/StdOutput.h: comment change
1910+
1911+2005-01-06 19:01 mes5k
1912+
1913+ * include/tclap/CmdLine.h: added Constraint includes
1914+
1915+2005-01-06 18:55 mes5k
1916+
1917+ * include/tclap/: MultiArg.h, UnlabeledMultiArg.h,
1918+ UnlabeledValueArg.h, ValueArg.h: Changed allowedList to
1919+ Constraint
1920+
1921+2005-01-05 16:08 mes5k
1922+
1923+ * configure.in: next vers
1924+
1925+2005-01-05 12:13 mes5k
1926+
1927+ * NEWS: update
1928+
1929+2005-01-05 10:51 mes5k
1930+
1931+ * docs/: manual.html, manual.xml: fixed output override bug
1932+
1933+2005-01-05 10:45 mes5k
1934+
1935+ * tests/: test18.out, test43.out: change for output override bug
1936+
1937+2005-01-05 10:28 mes5k
1938+
1939+ * examples/test4.cpp: fixed output override bug
1940+
1941+2005-01-05 10:22 mes5k
1942+
1943+ * include/tclap/: CmdLine.h, HelpVisitor.h, VersionVisitor.h: fixed
1944+ output bug
1945+
1946+2005-01-04 14:01 mes5k
1947+
1948+ * configure.in: 1.0.4
1949+
1950+2005-01-04 13:16 mes5k
1951+
1952+ * examples/test7.cpp: changed for long prog names bug
1953+
1954+2005-01-04 13:15 mes5k
1955+
1956+ * tests/: test38.out, test39.out, test46.out: changed test7 for
1957+ long prog names
1958+
1959+2005-01-04 12:31 mes5k
1960+
1961+ * NEWS: updates for 1.0.3a
1962+
1963+2005-01-04 12:21 mes5k
1964+
1965+ * docs/manual.html, docs/manual.xml, include/tclap/CmdLine.h: fixed
1966+ output memory leak
1967+
1968+2004-12-08 21:10 mes5k
1969+
1970+ * include/tclap/StdOutput.h: hacky fix to long prog name bug
1971+
1972+2004-12-07 19:57 mes5k
1973+
1974+ * configure.in: 1.0.3a
1975+
1976+2004-12-07 19:53 mes5k
1977+
1978+ * tests/: Makefile.am, test15.out, test16.out, test17.out,
1979+ test31.out, test32.out, test13.sh, test14.sh, test15.sh,
1980+ test16.sh, test17.sh, test42.out, test55.out, test55.sh,
1981+ test56.out, test56.sh: updated for - arg bug
1982+
1983+2004-12-07 19:51 mes5k
1984+
1985+ * examples/test3.cpp: tweaked to support tests for '-' arg bug
1986+
1987+2004-12-07 18:16 mes5k
1988+
1989+ * include/tclap/Arg.h: fixed a bug involving blank _flags and - as
1990+ an UnlabeledValueArg
1991+
1992+2004-12-03 12:19 mes5k
1993+
1994+ * docs/style.css: minor tweak for h1
1995+
1996+2004-12-03 12:10 mes5k
1997+
1998+ * NEWS: update
1999+
2000+2004-12-03 11:39 mes5k
2001+
2002+ * include/tclap/CmdLine.h: removed ostream include
2003+
2004+2004-11-30 19:11 mes5k
2005+
2006+ * include/tclap/: Arg.h, CmdLine.h, CmdLineOutput.h, StdOutput.h:
2007+ cleaned up iterator names
2008+
2009+2004-11-30 19:10 mes5k
2010+
2011+ * include/tclap/DocBookOutput.h: removed ostream
2012+
2013+2004-11-30 18:35 mes5k
2014+
2015+ * configure.in, docs/Doxyfile.in: added dot check
2016+
2017+2004-11-24 19:58 mes5k
2018+
2019+ * configure.in: 1.0.3
2020+
2021+2004-11-24 19:57 mes5k
2022+
2023+ * include/tclap/: UnlabeledMultiArg.h, UnlabeledValueArg.h: removed
2024+ two stage lookup ifdefs
2025+
2026+2004-11-24 19:56 mes5k
2027+
2028+ * docs/index.html: updated
2029+
2030+2004-11-24 19:45 mes5k
2031+
2032+ * docs/: manual.html, manual.xml: updates for using stuff and new
2033+ output
2034+
2035+2004-11-05 21:05 mes5k
2036+
2037+ * include/tclap/: DocBookOutput.h, Makefile.am: adding docbook
2038+ stuff
2039+
2040+2004-11-04 21:07 mes5k
2041+
2042+ * examples/test4.cpp: reflects new output handling
2043+
2044+2004-11-04 21:07 mes5k
2045+
2046+ * include/tclap/: Arg.h, CmdLine.h, CmdLineInterface.h,
2047+ CmdLineOutput.h, HelpVisitor.h, Makefile.am, StdOutput.h,
2048+ VersionVisitor.h, XorHandler.h: changed output around
2049+
2050+2004-11-04 21:06 mes5k
2051+
2052+ * include/tclap/PrintSensibly.h: subsumed by StdOutput
2053+
2054+2004-10-31 14:13 mes5k
2055+
2056+ * docs/manual.html: tweak
2057+
2058+2004-10-30 15:58 mes5k
2059+
2060+ * NEWS, README: updates
2061+
2062+2004-10-30 15:51 mes5k
2063+
2064+ * docs/Makefile.am: added manual.xml
2065+
2066+2004-10-30 15:47 mes5k
2067+
2068+ * docs/: manual.html, manual.xml, style.css: minor tweaks
2069+
2070+2004-10-30 15:34 mes5k
2071+
2072+ * configure.in: 1.0.2
2073+
2074+2004-10-30 15:30 mes5k
2075+
2076+ * docs/README: init
2077+
2078+2004-10-30 15:30 mes5k
2079+
2080+ * docs/style.css: new style
2081+
2082+2004-10-30 15:30 mes5k
2083+
2084+ * docs/: manual.html, manual.xml: manual.html is now generated from
2085+ manual.xml
2086+
2087+2004-10-30 15:26 mes5k
2088+
2089+ * include/tclap/: MultiArg.h, ValueArg.h: yet another fix for
2090+ HAVE_SSTREAM stuff
2091+
2092+2004-10-30 08:42 mes5k
2093+
2094+ * NEWS: 1.0.1
2095+
2096+2004-10-30 08:03 mes5k
2097+
2098+ * configure.in: new release
2099+
2100+2004-10-28 09:41 mes5k
2101+
2102+ * include/tclap/: ValueArg.h, MultiArg.h: fixed config.h problems
2103+
2104+2004-10-27 19:44 mes5k
2105+
2106+ * docs/manual.xml: manual as docbook
2107+
2108+2004-10-22 08:56 mes5k
2109+
2110+ * docs/style.css: added visited color to links
2111+
2112+2004-10-22 07:38 mes5k
2113+
2114+ * docs/index.html: fixed mailto
2115+
2116+2004-10-21 18:58 mes5k
2117+
2118+ * docs/: manual.html: minor tweaks
2119+
2120+2004-10-21 18:13 mes5k
2121+
2122+ * docs/manual.html: updated for new test1
2123+
2124+2004-10-21 18:02 mes5k
2125+
2126+ * include/tclap/CmdLine.h: catch by ref
2127+
2128+2004-10-21 18:01 mes5k
2129+
2130+ * examples/: test1.cpp, test2.cpp, test3.cpp, test4.cpp, test5.cpp,
2131+ test6.cpp, test7.cpp, test8.cpp: changed test1 and now catching
2132+ exceptions by ref
2133+
2134+2004-10-21 17:38 mes5k
2135+
2136+ * tests/: test1.out, test1.sh, test2.out, test3.out, test3.sh,
2137+ test4.out, test40.out: changes for new test1
2138+
2139+2004-10-21 15:50 mes5k
2140+
2141+ * examples/test1.cpp: fixed includes
2142+
2143+2004-10-21 10:03 mes5k
2144+
2145+ * docs/index.html: changed link
2146+
2147+2004-10-21 09:02 mes5k
2148+
2149+ * include/tclap/: ValueArg.h, MultiArg.h: changed enum names
2150+ because of alpha conflicts
2151+
2152+2004-10-20 20:04 mes5k
2153+
2154+ * include/tclap/: CmdLine.h, CmdLineInterface.h, MultiArg.h,
2155+ PrintSensibly.h, SwitchArg.h, UnlabeledMultiArg.h,
2156+ UnlabeledValueArg.h, ValueArg.h, XorHandler.h: cleaned up some
2157+ includes and added ifdefs for sstream
2158+
2159+2004-10-20 19:00 mes5k
2160+
2161+ * examples/test5.cpp: fixed a bizarre bug
2162+
2163+2004-10-20 18:59 mes5k
2164+
2165+ * tests/: test20.out, test21.out, test25.out, test33.out: fixed a
2166+ test5 bug
2167+
2168+2004-10-20 16:17 mes5k
2169+
2170+ * Makefile.am: added msc
2171+
2172+2004-10-20 16:06 mes5k
2173+
2174+ * configure.in: added msc stuff
2175+
2176+2004-10-20 16:05 mes5k
2177+
2178+ * msc/: examples/Makefile.am, Makefile.am: init
2179+
2180+2004-10-20 16:00 mes5k
2181+
2182+ * NEWS: update
2183+
2184+2004-10-20 15:58 mes5k
2185+
2186+ * msc/README: init
2187+
2188+2004-10-20 15:47 mes5k
2189+
2190+ * msc/: tclap-beta.ncb, tclap-beta.sln, tclap-beta.suo,
2191+ tclap-beta.vcproj, examples/test1.vcproj, examples/test2.vcproj,
2192+ examples/test3.vcproj, examples/test4.vcproj,
2193+ examples/test5.vcproj, examples/test6.vcproj,
2194+ examples/test7.vcproj, examples/test8.vcproj: init
2195+
2196+2004-10-19 11:18 mes5k
2197+
2198+ * docs/Makefile.am: added stylesheet
2199+
2200+2004-10-19 10:51 mes5k
2201+
2202+ * AUTHORS: more
2203+
2204+2004-10-19 10:39 mes5k
2205+
2206+ * NEWS, AUTHORS: added 1.0 notes
2207+
2208+2004-10-14 13:04 mes5k
2209+
2210+ * examples/test4.cpp: shows how to alter output
2211+
2212+2004-10-14 13:03 mes5k
2213+
2214+ * tests/test18.out: updated output
2215+
2216+2004-10-14 12:03 mes5k
2217+
2218+ * include/tclap/CmdLineInterface.h: added failure to the interface
2219+
2220+2004-10-14 11:07 mes5k
2221+
2222+ * include/tclap/ArgException.h: doh. now what() is proper
2223+
2224+2004-10-14 10:44 mes5k
2225+
2226+ * include/tclap/CmdLine.h: made destructor virtual
2227+
2228+2004-10-14 10:20 mes5k
2229+
2230+ * include/tclap/CmdLine.h: moved all output handling into separate
2231+ methods
2232+
2233+2004-10-14 10:19 mes5k
2234+
2235+ * include/tclap/Arg.h: made processArg pure virtual
2236+
2237+2004-10-14 10:19 mes5k
2238+
2239+ * include/tclap/ArgException.h: fixed documentation omission
2240+
2241+2004-10-12 14:09 mes5k
2242+
2243+ * docs/style.css: tweak
2244+
2245+2004-10-07 11:22 mes5k
2246+
2247+ * docs/style.css: color change
2248+
2249+2004-10-01 10:54 mes5k
2250+
2251+ * include/tclap/ArgException.h: added type description
2252+
2253+2004-09-30 18:16 mes5k
2254+
2255+ * docs/: index.html, manual.html, style.css: added CSS style
2256+
2257+2004-09-30 09:17 mes5k
2258+
2259+ * docs/manual.html: more updates
2260+
2261+2004-09-29 08:24 mes5k
2262+
2263+ * docs/: index.html, manual.html: proofing updates
2264+
2265+2004-09-27 14:37 mes5k
2266+
2267+ * docs/: index.html, manual.html: xhtml and tidied
2268+
2269+2004-09-27 14:36 mes5k
2270+
2271+ * docs/Doxyfile.in: added dot handling
2272+
2273+2004-09-27 14:30 mes5k
2274+
2275+ * include/tclap/: Arg.h, ArgException.h, CmdLine.h, MultiArg.h,
2276+ SwitchArg.h, ValueArg.h: added new Exception classes
2277+
2278+2004-09-27 12:53 mes5k
2279+
2280+ * include/tclap/ArgException.h: minor tweaks
2281+
2282+2004-09-26 19:32 mes5k
2283+
2284+ * docs/manual.html: updates yet again
2285+
2286+2004-09-26 19:00 mes5k
2287+
2288+ * docs/manual.html: updates
2289+
2290+2004-09-26 18:50 mes5k
2291+
2292+ * docs/manual.html: substantial updates
2293+
2294+2004-09-26 16:54 mes5k
2295+
2296+ * include/tclap/: Arg.h, CmdLine.h, CmdLineInterface.h, MultiArg.h,
2297+ PrintSensibly.h, ValueArg.h: minor formatting
2298+
2299+2004-09-26 15:50 mes5k
2300+
2301+ * docs/manual.html: updates
2302+
2303+2004-09-26 15:17 mes5k
2304+
2305+ * tests/runtests.sh: minor fix so that we run all tests
2306+
2307+2004-09-26 11:51 macbishop
2308+
2309+ * docs/Doxyfile.in: Removed src subdir
2310+
2311+2004-09-26 11:49 macbishop
2312+
2313+ * examples/Makefile.am: Removed libtclap.a deps
2314+
2315+2004-09-26 11:46 macbishop
2316+
2317+ * configure.in: Removed creation of src/Makefile
2318+
2319+2004-09-26 11:34 macbishop
2320+
2321+ * Makefile.am: Removed src subdir
2322+
2323+2004-09-26 11:31 macbishop
2324+
2325+ * src/: Arg.cpp, CmdLine.cpp, Makefile.am, PrintSensibly.cpp,
2326+ SwitchArg.cpp, XorHandler.cpp: Implementation now in header files
2327+
2328+2004-09-26 11:27 macbishop
2329+
2330+ * include/tclap/: Arg.h, ArgException.h, CmdLine.h, HelpVisitor.h,
2331+ Makefile.am, MultiArg.h, PrintSensibly.h, SwitchArg.h,
2332+ UnlabeledMultiArg.h, UnlabeledValueArg.h, ValueArg.h,
2333+ VersionVisitor.h, XorHandler.h, CmdLineInterface.h,
2334+ CommandLine.h: Moving the implementation of tclap to the header
2335+ files presented me with two major problems. 1) There where static
2336+ functions and variables that could cause link errors if tclap
2337+ where used in different files (e.g. file1.cc and file2.cc
2338+ included tclap then compiling both files would give hard symbols
2339+ for some variables which would produce multiple definition when
2340+ linking) 2) The dependencies of tclap was a bit strange (CmdLine
2341+ depends on Args and Args depends on CmdLine for instance)
2342+
2343+ The first problem I solved by removing all static variables
2344+ putting them in static member functions (which are weak-symbols).
2345+ So for instance every where there previously was something like x
2346+ = _delimiter there now is x = delimiter() or in case of write
2347+ acces delimiterRef() = x instead of _delimiter = x (I had to
2348+ append the Ref because there where already functions with the
2349+ same name as the variables). To solve the problem with static
2350+ functions I simply inlined them. This causes the compiler to
2351+ produce a weak symbol or inline if appropriate. We can put the
2352+ functions inside the class declaration later to make the code
2353+ look better. This worked fine in all but two cases. In the
2354+ ValueArg and MultiArg classes I had to do a "hack" to work around
2355+ the specialization template for extractValue<std::string>. The
2356+ code for this is very simple but it might look strange an stupid
2357+ at first but it is only to resolve the specialisation to a weak
2358+ symbol. What I did was I put the implementations of extractValue
2359+ in a helper class and I could then create a specialized class
2360+ instead of function and everything worked out. I think now in
2361+ retrospect there might be better solutions to this but I'll think
2362+ a bit more on it (maybe some type of inlining on the specialized
2363+ version would suffice but I'm not sure).
2364+
2365+ To handle the dependencies I had to do some rewriting. The first
2366+ step was to introduce a new class CmdLineInterface that is a
2367+ purely abstract base of CmdLine that specifies the functions
2368+ needed by Arg and friends. Thus Arg classes now takes an
2369+ CmdLineInterface object as input instead (however only CmdLine
2370+ can ever be instantiated of-course). With this extra class
2371+ cleaning up the dependencies was quite simple, I've attached a
2372+ dependency graph to the mail (depgraph.png). I also cleaned up
2373+ the #includes so now only what actually needs inclusion is
2374+ included. A nice side effect of this is that the impl. of CmdLine
2375+ is now put back into CmdLine.h (where I guess you wanted it)
2376+ which (recursivly) includes everything else needed.
2377+
2378+ Just to make things clear for myself regarding the class
2379+ dependencies I made a class TCLAP::Exception that inherits from
2380+ std::exception and is a base of ArgException (Exception does
2381+ nothing currently). If we don't want the Exception class it can
2382+ be removed, however I think it could be a nice logic to have a
2383+ base Exception class that every exception inherits from, but we
2384+ can discuss that when we decide how to handle exceptions.
2385+
2386+2004-09-26 08:07 macbishop
2387+
2388+ * tests/runtests.sh: Now return 0 if all tests fail and 1 if any
2389+ test fail
2390+
2391+2004-09-26 07:58 macbishop
2392+
2393+ * tests/runtests.sh: Runs all tests and sumarizes the result
2394+
2395+2004-09-20 17:09 mes5k
2396+
2397+ * include/tclap/CommandLine.h: added some comments
2398+
2399+2004-09-20 17:08 mes5k
2400+
2401+ * src/CmdLine.cpp: formatting only
2402+
2403+2004-09-20 10:05 macbishop
2404+
2405+ * include/tclap/CommandLine.h: Recommit because something is
2406+ strange. The changes are that memory allocated in _construct is
2407+ deallocated when the CmdLine obj is destroyed
2408+
2409+2004-09-19 11:32 macbishop
2410+
2411+ * src/CmdLine.cpp: Memory allocated in _constructor is now deleted
2412+ when the object is destroyed
2413+
2414+2004-09-18 09:54 mes5k
2415+
2416+ * include/tclap/: Arg.h, ArgException.h, CmdLine.h, CommandLine.h,
2417+ HelpVisitor.h, IgnoreRestVisitor.h, MultiArg.h, PrintSensibly.h,
2418+ SwitchArg.h, UnlabeledMultiArg.h, UnlabeledValueArg.h,
2419+ ValueArg.h, VersionVisitor.h, Visitor.h, XorHandler.h: changed
2420+ ifndef labels
2421+
2422+2004-09-18 07:53 macbishop
2423+
2424+ * include/tclap/Arg.h: Had to make ~Arg() public because it won't
2425+ be possible to delete Arg*s if it is not, and we want that (I
2426+ think).
2427+
2428+2004-09-15 21:24 mes5k
2429+
2430+ * configure.in: version 1.0.0
2431+
2432+2004-09-15 20:54 mes5k
2433+
2434+ * include/tclap/Arg.h, include/tclap/ArgException.h,
2435+ include/tclap/HelpVisitor.h, include/tclap/IgnoreRestVisitor.h,
2436+ include/tclap/MultiArg.h, include/tclap/SwitchArg.h,
2437+ include/tclap/UnlabeledMultiArg.h, include/tclap/ValueArg.h,
2438+ include/tclap/VersionVisitor.h, include/tclap/Visitor.h,
2439+ src/Arg.cpp, src/SwitchArg.cpp: cleaned up a bunch of things
2440+
2441+2004-09-11 19:35 mes5k
2442+
2443+ * tests/: Makefile.am, test47.out, test47.sh, test48.out,
2444+ test48.sh, test49.out, test49.sh, test50.out, test50.sh,
2445+ test51.out, test51.sh, test52.out, test52.sh, test53.out,
2446+ test53.sh, test54.out, test54.sh: added tests for CmdLine arg
2447+
2448+2004-09-11 19:33 mes5k
2449+
2450+ * examples/: Makefile.am, test8.cpp: added new test for CmdLine arg
2451+
2452+2004-09-11 19:32 mes5k
2453+
2454+ * src/Arg.cpp, src/SwitchArg.cpp, include/tclap/Arg.h,
2455+ include/tclap/MultiArg.h, include/tclap/SwitchArg.h,
2456+ include/tclap/UnlabeledMultiArg.h,
2457+ include/tclap/UnlabeledValueArg.h, include/tclap/ValueArg.h: got
2458+ CmdLine arg working
2459+
2460+2004-09-09 19:08 mes5k
2461+
2462+ * configure: shouldn't be in cvs
2463+
2464+2004-09-09 12:56 macbishop
2465+
2466+ * src/: Arg.cpp, SwitchArg.cpp: Added support for automatic
2467+ addition to a CmdLine parser
2468+
2469+2004-09-09 12:55 macbishop
2470+
2471+ * include/tclap/: Arg.h, MultiArg.h, SwitchArg.h,
2472+ UnlabeledMultiArg.h, UnlabeledValueArg.h, ValueArg.h: Support for
2473+ automatic addition to a CmdLine parser
2474+
2475+2004-09-08 20:09 mes5k
2476+
2477+ * src/CmdLine.cpp: fixed a warning in MSVC++
2478+
2479+2004-09-07 16:11 mes5k
2480+
2481+ * include/tclap/Makefile.in, docs/Makefile.in,
2482+ examples/Makefile.in, tests/Makefile.in: not needed
2483+
2484+2004-09-07 16:08 mes5k
2485+
2486+ * Makefile.in, src/Makefile.in, include/Makefile.in: not needed
2487+
2488+2004-09-07 15:14 mes5k
2489+
2490+ * src/CmdLine.cpp: now throws exception on matching
2491+ names/flags/desc
2492+
2493+2004-09-07 15:12 mes5k
2494+
2495+ * examples/test4.cpp, examples/test7.cpp, tests/test38.out,
2496+ tests/test39.out, tests/test43.out, tests/test46.out: fixed to
2497+ handle new exception on matching names/flags/desc
2498+
2499+2004-09-07 13:25 mes5k
2500+
2501+ * docs/Doxyfile.in: updated Doxyfile for newer doxygen
2502+
2503+2004-09-07 11:27 mes5k
2504+
2505+ * examples/: test1.cpp, test2.cpp, test3.cpp, test4.cpp, test5.cpp,
2506+ test6.cpp: changed namespace std handling
2507+
2508+2004-09-07 11:25 mes5k
2509+
2510+ * examples/test7.cpp: added more args to better test output
2511+ printing
2512+
2513+2004-09-07 11:24 mes5k
2514+
2515+ * src/Arg.cpp, src/CmdLine.cpp, src/PrintSensibly.cpp,
2516+ src/SwitchArg.cpp, src/XorHandler.cpp, include/tclap/Arg.h,
2517+ include/tclap/ArgException.h, include/tclap/CommandLine.h,
2518+ include/tclap/MultiArg.h, include/tclap/PrintSensibly.h,
2519+ include/tclap/SwitchArg.h, include/tclap/UnlabeledMultiArg.h,
2520+ include/tclap/UnlabeledValueArg.h, include/tclap/ValueArg.h,
2521+ include/tclap/XorHandler.h: changed namespace std handling
2522+
2523+2004-09-07 11:24 mes5k
2524+
2525+ * tests/: test15.out, test16.out, test17.out, test22.out,
2526+ test23.out, test24.out, test31.out, test32.out, test38.out,
2527+ test39.out, test42.out, test44.out, test46.out: fixed test output
2528+ for new formatting
2529+
2530+2004-09-04 14:09 macbishop
2531+
2532+ * include/tclap/: UnlabeledMultiArg.h, UnlabeledValueArg.h:
2533+ Compilation was broken due to undef. symbols in compilers with 2
2534+ stage name-lookup (such as gcc >= 3.4). The fix for this is to
2535+ tell the compiler what symbols to use withlines like: using
2536+ MultiArg<T>::_name;
2537+
2538+ This is now done and everything compiles fine. Since I'm not sure
2539+ about the support for things like using MultiArg<T>::_name; on
2540+ all compilers it is ifdef:ed away by default. To get 2 stage
2541+ name-lookup to work you have to add -DTWO_STAGE_NAME_LOOKUP to
2542+ your CXXFLAGS before running configure.
2543+
2544+2004-08-18 12:34 mes5k
2545+
2546+ * src/PrintSensibly.cpp: smartened printing even further
2547+
2548+2004-08-10 20:35 mes5k
2549+
2550+ * src/PrintSensibly.cpp: fixed int messiness
2551+
2552+2004-08-10 20:32 mes5k
2553+
2554+ * autotools.sh: made path explicit
2555+
2556+2004-08-10 20:05 mes5k
2557+
2558+ * include/tclap/: MultiArg.h, ValueArg.h: changed allowed separator
2559+
2560+2004-08-10 19:53 mes5k
2561+
2562+ * tests/: Makefile.am, test10.out, test11.out, test12.out,
2563+ test15.out, test16.out, test17.out, test18.out, test22.out,
2564+ test23.out, test24.out, test26.out, test27.out, test28.out,
2565+ test29.out, test30.out, test31.out, test32.out, test35.out,
2566+ test36.out, test38.out, test39.out, test4.out, test40.out,
2567+ test40.sh, test41.out, test41.sh, test42.out, test42.sh,
2568+ test43.out, test43.sh, test44.out, test44.sh, test45.out,
2569+ test45.sh, test46.out, test46.sh, test7.out, test7.sh: changed
2570+ error output and added usage stuff
2571+
2572+2004-08-10 19:52 mes5k
2573+
2574+ * NEWS, README: updated
2575+
2576+2004-08-10 19:47 mes5k
2577+
2578+ * configure.in: changed to 0.9.9
2579+
2580+2004-08-10 19:46 mes5k
2581+
2582+ * examples/test7.cpp: tweaked for usage
2583+
2584+2004-08-10 19:45 mes5k
2585+
2586+ * include/tclap/: CmdLine.h, CommandLine.h, Makefile.am,
2587+ PrintSensibly.h, XorHandler.h: added usage stuff
2588+
2589+2004-08-10 19:43 mes5k
2590+
2591+ * src/: CmdLine.cpp, Makefile.am, PrintSensibly.cpp,
2592+ XorHandler.cpp: tweaked usage
2593+
2594+2004-07-05 19:02 mes5k
2595+
2596+ * docs/manual.html: updated for allowed
2597+
2598+2004-07-03 20:01 mes5k
2599+
2600+ * tests/: test34.out, test34.sh, test35.out, test35.sh, test36.out,
2601+ test36.sh, test37.out, test37.sh, test38.out, test38.sh,
2602+ test39.out, test39.sh, Makefile.am: allow tests
2603+
2604+2004-07-03 19:56 mes5k
2605+
2606+ * include/tclap/ValueArg.h: doh
2607+
2608+2004-07-03 19:34 mes5k
2609+
2610+ * NEWS: allow
2611+
2612+2004-07-03 19:31 mes5k
2613+
2614+ * include/tclap/Arg.h: made isReq virtual
2615+
2616+2004-07-03 19:30 mes5k
2617+
2618+ * include/tclap/: MultiArg.h, UnlabeledMultiArg.h,
2619+ UnlabeledValueArg.h, ValueArg.h: added allow
2620+
2621+2004-07-03 19:29 mes5k
2622+
2623+ * examples/: Makefile.am, test6.cpp, test7.cpp: added tests for
2624+ allowed
2625+
2626+2004-07-03 19:28 mes5k
2627+
2628+ * docs/: index.html, manual.html: minor typos
2629+
2630+2004-04-26 08:18 mes5k
2631+
2632+ * Makefile.am, autotools.sh, examples/Makefile.am, src/Makefile.am:
2633+ fixed for autotools for mandrake
2634+
2635+2004-02-13 20:09 mes5k
2636+
2637+ * configure.in: 0.9.8a
2638+
2639+2004-02-13 15:23 mes5k
2640+
2641+ * tests/: test22.out, test23.out, test24.out: output updates
2642+
2643+2004-02-13 15:21 mes5k
2644+
2645+ * include/tclap/: Arg.h, UnlabeledMultiArg.h, UnlabeledValueArg.h:
2646+ now the Arg adds itself to the CmdLine arglist
2647+
2648+2004-02-13 15:20 mes5k
2649+
2650+ * src/: Arg.cpp, CmdLine.cpp: reworked how we add args to list
2651+
2652+2004-02-10 08:52 mes5k
2653+
2654+ * NEWS: update
2655+
2656+2004-02-09 21:04 mes5k
2657+
2658+ * examples/test5.cpp: change
2659+
2660+2004-02-09 21:03 mes5k
2661+
2662+ * src/SwitchArg.cpp: allowing blank flags
2663+
2664+2004-02-09 20:54 mes5k
2665+
2666+ * configure.in: 0.9.8
2667+
2668+2004-02-09 20:52 mes5k
2669+
2670+ * tests/: Makefile.am, test20.out, test21.out, test22.out,
2671+ test23.out, test24.out, test25.out, test33.out, test33.sh:
2672+ updates
2673+
2674+2004-02-09 20:39 mes5k
2675+
2676+ * docs/manual.html: blank args
2677+
2678+2004-02-09 20:16 mes5k
2679+
2680+ * tests/: test15.out, test16.out, test17.out, test20.out,
2681+ test20.sh, test21.out, test21.sh, test22.out, test23.out,
2682+ test24.out, test25.out, test25.sh, test31.out, test32.out:
2683+ updates
2684+
2685+2004-02-09 20:05 mes5k
2686+
2687+ * examples/: test5.cpp, test3.cpp: minor fixes and new args
2688+
2689+2004-02-09 19:56 mes5k
2690+
2691+ * include/tclap/Arg.h: added new var
2692+
2693+2004-02-09 19:54 mes5k
2694+
2695+ * src/: Arg.cpp, CmdLine.cpp, SwitchArg.cpp: allowing blank flags
2696+
2697+2004-02-07 15:37 mes5k
2698+
2699+ * src/XorHandler.cpp: fix for the output
2700+
2701+2004-02-06 17:41 mes5k
2702+
2703+ * NEWS: added info
2704+
2705+2004-02-06 17:24 mes5k
2706+
2707+ * tests/: test12.out, test15.out, test16.out, test17.out: fixed
2708+ test3 stuff
2709+
2710+2004-02-06 17:20 mes5k
2711+
2712+ * tests/: test26.out, test26.sh, test27.out, test27.sh, test28.out,
2713+ test28.sh, test29.out, test29.sh, test30.out, test30.sh,
2714+ test31.out, test31.sh, test32.out, test32.sh, Makefile.am: added
2715+ tests for reading extra incorrect values from arg
2716+
2717+2004-02-06 17:18 mes5k
2718+
2719+ * examples/test3.cpp: add multi float
2720+
2721+2004-02-06 17:18 mes5k
2722+
2723+ * include/tclap/: MultiArg.h, ValueArg.h: fixed error reading
2724+ incorrect extra values in an arg
2725+
2726+2004-02-04 18:56 mes5k
2727+
2728+ * include/tclap/XorHandler.h: added include
2729+
2730+2004-02-03 20:21 mes5k
2731+
2732+ * include/tclap/XorHandler.h: added doxyen
2733+
2734+2004-02-03 20:00 mes5k
2735+
2736+ * docs/manual.html: xor stuff
2737+
2738+2004-02-03 19:56 mes5k
2739+
2740+ * examples/test5.cpp: prettified
2741+
2742+2004-02-03 19:27 mes5k
2743+
2744+ * examples/: Makefile.am, test5.cpp: xor stuff
2745+
2746+2004-02-03 19:24 mes5k
2747+
2748+ * configure.in: 0.9.7
2749+
2750+2004-02-03 19:22 mes5k
2751+
2752+ * src/: Arg.cpp, CmdLine.cpp, Makefile.am, XorHandler.cpp: added
2753+ xor
2754+
2755+2004-02-03 19:20 mes5k
2756+
2757+ * include/tclap/: Arg.h, CmdLine.h, CommandLine.h,
2758+ UnlabeledValueArg.h, XorHandler.h, Makefile.am: xor stuff
2759+
2760+2004-02-03 19:14 mes5k
2761+
2762+ * tests/: test1.sh, test10.sh, test11.sh, test12.sh, test13.sh,
2763+ test14.sh, test15.sh, test16.sh, test17.sh, test18.sh, test19.sh,
2764+ test2.sh, test20.sh, test21.sh, test22.sh, test23.sh, test24.sh,
2765+ test25.sh, test3.sh, test4.sh, test5.sh, test6.sh, test7.sh,
2766+ test8.sh, test9.sh, Makefile.am, test20.out, test21.out,
2767+ test22.out, test23.out, test24.out, test25.out: added new tests
2768+ and comments
2769+
2770+2004-01-29 20:36 mes5k
2771+
2772+ * include/tclap/: CmdLine.h, CommandLine.h, MultiArg.h, ValueArg.h:
2773+ fix for strings with spaces
2774+
2775+2004-01-10 09:39 mes5k
2776+
2777+ * docs/index.html: spelling
2778+
2779+2004-01-07 22:18 mes5k
2780+
2781+ * docs/: index.html, manual.html: updates
2782+
2783+2004-01-07 21:51 mes5k
2784+
2785+ * NEWS: update
2786+
2787+2004-01-07 21:30 mes5k
2788+
2789+ * include/tclap/CmdLine.h, src/CmdLine.cpp: added backward
2790+ compatibility
2791+
2792+2004-01-07 21:11 mes5k
2793+
2794+ * src/Arg.cpp: fixed warning
2795+
2796+2004-01-07 21:04 mes5k
2797+
2798+ * examples/: Makefile.am, test4.cpp: added new test
2799+
2800+2004-01-07 21:00 mes5k
2801+
2802+ * tests/Makefile.am: added two new tests
2803+
2804+2004-01-07 20:59 mes5k
2805+
2806+ * include/tclap/: Arg.h, ArgException.h, CmdLine.h, HelpVisitor.h,
2807+ IgnoreRestVisitor.h, MultiArg.h, SwitchArg.h,
2808+ UnlabeledMultiArg.h, UnlabeledValueArg.h, ValueArg.h,
2809+ VersionVisitor.h, Visitor.h: fixed combined switch stuff and
2810+ added doxygen comments
2811+
2812+2004-01-07 20:58 mes5k
2813+
2814+ * src/: Arg.cpp, CmdLine.cpp, SwitchArg.cpp: fixed some combined
2815+ switch stuff
2816+
2817+2004-01-07 20:50 mes5k
2818+
2819+ * tests/: test18.out, test18.sh, test19.out, test19.sh: new tests
2820+
2821+2003-12-21 18:32 mes5k
2822+
2823+ * autotools.sh: init
2824+
2825+2003-12-21 18:31 mes5k
2826+
2827+ * include/tclap/UnlabeledMultiArg.h: delim stuff
2828+
2829+2003-12-21 18:14 mes5k
2830+
2831+ * examples/test1.cpp: new fangled
2832+
2833+2003-12-21 18:11 mes5k
2834+
2835+ * configure.in: 0.9.6
2836+
2837+2003-12-21 18:10 mes5k
2838+
2839+ * tests/: test13.sh, test14.sh: updated
2840+
2841+2003-12-21 18:09 mes5k
2842+
2843+ * tests/: test10.out, test11.out, test12.out, test13.out,
2844+ test14.out, test15.out, test16.out, test4.out: updates
2845+
2846+2003-12-21 18:07 mes5k
2847+
2848+ * tests/Makefile.am: added test
2849+
2850+2003-12-21 18:06 mes5k
2851+
2852+ * tests/: test17.out, test17.sh: first checkin
2853+
2854+2003-12-21 18:01 mes5k
2855+
2856+ * src/Arg.cpp: removed message
2857+
2858+2003-12-21 17:59 mes5k
2859+
2860+ * examples/Makefile.am: added warnings
2861+
2862+2003-12-21 17:58 mes5k
2863+
2864+ * examples/: test2.cpp, test3.cpp: fixed warnings
2865+
2866+2003-12-21 17:53 mes5k
2867+
2868+ * Makefile.am: added warnings
2869+
2870+2003-12-21 17:52 mes5k
2871+
2872+ * src/Arg.cpp, src/CmdLine.cpp, src/SwitchArg.cpp,
2873+ examples/test3.cpp: added delimiter
2874+
2875+2003-12-21 17:50 mes5k
2876+
2877+ * src/Makefile.am: added warnings
2878+
2879+2003-12-21 17:48 mes5k
2880+
2881+ * include/tclap/: Arg.h, ArgException.h, CmdLine.h, MultiArg.h,
2882+ UnlabeledValueArg.h, ValueArg.h: delimiter changes
2883+
2884+2003-04-03 10:26 mes5k
2885+
2886+ * include/tclap/Makefile.am: added new visitor
2887+
2888+2003-04-03 10:20 mes5k
2889+
2890+ * include/tclap/Makefile.am: updates
2891+
2892+2003-04-03 10:13 mes5k
2893+
2894+ * config/: mkinstalldirs, install-sh, missing, depcomp: init
2895+ checkin
2896+
2897+2003-04-03 10:11 mes5k
2898+
2899+ * NEWS: update
2900+
2901+2003-04-03 10:06 mes5k
2902+
2903+ * examples/Makefile.am, examples/test1.cpp, examples/test2.cpp,
2904+ examples/test3.cpp, INSTALL, Makefile.in: updates
2905+
2906+2003-04-03 10:01 mes5k
2907+
2908+ * Makefile.am, configure.in: added tests
2909+
2910+2003-04-03 10:00 mes5k
2911+
2912+ * docs/: index.html, manual.html: updated docs
2913+
2914+2003-04-03 09:59 mes5k
2915+
2916+ * include/tclap/: Arg.h, CmdLine.h, IgnoreRestVisitor.h,
2917+ MultiArg.h, SwitchArg.h, UnlabeledMultiArg.h,
2918+ UnlabeledValueArg.h, ValueArg.h: big update
2919+
2920+2003-04-03 09:57 mes5k
2921+
2922+ * src/: CmdLine.cpp, SwitchArg.cpp, Arg.cpp: new update
2923+
2924+2003-04-03 09:56 mes5k
2925+
2926+ * tests/: test10.sh, test11.sh, test12.sh, test1.sh, test13.sh,
2927+ test14.sh, test15.sh, test16.sh, test2.sh, test3.sh, test4.sh,
2928+ test5.sh, test6.sh, test7.sh, test8.sh, test9.sh, test10.out,
2929+ test11.out, test12.out, test13.out, test14.out, test15.out,
2930+ test16.out, test1.out, test2.out, test3.out, test4.out,
2931+ test5.out, test6.out, test7.out, Makefile.am, test8.out,
2932+ test9.out, Makefile.in, genOut.pl: initial checkin
2933+
2934+2003-03-18 18:39 mes5k
2935+
2936+ * NEWS, configure.in, AUTHORS, COPYING, ChangeLog, Makefile.am,
2937+ Makefile.in, README, aclocal.m4, configure,
2938+ config/ac_cxx_have_sstream.m4, config/ac_cxx_have_strstream.m4,
2939+ config/ac_cxx_namespaces.m4, config/bb_enable_doxygen.m4,
2940+ config/config.h.in, config/stamp-h.in, config/stamp-h1,
2941+ examples/Makefile.am, examples/Makefile.in, examples/test1.cpp,
2942+ examples/test2.cpp, include/Makefile.am, include/Makefile.in,
2943+ include/tclap/Arg.h, include/tclap/ArgException.h,
2944+ include/tclap/CmdLine.h, include/tclap/HelpVisitor.h,
2945+ include/tclap/MultiArg.h, docs/Doxyfile.in, docs/Makefile.am,
2946+ docs/Makefile.in, docs/index.html, docs/manual.html,
2947+ include/tclap/Makefile.am, include/tclap/Makefile.in,
2948+ include/tclap/SwitchArg.h, include/tclap/ValueArg.h,
2949+ include/tclap/VersionVisitor.h, include/tclap/Visitor.h,
2950+ src/Arg.cpp, src/CmdLine.cpp, src/Makefile.am, src/Makefile.in,
2951+ src/SwitchArg.cpp: Initial revision
2952+
2953+2003-03-18 18:39 mes5k
2954+
2955+ * NEWS, configure.in, AUTHORS, COPYING, ChangeLog, Makefile.am,
2956+ Makefile.in, README, aclocal.m4, configure,
2957+ config/ac_cxx_have_sstream.m4, config/ac_cxx_have_strstream.m4,
2958+ config/ac_cxx_namespaces.m4, config/bb_enable_doxygen.m4,
2959+ config/config.h.in, config/stamp-h.in, config/stamp-h1,
2960+ examples/Makefile.am, examples/Makefile.in, examples/test1.cpp,
2961+ examples/test2.cpp, include/Makefile.am, include/Makefile.in,
2962+ include/tclap/Arg.h, include/tclap/ArgException.h,
2963+ include/tclap/CmdLine.h, include/tclap/HelpVisitor.h,
2964+ include/tclap/MultiArg.h, docs/Doxyfile.in, docs/Makefile.am,
2965+ docs/Makefile.in, docs/index.html, docs/manual.html,
2966+ include/tclap/Makefile.am, include/tclap/Makefile.in,
2967+ include/tclap/SwitchArg.h, include/tclap/ValueArg.h,
2968+ include/tclap/VersionVisitor.h, include/tclap/Visitor.h,
2969+ src/Arg.cpp, src/CmdLine.cpp, src/Makefile.am, src/Makefile.in,
2970+ src/SwitchArg.cpp: initial release
2971+
2972
2973=== added file 'external/tclap/INSTALL'
2974--- external/tclap/INSTALL 1970-01-01 00:00:00 +0000
2975+++ external/tclap/INSTALL 2013-05-01 15:50:43 +0000
2976@@ -0,0 +1,182 @@
2977+Basic Installation
2978+==================
2979+
2980+ These are generic installation instructions.
2981+
2982+ The `configure' shell script attempts to guess correct values for
2983+various system-dependent variables used during compilation. It uses
2984+those values to create a `Makefile' in each directory of the package.
2985+It may also create one or more `.h' files containing system-dependent
2986+definitions. Finally, it creates a shell script `config.status' that
2987+you can run in the future to recreate the current configuration, a file
2988+`config.cache' that saves the results of its tests to speed up
2989+reconfiguring, and a file `config.log' containing compiler output
2990+(useful mainly for debugging `configure').
2991+
2992+ If you need to do unusual things to compile the package, please try
2993+to figure out how `configure' could check whether to do them, and mail
2994+diffs or instructions to the address given in the `README' so they can
2995+be considered for the next release. If at some point `config.cache'
2996+contains results you don't want to keep, you may remove or edit it.
2997+
2998+ The file `configure.in' is used to create `configure' by a program
2999+called `autoconf'. You only need `configure.in' if you want to change
3000+it or regenerate `configure' using a newer version of `autoconf'.
3001+
3002+The simplest way to compile this package is:
3003+
3004+ 1. `cd' to the directory containing the package's source code and type
3005+ `./configure' to configure the package for your system. If you're
3006+ using `csh' on an old version of System V, you might need to type
3007+ `sh ./configure' instead to prevent `csh' from trying to execute
3008+ `configure' itself.
3009+
3010+ Running `configure' takes awhile. While running, it prints some
3011+ messages telling which features it is checking for.
3012+
3013+ 2. Type `make' to compile the package.
3014+
3015+ 3. Optionally, type `make check' to run any self-tests that come with
3016+ the package.
3017+
3018+ 4. Type `make install' to install the programs and any data files and
3019+ documentation.
3020+
3021+ 5. You can remove the program binaries and object files from the
3022+ source code directory by typing `make clean'. To also remove the
3023+ files that `configure' created (so you can compile the package for
3024+ a different kind of computer), type `make distclean'. There is
3025+ also a `make maintainer-clean' target, but that is intended mainly
3026+ for the package's developers. If you use it, you may have to get
3027+ all sorts of other programs in order to regenerate files that came
3028+ with the distribution.
3029+
3030+Compilers and Options
3031+=====================
3032+
3033+ Some systems require unusual options for compilation or linking that
3034+the `configure' script does not know about. You can give `configure'
3035+initial values for variables by setting them in the environment. Using
3036+a Bourne-compatible shell, you can do that on the command line like
3037+this:
3038+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
3039+
3040+Or on systems that have the `env' program, you can do it like this:
3041+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
3042+
3043+Compiling For Multiple Architectures
3044+====================================
3045+
3046+ You can compile the package for more than one kind of computer at the
3047+same time, by placing the object files for each architecture in their
3048+own directory. To do this, you must use a version of `make' that
3049+supports the `VPATH' variable, such as GNU `make'. `cd' to the
3050+directory where you want the object files and executables to go and run
3051+the `configure' script. `configure' automatically checks for the
3052+source code in the directory that `configure' is in and in `..'.
3053+
3054+ If you have to use a `make' that does not supports the `VPATH'
3055+variable, you have to compile the package for one architecture at a time
3056+in the source code directory. After you have installed the package for
3057+one architecture, use `make distclean' before reconfiguring for another
3058+architecture.
3059+
3060+Installation Names
3061+==================
3062+
3063+ By default, `make install' will install the package's files in
3064+`/usr/local/bin', `/usr/local/man', etc. You can specify an
3065+installation prefix other than `/usr/local' by giving `configure' the
3066+option `--prefix=PATH'.
3067+
3068+ You can specify separate installation prefixes for
3069+architecture-specific files and architecture-independent files. If you
3070+give `configure' the option `--exec-prefix=PATH', the package will use
3071+PATH as the prefix for installing programs and libraries.
3072+Documentation and other data files will still use the regular prefix.
3073+
3074+ In addition, if you use an unusual directory layout you can give
3075+options like `--bindir=PATH' to specify different values for particular
3076+kinds of files. Run `configure --help' for a list of the directories
3077+you can set and what kinds of files go in them.
3078+
3079+ If the package supports it, you can cause programs to be installed
3080+with an extra prefix or suffix on their names by giving `configure' the
3081+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
3082+
3083+Optional Features
3084+=================
3085+
3086+ Some packages pay attention to `--enable-FEATURE' options to
3087+`configure', where FEATURE indicates an optional part of the package.
3088+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
3089+is something like `gnu-as' or `x' (for the X Window System). The
3090+`README' should mention any `--enable-' and `--with-' options that the
3091+package recognizes.
3092+
3093+ For packages that use the X Window System, `configure' can usually
3094+find the X include and library files automatically, but if it doesn't,
3095+you can use the `configure' options `--x-includes=DIR' and
3096+`--x-libraries=DIR' to specify their locations.
3097+
3098+Specifying the System Type
3099+==========================
3100+
3101+ There may be some features `configure' can not figure out
3102+automatically, but needs to determine by the type of host the package
3103+will run on. Usually `configure' can figure that out, but if it prints
3104+a message saying it can not guess the host type, give it the
3105+`--host=TYPE' option. TYPE can either be a short name for the system
3106+type, such as `sun4', or a canonical name with three fields:
3107+ CPU-COMPANY-SYSTEM
3108+
3109+See the file `config.sub' for the possible values of each field. If
3110+`config.sub' isn't included in this package, then this package doesn't
3111+need to know the host type.
3112+
3113+ If you are building compiler tools for cross-compiling, you can also
3114+use the `--target=TYPE' option to select the type of system they will
3115+produce code for and the `--build=TYPE' option to select the type of
3116+system on which you are compiling the package.
3117+
3118+Sharing Defaults
3119+================
3120+
3121+ If you want to set default values for `configure' scripts to share,
3122+you can create a site shell script called `config.site' that gives
3123+default values for variables like `CC', `cache_file', and `prefix'.
3124+`configure' looks for `PREFIX/share/config.site' if it exists, then
3125+`PREFIX/etc/config.site' if it exists. Or, you can set the
3126+`CONFIG_SITE' environment variable to the location of the site script.
3127+A warning: not all `configure' scripts look for a site script.
3128+
3129+Operation Controls
3130+==================
3131+
3132+ `configure' recognizes the following options to control how it
3133+operates.
3134+
3135+`--cache-file=FILE'
3136+ Use and save the results of the tests in FILE instead of
3137+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
3138+ debugging `configure'.
3139+
3140+`--help'
3141+ Print a summary of the options to `configure', and exit.
3142+
3143+`--quiet'
3144+`--silent'
3145+`-q'
3146+ Do not print messages saying which checks are being made. To
3147+ suppress all normal output, redirect it to `/dev/null' (any error
3148+ messages will still be shown).
3149+
3150+`--srcdir=DIR'
3151+ Look for the package's source code in directory DIR. Usually
3152+ `configure' can determine that directory automatically.
3153+
3154+`--version'
3155+ Print the version of Autoconf used to generate the `configure'
3156+ script, and exit.
3157+
3158+`configure' also accepts some other, not widely useful, options.
3159
3160=== added file 'external/tclap/NEWS'
3161--- external/tclap/NEWS 1970-01-01 00:00:00 +0000
3162+++ external/tclap/NEWS 2013-05-01 15:50:43 +0000
3163@@ -0,0 +1,95 @@
3164+
3165+4/3/03 - Checked in a good sized update that move support of the library
3166+closer to that of the POSIX/GNU standards. Switches can now be combined into
3167+single arguments, -- is supported and MultiArgs now allow for multiple labeled
3168+args. I've also changed things a bit by subclassing MultiArg and ValueArg
3169+to get unlabeled versions of these classes. I think this is a bit cleaner
3170+design, despite two new classes.
3171+
3172+1/7/04 - ... and with great trepidation, I release 0.9.6. Loads of changes.
3173+The big change is that you can now define the delimiter used to separate
3174+argument flags and argument values. So if you prefer arguments of the style
3175+"-s=asdf" instead of "-s asdf", you can do so. I've also fixed a number of
3176+warnings generated and fixed a few pathologic bugs related to combined
3177+switches. That said, I suspect that there may be a few significant bugs
3178+in this release that I haven't uncovered yet. Please let me know ASAP if
3179+you find any.
3180+
3181+2/6/04 - Another big release: 0.9.7. First is a bugfix submitted by
3182+Matthias Stiller that specializes the _extractValue method in a couple of
3183+places that allows strings with spaces to be correctly read by tclap. A
3184+second bug found by John Ling has been fixed so that exceptions are thrown
3185+if more than one value is parsed from a single arg or if the second value
3186+parsed is invalid. A big new feature has been added that allows args to
3187+be xor'd. This means that two (or more) args can be specified such that
3188+one and only one of the args is required. If a second arg is found an
3189+exception is thrown. See the manual for details. As always, let me know
3190+if you run into any problems.
3191+
3192+2/10/04 - A minor release: 0.9.8. A couple of bug fixes for 0.9.7 are
3193+included and a feature has been added that allows Args to be specified
3194+without short options, meaning the user is forced to use only long options.
3195+This is useful for programs with more options than map sensibly to single
3196+chars.
3197+
3198+7/3/04 - Added a new constructor and handling to the various value args
3199+that allows the user to provide a list of values that the input arg values
3200+should be restricted to.
3201+
3202+8/9/04 - Created a function to print the output nicely, meaning line wraps
3203+are handled somewhat sensibly now. Also changed error handling slightly.
3204+Instead of printing the entire usage, I just print a short usage. If
3205+someone really hates this, its easy to change back. Let me know if this
3206+causes problems. I think this equals release 0.9.9!
3207+
3208+10/19/04 - A number of changes that should substantially improve the library.
3209+The most important being that we've moved the implementation of the library
3210+entirely into the header files. This means there is no longer a library to
3211+complile against, you simply have to #include <tclap/CmdLine.h>. New
3212+constructors have been added to the various Arg classes that allow them to
3213+be constructed with a CmdLine reference so that you no longer need to call
3214+the add method if you prefer it that way. The output generated by the library
3215+has been confined to a few methods in the CmdLine class. This means to
3216+generate different output you can extend CmdLine and override the offending
3217+methods. A number of style changes have been made in the code base to
3218+conform better to C++ best practices. A thoughtful user has contributed
3219+project files for the building the examples Microsoft Visual Studio. See
3220+the README file in the msc directory for more details
3221+
3222+And so we have release 1.0!
3223+
3224+10/30/04 - A few bugfixes. Now checking for include.h before including it.
3225+This will help Windows users who don't have it. Also changed test1 so that
3226+it doesn't use toupper, which apparently causes problem for non-ASCII
3227+character sets.
3228+
3229+10/31/04 - A few more tweaks, none of which should be noticeable to people
3230+who are already using the lib without trouble. Maybe I shouldn't release
3231+things early in the morning! Also note that manual.html is now generated
3232+from manual.xml. If you have your own docbook xsl style that you prefer,
3233+then have at it.
3234+
3235+12/3/04 - Some minor bug fixes including the removal of the two stage name
3236+lookup ifdefs which means that the software should work out of the box
3237+for gcc 3.4+. Isolated output in a separate class that should make
3238+customization of output easier. I also included a rudimentary output class
3239+that generated a (bad) Docbook command summary when used.
3240+
3241+1/4/05 - Several bug fixes, but no new features. Fixed a bug when mandatory
3242+long args and unlabeled args were used together and weren't working properly.
3243+Now they can be used together. Fixed another bug in spacePrint where long
3244+program names caused an infinite loop. Finally, fixed a small memory leak.
3245+
3246+1/6/05 - Fixed a bug where setting the output object for a CmdLine didn't
3247+register for version or usage generation. Doh! Created a Constraint interface
3248+that should facilitate the creation of different constraints on Args.
3249+This has involved changing the constructor interface, so if you've been using
3250+allowed lists, you'll need to make a small modification to your existing code.
3251+See examples/test6.cpp for details.
3252+
3253+9/26/09 - Whoa, long break. Primarily a bug-fix release, but we did switch
3254+to using traits, which necessitates the minor version bump. Take a look
3255+at test11.cpp and test12.cpp for examples on using ArgTraits for extending
3256+tclap for different types.
3257+
3258+4/16/11 - Another long break! Several minor bug and memory leak fixes.
3259
3260=== added file 'external/tclap/README'
3261--- external/tclap/README 1970-01-01 00:00:00 +0000
3262+++ external/tclap/README 2013-05-01 15:50:43 +0000
3263@@ -0,0 +1,16 @@
3264+
3265+TCLAP - Templatized Command Line Argument Parser
3266+
3267+This is a simple C++ library that facilitates parsing command line
3268+arguments in a type independent manner. It doesn't conform exactly
3269+to either the GNU or POSIX standards, although it is close. See
3270+docs/manual.html for descriptions of how things work or look at the
3271+simple examples in the examples dir.
3272+
3273+To find out what the latest changes are read the NEWS file in this directory.
3274+
3275+
3276+Any and all feedback is welcome to: Mike Smoot <mes@aescon.com>
3277+
3278+
3279+
3280
3281=== added directory 'external/tclap/include'
3282=== added directory 'external/tclap/include/tclap'
3283=== added file 'external/tclap/include/tclap/Arg.h'
3284--- external/tclap/include/tclap/Arg.h 1970-01-01 00:00:00 +0000
3285+++ external/tclap/include/tclap/Arg.h 2013-05-01 15:50:43 +0000
3286@@ -0,0 +1,692 @@
3287+// -*- Mode: c++; c-basic-offset: 4; tab-width: 4; -*-
3288+
3289+/******************************************************************************
3290+ *
3291+ * file: Arg.h
3292+ *
3293+ * Copyright (c) 2003, Michael E. Smoot .
3294+ * Copyright (c) 2004, Michael E. Smoot, Daniel Aarno .
3295+ * All rights reverved.
3296+ *
3297+ * See the file COPYING in the top directory of this distribution for
3298+ * more information.
3299+ *
3300+ * THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
3301+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3302+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
3303+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3304+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3305+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
3306+ * DEALINGS IN THE SOFTWARE.
3307+ *
3308+ *****************************************************************************/
3309+
3310+
3311+#ifndef TCLAP_ARGUMENT_H
3312+#define TCLAP_ARGUMENT_H
3313+
3314+#ifdef HAVE_CONFIG_H
3315+#include <config.h>
3316+#else
3317+#define HAVE_SSTREAM
3318+#endif
3319+
3320+#include <string>
3321+#include <vector>
3322+#include <list>
3323+#include <iostream>
3324+#include <iomanip>
3325+#include <cstdio>
3326+
3327+#if defined(HAVE_SSTREAM)
3328+#include <sstream>
3329+typedef std::istringstream istringstream;
3330+#elif defined(HAVE_STRSTREAM)
3331+#include <strstream>
3332+typedef std::istrstream istringstream;
3333+#else
3334+#error "Need a stringstream (sstream or strstream) to compile!"
3335+#endif
3336+
3337+#include <tclap/ArgException.h>
3338+#include <tclap/Visitor.h>
3339+#include <tclap/CmdLineInterface.h>
3340+#include <tclap/ArgTraits.h>
3341+#include <tclap/StandardTraits.h>
3342+
3343+namespace TCLAP {
3344+
3345+/**
3346+ * A virtual base class that defines the essential data for all arguments.
3347+ * This class, or one of its existing children, must be subclassed to do
3348+ * anything.
3349+ */
3350+class Arg
3351+{
3352+ private:
3353+ /**
3354+ * Prevent accidental copying.
3355+ */
3356+ Arg(const Arg& rhs);
3357+
3358+ /**
3359+ * Prevent accidental copying.
3360+ */
3361+ Arg& operator=(const Arg& rhs);
3362+
3363+ /**
3364+ * Indicates whether the rest of the arguments should be ignored.
3365+ */
3366+ static bool& ignoreRestRef() { static bool ign = false; return ign; }
3367+
3368+ /**
3369+ * The delimiter that separates an argument flag/name from the
3370+ * value.
3371+ */
3372+ static char& delimiterRef() { static char delim = ' '; return delim; }
3373+
3374+ protected:
3375+
3376+ /**
3377+ * The single char flag used to identify the argument.
3378+ * This value (preceded by a dash {-}), can be used to identify
3379+ * an argument on the command line. The _flag can be blank,
3380+ * in fact this is how unlabeled args work. Unlabeled args must
3381+ * override appropriate functions to get correct handling. Note
3382+ * that the _flag does NOT include the dash as part of the flag.
3383+ */
3384+ std::string _flag;
3385+
3386+ /**
3387+ * A single work namd indentifying the argument.
3388+ * This value (preceded by two dashed {--}) can also be used
3389+ * to identify an argument on the command line. Note that the
3390+ * _name does NOT include the two dashes as part of the _name. The
3391+ * _name cannot be blank.
3392+ */
3393+ std::string _name;
3394+
3395+ /**
3396+ * Description of the argument.
3397+ */
3398+ std::string _description;
3399+
3400+ /**
3401+ * Indicating whether the argument is required.
3402+ */
3403+ bool _required;
3404+
3405+ /**
3406+ * Label to be used in usage description. Normally set to
3407+ * "required", but can be changed when necessary.
3408+ */
3409+ std::string _requireLabel;
3410+
3411+ /**
3412+ * Indicates whether a value is required for the argument.
3413+ * Note that the value may be required but the argument/value
3414+ * combination may not be, as specified by _required.
3415+ */
3416+ bool _valueRequired;
3417+
3418+ /**
3419+ * Indicates whether the argument has been set.
3420+ * Indicates that a value on the command line has matched the
3421+ * name/flag of this argument and the values have been set accordingly.
3422+ */
3423+ bool _alreadySet;
3424+
3425+ /**
3426+ * A pointer to a vistitor object.
3427+ * The visitor allows special handling to occur as soon as the
3428+ * argument is matched. This defaults to NULL and should not
3429+ * be used unless absolutely necessary.
3430+ */
3431+ Visitor* _visitor;
3432+
3433+ /**
3434+ * Whether this argument can be ignored, if desired.
3435+ */
3436+ bool _ignoreable;
3437+
3438+ /**
3439+ * Indicates that the arg was set as part of an XOR and not on the
3440+ * command line.
3441+ */
3442+ bool _xorSet;
3443+
3444+ bool _acceptsMultipleValues;
3445+
3446+ /**
3447+ * Performs the special handling described by the Vistitor.
3448+ */
3449+ void _checkWithVisitor() const;
3450+
3451+ /**
3452+ * Primary constructor. YOU (yes you) should NEVER construct an Arg
3453+ * directly, this is a base class that is extended by various children
3454+ * that are meant to be used. Use SwitchArg, ValueArg, MultiArg,
3455+ * UnlabeledValueArg, or UnlabeledMultiArg instead.
3456+ *
3457+ * \param flag - The flag identifying the argument.
3458+ * \param name - The name identifying the argument.
3459+ * \param desc - The description of the argument, used in the usage.
3460+ * \param req - Whether the argument is required.
3461+ * \param valreq - Whether the a value is required for the argument.
3462+ * \param v - The visitor checked by the argument. Defaults to NULL.
3463+ */
3464+ Arg( const std::string& flag,
3465+ const std::string& name,
3466+ const std::string& desc,
3467+ bool req,
3468+ bool valreq,
3469+ Visitor* v = NULL );
3470+
3471+ public:
3472+ /**
3473+ * Destructor.
3474+ */
3475+ virtual ~Arg();
3476+
3477+ /**
3478+ * Adds this to the specified list of Args.
3479+ * \param argList - The list to add this to.
3480+ */
3481+ virtual void addToList( std::list<Arg*>& argList ) const;
3482+
3483+ /**
3484+ * Begin ignoring arguments since the "--" argument was specified.
3485+ */
3486+ static void beginIgnoring() { ignoreRestRef() = true; }
3487+
3488+ /**
3489+ * Whether to ignore the rest.
3490+ */
3491+ static bool ignoreRest() { return ignoreRestRef(); }
3492+
3493+ /**
3494+ * The delimiter that separates an argument flag/name from the
3495+ * value.
3496+ */
3497+ static char delimiter() { return delimiterRef(); }
3498+
3499+ /**
3500+ * The char used as a place holder when SwitchArgs are combined.
3501+ * Currently set to the bell char (ASCII 7).
3502+ */
3503+ static char blankChar() { return (char)7; }
3504+
3505+ /**
3506+ * The char that indicates the beginning of a flag. Defaults to '-', but
3507+ * clients can define TCLAP_FLAGSTARTCHAR to override.
3508+ */
3509+#ifndef TCLAP_FLAGSTARTCHAR
3510+#define TCLAP_FLAGSTARTCHAR '-'
3511+#endif
3512+ static char flagStartChar() { return TCLAP_FLAGSTARTCHAR; }
3513+
3514+ /**
3515+ * The sting that indicates the beginning of a flag. Defaults to "-", but
3516+ * clients can define TCLAP_FLAGSTARTSTRING to override. Should be the same
3517+ * as TCLAP_FLAGSTARTCHAR.
3518+ */
3519+#ifndef TCLAP_FLAGSTARTSTRING
3520+#define TCLAP_FLAGSTARTSTRING "-"
3521+#endif
3522+ static const std::string flagStartString() { return TCLAP_FLAGSTARTSTRING; }
3523+
3524+ /**
3525+ * The sting that indicates the beginning of a name. Defaults to "--", but
3526+ * clients can define TCLAP_NAMESTARTSTRING to override.
3527+ */
3528+#ifndef TCLAP_NAMESTARTSTRING
3529+#define TCLAP_NAMESTARTSTRING "--"
3530+#endif
3531+ static const std::string nameStartString() { return TCLAP_NAMESTARTSTRING; }
3532+
3533+ /**
3534+ * The name used to identify the ignore rest argument.
3535+ */
3536+ static const std::string ignoreNameString() { return "ignore_rest"; }
3537+
3538+ /**
3539+ * Sets the delimiter for all arguments.
3540+ * \param c - The character that delimits flags/names from values.
3541+ */
3542+ static void setDelimiter( char c ) { delimiterRef() = c; }
3543+
3544+ /**
3545+ * Pure virtual method meant to handle the parsing and value assignment
3546+ * of the string on the command line.
3547+ * \param i - Pointer the the current argument in the list.
3548+ * \param args - Mutable list of strings. What is
3549+ * passed in from main.
3550+ */
3551+ virtual bool processArg(int *i, std::vector<std::string>& args) = 0;
3552+
3553+ /**
3554+ * Operator ==.
3555+ * Equality operator. Must be virtual to handle unlabeled args.
3556+ * \param a - The Arg to be compared to this.
3557+ */
3558+ virtual bool operator==(const Arg& a) const;
3559+
3560+ /**
3561+ * Returns the argument flag.
3562+ */
3563+ const std::string& getFlag() const;
3564+
3565+ /**
3566+ * Returns the argument name.
3567+ */
3568+ const std::string& getName() const;
3569+
3570+ /**
3571+ * Returns the argument description.
3572+ */
3573+ std::string getDescription() const;
3574+
3575+ /**
3576+ * Indicates whether the argument is required.
3577+ */
3578+ virtual bool isRequired() const;
3579+
3580+ /**
3581+ * Sets _required to true. This is used by the XorHandler.
3582+ * You really have no reason to ever use it.
3583+ */
3584+ void forceRequired();
3585+
3586+ /**
3587+ * Sets the _alreadySet value to true. This is used by the XorHandler.
3588+ * You really have no reason to ever use it.
3589+ */
3590+ void xorSet();
3591+
3592+ /**
3593+ * Indicates whether a value must be specified for argument.
3594+ */
3595+ bool isValueRequired() const;
3596+
3597+ /**
3598+ * Indicates whether the argument has already been set. Only true
3599+ * if the arg has been matched on the command line.
3600+ */
3601+ bool isSet() const;
3602+
3603+ /**
3604+ * Indicates whether the argument can be ignored, if desired.
3605+ */
3606+ bool isIgnoreable() const;
3607+
3608+ /**
3609+ * A method that tests whether a string matches this argument.
3610+ * This is generally called by the processArg() method. This
3611+ * method could be re-implemented by a child to change how
3612+ * arguments are specified on the command line.
3613+ * \param s - The string to be compared to the flag/name to determine
3614+ * whether the arg matches.
3615+ */
3616+ virtual bool argMatches( const std::string& s ) const;
3617+
3618+ /**
3619+ * Returns a simple string representation of the argument.
3620+ * Primarily for debugging.
3621+ */
3622+ virtual std::string toString() const;
3623+
3624+ /**
3625+ * Returns a short ID for the usage.
3626+ * \param valueId - The value used in the id.
3627+ */
3628+ virtual std::string shortID( const std::string& valueId = "val" ) const;
3629+
3630+ /**
3631+ * Returns a long ID for the usage.
3632+ * \param valueId - The value used in the id.
3633+ */
3634+ virtual std::string longID( const std::string& valueId = "val" ) const;
3635+
3636+ /**
3637+ * Trims a value off of the flag.
3638+ * \param flag - The string from which the flag and value will be
3639+ * trimmed. Contains the flag once the value has been trimmed.
3640+ * \param value - Where the value trimmed from the string will
3641+ * be stored.
3642+ */
3643+ virtual void trimFlag( std::string& flag, std::string& value ) const;
3644+
3645+ /**
3646+ * Checks whether a given string has blank chars, indicating that
3647+ * it is a combined SwitchArg. If so, return true, otherwise return
3648+ * false.
3649+ * \param s - string to be checked.
3650+ */
3651+ bool _hasBlanks( const std::string& s ) const;
3652+
3653+ /**
3654+ * Sets the requireLabel. Used by XorHandler. You shouldn't ever
3655+ * use this.
3656+ * \param s - Set the requireLabel to this value.
3657+ */
3658+ void setRequireLabel( const std::string& s );
3659+
3660+ /**
3661+ * Used for MultiArgs and XorHandler to determine whether args
3662+ * can still be set.
3663+ */
3664+ virtual bool allowMore();
3665+
3666+ /**
3667+ * Use by output classes to determine whether an Arg accepts
3668+ * multiple values.
3669+ */
3670+ virtual bool acceptsMultipleValues();
3671+
3672+ /**
3673+ * Clears the Arg object and allows it to be reused by new
3674+ * command lines.
3675+ */
3676+ virtual void reset();
3677+};
3678+
3679+/**
3680+ * Typedef of an Arg list iterator.
3681+ */
3682+typedef std::list<Arg*>::iterator ArgListIterator;
3683+
3684+/**
3685+ * Typedef of an Arg vector iterator.
3686+ */
3687+typedef std::vector<Arg*>::iterator ArgVectorIterator;
3688+
3689+/**
3690+ * Typedef of a Visitor list iterator.
3691+ */
3692+typedef std::list<Visitor*>::iterator VisitorListIterator;
3693+
3694+/*
3695+ * Extract a value of type T from it's string representation contained
3696+ * in strVal. The ValueLike parameter used to select the correct
3697+ * specialization of ExtractValue depending on the value traits of T.
3698+ * ValueLike traits use operator>> to assign the value from strVal.
3699+ */
3700+template<typename T> void
3701+ExtractValue(T &destVal, const std::string& strVal, ValueLike vl)
3702+{
3703+ static_cast<void>(vl); // Avoid warning about unused vl
3704+ std::istringstream is(strVal);
3705+
3706+ int valuesRead = 0;
3707+ while ( is.good() ) {
3708+ if ( is.peek() != EOF )
3709+#ifdef TCLAP_SETBASE_ZERO
3710+ is >> std::setbase(0) >> destVal;
3711+#else
3712+ is >> destVal;
3713+#endif
3714+ else
3715+ break;
3716+
3717+ valuesRead++;
3718+ }
3719+
3720+ if ( is.fail() )
3721+ throw( ArgParseException("Couldn't read argument value "
3722+ "from string '" + strVal + "'"));
3723+
3724+
3725+ if ( valuesRead > 1 )
3726+ throw( ArgParseException("More than one valid value parsed from "
3727+ "string '" + strVal + "'"));
3728+
3729+}
3730+
3731+/*
3732+ * Extract a value of type T from it's string representation contained
3733+ * in strVal. The ValueLike parameter used to select the correct
3734+ * specialization of ExtractValue depending on the value traits of T.
3735+ * StringLike uses assignment (operator=) to assign from strVal.
3736+ */
3737+template<typename T> void
3738+ExtractValue(T &destVal, const std::string& strVal, StringLike sl)
3739+{
3740+ static_cast<void>(sl); // Avoid warning about unused sl
3741+ SetString(destVal, strVal);
3742+}
3743+
3744+//////////////////////////////////////////////////////////////////////
3745+//BEGIN Arg.cpp
3746+//////////////////////////////////////////////////////////////////////
3747+
3748+inline Arg::Arg(const std::string& flag,
3749+ const std::string& name,
3750+ const std::string& desc,
3751+ bool req,
3752+ bool valreq,
3753+ Visitor* v) :
3754+ _flag(flag),
3755+ _name(name),
3756+ _description(desc),
3757+ _required(req),
3758+ _requireLabel("required"),
3759+ _valueRequired(valreq),
3760+ _alreadySet(false),
3761+ _visitor( v ),
3762+ _ignoreable(true),
3763+ _xorSet(false),
3764+ _acceptsMultipleValues(false)
3765+{
3766+ if ( _flag.length() > 1 )
3767+ throw(SpecificationException(
3768+ "Argument flag can only be one character long", toString() ) );
3769+
3770+ if ( _name != ignoreNameString() &&
3771+ ( _flag == Arg::flagStartString() ||
3772+ _flag == Arg::nameStartString() ||
3773+ _flag == " " ) )
3774+ throw(SpecificationException("Argument flag cannot be either '" +
3775+ Arg::flagStartString() + "' or '" +
3776+ Arg::nameStartString() + "' or a space.",
3777+ toString() ) );
3778+
3779+ if ( ( _name.substr( 0, Arg::flagStartString().length() ) == Arg::flagStartString() ) ||
3780+ ( _name.substr( 0, Arg::nameStartString().length() ) == Arg::nameStartString() ) ||
3781+ ( _name.find( " ", 0 ) != std::string::npos ) )
3782+ throw(SpecificationException("Argument name begin with either '" +
3783+ Arg::flagStartString() + "' or '" +
3784+ Arg::nameStartString() + "' or space.",
3785+ toString() ) );
3786+
3787+}
3788+
3789+inline Arg::~Arg() { }
3790+
3791+inline std::string Arg::shortID( const std::string& valueId ) const
3792+{
3793+ std::string id = "";
3794+
3795+ if ( _flag != "" )
3796+ id = Arg::flagStartString() + _flag;
3797+ else
3798+ id = Arg::nameStartString() + _name;
3799+
3800+ if ( _valueRequired )
3801+ id += std::string( 1, Arg::delimiter() ) + "<" + valueId + ">";
3802+
3803+ if ( !_required )
3804+ id = "[" + id + "]";
3805+
3806+ return id;
3807+}
3808+
3809+inline std::string Arg::longID( const std::string& valueId ) const
3810+{
3811+ std::string id = "";
3812+
3813+ if ( _flag != "" )
3814+ {
3815+ id += Arg::flagStartString() + _flag;
3816+
3817+ if ( _valueRequired )
3818+ id += std::string( 1, Arg::delimiter() ) + "<" + valueId + ">";
3819+
3820+ id += ", ";
3821+ }
3822+
3823+ id += Arg::nameStartString() + _name;
3824+
3825+ if ( _valueRequired )
3826+ id += std::string( 1, Arg::delimiter() ) + "<" + valueId + ">";
3827+
3828+ return id;
3829+
3830+}
3831+
3832+inline bool Arg::operator==(const Arg& a) const
3833+{
3834+ if ( ( _flag != "" && _flag == a._flag ) || _name == a._name)
3835+ return true;
3836+ else
3837+ return false;
3838+}
3839+
3840+inline std::string Arg::getDescription() const
3841+{
3842+ std::string desc = "";
3843+ if ( _required )
3844+ desc = "(" + _requireLabel + ") ";
3845+
3846+// if ( _valueRequired )
3847+// desc += "(value required) ";
3848+
3849+ desc += _description;
3850+ return desc;
3851+}
3852+
3853+inline const std::string& Arg::getFlag() const { return _flag; }
3854+
3855+inline const std::string& Arg::getName() const { return _name; }
3856+
3857+inline bool Arg::isRequired() const { return _required; }
3858+
3859+inline bool Arg::isValueRequired() const { return _valueRequired; }
3860+
3861+inline bool Arg::isSet() const
3862+{
3863+ if ( _alreadySet && !_xorSet )
3864+ return true;
3865+ else
3866+ return false;
3867+}
3868+
3869+inline bool Arg::isIgnoreable() const { return _ignoreable; }
3870+
3871+inline void Arg::setRequireLabel( const std::string& s)
3872+{
3873+ _requireLabel = s;
3874+}
3875+
3876+inline bool Arg::argMatches( const std::string& argFlag ) const
3877+{
3878+ if ( ( argFlag == Arg::flagStartString() + _flag && _flag != "" ) ||
3879+ argFlag == Arg::nameStartString() + _name )
3880+ return true;
3881+ else
3882+ return false;
3883+}
3884+
3885+inline std::string Arg::toString() const
3886+{
3887+ std::string s = "";
3888+
3889+ if ( _flag != "" )
3890+ s += Arg::flagStartString() + _flag + " ";
3891+
3892+ s += "(" + Arg::nameStartString() + _name + ")";
3893+
3894+ return s;
3895+}
3896+
3897+inline void Arg::_checkWithVisitor() const
3898+{
3899+ if ( _visitor != NULL )
3900+ _visitor->visit();
3901+}
3902+
3903+/**
3904+ * Implementation of trimFlag.
3905+ */
3906+inline void Arg::trimFlag(std::string& flag, std::string& value) const
3907+{
3908+ int stop = 0;
3909+ for ( int i = 0; static_cast<unsigned int>(i) < flag.length(); i++ )
3910+ if ( flag[i] == Arg::delimiter() )
3911+ {
3912+ stop = i;
3913+ break;
3914+ }
3915+
3916+ if ( stop > 1 )
3917+ {
3918+ value = flag.substr(stop+1);
3919+ flag = flag.substr(0,stop);
3920+ }
3921+
3922+}
3923+
3924+/**
3925+ * Implementation of _hasBlanks.
3926+ */
3927+inline bool Arg::_hasBlanks( const std::string& s ) const
3928+{
3929+ for ( int i = 1; static_cast<unsigned int>(i) < s.length(); i++ )
3930+ if ( s[i] == Arg::blankChar() )
3931+ return true;
3932+
3933+ return false;
3934+}
3935+
3936+inline void Arg::forceRequired()
3937+{
3938+ _required = true;
3939+}
3940+
3941+inline void Arg::xorSet()
3942+{
3943+ _alreadySet = true;
3944+ _xorSet = true;
3945+}
3946+
3947+/**
3948+ * Overridden by Args that need to added to the end of the list.
3949+ */
3950+inline void Arg::addToList( std::list<Arg*>& argList ) const
3951+{
3952+ argList.push_front( const_cast<Arg*>(this) );
3953+}
3954+
3955+inline bool Arg::allowMore()
3956+{
3957+ return false;
3958+}
3959+
3960+inline bool Arg::acceptsMultipleValues()
3961+{
3962+ return _acceptsMultipleValues;
3963+}
3964+
3965+inline void Arg::reset()
3966+{
3967+ _xorSet = false;
3968+ _alreadySet = false;
3969+}
3970+
3971+//////////////////////////////////////////////////////////////////////
3972+//END Arg.cpp
3973+//////////////////////////////////////////////////////////////////////
3974+
3975+} //namespace TCLAP
3976+
3977+#endif
3978+
3979
3980=== added file 'external/tclap/include/tclap/ArgException.h'
3981--- external/tclap/include/tclap/ArgException.h 1970-01-01 00:00:00 +0000
3982+++ external/tclap/include/tclap/ArgException.h 2013-05-01 15:50:43 +0000
3983@@ -0,0 +1,200 @@
3984+// -*- Mode: c++; c-basic-offset: 4; tab-width: 4; -*-
3985+
3986+/******************************************************************************
3987+ *
3988+ * file: ArgException.h
3989+ *
3990+ * Copyright (c) 2003, Michael E. Smoot .
3991+ * All rights reverved.
3992+ *
3993+ * See the file COPYING in the top directory of this distribution for
3994+ * more information.
3995+ *
3996+ * THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
3997+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3998+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
3999+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4000+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4001+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
4002+ * DEALINGS IN THE SOFTWARE.
4003+ *
4004+ *****************************************************************************/
4005+
4006+
4007+#ifndef TCLAP_ARG_EXCEPTION_H
4008+#define TCLAP_ARG_EXCEPTION_H
4009+
4010+#include <string>
4011+#include <exception>
4012+
4013+namespace TCLAP {
4014+
4015+/**
4016+ * A simple class that defines and argument exception. Should be caught
4017+ * whenever a CmdLine is created and parsed.
4018+ */
4019+class ArgException : public std::exception
4020+{
4021+ public:
4022+
4023+ /**
4024+ * Constructor.
4025+ * \param text - The text of the exception.
4026+ * \param id - The text identifying the argument source.
4027+ * \param td - Text describing the type of ArgException it is.
4028+ * of the exception.
4029+ */
4030+ ArgException( const std::string& text = "undefined exception",
4031+ const std::string& id = "undefined",
4032+ const std::string& td = "Generic ArgException")
4033+ : std::exception(),
4034+ _errorText(text),
4035+ _argId( id ),
4036+ _typeDescription(td)
4037+ { }
4038+
4039+ /**
4040+ * Destructor.
4041+ */
4042+ virtual ~ArgException() throw() { }
4043+
4044+ /**
4045+ * Returns the error text.
4046+ */
4047+ std::string error() const { return ( _errorText ); }
4048+
4049+ /**
4050+ * Returns the argument id.
4051+ */
4052+ std::string argId() const
4053+ {
4054+ if ( _argId == "undefined" )
4055+ return " ";
4056+ else
4057+ return ( "Argument: " + _argId );
4058+ }
4059+
4060+ /**
4061+ * Returns the arg id and error text.
4062+ */
4063+ const char* what() const throw()
4064+ {
4065+ static std::string ex;
4066+ ex = _argId + " -- " + _errorText;
4067+ return ex.c_str();
4068+ }
4069+
4070+ /**
4071+ * Returns the type of the exception. Used to explain and distinguish
4072+ * between different child exceptions.
4073+ */
4074+ std::string typeDescription() const
4075+ {
4076+ return _typeDescription;
4077+ }
4078+
4079+
4080+ private:
4081+
4082+ /**
4083+ * The text of the exception message.
4084+ */
4085+ std::string _errorText;
4086+
4087+ /**
4088+ * The argument related to this exception.
4089+ */
4090+ std::string _argId;
4091+
4092+ /**
4093+ * Describes the type of the exception. Used to distinguish
4094+ * between different child exceptions.
4095+ */
4096+ std::string _typeDescription;
4097+
4098+};
4099+
4100+/**
4101+ * Thrown from within the child Arg classes when it fails to properly
4102+ * parse the argument it has been passed.
4103+ */
4104+class ArgParseException : public ArgException
4105+{
4106+ public:
4107+ /**
4108+ * Constructor.
4109+ * \param text - The text of the exception.
4110+ * \param id - The text identifying the argument source
4111+ * of the exception.
4112+ */
4113+ ArgParseException( const std::string& text = "undefined exception",
4114+ const std::string& id = "undefined" )
4115+ : ArgException( text,
4116+ id,
4117+ std::string( "Exception found while parsing " ) +
4118+ std::string( "the value the Arg has been passed." ))
4119+ { }
4120+};
4121+
4122+/**
4123+ * Thrown from CmdLine when the arguments on the command line are not
4124+ * properly specified, e.g. too many arguments, required argument missing, etc.
4125+ */
4126+class CmdLineParseException : public ArgException
4127+{
4128+ public:
4129+ /**
4130+ * Constructor.
4131+ * \param text - The text of the exception.
4132+ * \param id - The text identifying the argument source
4133+ * of the exception.
4134+ */
4135+ CmdLineParseException( const std::string& text = "undefined exception",
4136+ const std::string& id = "undefined" )
4137+ : ArgException( text,
4138+ id,
4139+ std::string( "Exception found when the values ") +
4140+ std::string( "on the command line do not meet ") +
4141+ std::string( "the requirements of the defined ") +
4142+ std::string( "Args." ))
4143+ { }
4144+};
4145+
4146+/**
4147+ * Thrown from Arg and CmdLine when an Arg is improperly specified, e.g.
4148+ * same flag as another Arg, same name, etc.
4149+ */
4150+class SpecificationException : public ArgException
4151+{
4152+ public:
4153+ /**
4154+ * Constructor.
4155+ * \param text - The text of the exception.
4156+ * \param id - The text identifying the argument source
4157+ * of the exception.
4158+ */
4159+ SpecificationException( const std::string& text = "undefined exception",
4160+ const std::string& id = "undefined" )
4161+ : ArgException( text,
4162+ id,
4163+ std::string("Exception found when an Arg object ")+
4164+ std::string("is improperly defined by the ") +
4165+ std::string("developer." ))
4166+ { }
4167+
4168+};
4169+
4170+class ExitException {
4171+public:
4172+ ExitException(int estat) : _estat(estat) {}
4173+
4174+ int getExitStatus() const { return _estat; }
4175+
4176+private:
4177+ int _estat;
4178+};
4179+
4180+} // namespace TCLAP
4181+
4182+#endif
4183+
4184
4185=== added file 'external/tclap/include/tclap/ArgTraits.h'
4186--- external/tclap/include/tclap/ArgTraits.h 1970-01-01 00:00:00 +0000
4187+++ external/tclap/include/tclap/ArgTraits.h 2013-05-01 15:50:43 +0000
4188@@ -0,0 +1,87 @@
4189+// -*- Mode: c++; c-basic-offset: 4; tab-width: 4; -*-
4190+
4191+/******************************************************************************
4192+ *
4193+ * file: ArgTraits.h
4194+ *
4195+ * Copyright (c) 2007, Daniel Aarno, Michael E. Smoot .
4196+ * All rights reverved.
4197+ *
4198+ * See the file COPYING in the top directory of this distribution for
4199+ * more information.
4200+ *
4201+ * THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
4202+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4203+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
4204+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4205+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4206+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
4207+ * DEALINGS IN THE SOFTWARE.
4208+ *
4209+ *****************************************************************************/
4210+
4211+// This is an internal tclap file, you should probably not have to
4212+// include this directly
4213+
4214+#ifndef TCLAP_ARGTRAITS_H
4215+#define TCLAP_ARGTRAITS_H
4216+
4217+namespace TCLAP {
4218+
4219+// We use two empty structs to get compile type specialization
4220+// function to work
4221+
4222+/**
4223+ * A value like argument value type is a value that can be set using
4224+ * operator>>. This is the default value type.
4225+ */
4226+struct ValueLike {
4227+ typedef ValueLike ValueCategory;
4228+ virtual ~ValueLike() {}
4229+};
4230+
4231+/**
4232+ * A string like argument value type is a value that can be set using
4233+ * operator=(string). Usefull if the value type contains spaces which
4234+ * will be broken up into individual tokens by operator>>.
4235+ */
4236+struct StringLike {
4237+ virtual ~StringLike() {}
4238+};
4239+
4240+/**
4241+ * A class can inherit from this object to make it have string like
4242+ * traits. This is a compile time thing and does not add any overhead
4243+ * to the inherenting class.
4244+ */
4245+struct StringLikeTrait {
4246+ typedef StringLike ValueCategory;
4247+ virtual ~StringLikeTrait() {}
4248+};
4249+
4250+/**
4251+ * A class can inherit from this object to make it have value like
4252+ * traits. This is a compile time thing and does not add any overhead
4253+ * to the inherenting class.
4254+ */
4255+struct ValueLikeTrait {
4256+ typedef ValueLike ValueCategory;
4257+ virtual ~ValueLikeTrait() {}
4258+};
4259+
4260+/**
4261+ * Arg traits are used to get compile type specialization when parsing
4262+ * argument values. Using an ArgTraits you can specify the way that
4263+ * values gets assigned to any particular type during parsing. The two
4264+ * supported types are StringLike and ValueLike.
4265+ */
4266+template<typename T>
4267+struct ArgTraits {
4268+ typedef typename T::ValueCategory ValueCategory;
4269+ virtual ~ArgTraits() {}
4270+ //typedef ValueLike ValueCategory;
4271+};
4272+
4273+#endif
4274+
4275+} // namespace
4276
4277=== added file 'external/tclap/include/tclap/CmdLine.h'
4278--- external/tclap/include/tclap/CmdLine.h 1970-01-01 00:00:00 +0000
4279+++ external/tclap/include/tclap/CmdLine.h 2013-05-01 15:50:43 +0000
4280@@ -0,0 +1,633 @@
4281+// -*- Mode: c++; c-basic-offset: 4; tab-width: 4; -*-
4282+
4283+/******************************************************************************
4284+ *
4285+ * file: CmdLine.h
4286+ *
4287+ * Copyright (c) 2003, Michael E. Smoot .
4288+ * Copyright (c) 2004, Michael E. Smoot, Daniel Aarno.
4289+ * All rights reverved.
4290+ *
4291+ * See the file COPYING in the top directory of this distribution for
4292+ * more information.
4293+ *
4294+ * THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
4295+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4296+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
4297+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4298+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4299+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
4300+ * DEALINGS IN THE SOFTWARE.
4301+ *
4302+ *****************************************************************************/
4303+
4304+#ifndef TCLAP_CMDLINE_H
4305+#define TCLAP_CMDLINE_H
4306+
4307+#include <tclap/SwitchArg.h>
4308+#include <tclap/MultiSwitchArg.h>
4309+#include <tclap/UnlabeledValueArg.h>
4310+#include <tclap/UnlabeledMultiArg.h>
4311+
4312+#include <tclap/XorHandler.h>
4313+#include <tclap/HelpVisitor.h>
4314+#include <tclap/VersionVisitor.h>
4315+#include <tclap/IgnoreRestVisitor.h>
4316+
4317+#include <tclap/CmdLineOutput.h>
4318+#include <tclap/StdOutput.h>
4319+
4320+#include <tclap/Constraint.h>
4321+#include <tclap/ValuesConstraint.h>
4322+
4323+#include <string>
4324+#include <vector>
4325+#include <list>
4326+#include <iostream>
4327+#include <iomanip>
4328+#include <algorithm>
4329+#include <stdlib.h> // Needed for exit(), which isn't defined in some envs.
4330+
4331+namespace TCLAP {
4332+
4333+template<typename T> void DelPtr(T ptr)
4334+{
4335+ delete ptr;
4336+}
4337+
4338+template<typename C> void ClearContainer(C &c)
4339+{
4340+ typedef typename C::value_type value_type;
4341+ std::for_each(c.begin(), c.end(), DelPtr<value_type>);
4342+ c.clear();
4343+}
4344+
4345+
4346+/**
4347+ * The base class that manages the command line definition and passes
4348+ * along the parsing to the appropriate Arg classes.
4349+ */
4350+class CmdLine : public CmdLineInterface
4351+{
4352+ protected:
4353+
4354+ /**
4355+ * The list of arguments that will be tested against the
4356+ * command line.
4357+ */
4358+ std::list<Arg*> _argList;
4359+
4360+ /**
4361+ * The name of the program. Set to argv[0].
4362+ */
4363+ std::string _progName;
4364+
4365+ /**
4366+ * A message used to describe the program. Used in the usage output.
4367+ */
4368+ std::string _message;
4369+
4370+ /**
4371+ * The version to be displayed with the --version switch.
4372+ */
4373+ std::string _version;
4374+
4375+ /**
4376+ * The number of arguments that are required to be present on
4377+ * the command line. This is set dynamically, based on the
4378+ * Args added to the CmdLine object.
4379+ */
4380+ int _numRequired;
4381+
4382+ /**
4383+ * The character that is used to separate the argument flag/name
4384+ * from the value. Defaults to ' ' (space).
4385+ */
4386+ char _delimiter;
4387+
4388+ /**
4389+ * The handler that manages xoring lists of args.
4390+ */
4391+ XorHandler _xorHandler;
4392+
4393+ /**
4394+ * A list of Args to be explicitly deleted when the destructor
4395+ * is called. At the moment, this only includes the three default
4396+ * Args.
4397+ */
4398+ std::list<Arg*> _argDeleteOnExitList;
4399+
4400+ /**
4401+ * A list of Visitors to be explicitly deleted when the destructor
4402+ * is called. At the moment, these are the Vistors created for the
4403+ * default Args.
4404+ */
4405+ std::list<Visitor*> _visitorDeleteOnExitList;
4406+
4407+ /**
4408+ * Object that handles all output for the CmdLine.
4409+ */
4410+ CmdLineOutput* _output;
4411+
4412+ /**
4413+ * Should CmdLine handle parsing exceptions internally?
4414+ */
4415+ bool _handleExceptions;
4416+
4417+ /**
4418+ * Throws an exception listing the missing args.
4419+ */
4420+ void missingArgsException();
4421+
4422+ /**
4423+ * Checks whether a name/flag string matches entirely matches
4424+ * the Arg::blankChar. Used when multiple switches are combined
4425+ * into a single argument.
4426+ * \param s - The message to be used in the usage.
4427+ */
4428+ bool _emptyCombined(const std::string& s);
4429+
4430+ /**
4431+ * Perform a delete ptr; operation on ptr when this object is deleted.
4432+ */
4433+ void deleteOnExit(Arg* ptr);
4434+
4435+ /**
4436+ * Perform a delete ptr; operation on ptr when this object is deleted.
4437+ */
4438+ void deleteOnExit(Visitor* ptr);
4439+
4440+private:
4441+
4442+ /**
4443+ * Prevent accidental copying.
4444+ */
4445+ CmdLine(const CmdLine& rhs);
4446+ CmdLine& operator=(const CmdLine& rhs);
4447+
4448+ /**
4449+ * Encapsulates the code common to the constructors
4450+ * (which is all of it).
4451+ */
4452+ void _constructor();
4453+
4454+
4455+ /**
4456+ * Is set to true when a user sets the output object. We use this so
4457+ * that we don't delete objects that are created outside of this lib.
4458+ */
4459+ bool _userSetOutput;
4460+
4461+ /**
4462+ * Whether or not to automatically create help and version switches.
4463+ */
4464+ bool _helpAndVersion;
4465+
4466+ public:
4467+
4468+ /**
4469+ * Command line constructor. Defines how the arguments will be
4470+ * parsed.
4471+ * \param message - The message to be used in the usage
4472+ * output.
4473+ * \param delimiter - The character that is used to separate
4474+ * the argument flag/name from the value. Defaults to ' ' (space).
4475+ * \param version - The version number to be used in the
4476+ * --version switch.
4477+ * \param helpAndVersion - Whether or not to create the Help and
4478+ * Version switches. Defaults to true.
4479+ */
4480+ CmdLine(const std::string& message,
4481+ const char delimiter = ' ',
4482+ const std::string& version = "none",
4483+ bool helpAndVersion = true);
4484+
4485+ /**
4486+ * Deletes any resources allocated by a CmdLine object.
4487+ */
4488+ virtual ~CmdLine();
4489+
4490+ /**
4491+ * Adds an argument to the list of arguments to be parsed.
4492+ * \param a - Argument to be added.
4493+ */
4494+ void add( Arg& a );
4495+
4496+ /**
4497+ * An alternative add. Functionally identical.
4498+ * \param a - Argument to be added.
4499+ */
4500+ void add( Arg* a );
4501+
4502+ /**
4503+ * Add two Args that will be xor'd. If this method is used, add does
4504+ * not need to be called.
4505+ * \param a - Argument to be added and xor'd.
4506+ * \param b - Argument to be added and xor'd.
4507+ */
4508+ void xorAdd( Arg& a, Arg& b );
4509+
4510+ /**
4511+ * Add a list of Args that will be xor'd. If this method is used,
4512+ * add does not need to be called.
4513+ * \param xors - List of Args to be added and xor'd.
4514+ */
4515+ void xorAdd( std::vector<Arg*>& xors );
4516+
4517+ /**
4518+ * Parses the command line.
4519+ * \param argc - Number of arguments.
4520+ * \param argv - Array of arguments.
4521+ */
4522+ void parse(int argc, const char * const * argv);
4523+
4524+ /**
4525+ * Parses the command line.
4526+ * \param args - A vector of strings representing the args.
4527+ * args[0] is still the program name.
4528+ */
4529+ void parse(std::vector<std::string>& args);
4530+
4531+ /**
4532+ *
4533+ */
4534+ CmdLineOutput* getOutput();
4535+
4536+ /**
4537+ *
4538+ */
4539+ void setOutput(CmdLineOutput* co);
4540+
4541+ /**
4542+ *
4543+ */
4544+ std::string& getVersion();
4545+
4546+ /**
4547+ *
4548+ */
4549+ std::string& getProgramName();
4550+
4551+ /**
4552+ *
4553+ */
4554+ std::list<Arg*>& getArgList();
4555+
4556+ /**
4557+ *
4558+ */
4559+ XorHandler& getXorHandler();
4560+
4561+ /**
4562+ *
4563+ */
4564+ char getDelimiter();
4565+
4566+ /**
4567+ *
4568+ */
4569+ std::string& getMessage();
4570+
4571+ /**
4572+ *
4573+ */
4574+ bool hasHelpAndVersion();
4575+
4576+ /**
4577+ * Disables or enables CmdLine's internal parsing exception handling.
4578+ *
4579+ * @param state Should CmdLine handle parsing exceptions internally?
4580+ */
4581+ void setExceptionHandling(const bool state);
4582+
4583+ /**
4584+ * Returns the current state of the internal exception handling.
4585+ *
4586+ * @retval true Parsing exceptions are handled internally.
4587+ * @retval false Parsing exceptions are propagated to the caller.
4588+ */
4589+ bool getExceptionHandling() const;
4590+
4591+ /**
4592+ * Allows the CmdLine object to be reused.
4593+ */
4594+ void reset();
4595+
4596+};
4597+
4598+
4599+///////////////////////////////////////////////////////////////////////////////
4600+//Begin CmdLine.cpp
4601+///////////////////////////////////////////////////////////////////////////////
4602+
4603+inline CmdLine::CmdLine(const std::string& m,
4604+ char delim,
4605+ const std::string& v,
4606+ bool help )
4607+ :
4608+ _argList(std::list<Arg*>()),
4609+ _progName("not_set_yet"),
4610+ _message(m),
4611+ _version(v),
4612+ _numRequired(0),
4613+ _delimiter(delim),
4614+ _xorHandler(XorHandler()),
4615+ _argDeleteOnExitList(std::list<Arg*>()),
4616+ _visitorDeleteOnExitList(std::list<Visitor*>()),
4617+ _output(0),
4618+ _handleExceptions(true),
4619+ _userSetOutput(false),
4620+ _helpAndVersion(help)
4621+{
4622+ _constructor();
4623+}
4624+
4625+inline CmdLine::~CmdLine()
4626+{
4627+ ClearContainer(_argDeleteOnExitList);
4628+ ClearContainer(_visitorDeleteOnExitList);
4629+
4630+ if ( !_userSetOutput ) {
4631+ delete _output;
4632+ _output = 0;
4633+ }
4634+}
4635+
4636+inline void CmdLine::_constructor()
4637+{
4638+ _output = new StdOutput;
4639+
4640+ Arg::setDelimiter( _delimiter );
4641+
4642+ Visitor* v;
4643+
4644+ if ( _helpAndVersion )
4645+ {
4646+ v = new HelpVisitor( this, &_output );
4647+ SwitchArg* help = new SwitchArg("h","help",
4648+ "Displays usage information and exits.",
4649+ false, v);
4650+ add( help );
4651+ deleteOnExit(help);
4652+ deleteOnExit(v);
4653+
4654+ v = new VersionVisitor( this, &_output );
4655+ SwitchArg* vers = new SwitchArg("","version",
4656+ "Displays version information and exits.",
4657+ false, v);
4658+ add( vers );
4659+ deleteOnExit(vers);
4660+ deleteOnExit(v);
4661+ }
4662+
4663+ v = new IgnoreRestVisitor();
4664+ SwitchArg* ignore = new SwitchArg(Arg::flagStartString(),
4665+ Arg::ignoreNameString(),
4666+ "Ignores the rest of the labeled arguments following this flag.",
4667+ false, v);
4668+ add( ignore );
4669+ deleteOnExit(ignore);
4670+ deleteOnExit(v);
4671+}
4672+
4673+inline void CmdLine::xorAdd( std::vector<Arg*>& ors )
4674+{
4675+ _xorHandler.add( ors );
4676+
4677+ for (ArgVectorIterator it = ors.begin(); it != ors.end(); it++)
4678+ {
4679+ (*it)->forceRequired();
4680+ (*it)->setRequireLabel( "OR required" );
4681+ add( *it );
4682+ }
4683+}
4684+
4685+inline void CmdLine::xorAdd( Arg& a, Arg& b )
4686+{
4687+ std::vector<Arg*> ors;
4688+ ors.push_back( &a );
4689+ ors.push_back( &b );
4690+ xorAdd( ors );
4691+}
4692+
4693+inline void CmdLine::add( Arg& a )
4694+{
4695+ add( &a );
4696+}
4697+
4698+inline void CmdLine::add( Arg* a )
4699+{
4700+ for( ArgListIterator it = _argList.begin(); it != _argList.end(); it++ )
4701+ if ( *a == *(*it) )
4702+ throw( SpecificationException(
4703+ "Argument with same flag/name already exists!",
4704+ a->longID() ) );
4705+
4706+ a->addToList( _argList );
4707+
4708+ if ( a->isRequired() )
4709+ _numRequired++;
4710+}
4711+
4712+
4713+inline void CmdLine::parse(int argc, const char * const * argv)
4714+{
4715+ // this step is necessary so that we have easy access to
4716+ // mutable strings.
4717+ std::vector<std::string> args;
4718+ for (int i = 0; i < argc; i++)
4719+ args.push_back(argv[i]);
4720+
4721+ parse(args);
4722+}
4723+
4724+inline void CmdLine::parse(std::vector<std::string>& args)
4725+{
4726+ bool shouldExit = false;
4727+ int estat = 0;
4728+
4729+ try {
4730+ _progName = args.front();
4731+ args.erase(args.begin());
4732+
4733+ int requiredCount = 0;
4734+
4735+ for (int i = 0; static_cast<unsigned int>(i) < args.size(); i++)
4736+ {
4737+ bool matched = false;
4738+ for (ArgListIterator it = _argList.begin();
4739+ it != _argList.end(); it++) {
4740+ if ( (*it)->processArg( &i, args ) )
4741+ {
4742+ requiredCount += _xorHandler.check( *it );
4743+ matched = true;
4744+ break;
4745+ }
4746+ }
4747+
4748+ // checks to see if the argument is an empty combined
4749+ // switch and if so, then we've actually matched it
4750+ if ( !matched && _emptyCombined( args[i] ) )
4751+ matched = true;
4752+
4753+ if ( !matched && !Arg::ignoreRest() )
4754+ throw(CmdLineParseException("Couldn't find match "
4755+ "for argument",
4756+ args[i]));
4757+ }
4758+
4759+ if ( requiredCount < _numRequired )
4760+ missingArgsException();
4761+
4762+ if ( requiredCount > _numRequired )
4763+ throw(CmdLineParseException("Too many arguments!"));
4764+
4765+ } catch ( ArgException& e ) {
4766+ // If we're not handling the exceptions, rethrow.
4767+ if ( !_handleExceptions) {
4768+ throw;
4769+ }
4770+
4771+ try {
4772+ _output->failure(*this,e);
4773+ } catch ( ExitException &ee ) {
4774+ estat = ee.getExitStatus();
4775+ shouldExit = true;
4776+ }
4777+ } catch (ExitException &ee) {
4778+ // If we're not handling the exceptions, rethrow.
4779+ if ( !_handleExceptions) {
4780+ throw;
4781+ }
4782+
4783+ estat = ee.getExitStatus();
4784+ shouldExit = true;
4785+ }
4786+
4787+ if (shouldExit)
4788+ exit(estat);
4789+}
4790+
4791+inline bool CmdLine::_emptyCombined(const std::string& s)
4792+{
4793+ if ( s.length() > 0 && s[0] != Arg::flagStartChar() )
4794+ return false;
4795+
4796+ for ( int i = 1; static_cast<unsigned int>(i) < s.length(); i++ )
4797+ if ( s[i] != Arg::blankChar() )
4798+ return false;
4799+
4800+ return true;
4801+}
4802+
4803+inline void CmdLine::missingArgsException()
4804+{
4805+ int count = 0;
4806+
4807+ std::string missingArgList;
4808+ for (ArgListIterator it = _argList.begin(); it != _argList.end(); it++)
4809+ {
4810+ if ( (*it)->isRequired() && !(*it)->isSet() )
4811+ {
4812+ missingArgList += (*it)->getName();
4813+ missingArgList += ", ";
4814+ count++;
4815+ }
4816+ }
4817+ missingArgList = missingArgList.substr(0,missingArgList.length()-2);
4818+
4819+ std::string msg;
4820+ if ( count > 1 )
4821+ msg = "Required arguments missing: ";
4822+ else
4823+ msg = "Required argument missing: ";
4824+
4825+ msg += missingArgList;
4826+
4827+ throw(CmdLineParseException(msg));
4828+}
4829+
4830+inline void CmdLine::deleteOnExit(Arg* ptr)
4831+{
4832+ _argDeleteOnExitList.push_back(ptr);
4833+}
4834+
4835+inline void CmdLine::deleteOnExit(Visitor* ptr)
4836+{
4837+ _visitorDeleteOnExitList.push_back(ptr);
4838+}
4839+
4840+inline CmdLineOutput* CmdLine::getOutput()
4841+{
4842+ return _output;
4843+}
4844+
4845+inline void CmdLine::setOutput(CmdLineOutput* co)
4846+{
4847+ if ( !_userSetOutput )
4848+ delete _output;
4849+ _userSetOutput = true;
4850+ _output = co;
4851+}
4852+
4853+inline std::string& CmdLine::getVersion()
4854+{
4855+ return _version;
4856+}
4857+
4858+inline std::string& CmdLine::getProgramName()
4859+{
4860+ return _progName;
4861+}
4862+
4863+inline std::list<Arg*>& CmdLine::getArgList()
4864+{
4865+ return _argList;
4866+}
4867+
4868+inline XorHandler& CmdLine::getXorHandler()
4869+{
4870+ return _xorHandler;
4871+}
4872+
4873+inline char CmdLine::getDelimiter()
4874+{
4875+ return _delimiter;
4876+}
4877+
4878+inline std::string& CmdLine::getMessage()
4879+{
4880+ return _message;
4881+}
4882+
4883+inline bool CmdLine::hasHelpAndVersion()
4884+{
4885+ return _helpAndVersion;
4886+}
4887+
4888+inline void CmdLine::setExceptionHandling(const bool state)
4889+{
4890+ _handleExceptions = state;
4891+}
4892+
4893+inline bool CmdLine::getExceptionHandling() const
4894+{
4895+ return _handleExceptions;
4896+}
4897+
4898+inline void CmdLine::reset()
4899+{
4900+ for( ArgListIterator it = _argList.begin(); it != _argList.end(); it++ )
4901+ (*it)->reset();
4902+
4903+ _progName.clear();
4904+}
4905+
4906+///////////////////////////////////////////////////////////////////////////////
4907+//End CmdLine.cpp
4908+///////////////////////////////////////////////////////////////////////////////
4909+
4910+
4911+
4912+} //namespace TCLAP
4913+#endif
4914
4915=== added file 'external/tclap/include/tclap/CmdLineInterface.h'
4916--- external/tclap/include/tclap/CmdLineInterface.h 1970-01-01 00:00:00 +0000
4917+++ external/tclap/include/tclap/CmdLineInterface.h 2013-05-01 15:50:43 +0000
4918@@ -0,0 +1,150 @@
4919+
4920+/******************************************************************************
4921+ *
4922+ * file: CmdLineInterface.h
4923+ *
4924+ * Copyright (c) 2003, Michael E. Smoot .
4925+ * Copyright (c) 2004, Michael E. Smoot, Daniel Aarno.
4926+ * All rights reverved.
4927+ *
4928+ * See the file COPYING in the top directory of this distribution for
4929+ * more information.
4930+ *
4931+ * THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
4932+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4933+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
4934+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4935+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4936+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
4937+ * DEALINGS IN THE SOFTWARE.
4938+ *
4939+ *****************************************************************************/
4940+
4941+#ifndef TCLAP_COMMANDLINE_INTERFACE_H
4942+#define TCLAP_COMMANDLINE_INTERFACE_H
4943+
4944+#include <string>
4945+#include <vector>
4946+#include <list>
4947+#include <iostream>
4948+#include <algorithm>
4949+
4950+
4951+namespace TCLAP {
4952+
4953+class Arg;
4954+class CmdLineOutput;
4955+class XorHandler;
4956+
4957+/**
4958+ * The base class that manages the command line definition and passes
4959+ * along the parsing to the appropriate Arg classes.
4960+ */
4961+class CmdLineInterface
4962+{
4963+ public:
4964+
4965+ /**
4966+ * Destructor
4967+ */
4968+ virtual ~CmdLineInterface() {}
4969+
4970+ /**
4971+ * Adds an argument to the list of arguments to be parsed.
4972+ * \param a - Argument to be added.
4973+ */
4974+ virtual void add( Arg& a )=0;
4975+
4976+ /**
4977+ * An alternative add. Functionally identical.
4978+ * \param a - Argument to be added.
4979+ */
4980+ virtual void add( Arg* a )=0;
4981+
4982+ /**
4983+ * Add two Args that will be xor'd.
4984+ * If this method is used, add does
4985+ * not need to be called.
4986+ * \param a - Argument to be added and xor'd.
4987+ * \param b - Argument to be added and xor'd.
4988+ */
4989+ virtual void xorAdd( Arg& a, Arg& b )=0;
4990+
4991+ /**
4992+ * Add a list of Args that will be xor'd. If this method is used,
4993+ * add does not need to be called.
4994+ * \param xors - List of Args to be added and xor'd.
4995+ */
4996+ virtual void xorAdd( std::vector<Arg*>& xors )=0;
4997+
4998+ /**
4999+ * Parses the command line.
5000+ * \param argc - Number of arguments.
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: