diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-01-17 16:43:20 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-01-20 15:45:47 +0200 |
commit | 151e92a20374d9259d8a0686916293749740ed88 (patch) | |
tree | 78323061095d244ad8e2ea4f96bcf7b0371f1f27 /libcommon/common/common.txx | |
parent | 8a7ade2e937145398156380a31c0f0574b5b7b1a (diff) |
Rewrite size() function to not rely in DATABSE_* macros in header
Those are not defined for some tests (e.g., database-specific tests
built with VC++ project).
Diffstat (limited to 'libcommon/common/common.txx')
-rw-r--r-- | libcommon/common/common.txx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/libcommon/common/common.txx b/libcommon/common/common.txx new file mode 100644 index 0000000..ef1461e --- /dev/null +++ b/libcommon/common/common.txx @@ -0,0 +1,26 @@ +// file : libcommon/common/common.txx +// author : Boris Kolpackov <boris@codesynthesis.com> +// copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC +// license : GNU GPL v2; see accompanying LICENSE file + +// We have to use this helper function instead of just checking which +// database is used because the DATABASE_* macro may not be defined +// in a project that includes this header. +// +LIBCOMMON_EXPORT bool +size_available (); + +template <typename T> +std::size_t +size (odb::result<T>& r) +{ + if (size_available ()) + return r.size (); + else + { + std::size_t n (0); + for (typename odb::result<T>::iterator i (r.begin ()); i != r.end (); ++i) + n++; + return n; + } +} |