From d3debe4229a89f73536a49ad44c53e757569e5f1 Mon Sep 17 00:00:00 2001 From: rbock Date: Sat, 23 Jan 2016 22:04:55 +0100 Subject: [PATCH] Fixed constructor of result_row. This accepted just any(!) argument. --- include/sqlpp11/dynamic_select_column_list.h | 75 ++++++++++++++++++++ include/sqlpp11/result_row.h | 5 +- include/sqlpp11/select_column_list.h | 39 +--------- 3 files changed, 78 insertions(+), 41 deletions(-) create mode 100644 include/sqlpp11/dynamic_select_column_list.h diff --git a/include/sqlpp11/dynamic_select_column_list.h b/include/sqlpp11/dynamic_select_column_list.h new file mode 100644 index 00000000..daf995f9 --- /dev/null +++ b/include/sqlpp11/dynamic_select_column_list.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2013-2015, 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_SELECT_COLUMN_LIST_FWD_H +#define SQLPP_SELECT_COLUMN_LIST_FWD_H + +#include +#include +#include + +namespace sqlpp +{ + template + struct dynamic_select_column_list + { + using _names_t = std::vector; + std::vector> _dynamic_columns; + _names_t _dynamic_expression_names; + + template + void emplace_back(Expr expr) + { + _dynamic_expression_names.push_back(name_of::char_ptr()); + _dynamic_columns.emplace_back(expr); + } + + bool empty() const + { + return _dynamic_columns.empty(); + } + }; + + template <> + struct dynamic_select_column_list + { + struct _names_t + { + static constexpr size_t size() + { + return 0; + } + }; + _names_t _dynamic_expression_names; + + static constexpr bool empty() + { + return true; + } + }; +} + +#endif diff --git a/include/sqlpp11/result_row.h b/include/sqlpp11/result_row.h index ba032005..c583280d 100644 --- a/include/sqlpp11/result_row.h +++ b/include/sqlpp11/result_row.h @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -151,9 +152,7 @@ namespace sqlpp { } - template - result_row_t(const DynamicNames&) - : _impl(), _is_valid(false) + result_row_t(const typename dynamic_select_column_list::_names_t&) : _impl(), _is_valid(false) { } diff --git a/include/sqlpp11/select_column_list.h b/include/sqlpp11/select_column_list.h index d5ee8c05..2b903fb1 100644 --- a/include/sqlpp11/select_column_list.h +++ b/include/sqlpp11/select_column_list.h @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -65,44 +66,6 @@ namespace sqlpp }; } - template - struct dynamic_select_column_list - { - using _names_t = std::vector; - std::vector> _dynamic_columns; - _names_t _dynamic_expression_names; - - template - void emplace_back(Expr expr) - { - _dynamic_expression_names.push_back(name_of::char_ptr()); - _dynamic_columns.emplace_back(expr); - } - - bool empty() const - { - return _dynamic_columns.empty(); - } - }; - - template <> - struct dynamic_select_column_list - { - struct _names_t - { - static constexpr size_t size() - { - return 0; - } - }; - _names_t _dynamic_expression_names; - - static constexpr bool empty() - { - return true; - } - }; - template struct serializer_t> {