$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r70636 - sandbox/local/libs/local/example
From: lorcaminiti_at_[hidden]
Date: 2011-03-27 11:05:34
Author: lcaminiti
Date: 2011-03-27 11:05:33 EDT (Sun, 27 Mar 2011)
New Revision: 70636
URL: http://svn.boost.org/trac/boost/changeset/70636
Log:
Added compiling examples for Alternatives docs.
Added:
   sandbox/local/libs/local/example/add_boost_lambda.cpp   (contents, props changed)
   sandbox/local/libs/local/example/add_boost_local.cpp   (contents, props changed)
   sandbox/local/libs/local/example/add_boost_local_va.cpp   (contents, props changed)
   sandbox/local/libs/local/example/add_boost_phoenix.cpp   (contents, props changed)
   sandbox/local/libs/local/example/add_cpp0x_lambda.cpp   (contents, props changed)
   sandbox/local/libs/local/example/add_local_class.cpp   (contents, props changed)
Added: sandbox/local/libs/local/example/add_boost_lambda.cpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/example/add_boost_lambda.cpp	2011-03-27 11:05:33 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,33 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0 (see accompanying file LICENSE_1_0.txt or a
+// copy at http://www.boost.org/LICENSE_1_0.txt).
+
+//[ add_boost_lambda_cpp
+#include <boost/lambda/lambda.hpp>
+#include <iostream>
+#include <vector>
+#include <algorithm>
+
+int main() {
+    double sum = 0.0;
+    int factor = 10;
+
+    std::vector<double> v(3);
+    v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
+
+    // Passed as template parameter and also defined at expression level.
+    std::for_each(v.begin(), v.end(), (
+        // Unfortunately, cannot make `factor` constant.
+        // Unfortunately, body cannot use normal C++ syntax.
+        sum += factor * boost::lambda::_1,
+        boost::lambda::var(std::cout) << "Summed: " <<
+                boost::lambda::var(sum) << "\n"
+    ));
+
+    std::cout << sum << std::endl;
+    return 0;
+}
+//]
+
Added: sandbox/local/libs/local/example/add_boost_local.cpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/example/add_boost_local.cpp	2011-03-27 11:05:33 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,37 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0 (see accompanying file LICENSE_1_0.txt or a
+// copy at http://www.boost.org/LICENSE_1_0.txt).
+
+//[ add_boost_local_cpp
+#include <boost/local/function.hpp>
+#include <iostream>
+#include <vector>
+#include <algorithm>
+
+int main() {
+    double sum = 0.0;
+    int factor = 10;
+
+    std::vector<double> v(3);
+    v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
+
+    // Unfortunately, cannot be defined at expression level.
+    void BOOST_LOCAL_FUNCTION_PARAMS( (double num)
+            // Variable `factor` bound as constant.
+            (bind& sum) (const bind& factor) ) {
+        // Body uses normal C++ syntax.
+        sum += factor * num;
+        std::cout << "Summed: " << sum << std::endl;
+    } BOOST_LOCAL_FUNCTION_NAME(add)
+    // Local function `add` passed as template parameter.
+    std::for_each(v.begin(), v.end(), add);
+
+    std::cout << sum << std::endl;
+    return 0;
+}
+//]
+
+#endif
+
Added: sandbox/local/libs/local/example/add_boost_local_va.cpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/example/add_boost_local_va.cpp	2011-03-27 11:05:33 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,46 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0 (see accompanying file LICENSE_1_0.txt or a
+// copy at http://www.boost.org/LICENSE_1_0.txt).
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_VARIADIC_MACROS) || defined(BOOST_LOCAL_CONFIG_COMPLIANT)
+#include <iostream>
+int main() {
+    std::cerr << "Error: This program requires variadic macros" << std::endl;
+    return 0;
+}
+#else
+
+//[ add_boost_local_va_cpp
+#include <boost/local/function.hpp>
+#include <iostream>
+#include <vector>
+#include <algorithm>
+
+int main() {
+    double sum = 0.0;
+    int factor = 10;
+
+    std::vector<double> v(3);
+    v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
+
+    // Unfortunately, cannot be defined at expression level.
+    void BOOST_LOCAL_FUNCTION_PARAMS(double num,
+            // Variable `factor` bound as constant.
+            bind& sum, const bind& factor) {
+        // Body uses normal C++ syntax.
+        sum += factor * num;
+        std::cout << "Summed: " << sum << std::endl;
+    } BOOST_LOCAL_FUNCTION_NAME(add)
+    // Local function `add` passed as template parameter.
+    std::for_each(v.begin(), v.end(), add);
+
+    std::cout << sum << std::endl;
+    return 0;
+}
+//]
+
+#endif
+
Added: sandbox/local/libs/local/example/add_boost_phoenix.cpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/example/add_boost_phoenix.cpp	2011-03-27 11:05:33 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,33 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0 (see accompanying file LICENSE_1_0.txt or a
+// copy at http://www.boost.org/LICENSE_1_0.txt).
+
+//[ add_boost_phoenix_cpp
+#include <boost/spirit/include/phoenix.hpp>
+#include <iostream>
+#include <vector>
+#include <algorithm>
+
+int main() {
+    double sum = 0.0;
+    int factor = 10;
+
+    std::vector<double> v(3);
+    v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
+
+    // Passed as template parameter and also defined at expression level.
+    std::for_each(v.begin(), v.end(), (
+        // Unfortunately, cannot make `factor` constant.
+        // Unfortunately, body cannot use normal C++ syntax.
+        boost::phoenix::ref(sum) += factor * boost::phoenix::arg_names::_1,
+        std::cout << boost::phoenix::val("Summed: ") <<
+                boost::phoenix::ref(sum) << "\n"
+    ));
+
+    std::cout << sum << std::endl;
+    return 0;
+}
+//]
+
Added: sandbox/local/libs/local/example/add_cpp0x_lambda.cpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/example/add_cpp0x_lambda.cpp	2011-03-27 11:05:33 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,42 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0 (see accompanying file LICENSE_1_0.txt or a
+// copy at http://www.boost.org/LICENSE_1_0.txt).
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_LAMBDAS
+#include <iostream>
+int main() {
+    std::cerr << "Error: This program requires C++0x lambdas" << std::endl;
+    return 0;
+}
+#else
+
+//[ add_cpp0x_lambda_cpp
+#include <iostream>
+#include <vector>
+#include <algorithm>
+
+int main() {
+    double sum = 0.0;
+    int factor = 10;
+
+    std::vector<double> v(3);
+    v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
+
+    // Passed as template parameter and also defined at expression level.
+    std::for_each(v.begin(), v.end(), [&sum, &factor](double num) {
+        // Unfortunately, cannot make `factor` constant.
+        // Body uses normal C++ syntax.
+        sum += factor * num;
+        std::cout << "Summed: " << sum << std::endl;
+    });
+
+    std::cout << sum << std::endl;
+    return 0;
+}
+//]
+
+#endif
+
Added: sandbox/local/libs/local/example/add_local_class.cpp
==============================================================================
--- (empty file)
+++ sandbox/local/libs/local/example/add_local_class.cpp	2011-03-27 11:05:33 EDT (Sun, 27 Mar 2011)
@@ -0,0 +1,39 @@
+
+// Copyright (C) 2009-2011 Lorenzo Caminiti
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0 (see accompanying file LICENSE_1_0.txt or a
+// copy at http://www.boost.org/LICENSE_1_0.txt).
+
+//[ add_local_class_cpp
+#include <iostream>
+#include <vector>
+#include <algorithm>
+
+int main() {
+    double sum = 0.0;
+    int factor = 10;
+
+    std::vector<double> v(3);
+    v[0] = 1.0; v[1] = 2.0; v[2] = 3.0;
+
+    struct local {
+        static void add(double num,
+                // Unfortunately, cannot bind so repeat local variable types.
+                double& sum, const int& factor) {
+            // Body uses normal C++ syntax.
+            sum += factor * num;
+            std::cout << "Summed: " << sum << std::endl;
+        }
+    };
+
+    // Unfortunately, cannot pass as template parameter to `std::for_each`.
+    for (size_t i = 0; i < v.size(); ++i) {
+        // Unfortunately, explicitly pass variables `sum` and `factor`.
+        local::add(v[i], sum, factor);
+    }
+
+    std::cout << sum << std::endl;
+    return 0;
+}
+//]
+