Merge pull request #686 from OrfeasZ/hotfix/size-traits

Fix size trait detection for containers
This commit is contained in:
The Phantom Derpstorm 2018-07-23 14:57:15 -04:00 committed by GitHub
commit 84ec59f313
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 7 deletions

View File

@ -23,7 +23,7 @@ parser.add_argument(
help= help=
'name and location of where to place file (and forward declaration file)', 'name and location of where to place file (and forward declaration file)',
metavar='file', metavar='file',
default='sol.hpp') default=['sol.hpp'])
parser.add_argument('--quiet', help='suppress all output', action='store_true') parser.add_argument('--quiet', help='suppress all output', action='store_true')
args = parser.parse_args() args = parser.parse_args()

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script. // This file was generated with a script.
// Generated 2018-06-27 15:33:51.932186 UTC // Generated 2018-07-23 14:58:57.359452 UTC
// This header was generated with sol v2.20.4 (revision 60ee53a) // This header was generated with sol v2.20.4 (revision d343264)
// https://github.com/ThePhD/sol2 // https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_INCLUDE_HPP #ifndef SOL_SINGLE_INCLUDE_HPP
@ -16450,6 +16450,21 @@ namespace sol {
static const bool value = sizeof(test<T>(0)) == sizeof(char); static const bool value = sizeof(test<T>(0)) == sizeof(char);
}; };
template <typename T>
struct has_traits_size_test {
private:
typedef std::array<char, 1> one;
typedef std::array<char, 2> two;
template <typename C>
static one test(decltype(&C::size));
template <typename C>
static two test(...);
public:
static const bool value = sizeof(test<T>(0)) == sizeof(char);
};
template <typename T> template <typename T>
using has_clear = meta::boolean<has_clear_test<T>::value>; using has_clear = meta::boolean<has_clear_test<T>::value>;
@ -16493,7 +16508,7 @@ namespace sol {
using has_traits_add = meta::boolean<has_traits_add_test<T>::value>; using has_traits_add = meta::boolean<has_traits_add_test<T>::value>;
template <typename T> template <typename T>
using has_traits_size = meta::has_size<T>; using has_traits_size = meta::boolean<has_traits_size_test<T>::value>;
template <typename T> template <typename T>
using has_traits_clear = has_clear<T>; using has_traits_clear = has_clear<T>;

View File

@ -20,8 +20,8 @@
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// This file was generated with a script. // This file was generated with a script.
// Generated 2018-06-27 15:33:52.214419 UTC // Generated 2018-07-23 14:58:57.506417 UTC
// This header was generated with sol v2.20.4 (revision 60ee53a) // This header was generated with sol v2.20.4 (revision d343264)
// https://github.com/ThePhD/sol2 // https://github.com/ThePhD/sol2
#ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP #ifndef SOL_SINGLE_INCLUDE_FORWARD_HPP

View File

@ -340,6 +340,21 @@ namespace sol {
static const bool value = sizeof(test<T>(0)) == sizeof(char); static const bool value = sizeof(test<T>(0)) == sizeof(char);
}; };
template <typename T>
struct has_traits_size_test {
private:
typedef std::array<char, 1> one;
typedef std::array<char, 2> two;
template <typename C>
static one test(decltype(&C::size));
template <typename C>
static two test(...);
public:
static const bool value = sizeof(test<T>(0)) == sizeof(char);
};
template <typename T> template <typename T>
using has_clear = meta::boolean<has_clear_test<T>::value>; using has_clear = meta::boolean<has_clear_test<T>::value>;
@ -383,7 +398,7 @@ namespace sol {
using has_traits_add = meta::boolean<has_traits_add_test<T>::value>; using has_traits_add = meta::boolean<has_traits_add_test<T>::value>;
template <typename T> template <typename T>
using has_traits_size = meta::has_size<T>; using has_traits_size = meta::boolean<has_traits_size_test<T>::value>;
template <typename T> template <typename T>
using has_traits_clear = has_clear<T>; using has_traits_clear = has_clear<T>;