missing #ifndef
new functions ifelse
This commit is contained in:
		@@ -9,6 +9,10 @@
 | 
				
			|||||||
    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
					    @license LGPL, see file <a href="license.html">COPYING</a>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $Log$
 | 
					    $Log$
 | 
				
			||||||
 | 
					    Revision 1.6  2005/02/18 15:47:23  marc
 | 
				
			||||||
 | 
					    missing #ifndef
 | 
				
			||||||
 | 
					    new functions ifelse
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Revision 1.5  2005/01/28 07:52:33  marc
 | 
					    Revision 1.5  2005/01/28 07:52:33  marc
 | 
				
			||||||
    typo in doc
 | 
					    typo in doc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -27,6 +31,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __MRW__STDEXT_HPP__
 | 
				
			||||||
 | 
					#define __MRW__STDEXT_HPP__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
#include <algorithm>
 | 
					#include <algorithm>
 | 
				
			||||||
@@ -37,7 +44,13 @@ namespace mrw {
 | 
				
			|||||||
   */
 | 
					   */
 | 
				
			||||||
  //@{
 | 
					  //@{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** @defgroup stdextReadline Read Line
 | 
					  /** @defgroup stdextFunction Useful Global Functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					       - @ref getline read exactly one line from a stream
 | 
				
			||||||
 | 
					       - @ref ifelse implements a dual <code>?:</code> operator, like:
 | 
				
			||||||
 | 
					              <code>a ? a : b</code>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      @section stdextReadline Read Line
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      The global functions mrw::getline read exactly one line from a
 | 
					      The global functions mrw::getline read exactly one line from a
 | 
				
			||||||
      stream, without the need of a buffer. It is therefore guaranteed
 | 
					      stream, without the need of a buffer. It is therefore guaranteed
 | 
				
			||||||
@@ -94,6 +107,36 @@ namespace mrw {
 | 
				
			|||||||
    return std::max(a, b);
 | 
					    return std::max(a, b);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /** @brief Dual <code>?:</code> operation:
 | 
				
			||||||
 | 
					             <code>a ? a : b</code>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      If the first parameter is not @c 0, then it is returned,
 | 
				
			||||||
 | 
					      otherwise the second parameter is returned. It is equivalent to
 | 
				
			||||||
 | 
					      the construct: <code>a ? a : b</code>, but without
 | 
				
			||||||
 | 
					      the side effect of duplicated evaluation of parameter
 | 
				
			||||||
 | 
					      <code>a</code>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      Older gcc compiler implemented the non standard extension of
 | 
				
			||||||
 | 
					      <code>a?:b</code>, which was exactly the same.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      @param a criteria that is checked and returned if not @c 0
 | 
				
			||||||
 | 
					      @param b alternative value to be returned if @c a is @c 0
 | 
				
			||||||
 | 
					      @return <code>a ? a : b</code>
 | 
				
			||||||
 | 
					      @pre #include <mrw/stdext.hpp>
 | 
				
			||||||
 | 
					      @pre @c T must be convertible to @c bool
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  template<typename T> const T& ifelse(const T& a, const T& b) {
 | 
				
			||||||
 | 
					    return a?a:b;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /** @brief Dual <code>?:</code> operation:
 | 
				
			||||||
 | 
					             <code>a ? a : b</code>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      @copydoc ifelse(const T& a, const T& b) */
 | 
				
			||||||
 | 
					  template<typename T> const T* ifelse(const T* a, const T* b) {
 | 
				
			||||||
 | 
					    return a?a:b;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** @brief read one line from a stream
 | 
					  /** @brief read one line from a stream
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Reads one line from a stream, up to delimiter @c d.
 | 
					      Reads one line from a stream, up to delimiter @c d.
 | 
				
			||||||
@@ -123,3 +166,5 @@ namespace mrw {
 | 
				
			|||||||
  //@}
 | 
					  //@}
 | 
				
			||||||
  //@}
 | 
					  //@}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user