From e5e97d10b66fa6e8dcb3ee12303d6a2dd8cb559d Mon Sep 17 00:00:00 2001 From: rbock Date: Mon, 18 Aug 2014 21:10:58 +0200 Subject: [PATCH] Added alias operators to wrapped value operands --- include/sqlpp11/basic_expression_operators.h | 2 +- include/sqlpp11/wrap_operand.h | 17 ++++----- include/sqlpp11/wrap_operand_fwd.h | 40 ++++++++++++++++++++ tests/SelectTest.cpp | 2 + 4 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 include/sqlpp11/wrap_operand_fwd.h diff --git a/include/sqlpp11/basic_expression_operators.h b/include/sqlpp11/basic_expression_operators.h index 710ea844..fc54a876 100644 --- a/include/sqlpp11/basic_expression_operators.h +++ b/include/sqlpp11/basic_expression_operators.h @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include namespace sqlpp diff --git a/include/sqlpp11/wrap_operand.h b/include/sqlpp11/wrap_operand.h index ffab6e94..f4b28022 100644 --- a/include/sqlpp11/wrap_operand.h +++ b/include/sqlpp11/wrap_operand.h @@ -28,8 +28,10 @@ #define SQLPP_DETAIL_WRAP_OPERAND_H #include +#include #include #include +#include namespace sqlpp { @@ -38,7 +40,7 @@ namespace sqlpp struct floating_point; struct text; - struct boolean_operand + struct boolean_operand: public alias_operators { using _traits = make_traits<::sqlpp::boolean, ::sqlpp::tag::is_expression, ::sqlpp::tag::is_wrapped_value>; using _recursive_traits = make_recursive_traits<>; @@ -76,7 +78,7 @@ namespace sqlpp } }; - struct integral_operand + struct integral_operand: public alias_operators { using _traits = make_traits<::sqlpp::integral, ::sqlpp::tag::is_expression, ::sqlpp::tag::is_wrapped_value>; using _recursive_traits = make_recursive_traits<>; @@ -115,7 +117,7 @@ namespace sqlpp }; - struct floating_point_operand + struct floating_point_operand: public alias_operators { using _traits = make_traits<::sqlpp::floating_point, ::sqlpp::tag::is_expression, ::sqlpp::tag::is_wrapped_value>; using _recursive_traits = make_recursive_traits<>; @@ -153,7 +155,7 @@ namespace sqlpp } }; - struct text_operand + struct text_operand: public alias_operators { using _traits = make_traits<::sqlpp::text, ::sqlpp::tag::is_expression, ::sqlpp::tag::is_wrapped_value>; using _recursive_traits = make_recursive_traits<>; @@ -191,7 +193,7 @@ namespace sqlpp } }; - template + template struct wrap_operand { using type = T; @@ -221,11 +223,6 @@ namespace sqlpp using type = text_operand; }; - // FIXME: Need to allow std::ref arguments - - template - using wrap_operand_t = typename wrap_operand::type; - } #endif diff --git a/include/sqlpp11/wrap_operand_fwd.h b/include/sqlpp11/wrap_operand_fwd.h new file mode 100644 index 00000000..f7f60def --- /dev/null +++ b/include/sqlpp11/wrap_operand_fwd.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2013-2014, Roland Bock + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SQLPP_DETAIL_WRAP_OPERAND_FWD_H +#define SQLPP_DETAIL_WRAP_OPERAND_FWD_H + +namespace sqlpp +{ + template + struct wrap_operand; + + template + using wrap_operand_t = typename wrap_operand::type; + +} + +#endif diff --git a/tests/SelectTest.cpp b/tests/SelectTest.cpp index 1e97562c..9fd040af 100644 --- a/tests/SelectTest.cpp +++ b/tests/SelectTest.cpp @@ -92,5 +92,7 @@ int main() printer.reset(); std::cerr << serialize(stat, printer).str() << std::endl; + select(sqlpp::value(7).as(t.alpha)); + return 0; }