[Saga-devel] saga SVN commit 3259:
/trunk/saga/saga/adaptors/utils/
Hartmut Kaiser
hkaiser at cct.lsu.edu
Mon Jan 12 13:18:54 CST 2009
> User: amerzky
> Date: 2009/01/11 02:29 AM
>
> Added:
> /trunk/saga/saga/adaptors/utils/
> utils.cpp
>
> Log:
> add missing file
All of the functions below do already exist somewhere. No need to reinvent
the wheel.
split --> boost::algorithms::split
(http://www.boost.org/doc/libs/1_37_0/doc/html/string_algo/usage.html#id3677
763)
head --> std::copy(begin, begin+n, dest)
tail --> std::copy(end-n, end, dest)
rev --> std::reverse
tac --> std::reverse
grep --> std::remove_if or remove_copy_if
Regards Hartmut
>
> File Changes:
>
> Directory: /trunk/saga/saga/adaptors/utils/
> ===========================================
>
> File [added]: utils.cpp
> Delta lines: +143 -0
> ===================================================================
> --- trunk/saga/saga/adaptors/utils/utils.cpp 2009-01-11 07:54:12 UTC
> (rev 3258)
> +++ trunk/saga/saga/adaptors/utils/utils.cpp 2009-01-11 08:29:31 UTC
> (rev 3259)
> @@ -0,0 +1,143 @@
> +// Copyright (c) 2005-2006 Andre Merzky (andre at merzky.net)
> +//
> +// Use, modification and distribution is subject to the Boost
> Software
> +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or
> copy at
> +// http://www.boost.org/LICENSE_1_0.txt)
> +
> +#ifndef SAGA_UTILS_HPP
> +#define SAGA_UTILS_HPP
> +
> +#include <saga/saga/adaptors/utils/ini/ini.hpp>
> +#include <saga/saga/adaptors/utils/process/process.hpp>
> +
> +namespace saga
> +{
> + namespace adaptors
> + {
> + namespace utils
> + {
> +
> ///////////////////////////////////////////////////////////////////////
> ////////
> + std::vector <std::string> split (std::string line,
> + char delim)
> + {
> + std::vector <std::string> list;
> + std::string elem;
> +
> + for ( unsigned int i = 0; i < line.length (); i++ )
> + {
> + char c = line[i];
> +
> + if ( c == delim )
> + {
> + // store element if there is any content (even if element
> is empty)
> + list.push_back (elem);
> + elem = "";
> + }
> + else
> + {
> + // save any char which is not the delimiter
> + elem += c;
> + }
> + }
> +
> + if ( elem.length () > 0 )
> + {
> + // save remaining content after last delimiter
> + list.push_back (elem);
> + }
> +
> + // std::cout << "split '" << line << "'\n";
> + // for ( unsigned int j = 0; j < list.size (); j++ )
> + // {
> + // std::cout << " [" << j << "] " << list[j] << std::endl;
> + // }
> +
> + return (list);
> + }
> +
> +
> //////////////////////////////////////////////////////////////////
> + std::vector <std::string> head (int n,
> + std::vector <std::string> in)
> + {
> + std::vector <std::string> out;
> +
> + for ( unsigned int i = 0; i < in.size () && i < n; i++ )
> + {
> + out.push_back (in[i]);
> + }
> +
> + return out;
> + }
> +
> +
> //////////////////////////////////////////////////////////////////
> + std::vector <std::string> tail (int n,
> + std::vector <std::string> in)
> + {
> + std::vector <std::string> out;
> +
> + for ( unsigned int i = in.size () - n; i < in.size () ; i++ )
> + {
> + out.push_back (in[i]);
> + }
> +
> + return out;
> + }
> +
> +
> //////////////////////////////////////////////////////////////////
> + // lines should not include newlines
> + std::vector <std::string> rev (std::vector <std::string> in)
> + {
> + std::vector <std::string> out;
> +
> + for ( unsigned int i = 0; i < in.size (); i++ )
> + {
> + std::string line;
> +
> + for ( unsigned int j = in[i].length (); j > 0; j-- )
> + {
> + line += in[i][j];
> + }
> +
> + out.push_back (line);
> + }
> +
> + return out;
> + }
> +
> +
> //////////////////////////////////////////////////////////////////
> + std::vector <std::string> tac (std::vector <std::string> in)
> + {
> + std::vector <std::string> out;
> +
> + for ( unsigned int i = in.size (); i > 0; i-- )
> + {
> + out.push_back (in[i-1]);
> + }
> +
> + return out;
> + }
> +
> +
> //////////////////////////////////////////////////////////////////
> + std::vector <std::string> grep (std::string pattern,
> + std::vector <std::string> in)
> + {
> + std::vector <std::string> out;
> +
> + for ( unsigned int i = 0; i < in.size (); i++ )
> + {
> + if ( in[i].find (pattern) != std::string::npos )
> + {
> + out.push_back (in[i]);
> + }
> + }
> +
> + return out;
> + }
> +
> +
> + } // namespace utils
> + } // namespace adaptors
> +} // namespace saga
> +
> +#endif // SAGA_UTILS_HPP
> +
>
> _______________________________________________
> saga-devel mailing list
> saga-devel at cct.lsu.edu
> https://mail.cct.lsu.edu/mailman/listinfo/saga-devel
More information about the saga-devel
mailing list