- Timestamp:
- Jun 10, 2015, 8:54:05 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 20 edited
- 7 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/1.3 merged: 5676,5678,5680 /branches/uq merged: 5411-5417,5530-5534,5554-5555,5570,5627,5677
- Property svn:mergeinfo changed
-
trunk/configure.in
r5175 r5681 43 43 AC_PROG_MAKE_SET 44 44 45 # Check for C, C++, and FORTRAN 45 # Check for C, C++, and FORTRAN 46 46 AC_PROG_CC 47 47 AC_PROG_CXX 48 # Avoid g95 48 # Avoid g95 49 49 AC_PROG_F77([g77 gfortran f77 fort77 f90 xlf xlf90 fl32]) 50 50 … … 147 147 for dir in \ 148 148 ${exec_prefix} \ 149 ${exec_prefix}/lib ; do 149 ${exec_prefix}/lib ; do 150 150 tclconfig="${dir}/tclConfig.sh" 151 151 if test -f "$tclconfig" ; then … … 172 172 if test "${with_tclsh}" != "no" ; then 173 173 tclsh="tclsh${TCL_VERSION}" 174 if test "${with_tclsh}" = "yes" ; then 174 if test "${with_tclsh}" = "yes" ; then 175 175 AC_PATH_PROG(TCLSH, ${tclsh}, [], [${exec_prefix}/bin:${PATH}]) 176 else 176 else 177 177 AC_PATH_PROG(TCLSH, ${tclsh}, [], [${with_tclsh}/bin:${with_tclsh}]) 178 178 fi … … 189 189 [AS_HELP_STRING([--with-vtk[=version]], 190 190 [VTK library version @<:@default=6.2@:>@])], 191 [], 191 [], 192 192 [with_vtk=yes]) 193 193 … … 231 231 [AS_HELP_STRING([--enable-vtkdicom], 232 232 [Use vtkDICOM package @<:@default=no@:>@])], 233 [], 233 [], 234 234 [enable_vtkdicom=no]) 235 235 … … 297 297 #-------------------------------------------------------------------- 298 298 if test "${with_ffmpeg}" != "no" ; then 299 if test "${with_ffmpeg}" = "yes" ; then 299 if test "${with_ffmpeg}" = "yes" ; then 300 300 AC_PATH_PROG(FFMPEG, ffmpeg, [], $PATH) 301 else 301 else 302 302 AC_PATH_PROG(FFMPEG, ffmpeg, [], [${with_ffmpeg}/bin:${with_ffmpeg}]) 303 fi 303 fi 304 304 if test "${FFMPEG}x" != "x" ; then 305 305 AC_DEFINE(HAVE_FFMPEG, 1, [Render servers can use ffmpeg]) -
trunk/examples/app-fermi/python/fermi.py
r4462 r5681 6 6 # ====================================================================== 7 7 # 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 9 10 # 10 11 # See the file "license.terms" for information on usage and … … 13 14 import Rappture 14 15 import sys 15 from math import * 16 import 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') 16 23 17 24 # open the XML file containing the run parameters 18 driver = Rappture.library(sys.argv[1])25 rx = Rappture.PyXml(sys.argv[1]) 19 26 20 Tstr = driver.get('input.(temperature).current') 21 T = Rappture.Units.convert(Tstr, to="K", units="off")27 temp_str = rx['input.(temperature).current'].value 28 temp = Rappture.Units.convert(temp_str, to='K', units='off') 22 29 23 Efstr = driver.get('input.(Ef).current') 24 Ef = Rappture.Units.convert(Efstr, to="eV", units="off")30 ef_str = rx['input.(Ef).current'].value 31 ef = Rappture.Units.convert(ef_str, to='eV', units='off') 25 32 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) 33 kt = 8.61734e-5 * temp 34 emin = ef - 10*kt 35 emax = ef + 10*kt 32 36 33 37 # Label the output graph with a title, x-axis label, 34 38 # 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) 39 f12 = rx['output.curve(f12)'] # a shortcut to save typing 40 f12['label'] = 'Fermi-Dirac Factor' 41 f12['xaxis.label'] = 'Fermi-Dirac Factor' 42 f12['yaxis.label'] = 'Energy' 43 f12['yaxis.units'] = 'eV' 39 44 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 46 numpts = 200 46 47 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 57 import time 58 energy = [] 59 fermi = [] 60 for 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) 66 f12['component.xy'] = (fermi, energy) 67 rx.close() -
trunk/examples/graph/graph.py
r3177 r5681 7 7 # 8 8 # ====================================================================== 9 # AUTHOR: M ichael McLennan, Purdue University10 # Copyright (c) 20 04-2012HUBzero Foundation, LLC9 # AUTHOR: Martin Hunt, Purdue University 10 # Copyright (c) 2015 HUBzero Foundation, LLC 11 11 # 12 12 # See the file "license.terms" for information on usage and … … 14 14 # ====================================================================== 15 15 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 16 24 import Rappture 25 import numpy as np 17 26 import sys 18 from math import *19 27 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') 21 31 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') 32 io = Rappture.PyXml(sys.argv[1]) 33 34 # When reading from xml, all values are strings 35 xmin = float(io['input.number(min).current'].value) 36 xmax = float(io['input.number(max).current'].value) 37 formula = io['input.string(formula).current'].value 25 38 print 'formula = %s' % formula 26 npts = 10027 39 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') 40 curve = io['output.curve(result)'] 41 curve['about.label'] = 'Formula: Y vs X' 42 curve['yaxis.label'] = 'Y' 43 curve['xaxis.label'] = 'X' 31 44 32 for i in range(npts): 33 x = (xmax-xmin)/npts * i + xmin; 34 35 io.put('output.curve(result).component.xy', '%g %g\n' % (x,y), append=1)45 num_points = 100 46 x = np.linspace(xmin, xmax, num_points) 47 y = eval(formula) 48 curve['component.xy'] = (x, y) 36 49 37 Rappture.result(io) 50 # Done. Write out the xml file for Rappture. 51 io.close() -
trunk/examples/zoo/curve/Makefile.in
r3471 r5681 16 16 17 17 FILES = \ 18 $(srcdir)/curve.py \ 18 19 $(srcdir)/curve.tcl \ 19 20 $(srcdir)/curve1.gif \ … … 25 26 .PHONY: all install clean distclean 26 27 27 all: 28 all: 28 29 29 30 install: all -
trunk/examples/zoo/curve/tool.xml
r1283 r5681 10 10 </about> 11 11 <command> 12 tclsh @tool/curve.tcl@driver12 python @tool/curve.py @driver 13 13 </command> 14 14 </tool> -
trunk/examples/zoo/drawing/Makefile.in
r3471 r5681 16 16 17 17 FILES = \ 18 $(srcdir)/drawing.py \ 18 19 $(srcdir)/drawing.tcl \ 19 20 $(srcdir)/tool.xml -
trunk/examples/zoo/drawing/tool.xml
r4176 r5681 11 11 </about> 12 12 <command> 13 tclsh @tool/drawing.tcl@driver13 python @tool/drawing.py @driver 14 14 </command> 15 15 <layout>wizard</layout> -
trunk/examples/zoo/field/Makefile.in
r3689 r5681 18 18 $(srcdir)/2DField.jpg \ 19 19 $(srcdir)/3DField.jpg \ 20 $(srcdir)/field.py \ 20 21 $(srcdir)/field.tcl \ 21 $(srcdir)/tool.xml 22 $(srcdir)/tool.xml 22 23 23 24 destdir = $(prefix)/examples/zoo/field 24 25 25 .PHONY: all install clean distclean 26 .PHONY: all install clean distclean 26 27 27 all: 28 all: 28 29 29 30 install: all -
trunk/examples/zoo/field/tool.xml
r3688 r5681 10 10 </about> 11 11 <command> 12 tclsh @tool/field.tcl@driver12 python @tool/field.py @driver 13 13 </command> 14 14 <limits> -
trunk/examples/zoo/histogram/Makefile.in
r3471 r5681 16 16 17 17 FILES = \ 18 $(srcdir)/histogram.tcl \19 18 $(srcdir)/curve1.gif \ 20 19 $(srcdir)/curve2.gif \ 20 $(srcdir)/histogram.py \ 21 $(srcdir)/histogram.tcl \ 21 22 $(srcdir)/tool.xml 22 23 -
trunk/examples/zoo/histogram/tool.xml
r2549 r5681 10 10 </about> 11 11 <command> 12 tclsh @tool/histogram.tcl@driver12 python @tool/histogram.py @driver 13 13 </command> 14 14 </tool> … … 49 49 1 0.99 50 50 2 0.34 51 4 0.57 51 4 0.57 52 52 6 0.22 53 53 7 0.11 -
trunk/examples/zoo/mesh/Makefile.in
r3751 r5681 18 18 $(srcdir)/file.vtk \ 19 19 $(srcdir)/mesh.m \ 20 $(srcdir)/mesh.py \ 20 21 $(srcdir)/mesh.tcl \ 21 22 $(srcdir)/mesh.vtk \ -
trunk/examples/zoo/mesh/tool.xml
r5634 r5681 3 3 <tool> 4 4 <about>Press Simulate to view results.</about> 5 <command> tclsh @tool/mesh.tcl@driver</command>5 <command>python @tool/mesh.py @driver</command> 6 6 </tool> 7 7 <input> -
trunk/examples/zoo/number/Makefile.in
r3471 r5681 16 16 17 17 FILES = \ 18 $(srcdir)/number.py \ 18 19 $(srcdir)/number.tcl \ 19 20 $(srcdir)/number1.gif \ -
trunk/examples/zoo/number/number.py
r5676 r5681 13 13 14 14 # 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') 17 17 18 18 rx = Rappture.PyXml(sys.argv[1]) -
trunk/examples/zoo/number/tool.xml
r1285 r5681 11 11 </about> 12 12 <command> 13 tclsh @tool/number.tcl@driver13 python @tool/number.py @driver 14 14 </command> 15 15 </tool> -
trunk/examples/zoo/number2/Makefile.in
r3471 r5681 16 16 17 17 FILES = \ 18 $(srcdir)/number.py \ 18 19 $(srcdir)/number.tcl \ 19 $(srcdir)/tool.xml 20 $(srcdir)/tool.xml 20 21 21 22 destdir = $(prefix)/examples/zoo/number2 … … 23 24 .PHONY: all install clean distclean 24 25 25 all: 26 all: 26 27 27 28 install: all -
trunk/examples/zoo/number2/number.tcl
r3177 r5681 2 2 # EXAMPLE: Rappture <number> elements 3 3 # ====================================================================== 4 # AUTHOR: Marti mHunt, Purdue University4 # AUTHOR: Martin Hunt, Purdue University 5 5 # Copyright (c) 2004-2012 HUBzero Foundation, LLC 6 6 # -
trunk/examples/zoo/number2/tool.xml
r1075 r5681 7 7 </about> 8 8 <command> 9 tclsh @tool/number.tcl@driver9 python @tool/number.py @driver 10 10 </command> 11 11 </tool> -
trunk/src/core/RpUnits.cc
r5673 r5681 70 70 exponent = 1; 71 71 72 // check to see if there is an exponent at the end 72 // check to see if there is an exponent at the end 73 73 // of the search string 74 74 idx = RpUnits::grabExponent(searchStr, &exponent); … … 353 353 } 354 354 355 // check to see if they are the same basis, 355 // check to see if they are the same basis, 356 356 // no need to list all of the metric conversions. 357 357 if (basis) { … … 493 493 494 494 // 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 497 497 // deleted, we are not trying to delete already deleted memory. 498 498 // so for the sake of safety we get the following few lines of code. … … 528 528 // this is kinda the wrong way to get the job done... 529 529 // 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, 531 531 // we are not trying to delete already deleted memory. 532 532 // so for the sake of safety we get the following few lines of code. … … 640 640 /// Retrieve the RpUnits object representing the basis of this object. 641 641 /** 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 643 643 * RpUnits object that is the basis of the calling object. 644 644 */ … … 808 808 * across a unit that is unrecognized or can not be interpreted, then it 809 809 * returns error (a non-zero value). 810 * 810 * 811 811 * 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 813 813 * back into the original formula. i still need to work on this. 814 814 */ … … 920 920 921 921 if ((RPUNITS_ORIG_EXP & flags) == RPUNITS_STRICT_NAME) { 922 // if the user asks for strict naming, 922 // if the user asks for strict naming, 923 923 // always place the exponent on the name 924 924 name << myExp; … … 1114 1114 1115 1115 /* 1116 // if the exponent != 1,-1 then do a second search 1116 // if the exponent != 1,-1 then do a second search 1117 1117 // for the unit+exponent string that might be defined. 1118 1118 // this is to cover the case were we have defined conversions … … 1397 1397 // these are conditions where no conversion is needed 1398 1398 if ( (fromUnitsName.empty()) || (toUnitsName == fromUnitsName) ) { 1399 // there were no units in the input 1399 // there were no units in the input 1400 1400 // string or no conversion needed 1401 1401 // assume fromUnitsName = toUnitsName … … 1508 1508 toIter = toUnitsList.begin(); 1509 1509 1510 // raise error that there was an 1510 // raise error that there was an 1511 1511 // unrecognized conversion request 1512 1512 … … 1651 1651 } 1652 1652 1653 return (std::string(unitText.str())); 1653 return (std::string(unitText.str())); 1654 1654 1655 1655 } … … 1701 1701 // trying to avoid the recursive way of converting to the basis. 1702 1702 // need to rethink this. 1703 // 1703 // 1704 1704 if ( (basis) && (basis->getUnitsName() != toUnit->getUnitsName()) ) { 1705 1705 value = convert(basis,value,&my_result); … … 1711 1711 // find the toUnit in our dictionary. 1712 1712 // 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 1714 1714 // original unit. 1715 1715 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 1755 1755 // conversion for a two arg conv function pointer 1756 1756 // need to make this simpler, more logical maybe only allow 2 arg 1757 if ( (p->conv->convForwFxnPtr) 1757 if ( (p->conv->convForwFxnPtr) 1758 1758 && (! p->conv->convForwFxnPtrDD) ) { 1759 1759 1760 1760 value = p->conv->convForwFxnPtr(value); 1761 1761 } 1762 else if ( (p->conv->convForwFxnPtrDD) 1762 else if ( (p->conv->convForwFxnPtrDD) 1763 1763 && (! p->conv->convForwFxnPtr) ) { 1764 1764 1765 value = 1765 value = 1766 1766 p->conv->convForwFxnPtrDD(value, fromUnit->getExponent()); 1767 1767 } … … 1770 1770 // or to the requested unit's basis. 1771 1771 // 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 1773 1773 // to the requested unit. 1774 1774 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 1783 1783 1784 1784 // 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 1787 1787 // conversion object was not properly created... 1788 1788 // ie. both fxn ptrs were null or neither fxn ptr was null … … 1803 1803 // conversion for a two arg conv function pointer 1804 1804 // need to make this simpler, more logical maybe only allow 2 arg 1805 if ( (p->conv->convBackFxnPtr) 1805 if ( (p->conv->convBackFxnPtr) 1806 1806 && (! p->conv->convBackFxnPtrDD) ) { 1807 1807 1808 1808 value = p->conv->convBackFxnPtr(value); 1809 1809 } 1810 else if ( (p->conv->convBackFxnPtrDD) 1810 else if ( (p->conv->convBackFxnPtrDD) 1811 1811 && (! p->conv->convBackFxnPtr) ) { 1812 1812 1813 value = 1813 value = 1814 1814 p->conv->convBackFxnPtrDD(value, fromUnit->getExponent()); 1815 1815 } … … 1818 1818 // or to the requested unit's basis. 1819 1819 // 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 1821 1821 // to the requested unit. 1822 1822 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 1831 1831 1832 1832 // 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 1835 1835 // conversion object was not properly created... 1836 1836 // ie. both fxn ptrs were null or neither fxn ptr was null … … 1911 1911 // find the toUnit in our dictionary. 1912 1912 // 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 1914 1914 // original unit. 1915 1915 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 1955 1955 // or to the requested unit's basis. 1956 1956 // 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 1958 1958 // to the requested unit. 1959 1959 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 1968 1968 1969 1969 // 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 1972 1972 // conversion object was not properly created... 1973 1973 // ie. both fxn ptrs were null or neither fxn ptr was null … … 1988 1988 // or to the requested unit's basis. 1989 1989 // 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 1991 1991 // to the requested unit. 1992 1992 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 2001 2001 2002 2002 // 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 2005 2005 // conversion object was not properly created... 2006 2006 // ie. both fxn ptrs were null or neither fxn ptr was null … … 2084 2084 // find the toUnit in our dictionary. 2085 2085 // 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 2087 2087 // original unit. 2088 2088 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 2148 2148 // or to the requested unit's basis. 2149 2149 // 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 2151 2151 // to the requested unit. 2152 2152 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 2166 2166 // conversion for a two arg conv function pointer 2167 2167 // need to make this simpler, more logical maybe only allow 2 arg 2168 if ( (p->conv->convBackFxnPtr) 2168 if ( (p->conv->convBackFxnPtr) 2169 2169 && (! p->conv->convBackFxnPtrDD) ) { 2170 2170 … … 2184 2184 // or to the requested unit's basis. 2185 2185 // 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 2187 2187 // to the requested unit. 2188 2188 if ( (toBasis) && (toBasis->getUnitsName() != fromUnit->getUnitsName()) ) { … … 2280 2280 /// Place an RpUnits Object into the Rappture Units Dictionary. 2281 2281 /** 2282 * Return whether the inserted key was new with a non-zero 2282 * Return whether the inserted key was new with a non-zero 2283 2283 * value, or if the key already existed with a value of zero. 2284 2284 */ … … 2442 2442 /**********************************************************************/ 2443 2443 // METHOD: addPresetPrefix() 2444 /// 2444 /// 2445 2445 /** 2446 2446 * Defines the following unit prefixes: … … 2543 2543 * days (d) 2544 2544 * 2545 * month and year are not included because simple 2545 * month and year are not included because simple 2546 2546 * day->month conversions may be misleading 2547 2547 * month->year conversions may be included in the future 2548 * 2548 * 2549 2549 * Return codes: 0 success, anything else is error 2550 2550 */ … … 3229 3229 /// Convert a std::list<std::string> into a comma delimited std::string 3230 3230 /** 3231 * Iterates through a std::list<std::string> and returns a comma 3231 * Iterates through a std::list<std::string> and returns a comma 3232 3232 * delimited std::string containing the elements of the inputted std::list. 3233 3233 *
Note: See TracChangeset
for help on using the changeset viewer.