[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