Changeset 5681


Ignore:
Timestamp:
Jun 10, 2015 8:54:05 AM (9 years ago)
Author:
ldelgass
Message:

Merge new Python examples from 1.3 branch (uq sync)

Location:
trunk
Files:
20 edited
7 copied

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/configure.in

    r5175 r5681  
    4343AC_PROG_MAKE_SET
    4444
    45 # Check for C, C++, and FORTRAN 
     45# Check for C, C++, and FORTRAN
    4646AC_PROG_CC
    4747AC_PROG_CXX
    48 # Avoid g95 
     48# Avoid g95
    4949AC_PROG_F77([g77 gfortran f77 fort77 f90 xlf xlf90 fl32])
    5050
     
    147147for dir in \
    148148 ${exec_prefix} \
    149  ${exec_prefix}/lib ; do 
     149 ${exec_prefix}/lib ; do
    150150  tclconfig="${dir}/tclConfig.sh"
    151151  if test -f "$tclconfig" ; then
     
    172172if test "${with_tclsh}" != "no" ; then
    173173  tclsh="tclsh${TCL_VERSION}"
    174   if test "${with_tclsh}" = "yes" ; then 
     174  if test "${with_tclsh}" = "yes" ; then
    175175    AC_PATH_PROG(TCLSH, ${tclsh}, [], [${exec_prefix}/bin:${PATH}])
    176   else 
     176  else
    177177    AC_PATH_PROG(TCLSH, ${tclsh}, [], [${with_tclsh}/bin:${with_tclsh}])
    178178  fi
     
    189189    [AS_HELP_STRING([--with-vtk[=version]],
    190190        [VTK library version @<:@default=6.2@:>@])],
    191     [], 
     191    [],
    192192    [with_vtk=yes])
    193193
     
    231231    [AS_HELP_STRING([--enable-vtkdicom],
    232232        [Use vtkDICOM package @<:@default=no@:>@])],
    233     [], 
     233    [],
    234234    [enable_vtkdicom=no])
    235235
     
    297297#--------------------------------------------------------------------
    298298if test "${with_ffmpeg}" != "no" ; then
    299   if test "${with_ffmpeg}" = "yes" ; then 
     299  if test "${with_ffmpeg}" = "yes" ; then
    300300    AC_PATH_PROG(FFMPEG, ffmpeg, [], $PATH)
    301   else 
     301  else
    302302    AC_PATH_PROG(FFMPEG, ffmpeg, [], [${with_ffmpeg}/bin:${with_ffmpeg}])
    303   fi 
     303  fi
    304304  if test "${FFMPEG}x" != "x" ; then
    305305    AC_DEFINE(HAVE_FFMPEG, 1, [Render servers can use ffmpeg])
  • trunk/examples/app-fermi/python/fermi.py

    r4462 r5681  
    66# ======================================================================
    77#  AUTHOR:  Michael McLennan, Purdue University
    8 #  Copyright (c) 2004-2012  HUBzero Foundation, LLC
     8#           Martin Hunt, Purdue University
     9#  Copyright (c) 2004-2015  HUBzero Foundation, LLC
    910#
    1011#  See the file "license.terms" for information on usage and
     
    1314import Rappture
    1415import sys
    15 from math import *
     16import numpy as np
     17
     18# Uncomment these lines to redirect
     19# python output and errors to files
     20# for easier debugging.
     21# sys.stderr = open('fermi.err', 'w')
     22# sys.stdout = open('fermi.out', 'w')
    1623
    1724# open the XML file containing the run parameters
    18 driver = Rappture.library(sys.argv[1])
     25rx = Rappture.PyXml(sys.argv[1])
    1926
    20 Tstr = driver.get('input.(temperature).current')
    21 T = Rappture.Units.convert(Tstr, to="K", units="off")
     27temp_str = rx['input.(temperature).current'].value
     28temp = Rappture.Units.convert(temp_str, to='K', units='off')
    2229
    23 Efstr = driver.get('input.(Ef).current')
    24 Ef = Rappture.Units.convert(Efstr, to="eV", units="off")
     30ef_str = rx['input.(Ef).current'].value
     31ef = Rappture.Units.convert(ef_str, to='eV', units='off')
    2532
    26 kT = 8.61734e-5 * T
    27 Emin = Ef - 10*kT
    28 Emax = Ef + 10*kT
    29 
    30 E = Emin
    31 dE = 0.005*(Emax-Emin)
     33kt = 8.61734e-5 * temp
     34emin = ef - 10*kt
     35emax = ef + 10*kt
    3236
    3337# Label the output graph with a title, x-axis label,
    3438# y-axis label, and y-axis units
    35 driver.put('output.curve(f12).about.label','Fermi-Dirac Factor',append=0)
    36 driver.put('output.curve(f12).xaxis.label','Fermi-Dirac Factor',append=0)
    37 driver.put('output.curve(f12).yaxis.label','Energy',append=0)
    38 driver.put('output.curve(f12).yaxis.units','eV',append=0)
     39f12 = rx['output.curve(f12)']  # a shortcut to save typing
     40f12['label'] = 'Fermi-Dirac Factor'
     41f12['xaxis.label'] = 'Fermi-Dirac Factor'
     42f12['yaxis.label'] = 'Energy'
     43f12['yaxis.units'] = 'eV'
    3944
    40 while E < Emax:
    41     f = 1.0/(1.0 + exp((E - Ef)/kT))
    42     line = "%g %g\n" % (f, E)
    43     Rappture.Utils.progress(((E-Emin)/(Emax-Emin)*100),"Iterating")
    44     driver.put('output.curve(f12).component.xy', line, append=1)
    45     E = E + dE
     45# How many points to use to define our curve
     46numpts = 200
    4647
    47 Rappture.result(driver)
    48 sys.exit()
     48# The normal python approach would be to simply do this:
     49# energy = np.linspace(emin, emax, numpts)
     50# f = 1.0/(1.0 + np.exp((energy - ef)/kt))
     51# f12['component.xy'] = (f, energy)
     52# rx.close()
     53
     54# But we want to show how to use the progress bar,
     55# so lets do things slowly and iteratively...
     56
     57import time
     58energy = []
     59fermi = []
     60for i, e in enumerate(np.linspace(emin, emax, numpts)):
     61    f = 1.0/(1.0 + np.exp((e - ef)/kt))
     62    energy.append(e)
     63    fermi.append(f)
     64    Rappture.Utils.progress(i*100.0/numpts, "Iterating")
     65    time.sleep(0.01)
     66f12['component.xy'] = (fermi, energy)
     67rx.close()
  • trunk/examples/graph/graph.py

    r3177 r5681  
    77#
    88# ======================================================================
    9 #  AUTHOR:  Michael McLennan, Purdue University
    10 #  Copyright (c) 2004-2012  HUBzero Foundation, LLC
     9#  AUTHOR:  Martin Hunt, Purdue University
     10#  Copyright (c) 2015  HUBzero Foundation, LLC
    1111#
    1212#  See the file "license.terms" for information on usage and
     
    1414# ======================================================================
    1515
     16# Note: You will not see stdout and stderr when this
     17# tool is run by Rappture.  You can either run this tool from the command
     18# line by passing in a driver xml file like this:
     19# ~/rap/rappture/examples/graph> python graph.py driver1234.xml
     20#
     21# or you can redirect stdout and stderr to files by uncommenting the
     22# two lines after the import sys
     23
    1624import Rappture
     25import numpy as np
    1726import sys
    18 from math import *
    1927
    20 io = Rappture.library(sys.argv[1])
     28# uncomment these for debugging
     29# sys.stderr = open('graph.err', 'w')
     30# sys.stdout = open('graph.out', 'w')
    2131
    22 xmin = float(io.get('input.number(min).current'))
    23 xmax = float(io.get('input.number(max).current'))
    24 formula = io.get('input.string(formula).current')
     32io = Rappture.PyXml(sys.argv[1])
     33
     34# When reading from xml, all values are strings
     35xmin = float(io['input.number(min).current'].value)
     36xmax = float(io['input.number(max).current'].value)
     37formula = io['input.string(formula).current'].value
    2538print 'formula = %s' % formula
    26 npts = 100
    2739
    28 io.put('output.curve(result).about.label','Formula: Y vs X',append=0)
    29 io.put('output.curve(result).yaxis.label','Y')
    30 io.put('output.curve(result).xaxis.label','X')
     40curve = io['output.curve(result)']
     41curve['about.label'] = 'Formula: Y vs X'
     42curve['yaxis.label'] = 'Y'
     43curve['xaxis.label'] = 'X'
    3144
    32 for i in range(npts):
    33     x = (xmax-xmin)/npts * i + xmin;
    34     y = eval(formula)
    35     io.put('output.curve(result).component.xy', '%g %g\n' % (x,y), append=1)
     45num_points = 100
     46x = np.linspace(xmin, xmax, num_points)
     47y = eval(formula)
     48curve['component.xy'] = (x, y)
    3649
    37 Rappture.result(io)
     50# Done. Write out the xml file for Rappture.
     51io.close()
  • trunk/examples/zoo/curve/Makefile.in

    r3471 r5681  
    1616
    1717FILES           = \
     18                $(srcdir)/curve.py \
    1819                $(srcdir)/curve.tcl \
    1920                $(srcdir)/curve1.gif \
     
    2526.PHONY: all install clean distclean
    2627
    27 all: 
     28all:
    2829
    2930install: all
  • trunk/examples/zoo/curve/tool.xml

    r1283 r5681  
    1010  </about>
    1111  <command>
    12     tclsh @tool/curve.tcl @driver
     12    python @tool/curve.py @driver
    1313  </command>
    1414</tool>
  • trunk/examples/zoo/drawing/Makefile.in

    r3471 r5681  
    1616
    1717FILES           = \
     18                $(srcdir)/drawing.py \
    1819                $(srcdir)/drawing.tcl \
    1920                $(srcdir)/tool.xml
  • trunk/examples/zoo/drawing/tool.xml

    r4176 r5681  
    1111  </about>
    1212  <command>
    13     tclsh @tool/drawing.tcl @driver
     13    python @tool/drawing.py @driver
    1414  </command>
    1515  <layout>wizard</layout>
  • trunk/examples/zoo/field/Makefile.in

    r3689 r5681  
    1818                $(srcdir)/2DField.jpg \
    1919                $(srcdir)/3DField.jpg \
     20                $(srcdir)/field.py \
    2021                $(srcdir)/field.tcl \
    21                 $(srcdir)/tool.xml 
     22                $(srcdir)/tool.xml
    2223
    2324destdir         = $(prefix)/examples/zoo/field
    2425
    25 .PHONY: all install clean distclean 
     26.PHONY: all install clean distclean
    2627
    27 all: 
     28all:
    2829
    2930install: all
  • trunk/examples/zoo/field/tool.xml

    r3688 r5681  
    1010  </about>
    1111  <command>
    12     tclsh @tool/field.tcl @driver
     12    python @tool/field.py @driver
    1313  </command>
    1414  <limits>
  • trunk/examples/zoo/histogram/Makefile.in

    r3471 r5681  
    1616
    1717FILES           = \
    18                 $(srcdir)/histogram.tcl \
    1918                $(srcdir)/curve1.gif \
    2019                $(srcdir)/curve2.gif \
     20                $(srcdir)/histogram.py \
     21                $(srcdir)/histogram.tcl \
    2122                $(srcdir)/tool.xml
    2223
  • trunk/examples/zoo/histogram/tool.xml

    r2549 r5681  
    1010  </about>
    1111  <command>
    12     tclsh @tool/histogram.tcl @driver
     12    python @tool/histogram.py @driver
    1313  </command>
    1414</tool>
     
    4949       1 0.99
    5050       2 0.34
    51        4 0.57 
     51       4 0.57
    5252       6 0.22
    5353       7 0.11
  • trunk/examples/zoo/mesh/Makefile.in

    r3751 r5681  
    1818                $(srcdir)/file.vtk \
    1919                $(srcdir)/mesh.m \
     20                $(srcdir)/mesh.py \
    2021                $(srcdir)/mesh.tcl \
    2122                $(srcdir)/mesh.vtk \
  • trunk/examples/zoo/mesh/tool.xml

    r5634 r5681  
    33 <tool>
    44  <about>Press Simulate to view results.</about>
    5   <command>tclsh @tool/mesh.tcl @driver</command>
     5  <command>python @tool/mesh.py @driver</command>
    66 </tool>
    77 <input>
  • trunk/examples/zoo/number/Makefile.in

    r3471 r5681  
    1616
    1717FILES           = \
     18                $(srcdir)/number.py \
    1819                $(srcdir)/number.tcl \
    1920                $(srcdir)/number1.gif \
  • trunk/examples/zoo/number/number.py

    r5676 r5681  
    1313
    1414# uncomment these for debugging
    15 sys.stderr = open('tool.err', 'w')
    16 sys.stdout = open('tool.out', 'w')
     15# sys.stderr = open('tool.err', 'w')
     16# sys.stdout = open('tool.out', 'w')
    1717
    1818rx = Rappture.PyXml(sys.argv[1])
  • trunk/examples/zoo/number/tool.xml

    r1285 r5681  
    1111  </about>
    1212  <command>
    13     tclsh @tool/number.tcl @driver
     13    python @tool/number.py @driver
    1414  </command>
    1515</tool>
  • trunk/examples/zoo/number2/Makefile.in

    r3471 r5681  
    1616
    1717FILES           = \
     18                $(srcdir)/number.py \
    1819                $(srcdir)/number.tcl \
    19                 $(srcdir)/tool.xml 
     20                $(srcdir)/tool.xml
    2021
    2122destdir         = $(prefix)/examples/zoo/number2
     
    2324.PHONY: all install clean distclean
    2425
    25 all: 
     26all:
    2627
    2728install: all
  • trunk/examples/zoo/number2/number.tcl

    r3177 r5681  
    22#  EXAMPLE: Rappture <number> elements
    33# ======================================================================
    4 #  AUTHOR:  Martim Hunt, Purdue University
     4#  AUTHOR:  Martin Hunt, Purdue University
    55#  Copyright (c) 2004-2012  HUBzero Foundation, LLC
    66#
  • trunk/examples/zoo/number2/tool.xml

    r1075 r5681  
    77  </about>
    88  <command>
    9     tclsh @tool/number.tcl @driver
     9    python @tool/number.py @driver
    1010  </command>
    1111</tool>
  • trunk/src/core/RpUnits.cc

    r5673 r5681  
    7070    exponent = 1;
    7171
    72     // check to see if there is an exponent at the end 
     72    // check to see if there is an exponent at the end
    7373    // of the search string
    7474    idx = RpUnits::grabExponent(searchStr, &exponent);
     
    353353            }
    354354
    355             // check to see if they are the same basis, 
     355            // check to see if they are the same basis,
    356356            // no need to list all of the metric conversions.
    357357            if (basis) {
     
    493493
    494494    // this is kinda the wrong way to get the job done...
    495     // how do we only create 1 conversion object and share it between 
    496     // atleast two RpUnits objs so that when the RpUnits objs are 
     495    // how do we only create 1 conversion object and share it between
     496    // atleast two RpUnits objs so that when the RpUnits objs are
    497497    // deleted, we are not trying to delete already deleted memory.
    498498    // so for the sake of safety we get the following few lines of code.
     
    528528    // this is kinda the wrong way to get the job done...
    529529    // how do we only create 1 conversion object and share it between at
    530     // least two RpUnits objs so that when the RpUnits objs are deleted, 
     530    // least two RpUnits objs so that when the RpUnits objs are deleted,
    531531    // we are not trying to delete already deleted memory.
    532532    // so for the sake of safety we get the following few lines of code.
     
    640640/// Retrieve the RpUnits object representing the basis of this object.
    641641/**
    642  * Returns a pointer to a RpUnits object which, on success, points to the 
     642 * Returns a pointer to a RpUnits object which, on success, points to the
    643643 * RpUnits object that is the basis of the calling object.
    644644 */
     
    808808 * across a unit that is unrecognized or can not be interpreted, then it
    809809 * returns error (a non-zero value).
    810  * 
     810 *
    811811 * if &compatList == NULL, no compatible list of units will be generated.
    812  * this function does not do a good job of placing the available units 
     812 * this function does not do a good job of placing the available units
    813813 * back into the original formula. i still need to work on this.
    814814 */
     
    920920
    921921    if ((RPUNITS_ORIG_EXP & flags) == RPUNITS_STRICT_NAME) {
    922         // if the user asks for strict naming, 
     922        // if the user asks for strict naming,
    923923        // always place the exponent on the name
    924924        name << myExp;
     
    11141114
    11151115        /*
    1116         // if the exponent != 1,-1 then do a second search 
     1116        // if the exponent != 1,-1 then do a second search
    11171117        // for the unit+exponent string that might be defined.
    11181118        // this is to cover the case were we have defined conversions
     
    13971397    // these are conditions where no conversion is needed
    13981398    if ( (fromUnitsName.empty()) || (toUnitsName == fromUnitsName) )  {
    1399         // there were no units in the input 
     1399        // there were no units in the input
    14001400        // string or no conversion needed
    14011401        // assume fromUnitsName = toUnitsName
     
    15081508                    toIter = toUnitsList.begin();
    15091509
    1510                     // raise error that there was an 
     1510                    // raise error that there was an
    15111511                    // unrecognized conversion request
    15121512
     
    16511651    }
    16521652
    1653     return (std::string(unitText.str())); 
     1653    return (std::string(unitText.str()));
    16541654
    16551655}
     
    17011701    // trying to avoid the recursive way of converting to the basis.
    17021702    // need to rethink this.
    1703     // 
     1703    //
    17041704    if ( (basis) && (basis->getUnitsName() != toUnit->getUnitsName()) ) {
    17051705        value = convert(basis,value,&my_result);
     
    17111711    // find the toUnit in our dictionary.
    17121712    // if the toUnits has a basis, we need to search for the basis
    1713     // and convert between basis' and then convert again back to the 
     1713    // and convert between basis' and then convert again back to the
    17141714    // original unit.
    17151715    if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    17551755            // conversion for a two arg conv function pointer
    17561756            // need to make this simpler, more logical maybe only allow 2 arg
    1757             if (       (p->conv->convForwFxnPtr) 
     1757            if (       (p->conv->convForwFxnPtr)
    17581758                    && (! p->conv->convForwFxnPtrDD) ) {
    17591759
    17601760                value = p->conv->convForwFxnPtr(value);
    17611761            }
    1762             else if (  (p->conv->convForwFxnPtrDD) 
     1762            else if (  (p->conv->convForwFxnPtrDD)
    17631763                    && (! p->conv->convForwFxnPtr) ) {
    17641764
    1765                 value = 
     1765                value =
    17661766                    p->conv->convForwFxnPtrDD(value, fromUnit->getExponent());
    17671767            }
     
    17701770            // or to the requested unit's basis.
    17711771            // if we converted to the requested unit's basis. we need to
    1772             // do one last conversion from the requested unit's basis back 
     1772            // do one last conversion from the requested unit's basis back
    17731773            // to the requested unit.
    17741774            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    17831783
    17841784            // change the result code to zero, a conversion was performed
    1785             // (we think)... its ture that it is possible to get to this 
    1786             // point and have skipped the conversion because the 
     1785            // (we think)... its ture that it is possible to get to this
     1786            // point and have skipped the conversion because the
    17871787            // conversion object was not properly created...
    17881788            // ie. both fxn ptrs were null or neither fxn ptr was null
     
    18031803            // conversion for a two arg conv function pointer
    18041804            // need to make this simpler, more logical maybe only allow 2 arg
    1805             if (       (p->conv->convBackFxnPtr) 
     1805            if (       (p->conv->convBackFxnPtr)
    18061806                    && (! p->conv->convBackFxnPtrDD) ) {
    18071807
    18081808                value = p->conv->convBackFxnPtr(value);
    18091809            }
    1810             else if (  (p->conv->convBackFxnPtrDD) 
     1810            else if (  (p->conv->convBackFxnPtrDD)
    18111811                    && (! p->conv->convBackFxnPtr) ) {
    18121812
    1813                 value = 
     1813                value =
    18141814                    p->conv->convBackFxnPtrDD(value, fromUnit->getExponent());
    18151815            }
     
    18181818            // or to the requested unit's basis.
    18191819            // if we converted to the requested unit's basis. we need to
    1820             // do one last conversion from the requested unit's basis back 
     1820            // do one last conversion from the requested unit's basis back
    18211821            // to the requested unit.
    18221822            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    18311831
    18321832            // change the result code to zero, a conversion was performed
    1833             // (we think)... its ture that it is possible to get to this 
    1834             // point and have skipped the conversion because the 
     1833            // (we think)... its ture that it is possible to get to this
     1834            // point and have skipped the conversion because the
    18351835            // conversion object was not properly created...
    18361836            // ie. both fxn ptrs were null or neither fxn ptr was null
     
    19111911    // find the toUnit in our dictionary.
    19121912    // if the toUnits has a basis, we need to search for the basis
    1913     // and convert between basis' and then convert again back to the 
     1913    // and convert between basis' and then convert again back to the
    19141914    // original unit.
    19151915    if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    19551955            // or to the requested unit's basis.
    19561956            // if we converted to the requested unit's basis. we need to
    1957             // do one last conversion from the requested unit's basis back 
     1957            // do one last conversion from the requested unit's basis back
    19581958            // to the requested unit.
    19591959            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    19681968
    19691969            // change the result code to zero, a conversion was performed
    1970             // (we think)... its ture that it is possible to get to this 
    1971             // point and have skipped the conversion because the 
     1970            // (we think)... its ture that it is possible to get to this
     1971            // point and have skipped the conversion because the
    19721972            // conversion object was not properly created...
    19731973            // ie. both fxn ptrs were null or neither fxn ptr was null
     
    19881988            // or to the requested unit's basis.
    19891989            // if we converted to the requested unit's basis. we need to
    1990             // do one last conversion from the requested unit's basis back 
     1990            // do one last conversion from the requested unit's basis back
    19911991            // to the requested unit.
    19921992            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    20012001
    20022002            // change the result code to zero, a conversion was performed
    2003             // (we think)... its ture that it is possible to get to this 
    2004             // point and have skipped the conversion because the 
     2003            // (we think)... its ture that it is possible to get to this
     2004            // point and have skipped the conversion because the
    20052005            // conversion object was not properly created...
    20062006            // ie. both fxn ptrs were null or neither fxn ptr was null
     
    20842084    // find the toUnit in our dictionary.
    20852085    // if the toUnits has a basis, we need to search for the basis
    2086     // and convert between basis' and then convert again back to the 
     2086    // and convert between basis' and then convert again back to the
    20872087    // original unit.
    20882088    if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    21482148            // or to the requested unit's basis.
    21492149            // if we converted to the requested unit's basis. we need to
    2150             // do one last conversion from the requested unit's basis back 
     2150            // do one last conversion from the requested unit's basis back
    21512151            // to the requested unit.
    21522152            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    21662166            // conversion for a two arg conv function pointer
    21672167            // need to make this simpler, more logical maybe only allow 2 arg
    2168             if (       (p->conv->convBackFxnPtr) 
     2168            if (       (p->conv->convBackFxnPtr)
    21692169                    && (! p->conv->convBackFxnPtrDD) ) {
    21702170
     
    21842184            // or to the requested unit's basis.
    21852185            // if we converted to the requested unit's basis. we need to
    2186             // do one last conversion from the requested unit's basis back 
     2186            // do one last conversion from the requested unit's basis back
    21872187            // to the requested unit.
    21882188            if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) {
     
    22802280/// Place an RpUnits Object into the Rappture Units Dictionary.
    22812281/**
    2282  * Return whether the inserted key was new with a non-zero 
     2282 * Return whether the inserted key was new with a non-zero
    22832283 * value, or if the key already existed with a value of zero.
    22842284 */
     
    24422442/**********************************************************************/
    24432443// METHOD: addPresetPrefix()
    2444 /// 
     2444///
    24452445/**
    24462446 * Defines the following unit prefixes:
     
    25432543 *   days     (d)
    25442544 *
    2545  *   month and year are not included because simple 
     2545 *   month and year are not included because simple
    25462546 *   day->month conversions may be misleading
    25472547 *   month->year conversions may be included in the future
    2548  * 
     2548 *
    25492549 * Return codes: 0 success, anything else is error
    25502550 */
     
    32293229/// Convert a std::list<std::string> into a comma delimited std::string
    32303230/**
    3231  * Iterates through a std::list<std::string> and returns a comma 
     3231 * Iterates through a std::list<std::string> and returns a comma
    32323232 * delimited std::string containing the elements of the inputted std::list.
    32333233 *
Note: See TracChangeset for help on using the changeset viewer.