diff --git a/compose.hpp b/compose.hpp deleted file mode 100644 index 5401fa2..0000000 --- a/compose.hpp +++ /dev/null @@ -1,442 +0,0 @@ -/* The following code example is taken from the book - * "The C++ Standard Library - A Tutorial and Reference" - * by Nicolai M. Josuttis, Addison-Wesley, 1999 - * - * (C) Copyright Nicolai M. Josuttis 1999. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ -/* supplementing compose function objects - * Son Dez 26 22:11:12 MET 1999 - */ -#ifndef BOOST_COMPOSE_HPP -#define BOOST_COMPOSE_HPP - -#include - -namespace boost { - -/********************************************************** - * type nullary_function - * - as supplement to unary_function and binary_function - **********************************************************/ -template -struct nullary_function { - typedef Result result_type; -}; - -/********************************************************** - * ptr_fun for functions with no argument - **********************************************************/ -template -class pointer_to_nullary_function : public nullary_function -{ - protected: - Result (*ptr)(); - public: - pointer_to_nullary_function() { - } - explicit pointer_to_nullary_function(Result (*x)()) : ptr(x) { - } - Result operator()() const { - return ptr(); - } -}; - -template -inline pointer_to_nullary_function ptr_fun(Result (*x)()) -{ - return pointer_to_nullary_function(x); -} - -/*********** compose_f_gx_t and compose_f_gx **********************/ - -/* class for the compose_f_gx adapter - */ -template -class compose_f_gx_t - : public std::unary_function -{ - private: - OP1 op1; // process: op1(op2(x)) - OP2 op2; - public: - // constructor - compose_f_gx_t(const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x) const { - return op1(op2(x)); - } -}; - -/* convenience functions for the compose_f_gx adapter - */ -template -inline compose_f_gx_t -compose_f_gx (const OP1& o1, const OP2& o2) { - return compose_f_gx_t(o1,o2); -} - -/*********** compose_f_gx_hx_t and compose_f_gx_hx **********************/ - -/* class for the compose_f_gx_hx adapter - */ -template -class compose_f_gx_hx_t - : public std::unary_function -{ - private: - OP1 op1; // process: op1(op2(x),op3(x)) - OP2 op2; - OP3 op3; - public: - // constructor - compose_f_gx_hx_t (const OP1& o1, const OP2& o2, const OP3& o3) - : op1(o1), op2(o2), op3(o3) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x) const { - return op1(op2(x),op3(x)); - } -}; - -/* convenience functions for the compose_f_gx_hx adapter - */ -template -inline compose_f_gx_hx_t -compose_f_gx_hx (const OP1& o1, const OP2& o2, const OP3& o3) { - return compose_f_gx_hx_t(o1,o2,o3); -} - -/*********** compose_f_gxy_t and compose_f_gxy **********************/ - -/* class for the compose_f_gxy adapter - */ -template -class compose_f_gxy_t - : public std::binary_function -{ - private: - OP1 op1; // process: op1(op2(x,y)) - OP2 op2; - public: - // constructor - compose_f_gxy_t (const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::first_argument_type& x, - const typename OP2::second_argument_type& y) const { - return op1(op2(x,y)); - } -}; - -/* convenience function for the compose_f_gxy adapter - */ -template -inline compose_f_gxy_t -compose_f_gxy (const OP1& o1, const OP2& o2) { - return compose_f_gxy_t(o1,o2); -} - -/*********** compose_f_gx_hy_t and compose_f_gx_hy **********************/ - -/* class for the compose_f_gx_hy adapter - */ -template -class compose_f_gx_hy_t - : public std::binary_function -{ - private: - OP1 op1; // process: op1(op2(x),op3(y)) - OP2 op2; - OP3 op3; - public: - // constructor - compose_f_gx_hy_t (const OP1& o1, const OP2& o2, const OP3& o3) - : op1(o1), op2(o2), op3(o3) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x, - const typename OP3::argument_type& y) const { - return op1(op2(x),op3(y)); - } -}; - -/* convenience function for the compose_f_gx_hy adapter - */ -template -inline compose_f_gx_hy_t -compose_f_gx_hy (const OP1& o1, const OP2& o2, const OP3& o3) { - return compose_f_gx_hy_t(o1,o2,o3); -} - -/*********** compose_f_g_t and compose_f_g **********************/ - -/* class for the compose_f_g adapter - */ -template -class compose_f_g_t - : public boost::nullary_function -{ - private: - OP1 op1; // process: op1(op2()) - OP2 op2; - public: - // constructor - compose_f_g_t(const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()() const { - return op1(op2()); - } -}; - -/* convenience functions for the compose_f_g adapter - */ -template -inline compose_f_g_t -compose_f_g (const OP1& o1, const OP2& o2) { - return compose_f_g_t(o1,o2); -} - -} /* namespace boost */ - -#endif /*BOOST_COMPOSE_HPP*/ -/* supplementing compose function objects - * Son Dez 26 22:14:55 MET 1999 - */ -#ifndef BOOST_COMPOSE_HPP -#define BOOST_COMPOSE_HPP - -#include - -namespace boost { - -/********************************************************** - * type nullary_function - * - as supplement to unary_function and binary_function - **********************************************************/ -template -struct nullary_function { - typedef Result result_type; -}; - -/********************************************************** - * ptr_fun for functions with no argument - **********************************************************/ -template -class pointer_to_nullary_function : public nullary_function -{ - protected: - Result (*ptr)(); - public: - pointer_to_nullary_function() { - } - explicit pointer_to_nullary_function(Result (*x)()) : ptr(x) { - } - Result operator()() const { - return ptr(); - } -}; - -template -inline pointer_to_nullary_function ptr_fun(Result (*x)()) -{ - return pointer_to_nullary_function(x); -} - -/*********** compose_f_gx_t and compose_f_gx **********************/ - -/* class for the compose_f_gx adapter - */ -template -class compose_f_gx_t - : public std::unary_function -{ - private: - OP1 op1; // process: op1(op2(x)) - OP2 op2; - public: - // constructor - compose_f_gx_t(const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x) const { - return op1(op2(x)); - } -}; - -/* convenience functions for the compose_f_gx adapter - */ -template -inline compose_f_gx_t -compose_f_gx (const OP1& o1, const OP2& o2) { - return compose_f_gx_t(o1,o2); -} - -/*********** compose_f_gx_hx_t and compose_f_gx_hx **********************/ - -/* class for the compose_f_gx_hx adapter - */ -template -class compose_f_gx_hx_t - : public std::unary_function -{ - private: - OP1 op1; // process: op1(op2(x),op3(x)) - OP2 op2; - OP3 op3; - public: - // constructor - compose_f_gx_hx_t (const OP1& o1, const OP2& o2, const OP3& o3) - : op1(o1), op2(o2), op3(o3) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x) const { - return op1(op2(x),op3(x)); - } -}; - -/* convenience functions for the compose_f_gx_hx adapter - */ -template -inline compose_f_gx_hx_t -compose_f_gx_hx (const OP1& o1, const OP2& o2, const OP3& o3) { - return compose_f_gx_hx_t(o1,o2,o3); -} - -/*********** compose_f_gxy_t and compose_f_gxy **********************/ - -/* class for the compose_f_gxy adapter - */ -template -class compose_f_gxy_t - : public std::binary_function -{ - private: - OP1 op1; // process: op1(op2(x,y)) - OP2 op2; - public: - // constructor - compose_f_gxy_t (const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::first_argument_type& x, - const typename OP2::second_argument_type& y) const { - return op1(op2(x,y)); - } -}; - -/* convenience function for the compose_f_gxy adapter - */ -template -inline compose_f_gxy_t -compose_f_gxy (const OP1& o1, const OP2& o2) { - return compose_f_gxy_t(o1,o2); -} - -/*********** compose_f_gx_hy_t and compose_f_gx_hy **********************/ - -/* class for the compose_f_gx_hy adapter - */ -template -class compose_f_gx_hy_t - : public std::binary_function -{ - private: - OP1 op1; // process: op1(op2(x),op3(y)) - OP2 op2; - OP3 op3; - public: - // constructor - compose_f_gx_hy_t (const OP1& o1, const OP2& o2, const OP3& o3) - : op1(o1), op2(o2), op3(o3) { - } - - // function call - typename OP1::result_type - operator()(const typename OP2::argument_type& x, - const typename OP3::argument_type& y) const { - return op1(op2(x),op3(y)); - } -}; - -/* convenience function for the compose_f_gx_hy adapter - */ -template -inline compose_f_gx_hy_t -compose_f_gx_hy (const OP1& o1, const OP2& o2, const OP3& o3) { - return compose_f_gx_hy_t(o1,o2,o3); -} - -/*********** compose_f_g_t and compose_f_g **********************/ - -/* class for the compose_f_g adapter - */ -template -class compose_f_g_t - : public boost::nullary_function -{ - private: - OP1 op1; // process: op1(op2()) - OP2 op2; - public: - // constructor - compose_f_g_t(const OP1& o1, const OP2& o2) - : op1(o1), op2(o2) { - } - - // function call - typename OP1::result_type - operator()() const { - return op1(op2()); - } -}; - -/* convenience functions for the compose_f_g adapter - */ -template -inline compose_f_g_t -compose_f_g (const OP1& o1, const OP2& o2) { - return compose_f_g_t(o1,o2); -} - -} /* namespace boost */ - -#endif /*BOOST_COMPOSE_HPP*/ diff --git a/compose1.cpp b/compose1.cpp deleted file mode 100644 index f140bd5..0000000 --- a/compose1.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* The following code example is taken from the book - * "The C++ Standard Library - A Tutorial and Reference" - * by Nicolai M. Josuttis, Addison-Wesley, 1999 - * - * (C) Copyright Nicolai M. Josuttis 1999. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ -#include -#include -#include -#include -#include -#include "print.hpp" -#include "compose.hpp" -using namespace std; -using namespace boost; - -int main() -{ - vector coll; - - // insert elements from 1 to 9 - for (int i=1; i<=9; ++i) { - coll.push_back(i); - } - PRINT_ELEMENTS(coll); - - // for each element add 10 and multiply by 5 - transform (coll.begin(),coll.end(), - ostream_iterator(cout," "), - compose_f_gx(bind2nd(multiplies(),5), - bind2nd(plus(),10))); - cout << endl; -} diff --git a/compose2.cpp b/compose2.cpp deleted file mode 100644 index 2320ae8..0000000 --- a/compose2.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* The following code example is taken from the book - * "The C++ Standard Library - A Tutorial and Reference" - * by Nicolai M. Josuttis, Addison-Wesley, 1999 - * - * (C) Copyright Nicolai M. Josuttis 1999. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ -#include -#include -#include -#include -#include "print.hpp" -#include "compose.hpp" -using namespace std; -using namespace boost; - -int main() -{ - vector coll; - - // insert elements from 1 to 9 - for (int i=1; i<=9; ++i) { - coll.push_back(i); - } - PRINT_ELEMENTS(coll); - - // remove all elements that are greater than four and less than seven - // - retain new end - vector::iterator pos; - pos = remove_if (coll.begin(),coll.end(), - compose_f_gx_hx(logical_and(), - bind2nd(greater(),4), - bind2nd(less(),7))); - - // remove ``removed'' elements in coll - coll.erase(pos,coll.end()); - - PRINT_ELEMENTS(coll); -} diff --git a/compose3.cpp b/compose3.cpp deleted file mode 100644 index 20139d0..0000000 --- a/compose3.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* The following code example is taken from the book - * "The C++ Standard Library - A Tutorial and Reference" - * by Nicolai M. Josuttis, Addison-Wesley, 1999 - * - * (C) Copyright Nicolai M. Josuttis 1999. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ -#include -#include -#include -#include -#include -#include "compose.hpp" -using namespace std; -using namespace boost; - -int main() -{ - string s("Internationalization"); - string sub("Nation"); - - // search substring case insensitive - string::iterator pos; - pos = search (s.begin(),s.end(), // string to search in - sub.begin(),sub.end(), // substring to search - compose_f_gx_hy(equal_to(), // compar. criterion - ptr_fun(::toupper), - ptr_fun(::toupper))); - - if (pos != s.end()) { - cout << "\"" << sub << "\" is part of \"" << s << "\"" - << endl; - } -} diff --git a/compose4.cpp b/compose4.cpp deleted file mode 100644 index 56da059..0000000 --- a/compose4.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* The following code example is taken from the book - * "The C++ Standard Library - A Tutorial and Reference" - * by Nicolai M. Josuttis, Addison-Wesley, 1999 - * - * (C) Copyright Nicolai M. Josuttis 1999. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ -#include -#include -#include -#include -#include "print.hpp" -#include "compose.hpp" -using namespace std; -using namespace boost; - - -int main() -{ - list coll; - - // insert five random numbers - generate_n (back_inserter(coll), // beginning of destination range - 5, // count - rand); // new value generator - PRINT_ELEMENTS(coll); - - // overwrite with five new random numbers - // in the range between 0 (including) and 10 (excluding) - generate (coll.begin(), coll.end(), // destination range - compose_f_g(bind2nd(modulus(),10), - ptr_fun(rand))); - PRINT_ELEMENTS(coll); -} diff --git a/print.hpp b/print.hpp deleted file mode 100644 index 4325f47..0000000 --- a/print.hpp +++ /dev/null @@ -1,28 +0,0 @@ -/* The following code example is taken from the book - * "The C++ Standard Library - A Tutorial and Reference" - * by Nicolai M. Josuttis, Addison-Wesley, 1999 - * - * (C) Copyright Nicolai M. Josuttis 1999. - * Permission to copy, use, modify, sell and distribute this software - * is granted provided this copyright notice appears in all copies. - * This software is provided "as is" without express or implied - * warranty, and with no claim as to its suitability for any purpose. - */ -#include - -/* PRINT_ELEMENTS() - * - prints optional C-string optcstr followed by - * - all elements of the collection coll - * - separated by spaces - */ -template -inline void PRINT_ELEMENTS (const T& coll, const char* optcstr="") -{ - typename T::const_iterator pos; - - std::cout << optcstr; - for (pos=coll.begin(); pos!=coll.end(); ++pos) { - std::cout << *pos << ' '; - } - std::cout << std::endl; -}