documentation improved, new grouping
This commit is contained in:
		
							
								
								
									
										31
									
								
								mrw/auto.hpp
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								mrw/auto.hpp
									
									
									
									
									
								
							@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.7  2004/12/20 07:40:35  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.6  2004/10/11 16:48:29  marc
 | 
			
		||||
    better comment and operators -> and * for AutoPtr
 | 
			
		||||
 | 
			
		||||
@@ -54,6 +57,34 @@ namespace mrw {
 | 
			
		||||
      (except @c malloca that only works for a subset of problems: if
 | 
			
		||||
      you and not a system call allocates memory), @c open and so on.
 | 
			
		||||
      These classes can take over the resource ownership.
 | 
			
		||||
 | 
			
		||||
      The following ressource handler are predefined:
 | 
			
		||||
       - mrw::AutoPtr<> is the same as std::auto_ptr, but can be stored
 | 
			
		||||
         in STL containers
 | 
			
		||||
         @code
 | 
			
		||||
         mrw::AutoPtr<ClassName> xyz(new ClassName(a, b, c));
 | 
			
		||||
         @endcode
 | 
			
		||||
       - mrw::MMapHandle frees an @c mmap handle with @c munmap
 | 
			
		||||
       - mrw::Auto<>::Free frees @c malloc allocated memory with @c free
 | 
			
		||||
         @code
 | 
			
		||||
         mrw::Auto<char*>::Free xxx((char*)malloc(15));
 | 
			
		||||
         @endcode
 | 
			
		||||
       - mrw::SmartPointer<> is a shared pointer that deletes memory
 | 
			
		||||
         when all owners have died
 | 
			
		||||
         @code
 | 
			
		||||
         mrw::SmartPointer<ClassName> xyz(new ClassName(a, b, c));
 | 
			
		||||
         @endcode
 | 
			
		||||
       - mrw::Pipe handles UNIX pipes and closes them on exit
 | 
			
		||||
       - mrw::AutoFile automatically closes open files
 | 
			
		||||
       - mrw::AutoMapper calls @c munmap on memory mapped files
 | 
			
		||||
       - mrw::AutoBfd automatically calls @c bfd_close
 | 
			
		||||
 | 
			
		||||
     If this is not enough, you can @c typedef your own ressource
 | 
			
		||||
     handler from the template class mrw::AutoResource<>. For example,
 | 
			
		||||
     mrw::AutoFile is defined as:
 | 
			
		||||
     @code
 | 
			
		||||
     typedef mrw::AutoResource<int, int(*)(int), &close, int, -1> mrw::AutoFile;
 | 
			
		||||
     @endcode
 | 
			
		||||
  */
 | 
			
		||||
  //@{
 | 
			
		||||
  
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:35  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/10/07 09:31:30  marc
 | 
			
		||||
    new feature
 | 
			
		||||
 | 
			
		||||
@@ -24,6 +27,12 @@
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup StdExtSTL
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @defgroup StdExtdeque deque
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief push a value to a deque
 | 
			
		||||
 | 
			
		||||
@@ -58,7 +67,7 @@ std::deque<T, A>& operator<<(std::deque<T, A>& l, const T& o) throw(std::bad_exc
 | 
			
		||||
    @note when something is extracted from a deque, it is removed
 | 
			
		||||
    from the deque, that means after every shift the deque is
 | 
			
		||||
    shortened by the shifted element
 | 
			
		||||
    @pre #include <mrw/string.hpp>
 | 
			
		||||
    @pre #include <mrw/deque.hpp>
 | 
			
		||||
*/
 | 
			
		||||
template <typename T, typename A>
 | 
			
		||||
std::deque<T, A>& operator>>(std::deque<T, A>& l, T& o) throw(std::exception) {
 | 
			
		||||
@@ -72,6 +81,8 @@ std::deque<T, A>& operator>>(std::deque<T, A>& l, T& o) throw(std::exception) {
 | 
			
		||||
  return l;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.9  2004/12/20 07:40:35  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.8  2004/12/18 21:00:09  marc
 | 
			
		||||
    everything is ok, when pipes are non blocking on parent's side and blocking on client's side, and select is not used (not necessary for non blocking IO)
 | 
			
		||||
 | 
			
		||||
@@ -38,8 +41,8 @@
 | 
			
		||||
#include <mrw/exec.hpp>
 | 
			
		||||
#include <mrw/unistd.hpp>
 | 
			
		||||
#include <mrw/exception.hpp>
 | 
			
		||||
#include <mrw/stdext.hpp> // max
 | 
			
		||||
#include <sys/wait.h> // waitpid#include <unistd.h> // fork, exec
 | 
			
		||||
#include <sys/wait.h> // waitpid
 | 
			
		||||
#include <unistd.h> // fork, exec
 | 
			
		||||
#include <string.h> // memcpy
 | 
			
		||||
#include <assert.h> // assert
 | 
			
		||||
 | 
			
		||||
@@ -252,7 +255,7 @@ mrw::Exec& mrw::Exec::execute(const std::string& input, bool exc)
 | 
			
		||||
    stdOut.close_in();
 | 
			
		||||
    stdErr.close_in();
 | 
			
		||||
    stdIn.connect_cin();
 | 
			
		||||
    stdOut.connect_cout(); // if cin is non blocking, child terminates here?!?
 | 
			
		||||
    stdOut.connect_cout();
 | 
			
		||||
    stdErr.connect_cerr();
 | 
			
		||||
    execvp(_cmd->path(), _cmd->args());
 | 
			
		||||
    exit(1); // execute failed
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								mrw/list.hpp
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								mrw/list.hpp
									
									
									
									
									
								
							@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:35  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/10/07 09:31:30  marc
 | 
			
		||||
    new feature
 | 
			
		||||
 | 
			
		||||
@@ -24,6 +27,23 @@
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @defgroup StdExtSTL STL extensions
 | 
			
		||||
 | 
			
		||||
    The STL extensions give you the possibility to fill up a container
 | 
			
		||||
    by shifting in values, and to extract values by shifting them out.
 | 
			
		||||
    @code
 | 
			
		||||
    std::list<std::string> l;
 | 
			
		||||
    l<<"hello"<<"world"<<"this"<<is"<<"cool";
 | 
			
		||||
    for (std::string s; l.size();) {
 | 
			
		||||
      l>>s;
 | 
			
		||||
      std::cout<<"list contains: "<<s<<std::endl;
 | 
			
		||||
    }
 | 
			
		||||
    @endcode
 | 
			
		||||
*/
 | 
			
		||||
//@{
 | 
			
		||||
/** @defgroup StdExtliststl list
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief push a value to a list
 | 
			
		||||
 | 
			
		||||
@@ -58,7 +78,7 @@ std::list<T, A>& operator<<(std::list<T, A>& l, const T& o) throw(std::bad_excep
 | 
			
		||||
    @note when something is extracted from a list, it is removed
 | 
			
		||||
    from the list, that means after every shift the list is
 | 
			
		||||
    shortened by the shifted element
 | 
			
		||||
    @pre #include <mrw/string.hpp>
 | 
			
		||||
    @pre #include <mrw/list.hpp>
 | 
			
		||||
*/
 | 
			
		||||
template <typename T, typename A>
 | 
			
		||||
std::list<T, A>& operator>>(std::list<T, A>& l, T& o) throw(std::exception) {
 | 
			
		||||
@@ -72,6 +92,8 @@ std::list<T, A>& operator>>(std::list<T, A>& l, T& o) throw(std::exception) {
 | 
			
		||||
  return l;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								mrw/map.hpp
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								mrw/map.hpp
									
									
									
									
									
								
							@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:35  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/10/07 09:31:30  marc
 | 
			
		||||
    new feature
 | 
			
		||||
 | 
			
		||||
@@ -24,6 +27,12 @@
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup StdExtSTL
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @defgroup StdExtmap map
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief insert a value in a map
 | 
			
		||||
 | 
			
		||||
@@ -66,7 +75,7 @@ std::map<K, T, C, A>& operator<<(std::map<K, T, C, A>& l, const std::pair<K, T>&
 | 
			
		||||
    @note when something is extracted from a map, it is removed
 | 
			
		||||
    from the map, that means after every shift the map is
 | 
			
		||||
    shortened by the shifted element
 | 
			
		||||
    @pre #include <mrw/string.hpp>
 | 
			
		||||
    @pre #include <mrw/map.hpp>
 | 
			
		||||
*/
 | 
			
		||||
template <typename K, typename T, class C, typename A>
 | 
			
		||||
std::map<K, T, C, A>& operator>>(std::map<K, T, C, A>& l, std::pair<K, T>& o)
 | 
			
		||||
@@ -81,6 +90,8 @@ std::map<K, T, C, A>& operator>>(std::map<K, T, C, A>& l, std::pair<K, T>& o)
 | 
			
		||||
  return l;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/10/07 09:31:30  marc
 | 
			
		||||
    new feature
 | 
			
		||||
 | 
			
		||||
@@ -24,6 +27,12 @@
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup StdExtSTL
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup StdExtmultimap multimap
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief insert a value in a multimap
 | 
			
		||||
 | 
			
		||||
@@ -62,7 +71,7 @@ std::multimap<K, T, C, A>& operator<<(std::multimap<K, T, C, A>& l, const std::p
 | 
			
		||||
    @note when something is extracted from a multimap, it is removed
 | 
			
		||||
    from the multimap, that means after every shift the multimap is
 | 
			
		||||
    shortened by the shifted element
 | 
			
		||||
    @pre #include <mrw/string.hpp>
 | 
			
		||||
    @pre #include <mrw/multimap.hpp>
 | 
			
		||||
*/
 | 
			
		||||
template <typename K, typename T, class C, typename A>
 | 
			
		||||
std::multimap<K, T, C, A>& operator>>(std::multimap<K, T, C, A>& l, std::pair<K, T>& o)
 | 
			
		||||
@@ -77,6 +86,8 @@ std::multimap<K, T, C, A>& operator>>(std::multimap<K, T, C, A>& l, std::pair<K,
 | 
			
		||||
  return l;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/10/07 09:31:30  marc
 | 
			
		||||
    new feature
 | 
			
		||||
 | 
			
		||||
@@ -24,6 +27,12 @@
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup StdExtSTL
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @defgroup StdExtmultiset multiset
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief insert a value in a multiset
 | 
			
		||||
 | 
			
		||||
@@ -58,7 +67,7 @@ std::multiset<T, C, A>& operator<<(std::multiset<T, C, A>& l, const T& o) throw(
 | 
			
		||||
    @note when something is extracted from a multiset, it is removed
 | 
			
		||||
    from the multiset, that means after every shift the multiset is
 | 
			
		||||
    shortened by the shifted element
 | 
			
		||||
    @pre #include <mrw/string.hpp>
 | 
			
		||||
    @pre #include <mrw/multiset.hpp>
 | 
			
		||||
*/
 | 
			
		||||
template <typename T, class C, typename A>
 | 
			
		||||
std::multiset<T, C, A>& operator>>(std::multiset<T, C, A>& l, T& o) throw(std::exception) {
 | 
			
		||||
@@ -72,6 +81,8 @@ std::multiset<T, C, A>& operator>>(std::multiset<T, C, A>& l, T& o) throw(std::e
 | 
			
		||||
  return l;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.4  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.3  2004/12/17 16:27:58  marc
 | 
			
		||||
    error in documentation syntax
 | 
			
		||||
 | 
			
		||||
@@ -28,6 +31,9 @@
 | 
			
		||||
namespace mrw {
 | 
			
		||||
 | 
			
		||||
  /** @defgroup regexp Regular Expressions
 | 
			
		||||
   */
 | 
			
		||||
  //@{
 | 
			
		||||
  /** @defgroup regexpregexp Regular Expressions
 | 
			
		||||
 | 
			
		||||
      A simple wrapper around the C POSIX regular expression library
 | 
			
		||||
      with a C++ Interface.
 | 
			
		||||
@@ -141,4 +147,5 @@ namespace mrw {
 | 
			
		||||
  
 | 
			
		||||
  };
 | 
			
		||||
  //@}
 | 
			
		||||
  //@}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								mrw/set.hpp
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								mrw/set.hpp
									
									
									
									
									
								
							@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/10/07 09:31:30  marc
 | 
			
		||||
    new feature
 | 
			
		||||
 | 
			
		||||
@@ -24,6 +27,12 @@
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup StdExtSTL
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @defgroup StdExtset set
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief insert a value in a set
 | 
			
		||||
 | 
			
		||||
@@ -64,7 +73,7 @@ std::set<T, C, A>& operator<<(std::set<T, C, A>& l, const T& o)
 | 
			
		||||
    @note when something is extracted from a set, it is removed
 | 
			
		||||
    from the set, that means after every shift the set is
 | 
			
		||||
    shortened by the shifted element
 | 
			
		||||
    @pre #include <mrw/string.hpp>
 | 
			
		||||
    @pre #include <mrw/set.hpp>
 | 
			
		||||
*/
 | 
			
		||||
template <typename T, class C, typename A>
 | 
			
		||||
std::set<T, C, A>& operator>>(std::set<T, C, A>& l, T& o)
 | 
			
		||||
@@ -79,6 +88,8 @@ std::set<T, C, A>& operator>>(std::set<T, C, A>& l, T& o)
 | 
			
		||||
  return l;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.4  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.3  2004/12/17 16:27:28  marc
 | 
			
		||||
    error in documentation: group forgotten
 | 
			
		||||
 | 
			
		||||
@@ -23,14 +26,35 @@
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
 | 
			
		||||
namespace mrw {
 | 
			
		||||
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
  /** @addtogroup StdExt
 | 
			
		||||
   */
 | 
			
		||||
  //@{
 | 
			
		||||
 | 
			
		||||
  /** @brief get the lower of two values
 | 
			
		||||
  /** @defgroup stdextReadline Read Line
 | 
			
		||||
 | 
			
		||||
      The global functions mrw::getline read exactly one line from a
 | 
			
		||||
      stream, without the need of a buffer. It is therefore guaranteed
 | 
			
		||||
      that a whole line is read, regardless of the length of the
 | 
			
		||||
      line. The result is returned as std::string.
 | 
			
		||||
 | 
			
		||||
      @code
 | 
			
		||||
      // first syntax returns a string:
 | 
			
		||||
      std::string line(mrw::readline(std::cin));
 | 
			
		||||
      // second syntax returns the stream:
 | 
			
		||||
      while (mrw::readline(std::cin, line))
 | 
			
		||||
        std::cout<<"Read: "<<line<<std::endl;
 | 
			
		||||
      @endcode
 | 
			
		||||
  */
 | 
			
		||||
  //@{
 | 
			
		||||
 | 
			
		||||
  /** @brief Deprecated! Do not use any more!
 | 
			
		||||
 | 
			
		||||
      @deprecated Use @c std::min from @c
 | 
			
		||||
                  #include <algorithm> instead!
 | 
			
		||||
 | 
			
		||||
      Get the lower of two values.
 | 
			
		||||
      If both values are equal, @c a is returned.
 | 
			
		||||
@@ -42,10 +66,15 @@ namespace mrw {
 | 
			
		||||
      @pre @c T must support <code>bool operator>(conbst T&, constT&)</code>
 | 
			
		||||
  */
 | 
			
		||||
  template<typename T> const T& min(const T& a, const T& b) {
 | 
			
		||||
    return a > b ? b : a;
 | 
			
		||||
    /// calls @c std::min(a, b);
 | 
			
		||||
    /// @deprecated will be removed in next major release
 | 
			
		||||
    return std::min(a, b);
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /** @brief get the higher of two values
 | 
			
		||||
  /** @brief Deprecated! Do not use any more!
 | 
			
		||||
 | 
			
		||||
      @deprecated Use @c std::max from @c
 | 
			
		||||
                  #include <algorithm> instead!
 | 
			
		||||
 | 
			
		||||
      Get the higher of two values.
 | 
			
		||||
      If both values are equal, @c a is returned.
 | 
			
		||||
@@ -57,12 +86,15 @@ namespace mrw {
 | 
			
		||||
      @pre @c T must support <code>bool operator<(conbst T&, constT&)</code>
 | 
			
		||||
  */
 | 
			
		||||
  template<typename T> const T& max(const T& a, const T& b) {
 | 
			
		||||
    return a < b ? b : a;
 | 
			
		||||
    /// calls @c std::max(a, b);
 | 
			
		||||
    /// @deprecated will be removed in next major release
 | 
			
		||||
    return std::max(a, b);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /** @brief read one line from a stream
 | 
			
		||||
 | 
			
		||||
      Reads one line from a stream, up to delimiter @c d.
 | 
			
		||||
      The delimiter is not appended to the string.
 | 
			
		||||
 | 
			
		||||
      @param is the stream to read from
 | 
			
		||||
      @param d the end of line delimiter
 | 
			
		||||
@@ -74,6 +106,7 @@ namespace mrw {
 | 
			
		||||
  /** @brief read one line from a stream
 | 
			
		||||
 | 
			
		||||
      Reads one line from a stream, up to delimiter @c d.
 | 
			
		||||
      The delimiter is not appended to the string.
 | 
			
		||||
 | 
			
		||||
      @param is the stream to read from
 | 
			
		||||
      @param s the string to place the line in
 | 
			
		||||
@@ -85,4 +118,5 @@ namespace mrw {
 | 
			
		||||
  std::istream& getline(std::istream& is, std::string& s, char d = '\n');
 | 
			
		||||
 | 
			
		||||
  //@}
 | 
			
		||||
  //@}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.3  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.2  2004/12/16 13:09:47  marc
 | 
			
		||||
    inlines forgotten
 | 
			
		||||
 | 
			
		||||
@@ -28,6 +31,33 @@ namespace mrw {
 | 
			
		||||
  
 | 
			
		||||
  /** @defgroup StdExt Extensions for C++ Standard Libraries
 | 
			
		||||
 | 
			
		||||
      @section stdextfeatures Features
 | 
			
		||||
 | 
			
		||||
      @subsection stdextstringfeatures Extensions to std::string
 | 
			
		||||
 | 
			
		||||
       - Shift operator to shift any kind of values into a string
 | 
			
		||||
         without the need for a stingstream.
 | 
			
		||||
       - Addition operators to add, means concatenate, any kind of
 | 
			
		||||
         value (e.g. integer) to a string without the need for a
 | 
			
		||||
         stringstream.
 | 
			
		||||
       - Function mrw::string to convert any type of variable to a
 | 
			
		||||
         string without the need for a stringstream.
 | 
			
		||||
       - Function mrw::to<> to convert a string to any type of
 | 
			
		||||
         variable without the need for a stringstream.
 | 
			
		||||
 | 
			
		||||
      @subsection stdextstlfeatures Extensions to STL containers
 | 
			
		||||
 | 
			
		||||
       - Shift operator to shift elements from and to all STL
 | 
			
		||||
         containers.
 | 
			
		||||
 | 
			
		||||
      @subsection stdextstreams Extensions for stream handling
 | 
			
		||||
 | 
			
		||||
       - Function mrw::getline to read a whole line from a stream (file)
 | 
			
		||||
         without the need of a buffer and without having to check
 | 
			
		||||
         whether the buffer was large enough.
 | 
			
		||||
 | 
			
		||||
      @section stdextmotivation Motivation
 | 
			
		||||
    
 | 
			
		||||
      There are some feature I am often missing in standard C++. They
 | 
			
		||||
      are relatively easy to obtain, but they could be even simpler. I
 | 
			
		||||
      am mainly a convinced C++ programmer, because I love
 | 
			
		||||
@@ -86,11 +116,36 @@ namespace mrw {
 | 
			
		||||
      operators. If you don't want this, just don't include any of
 | 
			
		||||
      these include files files. There's no impact from this module,
 | 
			
		||||
      if you don't include a header, since all code is inline.
 | 
			
		||||
  */
 | 
			
		||||
  //@{
 | 
			
		||||
  /** @defgroup stdextstring String extensions
 | 
			
		||||
 | 
			
		||||
      @warning This code is still experimental and subject to frequent
 | 
			
		||||
      changes! Do not rely your projects on it yet!
 | 
			
		||||
 | 
			
		||||
      @since 1.0.0
 | 
			
		||||
      The string extensions give you a lot of new powerful operations:
 | 
			
		||||
       - convert anything to string:
 | 
			
		||||
         @code
 | 
			
		||||
         std::string s = mrw::string(15);
 | 
			
		||||
         @endcode
 | 
			
		||||
       - convert a string to something else:
 | 
			
		||||
         @code
 | 
			
		||||
         double d = mrw::to<double>("3.1415926535898");
 | 
			
		||||
         @endcode
 | 
			
		||||
       - shift values into a string:
 | 
			
		||||
         @code
 | 
			
		||||
         std::string s;
 | 
			
		||||
         s<<"length is: "<<i<<"mm";
 | 
			
		||||
         @endcode
 | 
			
		||||
       - read values from a string:
 | 
			
		||||
         @code
 | 
			
		||||
         std::string s("1 2 4 8");
 | 
			
		||||
         int i1, i2, i3, i4;
 | 
			
		||||
         s>>i1>>i2>>i3>>i4;
 | 
			
		||||
         @endcode
 | 
			
		||||
       - add all kind of integer and floating point numbers to a string:
 | 
			
		||||
         @code
 | 
			
		||||
         std::string s("hello");
 | 
			
		||||
         s += 4;
 | 
			
		||||
         s = 13.5 + s + 24.8;
 | 
			
		||||
         @endcode
 | 
			
		||||
  */
 | 
			
		||||
  //@{
 | 
			
		||||
 | 
			
		||||
@@ -131,12 +186,16 @@ namespace mrw {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //@}
 | 
			
		||||
  //@}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup stdextstring
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief append any value to a string
 | 
			
		||||
 | 
			
		||||
@@ -469,6 +528,7 @@ inline std::string& operator+=(std::string& s, signed long o)
 | 
			
		||||
  return s+=mrw::string(o);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/12/17 16:26:58  marc
 | 
			
		||||
    initial version
 | 
			
		||||
 | 
			
		||||
@@ -21,6 +24,9 @@
 | 
			
		||||
namespace mrw {
 | 
			
		||||
 | 
			
		||||
  /** @addtogroup regexp
 | 
			
		||||
   */
 | 
			
		||||
  //@{
 | 
			
		||||
  /** @defgroup regexptokenizer Tokenizer
 | 
			
		||||
 | 
			
		||||
      There is a Tokenizer which splits strings according to a list of
 | 
			
		||||
      delimiters and allows to iterate over the individual tokens:
 | 
			
		||||
@@ -167,5 +173,6 @@ namespace mrw {
 | 
			
		||||
    bool _greedy;
 | 
			
		||||
  };
 | 
			
		||||
  //@}
 | 
			
		||||
  //@}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,9 @@
 | 
			
		||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
			
		||||
 | 
			
		||||
    $Log$
 | 
			
		||||
    Revision 1.2  2004/12/20 07:40:36  marc
 | 
			
		||||
    documentation improved, new grouping
 | 
			
		||||
 | 
			
		||||
    Revision 1.1  2004/10/07 09:31:30  marc
 | 
			
		||||
    new feature
 | 
			
		||||
 | 
			
		||||
@@ -24,6 +27,12 @@
 | 
			
		||||
/** @addtogroup StdExt
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @addtogroup StdExtSTL
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
/** @defgroup StdExtvector vector
 | 
			
		||||
 */
 | 
			
		||||
//@{
 | 
			
		||||
 | 
			
		||||
/** @brief push a value to a vector
 | 
			
		||||
 | 
			
		||||
@@ -58,7 +67,7 @@ std::vector<T, A>& operator<<(std::vector<T, A>& l, const T& o) throw(std::bad_e
 | 
			
		||||
    @note when something is extracted from a vector, it is removed
 | 
			
		||||
    from the vector, that means after every shift the vector is
 | 
			
		||||
    shortened by the shifted element
 | 
			
		||||
    @pre #include <mrw/string.hpp>
 | 
			
		||||
    @pre #include <mrw/vector.hpp>
 | 
			
		||||
*/
 | 
			
		||||
template <typename T, typename A>
 | 
			
		||||
std::vector<T, A>& operator>>(std::vector<T, A>& l, T& o) throw(std::exception) {
 | 
			
		||||
@@ -72,6 +81,8 @@ std::vector<T, A>& operator>>(std::vector<T, A>& l, T& o) throw(std::exception)
 | 
			
		||||
  return l;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
//@}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user