TRAVIS_OS_NAME=linux <<<<<< ENV .github/workflows/check.yaml .gitignore .travis.yml Codecov.png LICENSE O_big.png QtTicTacToeWidget.pri R.png README.md RichelbilderbeekNlBackground.png TicTacToe.css TicTacToe.pri TicTacToe.qrc TicTacToeArchitecture_1_5.dia TicTacToeComputer.png TicTacToeConsole.pri TicTacToeConsole.pro TicTacToeConsoleTest.pri TicTacToeConsoleTest.pro TicTacToeDesktopQt.pri TicTacToeDesktopQt.pro TicTacToeHuman.png TicTacToeModern.png TicTacToeO.png TicTacToeRetro.png TicTacToeWebsite.pri TicTacToeWebsite.pro TicTacToeX.png TravisCI.png X_big.png crosscompiletowindows.sh do_oclint.sh download_other_github_repos.sh get_code_cov.sh install_oclint.sh main.cpp main_test.cpp pics/TravisCI.png qtmain.cpp qttictactoecanvas.cpp qttictactoecanvas.h qttictactoegamedialog.cpp qttictactoegamedialog.h qttictactoegamedialog.ui qttictactoemenudialog.cpp qttictactoemenudialog.h qttictactoemenudialog.ui qttictactoemenudialog_test.cpp qttictactoewidget.cpp qttictactoewidget.h qttictactoewinnerdialog.cpp qttictactoewinnerdialog.h qttictactoewinnerdialog.ui screenshots/QtGameDialog.png scripts/check_dead_links.sh tictactoeai.cpp tictactoeai.h tictactoeais.cpp tictactoeais.h tictactoeboard.cpp tictactoeboard.h tictactoeboard_test.cpp tictactoefwd.h tictactoegame.cpp tictactoegame.h tictactoegame_test.cpp tictactoehelper.cpp tictactoehelper.h tictactoekey.cpp tictactoekey.h tictactoemenudialog.cpp tictactoemenudialog.h tictactoemenudialog_test.cpp tictactoeplayer.cpp tictactoeplayer.h tictactoesquare.cpp tictactoesquare.h tictactoewidget.cpp tictactoewidget.h tictactoewinner.cpp tictactoewinner.h wt.css wtmain.cpp wttictactoegamedialog.cpp wttictactoegamedialog.h wttictactoemenudialog.cpp wttictactoemenudialog.h <<<<<< network # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#c++#7#bits#allocator.h.gcov -: 0:Source:/usr/include/c++/7/bits/allocator.h -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixchar.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixchar.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Allocators -*- C++ -*- -: 2: -: 3:// Copyright (C) 2001-2017 Free Software Foundation, Inc. -: 4:// -: 5:// This file is part of the GNU ISO C++ Library. This library is free -: 6:// software; you can redistribute it and/or modify it under the -: 7:// terms of the GNU General Public License as published by the -: 8:// Free Software Foundation; either version 3, or (at your option) -: 9:// any later version. -: 10: -: 11:// This library is distributed in the hope that it will be useful, -: 12:// but WITHOUT ANY WARRANTY; without even the implied warranty of -: 13:// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -: 14:// GNU General Public License for more details. -: 15: -: 16:// Under Section 7 of GPL version 3, you are granted additional -: 17:// permissions described in the GCC Runtime Library Exception, version -: 18:// 3.1, as published by the Free Software Foundation. -: 19: -: 20:// You should have received a copy of the GNU General Public License and -: 21:// a copy of the GCC Runtime Library Exception along with this program; -: 22:// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -: 23:// . -: 24: -: 25:/* -: 26: * Copyright (c) 1996-1997 -: 27: * Silicon Graphics Computer Systems, Inc. -: 28: * -: 29: * Permission to use, copy, modify, distribute and sell this software -: 30: * and its documentation for any purpose is hereby granted without fee, -: 31: * provided that the above copyright notice appear in all copies and -: 32: * that both that copyright notice and this permission notice appear -: 33: * in supporting documentation. Silicon Graphics makes no -: 34: * representations about the suitability of this software for any -: 35: * purpose. It is provided "as is" without express or implied warranty. -: 36: */ -: 37: -: 38:/** @file bits/allocator.h -: 39: * This is an internal header file, included by other library headers. -: 40: * Do not attempt to use it directly. @headername{memory} -: 41: */ -: 42: -: 43:#ifndef _ALLOCATOR_H -: 44:#define _ALLOCATOR_H 1 -: 45: -: 46:#include // Define the base class to std::allocator. -: 47:#include -: 48:#if __cplusplus >= 201103L -: 49:#include -: 50:#endif -: 51: -: 52:#define __cpp_lib_incomplete_container_elements 201505 -: 53:#if __cplusplus >= 201103L -: 54:# define __cpp_lib_allocator_is_always_equal 201411 -: 55:#endif -: 56: -: 57:namespace std _GLIBCXX_VISIBILITY(default) -: 58:{ -: 59:_GLIBCXX_BEGIN_NAMESPACE_VERSION -: 60: -: 61: /** -: 62: * @addtogroup allocators -: 63: * @{ -: 64: */ -: 65: -: 66: /// allocator specialization. -: 67: template<> -: 68: class allocator -: 69: { -: 70: public: -: 71: typedef size_t size_type; -: 72: typedef ptrdiff_t difference_type; -: 73: typedef void* pointer; -: 74: typedef const void* const_pointer; -: 75: typedef void value_type; -: 76: -: 77: template -: 78: struct rebind -: 79: { typedef allocator<_Tp1> other; }; -: 80: -: 81:#if __cplusplus >= 201103L -: 82: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 83: // 2103. std::allocator propagate_on_container_move_assignment -: 84: typedef true_type propagate_on_container_move_assignment; -: 85: -: 86: typedef true_type is_always_equal; -: 87: -: 88: template -: 89: void -: 90: construct(_Up* __p, _Args&&... __args) -: 91: { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } -: 92: -: 93: template -: 94: void -: 95: destroy(_Up* __p) { __p->~_Up(); } -: 96:#endif -: 97: }; -: 98: -: 99: /** -: 100: * @brief The @a standard allocator, as per [20.4]. -: 101: * -: 102: * See https://gcc.gnu.org/onlinedocs/libstdc++/manual/memory.html#std.util.memory.allocator -: 103: * for further details. -: 104: * -: 105: * @tparam _Tp Type of allocated object. -: 106: */ -: 107: template -: 108: class allocator: public __allocator_base<_Tp> -: 109: { -: 110: public: -: 111: typedef size_t size_type; -: 112: typedef ptrdiff_t difference_type; -: 113: typedef _Tp* pointer; -: 114: typedef const _Tp* const_pointer; -: 115: typedef _Tp& reference; -: 116: typedef const _Tp& const_reference; -: 117: typedef _Tp value_type; -: 118: -: 119: template -: 120: struct rebind -: 121: { typedef allocator<_Tp1> other; }; -: 122: -: 123:#if __cplusplus >= 201103L -: 124: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 125: // 2103. std::allocator propagate_on_container_move_assignment -: 126: typedef true_type propagate_on_container_move_assignment; -: 127: -: 128: typedef true_type is_always_equal; -: 129:#endif -: 130: function _ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2Ev called 0 returned 0% blocks executed 0% #####: 131: allocator() throw() { } call 0 never executed call 1 never executed -: 132: function _ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ERKS5_ called 0 returned 0% blocks executed 0% #####: 133: allocator(const allocator& __a) throw() #####: 134: : __allocator_base<_Tp>(__a) { } call 0 never executed call 1 never executed call 2 never executed -: 135: -: 136: template -: 137: allocator(const allocator<_Tp1>&) throw() { } -: 138: function _ZNSaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev called 0 returned 0% blocks executed 0% #####: 139: ~allocator() throw() { } call 0 never executed call 1 never executed -: 140: -: 141: // Inherit everything else. -: 142: }; -: 143: -: 144: template -: 145: inline bool -: 146: operator==(const allocator<_T1>&, const allocator<_T2>&) -: 147: _GLIBCXX_USE_NOEXCEPT -: 148: { return true; } -: 149: -: 150: template -: 151: inline bool -: 152: operator==(const allocator<_Tp>&, const allocator<_Tp>&) -: 153: _GLIBCXX_USE_NOEXCEPT -: 154: { return true; } -: 155: -: 156: template -: 157: inline bool -: 158: operator!=(const allocator<_T1>&, const allocator<_T2>&) -: 159: _GLIBCXX_USE_NOEXCEPT -: 160: { return false; } -: 161: -: 162: template -: 163: inline bool -: 164: operator!=(const allocator<_Tp>&, const allocator<_Tp>&) -: 165: _GLIBCXX_USE_NOEXCEPT -: 166: { return false; } -: 167: -: 168: /// @} group allocator -: 169: -: 170: // Inhibit implicit instantiations for required instantiations, -: 171: // which are defined via explicit instantiations elsewhere. -: 172:#if _GLIBCXX_EXTERN_TEMPLATE -: 173: extern template class allocator; -: 174: extern template class allocator; -: 175:#endif -: 176: -: 177: // Undefine. -: 178:#undef __allocator_base -: 179: -: 180: // To implement Option 3 of DR 431. -: 181: template -: 182: struct __alloc_swap -: 183: { static void _S_do_it(_Alloc&, _Alloc&) _GLIBCXX_NOEXCEPT { } }; -: 184: -: 185: template -: 186: struct __alloc_swap<_Alloc, false> -: 187: { -: 188: static void -: 189: _S_do_it(_Alloc& __one, _Alloc& __two) _GLIBCXX_NOEXCEPT -: 190: { -: 191: // Precondition: swappable allocators. -: 192: if (__one != __two) -: 193: swap(__one, __two); -: 194: } -: 195: }; -: 196: -: 197: // Optimize for stateless allocators. -: 198: template -: 199: struct __alloc_neq -: 200: { -: 201: static bool -: 202: _S_do_it(const _Alloc&, const _Alloc&) -: 203: { return false; } -: 204: }; -: 205: -: 206: template -: 207: struct __alloc_neq<_Alloc, false> -: 208: { -: 209: static bool -: 210: _S_do_it(const _Alloc& __one, const _Alloc& __two) -: 211: { return __one != __two; } -: 212: }; -: 213: -: 214:#if __cplusplus >= 201103L -: 215: template, -: 217: is_nothrow_move_constructible>::value> -: 218: struct __shrink_to_fit_aux -: 219: { static bool _S_do_it(_Tp&) noexcept { return false; } }; -: 220: -: 221: template -: 222: struct __shrink_to_fit_aux<_Tp, true> -: 223: { -: 224: static bool -: 225: _S_do_it(_Tp& __c) noexcept -: 226: { -: 227:#if __cpp_exceptions -: 228: try -: 229: { -: 230: _Tp(__make_move_if_noexcept_iterator(__c.begin()), -: 231: __make_move_if_noexcept_iterator(__c.end()), -: 232: __c.get_allocator()).swap(__c); -: 233: return true; -: 234: } -: 235: catch(...) -: 236: { return false; } -: 237:#else -: 238: return false; -: 239:#endif -: 240: } -: 241: }; -: 242:#endif -: 243: -: 244:_GLIBCXX_END_NAMESPACE_VERSION -: 245:} // namespace std -: 246: -: 247:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#xpressive#basic_regex.hpp.gcov -: 0:Source:/usr/include/boost/xpressive/basic_regex.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1://///////////////////////////////////////////////////////////////////////////// -: 2:/// \file basic_regex.hpp -: 3:/// Contains the definition of the basic_regex\<\> class template and its -: 4:/// associated helper functions. -: 5:// -: 6:// Copyright 2008 Eric Niebler. Distributed under the Boost -: 7:// Software License, Version 1.0. (See accompanying file -: 8:// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -: 9: -: 10:#ifndef BOOST_XPRESSIVE_BASIC_REGEX_HPP_EAN_10_04_2005 -: 11:#define BOOST_XPRESSIVE_BASIC_REGEX_HPP_EAN_10_04_2005 -: 12: -: 13:// MS compatible compilers support #pragma once -: 14:#if defined(_MSC_VER) -: 15:# pragma once -: 16:#endif -: 17: -: 18:#include -: 19:#include -: 20:#include -: 21:#include -: 22:#include -: 23:#include -: 24:#include -: 25: -: 26:// Doxygen can't handle proto :-( -: 27:#ifndef BOOST_XPRESSIVE_DOXYGEN_INVOKED -: 28:# include -: 29:# include -: 30:#endif -: 31: -: 32:#if BOOST_XPRESSIVE_HAS_MS_STACK_GUARD -: 33:# include // for _exception_code() -: 34:# include // for _resetstkoflw() -: 35:#endif -: 36: -: 37:namespace boost { namespace xpressive -: 38:{ -: 39: -: 40:namespace detail -: 41:{ -: 42: inline void throw_on_stack_error(bool stack_error) -: 43: { -: 44: BOOST_XPR_ENSURE_(!stack_error, regex_constants::error_stack, "Regex stack space exhausted"); -: 45: } -: 46:} -: 47: -: 48://///////////////////////////////////////////////////////////////////////////// -: 49:// basic_regex -: 50:// -: 51:/// \brief Class template basic_regex\<\> is a class for holding a compiled regular expression. -: 52:template function _ZN5boost9xpressive11basic_regexIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev called 0 returned 0% blocks executed 0% #####: 53:struct basic_regex call 0 never executed call 1 never executed call 2 never executed -: 54: : proto::extends< -: 55: proto::expr > >, 0> -: 56: , basic_regex -: 57: , detail::regex_domain -: 58: > -: 59:{ -: 60:private: -: 61: typedef proto::expr > >, 0> pimpl_type; -: 62: typedef proto::extends, detail::regex_domain> base_type; -: 63: -: 64:public: -: 65: typedef BidiIter iterator_type; -: 66: typedef typename iterator_value::type char_type; -: 67: // For compatibility with std::basic_regex -: 68: typedef typename iterator_value::type value_type; -: 69: typedef typename detail::string_type::type string_type; -: 70: typedef regex_constants::syntax_option_type flag_type; -: 71: -: 72: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, ECMAScript = regex_constants::ECMAScript); -: 73: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, icase = regex_constants::icase_); -: 74: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, nosubs = regex_constants::nosubs); -: 75: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, optimize = regex_constants::optimize); -: 76: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, collate = regex_constants::collate); -: 77: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, single_line = regex_constants::single_line); -: 78: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, not_dot_null = regex_constants::not_dot_null); -: 79: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, not_dot_newline = regex_constants::not_dot_newline); -: 80: BOOST_STATIC_CONSTANT(regex_constants::syntax_option_type, ignore_white_space = regex_constants::ignore_white_space); -: 81: -: 82: /// \post regex_id() == 0 -: 83: /// \post mark_count() == 0 function _ZN5boost9xpressive11basic_regexIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2Ev called 0 returned 0% blocks executed 0% #####: 84: basic_regex() call 0 never executed #####: 85: : base_type() call 0 never executed -: 86: { #####: 87: } -: 88: -: 89: /// \param that The basic_regex object to copy. -: 90: /// \post regex_id() == that.regex_id() -: 91: /// \post mark_count() == that.mark_count() function _ZN5boost9xpressive11basic_regexIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKSD_ called 0 returned 0% blocks executed 0% #####: 92: basic_regex(basic_regex const &that) call 0 never executed #####: 93: : base_type(that) call 0 never executed call 1 never executed -: 94: { #####: 95: } -: 96: -: 97: /// \param that The basic_regex object to copy. -: 98: /// \post regex_id() == that.regex_id() -: 99: /// \post mark_count() == that.mark_count() -: 100: /// \return *this -: 101: basic_regex &operator =(basic_regex const &that) -: 102: { -: 103: proto::value(*this) = proto::value(that); -: 104: return *this; -: 105: } -: 106: -: 107: /// Construct from a static regular expression. -: 108: /// -: 109: /// \param expr The static regular expression -: 110: /// \pre Expr is the type of a static regular expression. -: 111: /// \post regex_id() != 0 -: 112: /// \post mark_count() \>= 0 -: 113: template -: 114: basic_regex(Expr const &expr) -: 115: : base_type() -: 116: { -: 117: BOOST_XPRESSIVE_CHECK_REGEX(Expr, char_type); -: 118: this->compile_(expr, is_valid_regex()); -: 119: } -: 120: -: 121: /// Construct from a static regular expression. -: 122: /// -: 123: /// \param expr The static regular expression. -: 124: /// \pre Expr is the type of a static regular expression. -: 125: /// \post regex_id() != 0 -: 126: /// \post mark_count() \>= 0 -: 127: /// \throw std::bad_alloc on out of memory -: 128: /// \return *this -: 129: template -: 130: basic_regex &operator =(Expr const &expr) -: 131: { -: 132: BOOST_XPRESSIVE_CHECK_REGEX(Expr, char_type); -: 133: this->compile_(expr, is_valid_regex()); -: 134: return *this; -: 135: } -: 136: -: 137: /// Returns the count of capturing sub-expressions in this regular expression -: 138: /// -: 139: std::size_t mark_count() const -: 140: { -: 141: return proto::value(*this) ? proto::value(*this)->mark_count_ : 0; -: 142: } -: 143: -: 144: /// Returns a token which uniquely identifies this regular expression. -: 145: /// function _ZNK5boost9xpressive11basic_regexIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE8regex_idEv called 0 returned 0% blocks executed 0% #####: 146: regex_id_type regex_id() const -: 147: { #####: 148: return proto::value(*this) ? proto::value(*this)->xpr_.get() : 0; call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed -: 149: } -: 150: -: 151: /// Swaps the contents of this basic_regex object with another. -: 152: /// -: 153: /// \param that The other basic_regex object. -: 154: /// \attention This is a shallow swap that does not do reference tracking. -: 155: /// If you embed a basic_regex object by reference in another -: 156: /// regular expression and then swap its contents with another -: 157: /// basic_regex object, the change will not be visible to the -: 158: /// enclosing regular expression. It is done this way to ensure -: 159: /// that swap() cannot throw. -: 160: /// \throw nothrow -: 161: void swap(basic_regex &that) // throw() -: 162: { -: 163: proto::value(*this).swap(proto::value(that)); -: 164: } -: 165: -: 166: /// Factory method for building a regex object from a range of characters. -: 167: /// Equivalent to regex_compiler\< BidiIter \>().compile(begin, end, flags); -: 168: /// -: 169: /// \param begin The beginning of a range of characters representing the -: 170: /// regular expression to compile. -: 171: /// \param end The end of a range of characters representing the -: 172: /// regular expression to compile. -: 173: /// \param flags Optional bitmask that determines how the pat string is -: 174: /// interpreted. (See syntax_option_type.) -: 175: /// \return A basic_regex object corresponding to the regular expression -: 176: /// represented by the character range. -: 177: /// \pre [begin,end) is a valid range. -: 178: /// \pre The range of characters specified by [begin,end) contains a -: 179: /// valid string-based representation of a regular expression. -: 180: /// \throw regex_error when the range of characters has invalid regular -: 181: /// expression syntax. -: 182: template -: 183: static basic_regex compile(InputIter begin, InputIter end, flag_type flags = regex_constants::ECMAScript) -: 184: { -: 185: return regex_compiler().compile(begin, end, flags); -: 186: } -: 187: -: 188: /// \overload -: 189: /// -: 190: template function _ZN5boost9xpressive11basic_regexIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE7compileISB_EESD_RKT_NS0_15regex_constants18syntax_option_typeE called 0 returned 0% blocks executed 0% #####: 191: static basic_regex compile(InputRange const &pat, flag_type flags = regex_constants::ECMAScript) -: 192: { #####: 193: return regex_compiler().compile(pat, flags); call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed call 5 never executed call 6 never executed branch 7 never executed branch 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed -: 194: } -: 195: -: 196: /// \overload -: 197: /// function _ZN5boost9xpressive11basic_regexIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE7compileES5_NS0_15regex_constants18syntax_option_typeE called 0 returned 0% blocks executed 0% #####: 198: static basic_regex compile(char_type const *begin, flag_type flags = regex_constants::ECMAScript) -: 199: { #####: 200: return regex_compiler().compile(begin, flags); call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed call 5 never executed call 6 never executed branch 7 never executed branch 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed -: 201: } -: 202: -: 203: /// \overload -: 204: /// -: 205: static basic_regex compile(char_type const *begin, std::size_t len, flag_type flags) -: 206: { -: 207: return regex_compiler().compile(begin, len, flags); -: 208: } -: 209: -: 210:private: -: 211: friend struct detail::core_access; -: 212: -: 213: // Avoid a common programming mistake. Construction from a string is -: 214: // ambiguous. It could mean: -: 215: // sregex rx = sregex::compile(str); // compile the string into a regex -: 216: // or -: 217: // sregex rx = as_xpr(str); // treat the string as a literal -: 218: // Since there is no easy way to disambiguate, it is disallowed. You must -: 219: // say what you mean. -: 220: -: 221: /// INTERNAL ONLY -: 222: basic_regex(char_type const *); -: 223: /// INTERNAL ONLY -: 224: basic_regex(string_type const &); -: 225: -: 226: /// INTERNAL ONLY function _ZNK5boost9xpressive11basic_regexIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE6match_ERNS0_6detail11match_stateISC_EE called 0 returned 0% blocks executed 0% #####: 227: bool match_(detail::match_state &state) const -: 228: { -: 229: #if BOOST_XPRESSIVE_HAS_MS_STACK_GUARD -: 230: bool success = false, stack_error = false; -: 231: __try -: 232: { -: 233: success = proto::value(*this)->xpr_->match(state); -: 234: } -: 235: __except(_exception_code() == 0xC00000FDUL) -: 236: { -: 237: stack_error = true; -: 238: _resetstkoflw(); -: 239: } -: 240: detail::throw_on_stack_error(stack_error); -: 241: return success; -: 242: #else #####: 243: return proto::value(*this)->xpr_->match(state); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed -: 244: #endif -: 245: } -: 246: -: 247: // Compiles valid static regexes into a state machine. -: 248: /// INTERNAL ONLY -: 249: template -: 250: void compile_(Expr const &expr, mpl::true_) -: 251: { -: 252: detail::static_compile(expr, proto::value(*this).get()); -: 253: } -: 254: -: 255: // No-op for invalid static regexes. -: 256: /// INTERNAL ONLY -: 257: template -: 258: void compile_(Expr const &, mpl::false_) -: 259: { -: 260: } -: 261:}; -: 262: -: 263:#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION -: 264:template regex_constants::syntax_option_type const basic_regex::ECMAScript; -: 265:template regex_constants::syntax_option_type const basic_regex::icase; -: 266:template regex_constants::syntax_option_type const basic_regex::nosubs; -: 267:template regex_constants::syntax_option_type const basic_regex::optimize; -: 268:template regex_constants::syntax_option_type const basic_regex::collate; -: 269:template regex_constants::syntax_option_type const basic_regex::single_line; -: 270:template regex_constants::syntax_option_type const basic_regex::not_dot_null; -: 271:template regex_constants::syntax_option_type const basic_regex::not_dot_newline; -: 272:template regex_constants::syntax_option_type const basic_regex::ignore_white_space; -: 273:#endif -: 274: -: 275://///////////////////////////////////////////////////////////////////////////// -: 276:// swap -: 277:/// \brief Swaps the contents of two basic_regex objects. -: 278:/// \param left The first basic_regex object. -: 279:/// \param right The second basic_regex object. -: 280:/// \attention This is a shallow swap that does not do reference tracking. -: 281:/// If you embed a basic_regex object by reference in another -: 282:/// regular expression and then swap its contents with another -: 283:/// basic_regex object, the change will not be visible to the -: 284:/// enclosing regular expression. It is done this way to ensure -: 285:/// that swap() cannot throw. -: 286:/// \throw nothrow -: 287:template -: 288:inline void swap(basic_regex &left, basic_regex &right) // throw() -: 289:{ -: 290: left.swap(right); -: 291:} -: 292: -: 293:}} // namespace boost::xpressive -: 294: -: 295:#endif // BOOST_XPRESSIVE_BASIC_REGEX_HPP_EAN_10_04_2005 <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/^#RibiClasses#CppMenuDialog#menudialog.cpp.gcov -: 0:Source:../RibiClasses/CppMenuDialog/menudialog.cpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/menudialog.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/menudialog.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#include "menudialog.h" -: 2:#include -: 3:#include -: 4:#include -: 5: function _ZN4ribi10MenuDialogC2Ev called 1 returned 100% blocks executed 100% 1: 6:ribi::MenuDialog::MenuDialog() call 0 returned 100% call 1 returned 100% call 2 returned 100% -: 7:{ -: 8: 1: 9:} -: 10: function _ZN4ribi10MenuDialogD0Ev called 0 returned 0% blocks executed 0% function _ZN4ribi10MenuDialogD2Ev called 1 returned 100% blocks executed 100% 1: 11:ribi::MenuDialog::~MenuDialog() noexcept call 0 returned 100% call 1 returned 100% -: 12:{ -: 13: 1: 14:} call 0 never executed call 1 never executed -: 15: function _ZN4ribi10MenuDialog16ConvertArgumentsB5cxx11EiPKPKc called 0 returned 0% blocks executed 0% #####: 16:std::vector ribi::MenuDialog::ConvertArguments( -: 17: const int argc, const char * const argv[]) noexcept -: 18:{ #####: 19: std::vector v; call 0 never executed #####: 20: v.reserve(argc); call 0 never executed #####: 21: for (int i=0; i!=argc; ++i) branch 0 never executed branch 1 never executed -: 22: { #####: 23: v.push_back(std::string(argv[i])); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed -: 24: } #####: 25: assert(argc == static_cast(v.size())); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed #####: 26: return v; -: 27:} -: 28: function _ZN4ribi10MenuDialog7ExecuteERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE called 1 returned 100% blocks executed 40% 1: 29:int ribi::MenuDialog::Execute( -: 30: const std::vector& argv -: 31:) noexcept -: 32:{ 1: 33: const int argc = static_cast(argv.size()); call 0 returned 100% call 1 returned 100% 1: 34: if (argc <= 1) branch 0 taken 0% (fallthrough) branch 1 taken 100% -: 35: { #####: 36: return ExecuteSpecific(argv); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 37: } 2: 38: const std::string s = argv[1]; call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% 1: 39: if (s == "--about" || s == "-a") call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% -: 40: { #####: 41: const std::vector v { GetAbout().CreateAboutText() }; call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed #####: 42: std::copy( call 0 never executed call 1 never executed call 2 never executed -: 43: std::begin(v), -: 44: std::end(v), #####: 45: std::ostream_iterator(std::cout,"\n") call 0 never executed -: 46: ); -: 47: std::cout -: 48: << "\n" -: 49: << "Source code built on " -: 50: << __DATE__ -: 51: << " " -: 52: << __TIME__ -: 53: << " (" -: 54: #ifdef NDEBUG -: 55: << "release" -: 56: #else -: 57: << "debug" -: 58: #endif -: 59: << " version)" #####: 60: << '\n'; call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed #####: 61: return 0; -: 62: } 1: 63: else if (s == "--help" || s == "-h") call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% -: 64: { #####: 65: std::cout << GetHelp() << '\n'; call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed #####: 66: return 0; -: 67: } 1: 68: else if (s == "--history" || s == "-i") call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% -: 69: { #####: 70: const std::vector v { GetVersionHistory() }; call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 71: std::copy( call 0 never executed call 1 never executed call 2 never executed -: 72: std::begin(v), -: 73: std::end(v), #####: 74: std::ostream_iterator(std::cout,"\n") call 0 never executed -: 75: ); #####: 76: return 0; -: 77: } 1: 78: else if (s == "--license" || s == "--licence" || s == "-l") call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 100% (fallthrough) branch 5 taken 0% call 6 returned 100% branch 7 taken 0% (fallthrough) branch 8 taken 100% branch 9 taken 0% (fallthrough) branch 10 taken 100% -: 79: { #####: 80: const std::vector v { GetAbout().CreateLicenceText() }; call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed #####: 81: std::copy( call 0 never executed call 1 never executed call 2 never executed -: 82: std::begin(v), -: 83: std::end(v), #####: 84: std::ostream_iterator(std::cout,"\n") call 0 never executed -: 85: ); #####: 86: return 0; -: 87: } 1: 88: else if (s == "--version" || s == "-v") call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% -: 89: { #####: 90: const std::vector v = { GetAbout().CreateLibrariesUsedText() }; call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed #####: 91: std::copy( call 0 never executed call 1 never executed call 2 never executed -: 92: std::begin(v), -: 93: std::end(v), #####: 94: std::ostream_iterator(std::cout,"\n") call 0 never executed -: 95: ); #####: 96: return 0; -: 97: } 1: 98: return ExecuteSpecific(argv); call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% call 5 returned 100% function _GLOBAL__sub_I_menudialog.cpp called 1 returned 100% blocks executed 100% function _Z41__static_initialization_and_destruction_0ii called 1 returned 100% blocks executed 100% 3: 99:} call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% branch 3 taken 100% (fallthrough) branch 4 taken 0% <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#c++#7#bits#stl_iterator.h.gcov -: 0:Source:/usr/include/c++/7/bits/stl_iterator.h -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixtext.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixtext.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Iterators -*- C++ -*- -: 2: -: 3:// Copyright (C) 2001-2017 Free Software Foundation, Inc. -: 4:// -: 5:// This file is part of the GNU ISO C++ Library. This library is free -: 6:// software; you can redistribute it and/or modify it under the -: 7:// terms of the GNU General Public License as published by the -: 8:// Free Software Foundation; either version 3, or (at your option) -: 9:// any later version. -: 10: -: 11:// This library is distributed in the hope that it will be useful, -: 12:// but WITHOUT ANY WARRANTY; without even the implied warranty of -: 13:// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -: 14:// GNU General Public License for more details. -: 15: -: 16:// Under Section 7 of GPL version 3, you are granted additional -: 17:// permissions described in the GCC Runtime Library Exception, version -: 18:// 3.1, as published by the Free Software Foundation. -: 19: -: 20:// You should have received a copy of the GNU General Public License and -: 21:// a copy of the GCC Runtime Library Exception along with this program; -: 22:// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -: 23:// . -: 24: -: 25:/* -: 26: * -: 27: * Copyright (c) 1994 -: 28: * Hewlett-Packard Company -: 29: * -: 30: * Permission to use, copy, modify, distribute and sell this software -: 31: * and its documentation for any purpose is hereby granted without fee, -: 32: * provided that the above copyright notice appear in all copies and -: 33: * that both that copyright notice and this permission notice appear -: 34: * in supporting documentation. Hewlett-Packard Company makes no -: 35: * representations about the suitability of this software for any -: 36: * purpose. It is provided "as is" without express or implied warranty. -: 37: * -: 38: * -: 39: * Copyright (c) 1996-1998 -: 40: * Silicon Graphics Computer Systems, Inc. -: 41: * -: 42: * Permission to use, copy, modify, distribute and sell this software -: 43: * and its documentation for any purpose is hereby granted without fee, -: 44: * provided that the above copyright notice appear in all copies and -: 45: * that both that copyright notice and this permission notice appear -: 46: * in supporting documentation. Silicon Graphics makes no -: 47: * representations about the suitability of this software for any -: 48: * purpose. It is provided "as is" without express or implied warranty. -: 49: */ -: 50: -: 51:/** @file bits/stl_iterator.h -: 52: * This is an internal header file, included by other library headers. -: 53: * Do not attempt to use it directly. @headername{iterator} -: 54: * -: 55: * This file implements reverse_iterator, back_insert_iterator, -: 56: * front_insert_iterator, insert_iterator, __normal_iterator, and their -: 57: * supporting functions and overloaded operators. -: 58: */ -: 59: -: 60:#ifndef _STL_ITERATOR_H -: 61:#define _STL_ITERATOR_H 1 -: 62: -: 63:#include -: 64:#include -: 65:#include -: 66:#include -: 67: -: 68:#if __cplusplus > 201402L -: 69:# define __cpp_lib_array_constexpr 201603 -: 70:#endif -: 71: -: 72:namespace std _GLIBCXX_VISIBILITY(default) -: 73:{ -: 74:_GLIBCXX_BEGIN_NAMESPACE_VERSION -: 75: -: 76: /** -: 77: * @addtogroup iterators -: 78: * @{ -: 79: */ -: 80: -: 81: // 24.4.1 Reverse iterators -: 82: /** -: 83: * Bidirectional and random access iterators have corresponding reverse -: 84: * %iterator adaptors that iterate through the data structure in the -: 85: * opposite direction. They have the same signatures as the corresponding -: 86: * iterators. The fundamental relation between a reverse %iterator and its -: 87: * corresponding %iterator @c i is established by the identity: -: 88: * @code -: 89: * &*(reverse_iterator(i)) == &*(i - 1) -: 90: * @endcode -: 91: * -: 92: * This mapping is dictated by the fact that while there is always a -: 93: * pointer past the end of an array, there might not be a valid pointer -: 94: * before the beginning of an array. [24.4.1]/1,2 -: 95: * -: 96: * Reverse iterators can be tricky and surprising at first. Their -: 97: * semantics make sense, however, and the trickiness is a side effect of -: 98: * the requirement that the iterators must be safe. -: 99: */ -: 100: template -: 101: class reverse_iterator -: 102: : public iterator::iterator_category, -: 103: typename iterator_traits<_Iterator>::value_type, -: 104: typename iterator_traits<_Iterator>::difference_type, -: 105: typename iterator_traits<_Iterator>::pointer, -: 106: typename iterator_traits<_Iterator>::reference> -: 107: { -: 108: protected: -: 109: _Iterator current; -: 110: -: 111: typedef iterator_traits<_Iterator> __traits_type; -: 112: -: 113: public: -: 114: typedef _Iterator iterator_type; -: 115: typedef typename __traits_type::difference_type difference_type; -: 116: typedef typename __traits_type::pointer pointer; -: 117: typedef typename __traits_type::reference reference; -: 118: -: 119: /** -: 120: * The default constructor value-initializes member @p current. -: 121: * If it is a pointer, that means it is zero-initialized. -: 122: */ -: 123: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 124: // 235 No specification of default ctor for reverse_iterator -: 125: // 1012. reverse_iterator default ctor should value initialize -: 126: _GLIBCXX17_CONSTEXPR -: 127: reverse_iterator() : current() { } -: 128: -: 129: /** -: 130: * This %iterator will move in the opposite direction that @p x does. -: 131: */ -: 132: explicit _GLIBCXX17_CONSTEXPR -: 133: reverse_iterator(iterator_type __x) : current(__x) { } -: 134: -: 135: /** -: 136: * The copy constructor is normal. -: 137: */ -: 138: _GLIBCXX17_CONSTEXPR -: 139: reverse_iterator(const reverse_iterator& __x) -: 140: : current(__x.current) { } -: 141: -: 142: /** -: 143: * A %reverse_iterator across other types can be copied if the -: 144: * underlying %iterator can be converted to the type of @c current. -: 145: */ -: 146: template -: 147: _GLIBCXX17_CONSTEXPR -: 148: reverse_iterator(const reverse_iterator<_Iter>& __x) -: 149: : current(__x.base()) { } -: 150: -: 151: /** -: 152: * @return @c current, the %iterator used for underlying work. -: 153: */ -: 154: _GLIBCXX17_CONSTEXPR iterator_type -: 155: base() const -: 156: { return current; } -: 157: -: 158: /** -: 159: * @return A reference to the value at @c --current -: 160: * -: 161: * This requires that @c --current is dereferenceable. -: 162: * -: 163: * @warning This implementation requires that for an iterator of the -: 164: * underlying iterator type, @c x, a reference obtained by -: 165: * @c *x remains valid after @c x has been modified or -: 166: * destroyed. This is a bug: http://gcc.gnu.org/PR51823 -: 167: */ -: 168: _GLIBCXX17_CONSTEXPR reference -: 169: operator*() const -: 170: { -: 171: _Iterator __tmp = current; -: 172: return *--__tmp; -: 173: } -: 174: -: 175: /** -: 176: * @return A pointer to the value at @c --current -: 177: * -: 178: * This requires that @c --current is dereferenceable. -: 179: */ -: 180: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 181: // 2188. Reverse iterator does not fully support targets that overload & -: 182: _GLIBCXX17_CONSTEXPR pointer -: 183: operator->() const -: 184: { return std::__addressof(operator*()); } -: 185: -: 186: /** -: 187: * @return @c *this -: 188: * -: 189: * Decrements the underlying iterator. -: 190: */ -: 191: _GLIBCXX17_CONSTEXPR reverse_iterator& -: 192: operator++() -: 193: { -: 194: --current; -: 195: return *this; -: 196: } -: 197: -: 198: /** -: 199: * @return The original value of @c *this -: 200: * -: 201: * Decrements the underlying iterator. -: 202: */ -: 203: _GLIBCXX17_CONSTEXPR reverse_iterator -: 204: operator++(int) -: 205: { -: 206: reverse_iterator __tmp = *this; -: 207: --current; -: 208: return __tmp; -: 209: } -: 210: -: 211: /** -: 212: * @return @c *this -: 213: * -: 214: * Increments the underlying iterator. -: 215: */ -: 216: _GLIBCXX17_CONSTEXPR reverse_iterator& -: 217: operator--() -: 218: { -: 219: ++current; -: 220: return *this; -: 221: } -: 222: -: 223: /** -: 224: * @return A reverse_iterator with the previous value of @c *this -: 225: * -: 226: * Increments the underlying iterator. -: 227: */ -: 228: _GLIBCXX17_CONSTEXPR reverse_iterator -: 229: operator--(int) -: 230: { -: 231: reverse_iterator __tmp = *this; -: 232: ++current; -: 233: return __tmp; -: 234: } -: 235: -: 236: /** -: 237: * @return A reverse_iterator that refers to @c current - @a __n -: 238: * -: 239: * The underlying iterator must be a Random Access Iterator. -: 240: */ -: 241: _GLIBCXX17_CONSTEXPR reverse_iterator -: 242: operator+(difference_type __n) const -: 243: { return reverse_iterator(current - __n); } -: 244: -: 245: /** -: 246: * @return *this -: 247: * -: 248: * Moves the underlying iterator backwards @a __n steps. -: 249: * The underlying iterator must be a Random Access Iterator. -: 250: */ -: 251: _GLIBCXX17_CONSTEXPR reverse_iterator& -: 252: operator+=(difference_type __n) -: 253: { -: 254: current -= __n; -: 255: return *this; -: 256: } -: 257: -: 258: /** -: 259: * @return A reverse_iterator that refers to @c current - @a __n -: 260: * -: 261: * The underlying iterator must be a Random Access Iterator. -: 262: */ -: 263: _GLIBCXX17_CONSTEXPR reverse_iterator -: 264: operator-(difference_type __n) const -: 265: { return reverse_iterator(current + __n); } -: 266: -: 267: /** -: 268: * @return *this -: 269: * -: 270: * Moves the underlying iterator forwards @a __n steps. -: 271: * The underlying iterator must be a Random Access Iterator. -: 272: */ -: 273: _GLIBCXX17_CONSTEXPR reverse_iterator& -: 274: operator-=(difference_type __n) -: 275: { -: 276: current += __n; -: 277: return *this; -: 278: } -: 279: -: 280: /** -: 281: * @return The value at @c current - @a __n - 1 -: 282: * -: 283: * The underlying iterator must be a Random Access Iterator. -: 284: */ -: 285: _GLIBCXX17_CONSTEXPR reference -: 286: operator[](difference_type __n) const -: 287: { return *(*this + __n); } -: 288: }; -: 289: -: 290: //@{ -: 291: /** -: 292: * @param __x A %reverse_iterator. -: 293: * @param __y A %reverse_iterator. -: 294: * @return A simple bool. -: 295: * -: 296: * Reverse iterators forward many operations to their underlying base() -: 297: * iterators. Others are implemented in terms of one another. -: 298: * -: 299: */ -: 300: template -: 301: inline _GLIBCXX17_CONSTEXPR bool -: 302: operator==(const reverse_iterator<_Iterator>& __x, -: 303: const reverse_iterator<_Iterator>& __y) -: 304: { return __x.base() == __y.base(); } -: 305: -: 306: template -: 307: inline _GLIBCXX17_CONSTEXPR bool -: 308: operator<(const reverse_iterator<_Iterator>& __x, -: 309: const reverse_iterator<_Iterator>& __y) -: 310: { return __y.base() < __x.base(); } -: 311: -: 312: template -: 313: inline _GLIBCXX17_CONSTEXPR bool -: 314: operator!=(const reverse_iterator<_Iterator>& __x, -: 315: const reverse_iterator<_Iterator>& __y) -: 316: { return !(__x == __y); } -: 317: -: 318: template -: 319: inline _GLIBCXX17_CONSTEXPR bool -: 320: operator>(const reverse_iterator<_Iterator>& __x, -: 321: const reverse_iterator<_Iterator>& __y) -: 322: { return __y < __x; } -: 323: -: 324: template -: 325: inline _GLIBCXX17_CONSTEXPR bool -: 326: operator<=(const reverse_iterator<_Iterator>& __x, -: 327: const reverse_iterator<_Iterator>& __y) -: 328: { return !(__y < __x); } -: 329: -: 330: template -: 331: inline _GLIBCXX17_CONSTEXPR bool -: 332: operator>=(const reverse_iterator<_Iterator>& __x, -: 333: const reverse_iterator<_Iterator>& __y) -: 334: { return !(__x < __y); } -: 335: -: 336: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 337: // DR 280. Comparison of reverse_iterator to const reverse_iterator. -: 338: template -: 339: inline _GLIBCXX17_CONSTEXPR bool -: 340: operator==(const reverse_iterator<_IteratorL>& __x, -: 341: const reverse_iterator<_IteratorR>& __y) -: 342: { return __x.base() == __y.base(); } -: 343: -: 344: template -: 345: inline _GLIBCXX17_CONSTEXPR bool -: 346: operator<(const reverse_iterator<_IteratorL>& __x, -: 347: const reverse_iterator<_IteratorR>& __y) -: 348: { return __y.base() < __x.base(); } -: 349: -: 350: template -: 351: inline _GLIBCXX17_CONSTEXPR bool -: 352: operator!=(const reverse_iterator<_IteratorL>& __x, -: 353: const reverse_iterator<_IteratorR>& __y) -: 354: { return !(__x == __y); } -: 355: -: 356: template -: 357: inline _GLIBCXX17_CONSTEXPR bool -: 358: operator>(const reverse_iterator<_IteratorL>& __x, -: 359: const reverse_iterator<_IteratorR>& __y) -: 360: { return __y < __x; } -: 361: -: 362: template -: 363: inline _GLIBCXX17_CONSTEXPR bool -: 364: operator<=(const reverse_iterator<_IteratorL>& __x, -: 365: const reverse_iterator<_IteratorR>& __y) -: 366: { return !(__y < __x); } -: 367: -: 368: template -: 369: inline _GLIBCXX17_CONSTEXPR bool -: 370: operator>=(const reverse_iterator<_IteratorL>& __x, -: 371: const reverse_iterator<_IteratorR>& __y) -: 372: { return !(__x < __y); } -: 373: //@} -: 374: -: 375:#if __cplusplus < 201103L -: 376: template -: 377: inline typename reverse_iterator<_Iterator>::difference_type -: 378: operator-(const reverse_iterator<_Iterator>& __x, -: 379: const reverse_iterator<_Iterator>& __y) -: 380: { return __y.base() - __x.base(); } -: 381: -: 382: template -: 383: inline typename reverse_iterator<_IteratorL>::difference_type -: 384: operator-(const reverse_iterator<_IteratorL>& __x, -: 385: const reverse_iterator<_IteratorR>& __y) -: 386: { return __y.base() - __x.base(); } -: 387:#else -: 388: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 389: // DR 685. reverse_iterator/move_iterator difference has invalid signatures -: 390: template -: 391: inline _GLIBCXX17_CONSTEXPR auto -: 392: operator-(const reverse_iterator<_IteratorL>& __x, -: 393: const reverse_iterator<_IteratorR>& __y) -: 394: -> decltype(__y.base() - __x.base()) -: 395: { return __y.base() - __x.base(); } -: 396:#endif -: 397: -: 398: template -: 399: inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> -: 400: operator+(typename reverse_iterator<_Iterator>::difference_type __n, -: 401: const reverse_iterator<_Iterator>& __x) -: 402: { return reverse_iterator<_Iterator>(__x.base() - __n); } -: 403: -: 404:#if __cplusplus >= 201103L -: 405: // Same as C++14 make_reverse_iterator but used in C++03 mode too. -: 406: template -: 407: inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> -: 408: __make_reverse_iterator(_Iterator __i) -: 409: { return reverse_iterator<_Iterator>(__i); } -: 410: -: 411:# if __cplusplus > 201103L -: 412:# define __cpp_lib_make_reverse_iterator 201402 -: 413: -: 414: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 415: // DR 2285. make_reverse_iterator -: 416: /// Generator function for reverse_iterator. -: 417: template -: 418: inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> -: 419: make_reverse_iterator(_Iterator __i) -: 420: { return reverse_iterator<_Iterator>(__i); } -: 421:# endif -: 422:#endif -: 423: -: 424:#if __cplusplus >= 201103L -: 425: template -: 426: auto -: 427: __niter_base(reverse_iterator<_Iterator> __it) -: 428: -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) -: 429: { return __make_reverse_iterator(__niter_base(__it.base())); } -: 430: -: 431: template -: 432: struct __is_move_iterator > -: 433: : __is_move_iterator<_Iterator> -: 434: { }; -: 435: -: 436: template -: 437: auto -: 438: __miter_base(reverse_iterator<_Iterator> __it) -: 439: -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) -: 440: { return __make_reverse_iterator(__miter_base(__it.base())); } -: 441:#endif -: 442: -: 443: // 24.4.2.2.1 back_insert_iterator -: 444: /** -: 445: * @brief Turns assignment into insertion. -: 446: * -: 447: * These are output iterators, constructed from a container-of-T. -: 448: * Assigning a T to the iterator appends it to the container using -: 449: * push_back. -: 450: * -: 451: * Tip: Using the back_inserter function to create these iterators can -: 452: * save typing. -: 453: */ -: 454: template -: 455: class back_insert_iterator -: 456: : public iterator -: 457: { -: 458: protected: -: 459: _Container* container; -: 460: -: 461: public: -: 462: /// A nested typedef for the type of whatever container you used. -: 463: typedef _Container container_type; -: 464: -: 465: /// The only way to create this %iterator is with a container. -: 466: explicit -: 467: back_insert_iterator(_Container& __x) -: 468: : container(std::__addressof(__x)) { } -: 469: -: 470: /** -: 471: * @param __value An instance of whatever type -: 472: * container_type::const_reference is; presumably a -: 473: * reference-to-const T for container. -: 474: * @return This %iterator, for chained operations. -: 475: * -: 476: * This kind of %iterator doesn't really have a @a position in the -: 477: * container (you can think of the position as being permanently at -: 478: * the end, if you like). Assigning a value to the %iterator will -: 479: * always append the value to the end of the container. -: 480: */ -: 481:#if __cplusplus < 201103L -: 482: back_insert_iterator& -: 483: operator=(typename _Container::const_reference __value) -: 484: { -: 485: container->push_back(__value); -: 486: return *this; -: 487: } -: 488:#else -: 489: back_insert_iterator& -: 490: operator=(const typename _Container::value_type& __value) -: 491: { -: 492: container->push_back(__value); -: 493: return *this; -: 494: } -: 495: -: 496: back_insert_iterator& -: 497: operator=(typename _Container::value_type&& __value) -: 498: { -: 499: container->push_back(std::move(__value)); -: 500: return *this; -: 501: } -: 502:#endif -: 503: -: 504: /// Simply returns *this. -: 505: back_insert_iterator& -: 506: operator*() -: 507: { return *this; } -: 508: -: 509: /// Simply returns *this. (This %iterator does not @a move.) -: 510: back_insert_iterator& -: 511: operator++() -: 512: { return *this; } -: 513: -: 514: /// Simply returns *this. (This %iterator does not @a move.) -: 515: back_insert_iterator -: 516: operator++(int) -: 517: { return *this; } -: 518: }; -: 519: -: 520: /** -: 521: * @param __x A container of arbitrary type. -: 522: * @return An instance of back_insert_iterator working on @p __x. -: 523: * -: 524: * This wrapper function helps in creating back_insert_iterator instances. -: 525: * Typing the name of the %iterator requires knowing the precise full -: 526: * type of the container, which can be tedious and impedes generic -: 527: * programming. Using this function lets you take advantage of automatic -: 528: * template parameter deduction, making the compiler match the correct -: 529: * types for you. -: 530: */ -: 531: template -: 532: inline back_insert_iterator<_Container> -: 533: back_inserter(_Container& __x) -: 534: { return back_insert_iterator<_Container>(__x); } -: 535: -: 536: /** -: 537: * @brief Turns assignment into insertion. -: 538: * -: 539: * These are output iterators, constructed from a container-of-T. -: 540: * Assigning a T to the iterator prepends it to the container using -: 541: * push_front. -: 542: * -: 543: * Tip: Using the front_inserter function to create these iterators can -: 544: * save typing. -: 545: */ -: 546: template -: 547: class front_insert_iterator -: 548: : public iterator -: 549: { -: 550: protected: -: 551: _Container* container; -: 552: -: 553: public: -: 554: /// A nested typedef for the type of whatever container you used. -: 555: typedef _Container container_type; -: 556: -: 557: /// The only way to create this %iterator is with a container. -: 558: explicit front_insert_iterator(_Container& __x) -: 559: : container(std::__addressof(__x)) { } -: 560: -: 561: /** -: 562: * @param __value An instance of whatever type -: 563: * container_type::const_reference is; presumably a -: 564: * reference-to-const T for container. -: 565: * @return This %iterator, for chained operations. -: 566: * -: 567: * This kind of %iterator doesn't really have a @a position in the -: 568: * container (you can think of the position as being permanently at -: 569: * the front, if you like). Assigning a value to the %iterator will -: 570: * always prepend the value to the front of the container. -: 571: */ -: 572:#if __cplusplus < 201103L -: 573: front_insert_iterator& -: 574: operator=(typename _Container::const_reference __value) -: 575: { -: 576: container->push_front(__value); -: 577: return *this; -: 578: } -: 579:#else -: 580: front_insert_iterator& -: 581: operator=(const typename _Container::value_type& __value) -: 582: { -: 583: container->push_front(__value); -: 584: return *this; -: 585: } -: 586: -: 587: front_insert_iterator& -: 588: operator=(typename _Container::value_type&& __value) -: 589: { -: 590: container->push_front(std::move(__value)); -: 591: return *this; -: 592: } -: 593:#endif -: 594: -: 595: /// Simply returns *this. -: 596: front_insert_iterator& -: 597: operator*() -: 598: { return *this; } -: 599: -: 600: /// Simply returns *this. (This %iterator does not @a move.) -: 601: front_insert_iterator& -: 602: operator++() -: 603: { return *this; } -: 604: -: 605: /// Simply returns *this. (This %iterator does not @a move.) -: 606: front_insert_iterator -: 607: operator++(int) -: 608: { return *this; } -: 609: }; -: 610: -: 611: /** -: 612: * @param __x A container of arbitrary type. -: 613: * @return An instance of front_insert_iterator working on @p x. -: 614: * -: 615: * This wrapper function helps in creating front_insert_iterator instances. -: 616: * Typing the name of the %iterator requires knowing the precise full -: 617: * type of the container, which can be tedious and impedes generic -: 618: * programming. Using this function lets you take advantage of automatic -: 619: * template parameter deduction, making the compiler match the correct -: 620: * types for you. -: 621: */ -: 622: template -: 623: inline front_insert_iterator<_Container> -: 624: front_inserter(_Container& __x) -: 625: { return front_insert_iterator<_Container>(__x); } -: 626: -: 627: /** -: 628: * @brief Turns assignment into insertion. -: 629: * -: 630: * These are output iterators, constructed from a container-of-T. -: 631: * Assigning a T to the iterator inserts it in the container at the -: 632: * %iterator's position, rather than overwriting the value at that -: 633: * position. -: 634: * -: 635: * (Sequences will actually insert a @e copy of the value before the -: 636: * %iterator's position.) -: 637: * -: 638: * Tip: Using the inserter function to create these iterators can -: 639: * save typing. -: 640: */ -: 641: template -: 642: class insert_iterator -: 643: : public iterator -: 644: { -: 645: protected: -: 646: _Container* container; -: 647: typename _Container::iterator iter; -: 648: -: 649: public: -: 650: /// A nested typedef for the type of whatever container you used. -: 651: typedef _Container container_type; -: 652: -: 653: /** -: 654: * The only way to create this %iterator is with a container and an -: 655: * initial position (a normal %iterator into the container). -: 656: */ -: 657: insert_iterator(_Container& __x, typename _Container::iterator __i) -: 658: : container(std::__addressof(__x)), iter(__i) {} -: 659: -: 660: /** -: 661: * @param __value An instance of whatever type -: 662: * container_type::const_reference is; presumably a -: 663: * reference-to-const T for container. -: 664: * @return This %iterator, for chained operations. -: 665: * -: 666: * This kind of %iterator maintains its own position in the -: 667: * container. Assigning a value to the %iterator will insert the -: 668: * value into the container at the place before the %iterator. -: 669: * -: 670: * The position is maintained such that subsequent assignments will -: 671: * insert values immediately after one another. For example, -: 672: * @code -: 673: * // vector v contains A and Z -: 674: * -: 675: * insert_iterator i (v, ++v.begin()); -: 676: * i = 1; -: 677: * i = 2; -: 678: * i = 3; -: 679: * -: 680: * // vector v contains A, 1, 2, 3, and Z -: 681: * @endcode -: 682: */ -: 683:#if __cplusplus < 201103L -: 684: insert_iterator& -: 685: operator=(typename _Container::const_reference __value) -: 686: { -: 687: iter = container->insert(iter, __value); -: 688: ++iter; -: 689: return *this; -: 690: } -: 691:#else -: 692: insert_iterator& -: 693: operator=(const typename _Container::value_type& __value) -: 694: { -: 695: iter = container->insert(iter, __value); -: 696: ++iter; -: 697: return *this; -: 698: } -: 699: -: 700: insert_iterator& -: 701: operator=(typename _Container::value_type&& __value) -: 702: { -: 703: iter = container->insert(iter, std::move(__value)); -: 704: ++iter; -: 705: return *this; -: 706: } -: 707:#endif -: 708: -: 709: /// Simply returns *this. -: 710: insert_iterator& -: 711: operator*() -: 712: { return *this; } -: 713: -: 714: /// Simply returns *this. (This %iterator does not @a move.) -: 715: insert_iterator& -: 716: operator++() -: 717: { return *this; } -: 718: -: 719: /// Simply returns *this. (This %iterator does not @a move.) -: 720: insert_iterator& -: 721: operator++(int) -: 722: { return *this; } -: 723: }; -: 724: -: 725: /** -: 726: * @param __x A container of arbitrary type. -: 727: * @return An instance of insert_iterator working on @p __x. -: 728: * -: 729: * This wrapper function helps in creating insert_iterator instances. -: 730: * Typing the name of the %iterator requires knowing the precise full -: 731: * type of the container, which can be tedious and impedes generic -: 732: * programming. Using this function lets you take advantage of automatic -: 733: * template parameter deduction, making the compiler match the correct -: 734: * types for you. -: 735: */ -: 736: template -: 737: inline insert_iterator<_Container> -: 738: inserter(_Container& __x, _Iterator __i) -: 739: { -: 740: return insert_iterator<_Container>(__x, -: 741: typename _Container::iterator(__i)); -: 742: } -: 743: -: 744: // @} group iterators -: 745: -: 746:_GLIBCXX_END_NAMESPACE_VERSION -: 747:} // namespace -: 748: -: 749:namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -: 750:{ -: 751:_GLIBCXX_BEGIN_NAMESPACE_VERSION -: 752: -: 753: // This iterator adapter is @a normal in the sense that it does not -: 754: // change the semantics of any of the operators of its iterator -: 755: // parameter. Its primary purpose is to convert an iterator that is -: 756: // not a class, e.g. a pointer, into an iterator that is a class. -: 757: // The _Container parameter exists solely so that different containers -: 758: // using this template can instantiate different types, even if the -: 759: // _Iterator parameter is the same. -: 760: using std::iterator_traits; -: 761: using std::iterator; -: 762: template -: 763: class __normal_iterator -: 764: { -: 765: protected: -: 766: _Iterator _M_current; -: 767: -: 768: typedef iterator_traits<_Iterator> __traits_type; -: 769: -: 770: public: -: 771: typedef _Iterator iterator_type; -: 772: typedef typename __traits_type::iterator_category iterator_category; -: 773: typedef typename __traits_type::value_type value_type; -: 774: typedef typename __traits_type::difference_type difference_type; -: 775: typedef typename __traits_type::reference reference; -: 776: typedef typename __traits_type::pointer pointer; -: 777: -: 778: _GLIBCXX_CONSTEXPR __normal_iterator() _GLIBCXX_NOEXCEPT -: 779: : _M_current(_Iterator()) { } -: 780: -: 781: explicit function _ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEC2ERKS7_ called 0 returned 0% blocks executed 0% function _ZN9__gnu_cxx17__normal_iteratorIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEEC2ERKS7_ called 0 returned 0% blocks executed 0% function _ZN9__gnu_cxx17__normal_iteratorIPKN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEEC2ERKS8_ called 0 returned 0% blocks executed 0% function _ZN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEC2ERKS8_ called 0 returned 0% blocks executed 0% #####: 782: __normal_iterator(const _Iterator& __i) _GLIBCXX_NOEXCEPT call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 783: : _M_current(__i) { } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed -: 784: -: 785: // Allow iterator to const_iterator conversion -: 786: template -: 787: __normal_iterator(const __normal_iterator<_Iter, -: 788: typename __enable_if< -: 789: (std::__are_same<_Iter, typename _Container::pointer>::__value), -: 790: _Container>::__type>& __i) _GLIBCXX_NOEXCEPT -: 791: : _M_current(__i.base()) { } -: 792: -: 793: // Forward iterator requirements -: 794: reference function _ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv called 0 returned 0% blocks executed 0% function _ZNK9__gnu_cxx17__normal_iteratorIPKN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEEdeEv called 0 returned 0% blocks executed 0% function _ZNK9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv called 0 returned 0% blocks executed 0% #####: 795: operator*() const _GLIBCXX_NOEXCEPT #####: 796: { return *_M_current; } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed -: 797: -: 798: pointer -: 799: operator->() const _GLIBCXX_NOEXCEPT -: 800: { return _M_current; } -: 801: -: 802: __normal_iterator& function _ZN9__gnu_cxx17__normal_iteratorIPKN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEEppEv called 0 returned 0% blocks executed 0% function _ZN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv called 0 returned 0% blocks executed 0% #####: 803: operator++() _GLIBCXX_NOEXCEPT -: 804: { #####: 805: ++_M_current; call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 806: return *this; call 0 never executed call 1 never executed -: 807: } -: 808: -: 809: __normal_iterator -: 810: operator++(int) _GLIBCXX_NOEXCEPT -: 811: { return __normal_iterator(_M_current++); } -: 812: -: 813: // Bidirectional iterator requirements -: 814: __normal_iterator& -: 815: operator--() _GLIBCXX_NOEXCEPT -: 816: { -: 817: --_M_current; -: 818: return *this; -: 819: } -: 820: -: 821: __normal_iterator -: 822: operator--(int) _GLIBCXX_NOEXCEPT -: 823: { return __normal_iterator(_M_current--); } -: 824: -: 825: // Random access iterator requirements -: 826: reference -: 827: operator[](difference_type __n) const _GLIBCXX_NOEXCEPT -: 828: { return _M_current[__n]; } -: 829: -: 830: __normal_iterator& -: 831: operator+=(difference_type __n) _GLIBCXX_NOEXCEPT -: 832: { _M_current += __n; return *this; } -: 833: -: 834: __normal_iterator -: 835: operator+(difference_type __n) const _GLIBCXX_NOEXCEPT -: 836: { return __normal_iterator(_M_current + __n); } -: 837: -: 838: __normal_iterator& -: 839: operator-=(difference_type __n) _GLIBCXX_NOEXCEPT -: 840: { _M_current -= __n; return *this; } -: 841: -: 842: __normal_iterator function _ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEmiEl called 0 returned 0% blocks executed 0% #####: 843: operator-(difference_type __n) const _GLIBCXX_NOEXCEPT #####: 844: { return __normal_iterator(_M_current - __n); } call 0 never executed call 1 never executed call 2 never executed -: 845: -: 846: const _Iterator& function _ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEE4baseEv called 0 returned 0% blocks executed 0% function _ZNK9__gnu_cxx17__normal_iteratorIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEE4baseEv called 0 returned 0% blocks executed 0% function _ZNK9__gnu_cxx17__normal_iteratorIPKN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEE4baseEv called 0 returned 0% blocks executed 0% function _ZNK9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEE4baseEv called 0 returned 0% blocks executed 0% #####: 847: base() const _GLIBCXX_NOEXCEPT #####: 848: { return _M_current; } call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 849: }; -: 850: -: 851: // Note: In what follows, the left- and right-hand-side iterators are -: 852: // allowed to vary in types (conceptually in cv-qualification) so that -: 853: // comparison between cv-qualified and non-cv-qualified iterators be -: 854: // valid. However, the greedy and unfriendly operators in std::rel_ops -: 855: // will make overload resolution ambiguous (when in scope) if we don't -: 856: // provide overloads whose operands are of the same type. Can someone -: 857: // remind me what generic programming is about? -- Gaby -: 858: -: 859: // Forward iterator requirements -: 860: template -: 861: inline bool -: 862: operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 863: const __normal_iterator<_IteratorR, _Container>& __rhs) -: 864: _GLIBCXX_NOEXCEPT -: 865: { return __lhs.base() == __rhs.base(); } -: 866: -: 867: template -: 868: inline bool function _ZN9__gnu_cxxeqIPKN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ called 0 returned 0% blocks executed 0% #####: 869: operator==(const __normal_iterator<_Iterator, _Container>& __lhs, -: 870: const __normal_iterator<_Iterator, _Container>& __rhs) -: 871: _GLIBCXX_NOEXCEPT #####: 872: { return __lhs.base() == __rhs.base(); } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 873: -: 874: template -: 875: inline bool -: 876: operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 877: const __normal_iterator<_IteratorR, _Container>& __rhs) -: 878: _GLIBCXX_NOEXCEPT -: 879: { return __lhs.base() != __rhs.base(); } -: 880: -: 881: template -: 882: inline bool function _ZN9__gnu_cxxneIPKN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ called 0 returned 0% blocks executed 0% function _ZN9__gnu_cxxneIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_ called 0 returned 0% blocks executed 0% #####: 883: operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, -: 884: const __normal_iterator<_Iterator, _Container>& __rhs) -: 885: _GLIBCXX_NOEXCEPT #####: 886: { return __lhs.base() != __rhs.base(); } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed -: 887: -: 888: // Random access iterator requirements -: 889: template -: 890: inline bool -: 891: operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 892: const __normal_iterator<_IteratorR, _Container>& __rhs) -: 893: _GLIBCXX_NOEXCEPT -: 894: { return __lhs.base() < __rhs.base(); } -: 895: -: 896: template -: 897: inline bool -: 898: operator<(const __normal_iterator<_Iterator, _Container>& __lhs, -: 899: const __normal_iterator<_Iterator, _Container>& __rhs) -: 900: _GLIBCXX_NOEXCEPT -: 901: { return __lhs.base() < __rhs.base(); } -: 902: -: 903: template -: 904: inline bool -: 905: operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 906: const __normal_iterator<_IteratorR, _Container>& __rhs) -: 907: _GLIBCXX_NOEXCEPT -: 908: { return __lhs.base() > __rhs.base(); } -: 909: -: 910: template -: 911: inline bool -: 912: operator>(const __normal_iterator<_Iterator, _Container>& __lhs, -: 913: const __normal_iterator<_Iterator, _Container>& __rhs) -: 914: _GLIBCXX_NOEXCEPT -: 915: { return __lhs.base() > __rhs.base(); } -: 916: -: 917: template -: 918: inline bool -: 919: operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 920: const __normal_iterator<_IteratorR, _Container>& __rhs) -: 921: _GLIBCXX_NOEXCEPT -: 922: { return __lhs.base() <= __rhs.base(); } -: 923: -: 924: template -: 925: inline bool -: 926: operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, -: 927: const __normal_iterator<_Iterator, _Container>& __rhs) -: 928: _GLIBCXX_NOEXCEPT -: 929: { return __lhs.base() <= __rhs.base(); } -: 930: -: 931: template -: 932: inline bool -: 933: operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 934: const __normal_iterator<_IteratorR, _Container>& __rhs) -: 935: _GLIBCXX_NOEXCEPT -: 936: { return __lhs.base() >= __rhs.base(); } -: 937: -: 938: template -: 939: inline bool -: 940: operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, -: 941: const __normal_iterator<_Iterator, _Container>& __rhs) -: 942: _GLIBCXX_NOEXCEPT -: 943: { return __lhs.base() >= __rhs.base(); } -: 944: -: 945: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 946: // According to the resolution of DR179 not only the various comparison -: 947: // operators but also operator- must accept mixed iterator/const_iterator -: 948: // parameters. -: 949: template -: 950:#if __cplusplus >= 201103L -: 951: // DR 685. -: 952: inline auto -: 953: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 954: const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept -: 955: -> decltype(__lhs.base() - __rhs.base()) -: 956:#else -: 957: inline typename __normal_iterator<_IteratorL, _Container>::difference_type -: 958: operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, -: 959: const __normal_iterator<_IteratorR, _Container>& __rhs) -: 960:#endif -: 961: { return __lhs.base() - __rhs.base(); } -: 962: -: 963: template -: 964: inline typename __normal_iterator<_Iterator, _Container>::difference_type function _ZN9__gnu_cxxmiIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSE_SH_ called 0 returned 0% blocks executed 0% function _ZN9__gnu_cxxmiIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt6vectorIS6_SaIS6_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKSE_SH_ called 0 returned 0% blocks executed 0% #####: 965: operator-(const __normal_iterator<_Iterator, _Container>& __lhs, -: 966: const __normal_iterator<_Iterator, _Container>& __rhs) -: 967: _GLIBCXX_NOEXCEPT #####: 968: { return __lhs.base() - __rhs.base(); } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed -: 969: -: 970: template -: 971: inline __normal_iterator<_Iterator, _Container> -: 972: operator+(typename __normal_iterator<_Iterator, _Container>::difference_type -: 973: __n, const __normal_iterator<_Iterator, _Container>& __i) -: 974: _GLIBCXX_NOEXCEPT -: 975: { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } -: 976: -: 977:_GLIBCXX_END_NAMESPACE_VERSION -: 978:} // namespace -: 979: -: 980:namespace std _GLIBCXX_VISIBILITY(default) -: 981:{ -: 982:_GLIBCXX_BEGIN_NAMESPACE_VERSION -: 983: -: 984: template -: 985: _Iterator function _ZSt12__niter_baseIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS5_SaIS5_EEET_N9__gnu_cxx17__normal_iteratorISB_T0_EE called 0 returned 0% blocks executed 0% #####: 986: __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) #####: 987: { return __it.base(); } call 0 never executed call 1 never executed -: 988: -: 989:_GLIBCXX_END_NAMESPACE_VERSION -: 990:} // namespace -: 991: -: 992:#if __cplusplus >= 201103L -: 993: -: 994:namespace std _GLIBCXX_VISIBILITY(default) -: 995:{ -: 996:_GLIBCXX_BEGIN_NAMESPACE_VERSION -: 997: -: 998: /** -: 999: * @addtogroup iterators -: 1000: * @{ -: 1001: */ -: 1002: -: 1003: // 24.4.3 Move iterators -: 1004: /** -: 1005: * Class template move_iterator is an iterator adapter with the same -: 1006: * behavior as the underlying iterator except that its dereference -: 1007: * operator implicitly converts the value returned by the underlying -: 1008: * iterator's dereference operator to an rvalue reference. Some -: 1009: * generic algorithms can be called with move iterators to replace -: 1010: * copying with moving. -: 1011: */ -: 1012: template -: 1013: class move_iterator -: 1014: { -: 1015: protected: -: 1016: _Iterator _M_current; -: 1017: -: 1018: typedef iterator_traits<_Iterator> __traits_type; -: 1019: typedef typename __traits_type::reference __base_ref; -: 1020: -: 1021: public: -: 1022: typedef _Iterator iterator_type; -: 1023: typedef typename __traits_type::iterator_category iterator_category; -: 1024: typedef typename __traits_type::value_type value_type; -: 1025: typedef typename __traits_type::difference_type difference_type; -: 1026: // NB: DR 680. -: 1027: typedef _Iterator pointer; -: 1028: // _GLIBCXX_RESOLVE_LIB_DEFECTS -: 1029: // 2106. move_iterator wrapping iterators returning prvalues -: 1030: typedef typename conditional::value, -: 1031: typename remove_reference<__base_ref>::type&&, -: 1032: __base_ref>::type reference; -: 1033: -: 1034: _GLIBCXX17_CONSTEXPR -: 1035: move_iterator() -: 1036: : _M_current() { } -: 1037: -: 1038: explicit _GLIBCXX17_CONSTEXPR function _ZNSt13move_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEC2ES6_ called 0 returned 0% blocks executed 0% function _ZNSt13move_iteratorIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEEEC2ES6_ called 0 returned 0% blocks executed 0% #####: 1039: move_iterator(iterator_type __i) call 0 never executed call 1 never executed #####: 1040: : _M_current(__i) { } call 0 never executed call 1 never executed -: 1041: -: 1042: template -: 1043: _GLIBCXX17_CONSTEXPR -: 1044: move_iterator(const move_iterator<_Iter>& __i) -: 1045: : _M_current(__i.base()) { } -: 1046: -: 1047: _GLIBCXX17_CONSTEXPR iterator_type function _ZNKSt13move_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE4baseEv called 0 returned 0% blocks executed 0% function _ZNKSt13move_iteratorIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEEE4baseEv called 0 returned 0% blocks executed 0% #####: 1048: base() const #####: 1049: { return _M_current; } call 0 never executed call 1 never executed -: 1050: -: 1051: _GLIBCXX17_CONSTEXPR reference function _ZNKSt13move_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEdeEv called 0 returned 0% blocks executed 0% function _ZNKSt13move_iteratorIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEEEdeEv called 0 returned 0% blocks executed 0% #####: 1052: operator*() const #####: 1053: { return static_cast(*_M_current); } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 1054: -: 1055: _GLIBCXX17_CONSTEXPR pointer -: 1056: operator->() const -: 1057: { return _M_current; } -: 1058: -: 1059: _GLIBCXX17_CONSTEXPR move_iterator& function _ZNSt13move_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEppEv called 0 returned 0% blocks executed 0% function _ZNSt13move_iteratorIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEEEppEv called 0 returned 0% blocks executed 0% #####: 1060: operator++() -: 1061: { #####: 1062: ++_M_current; call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 1063: return *this; call 0 never executed call 1 never executed -: 1064: } -: 1065: -: 1066: _GLIBCXX17_CONSTEXPR move_iterator -: 1067: operator++(int) -: 1068: { -: 1069: move_iterator __tmp = *this; -: 1070: ++_M_current; -: 1071: return __tmp; -: 1072: } -: 1073: -: 1074: _GLIBCXX17_CONSTEXPR move_iterator& -: 1075: operator--() -: 1076: { -: 1077: --_M_current; -: 1078: return *this; -: 1079: } -: 1080: -: 1081: _GLIBCXX17_CONSTEXPR move_iterator -: 1082: operator--(int) -: 1083: { -: 1084: move_iterator __tmp = *this; -: 1085: --_M_current; -: 1086: return __tmp; -: 1087: } -: 1088: -: 1089: _GLIBCXX17_CONSTEXPR move_iterator -: 1090: operator+(difference_type __n) const -: 1091: { return move_iterator(_M_current + __n); } -: 1092: -: 1093: _GLIBCXX17_CONSTEXPR move_iterator& -: 1094: operator+=(difference_type __n) -: 1095: { -: 1096: _M_current += __n; -: 1097: return *this; -: 1098: } -: 1099: -: 1100: _GLIBCXX17_CONSTEXPR move_iterator -: 1101: operator-(difference_type __n) const -: 1102: { return move_iterator(_M_current - __n); } -: 1103: -: 1104: _GLIBCXX17_CONSTEXPR move_iterator& -: 1105: operator-=(difference_type __n) -: 1106: { -: 1107: _M_current -= __n; -: 1108: return *this; -: 1109: } -: 1110: -: 1111: _GLIBCXX17_CONSTEXPR reference -: 1112: operator[](difference_type __n) const -: 1113: { return std::move(_M_current[__n]); } -: 1114: }; -: 1115: -: 1116: // Note: See __normal_iterator operators note from Gaby to understand -: 1117: // why there are always 2 versions for most of the move_iterator -: 1118: // operators. -: 1119: template -: 1120: inline _GLIBCXX17_CONSTEXPR bool -: 1121: operator==(const move_iterator<_IteratorL>& __x, -: 1122: const move_iterator<_IteratorR>& __y) -: 1123: { return __x.base() == __y.base(); } -: 1124: -: 1125: template -: 1126: inline _GLIBCXX17_CONSTEXPR bool function _ZSteqIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEbRKSt13move_iteratorIT_ESB_ called 0 returned 0% blocks executed 0% function _ZSteqIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEEEbRKSt13move_iteratorIT_ESB_ called 0 returned 0% blocks executed 0% #####: 1127: operator==(const move_iterator<_Iterator>& __x, -: 1128: const move_iterator<_Iterator>& __y) #####: 1129: { return __x.base() == __y.base(); } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed -: 1130: -: 1131: template -: 1132: inline _GLIBCXX17_CONSTEXPR bool -: 1133: operator!=(const move_iterator<_IteratorL>& __x, -: 1134: const move_iterator<_IteratorR>& __y) -: 1135: { return !(__x == __y); } -: 1136: -: 1137: template -: 1138: inline _GLIBCXX17_CONSTEXPR bool function _ZStneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEbRKSt13move_iteratorIT_ESB_ called 0 returned 0% blocks executed 0% function _ZStneIPN5boost10shared_ptrIKN4ribi15DotMatrixStringEEEEbRKSt13move_iteratorIT_ESB_ called 0 returned 0% blocks executed 0% #####: 1139: operator!=(const move_iterator<_Iterator>& __x, -: 1140: const move_iterator<_Iterator>& __y) #####: 1141: { return !(__x == __y); } call 0 never executed call 1 never executed -: 1142: -: 1143: template -: 1144: inline _GLIBCXX17_CONSTEXPR bool -: 1145: operator<(const move_iterator<_IteratorL>& __x, -: 1146: const move_iterator<_IteratorR>& __y) -: 1147: { return __x.base() < __y.base(); } -: 1148: -: 1149: template -: 1150: inline _GLIBCXX17_CONSTEXPR bool -: 1151: operator<(const move_iterator<_Iterator>& __x, -: 1152: const move_iterator<_Iterator>& __y) -: 1153: { return __x.base() < __y.base(); } -: 1154: -: 1155: template -: 1156: inline _GLIBCXX17_CONSTEXPR bool -: 1157: operator<=(const move_iterator<_IteratorL>& __x, -: 1158: const move_iterator<_IteratorR>& __y) -: 1159: { return !(__y < __x); } -: 1160: -: 1161: template -: 1162: inline _GLIBCXX17_CONSTEXPR bool -: 1163: operator<=(const move_iterator<_Iterator>& __x, -: 1164: const move_iterator<_Iterator>& __y) -: 1165: { return !(__y < __x); } -: 1166: -: 1167: template -: 1168: inline _GLIBCXX17_CONSTEXPR bool -: 1169: operator>(const move_iterator<_IteratorL>& __x, -: 1170: const move_iterator<_IteratorR>& __y) -: 1171: { return __y < __x; } -: 1172: -: 1173: template -: 1174: inline _GLIBCXX17_CONSTEXPR bool -: 1175: operator>(const move_iterator<_Iterator>& __x, -: 1176: const move_iterator<_Iterator>& __y) -: 1177: { return __y < __x; } -: 1178: -: 1179: template -: 1180: inline _GLIBCXX17_CONSTEXPR bool -: 1181: operator>=(const move_iterator<_IteratorL>& __x, -: 1182: const move_iterator<_IteratorR>& __y) -: 1183: { return !(__x < __y); } -: 1184: -: 1185: template -: 1186: inline _GLIBCXX17_CONSTEXPR bool -: 1187: operator>=(const move_iterator<_Iterator>& __x, -: 1188: const move_iterator<_Iterator>& __y) -: 1189: { return !(__x < __y); } -: 1190: -: 1191: // DR 685. -: 1192: template -: 1193: inline _GLIBCXX17_CONSTEXPR auto -: 1194: operator-(const move_iterator<_IteratorL>& __x, -: 1195: const move_iterator<_IteratorR>& __y) -: 1196: -> decltype(__x.base() - __y.base()) -: 1197: { return __x.base() - __y.base(); } -: 1198: -: 1199: template -: 1200: inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> -: 1201: operator+(typename move_iterator<_Iterator>::difference_type __n, -: 1202: const move_iterator<_Iterator>& __x) -: 1203: { return __x + __n; } -: 1204: -: 1205: template -: 1206: inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> -: 1207: make_move_iterator(_Iterator __i) -: 1208: { return move_iterator<_Iterator>(__i); } -: 1209: -: 1210: template::value_type>::value, -: 1213: _Iterator, move_iterator<_Iterator>>::type> -: 1214: inline _GLIBCXX17_CONSTEXPR _ReturnType -: 1215: __make_move_if_noexcept_iterator(_Iterator __i) -: 1216: { return _ReturnType(__i); } -: 1217: -: 1218: // Overload for pointers that matches std::move_if_noexcept more closely, -: 1219: // returning a constant iterator when we don't want to move. -: 1220: template::value, -: 1222: const _Tp*, move_iterator<_Tp*>>::type> -: 1223: inline _GLIBCXX17_CONSTEXPR _ReturnType function _ZSt32__make_move_if_noexcept_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt13move_iteratorIPS5_EET0_PT_ called 0 returned 0% blocks executed 0% function _ZSt32__make_move_if_noexcept_iteratorIN5boost10shared_ptrIKN4ribi15DotMatrixStringEEESt13move_iteratorIPS5_EET0_PT_ called 0 returned 0% blocks executed 0% #####: 1224: __make_move_if_noexcept_iterator(_Tp* __i) #####: 1225: { return _ReturnType(__i); } call 0 never executed call 1 never executed -: 1226: -: 1227: // @} group iterators -: 1228: -: 1229: template -: 1230: auto -: 1231: __niter_base(move_iterator<_Iterator> __it) -: 1232: -> decltype(make_move_iterator(__niter_base(__it.base()))) -: 1233: { return make_move_iterator(__niter_base(__it.base())); } -: 1234: -: 1235: template -: 1236: struct __is_move_iterator > -: 1237: { -: 1238: enum { __value = 1 }; -: 1239: typedef __true_type __type; -: 1240: }; -: 1241: -: 1242: template -: 1243: auto -: 1244: __miter_base(move_iterator<_Iterator> __it) -: 1245: -> decltype(__miter_base(__it.base())) -: 1246: { return __miter_base(__it.base()); } -: 1247: -: 1248:_GLIBCXX_END_NAMESPACE_VERSION -: 1249:} // namespace -: 1250: -: 1251:#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) std::make_move_iterator(_Iter) -: 1252:#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) \ -: 1253: std::__make_move_if_noexcept_iterator(_Iter) -: 1254:#else -: 1255:#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) (_Iter) -: 1256:#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) (_Iter) -: 1257:#endif // C++11 -: 1258: -: 1259:#ifdef _GLIBCXX_DEBUG -: 1260:# include -: 1261:#endif -: 1262: -: 1263:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#bimap#relation#detail#mutant.hpp.gcov -: 0:Source:/usr/include/boost/bimap/relation/detail/mutant.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Boost.Bimap -: 2:// -: 3:// Copyright (c) 2006-2007 Matias Capeletto -: 4:// -: 5:// Distributed under the Boost Software License, Version 1.0. -: 6:// (See accompanying file LICENSE_1_0.txt or copy at -: 7:// http://www.boost.org/LICENSE_1_0.txt) -: 8: -: 9:/// \file relation/detail/mutant.hpp -: 10:/// \brief Mutate functions to extract views of mutant classes. -: 11: -: 12:#ifndef BOOST_BIMAP_RELATION_DETAIL_MUTANT_HPP -: 13:#define BOOST_BIMAP_RELATION_DETAIL_MUTANT_HPP -: 14: -: 15:#if defined(_MSC_VER) -: 16:#pragma once -: 17:#endif -: 18: -: 19:#include -: 20: -: 21:#include -: 22:#include -: 23:#include -: 24:#include -: 25:#include -: 26:#include -: 27:#include -: 28:#include -: 29: -: 30:namespace boost { -: 31:namespace bimaps { -: 32:namespace relation { -: 33: -: 34:/// \brief Relation details, mutant idiom and symmetrical metafunctions builders. -: 35: -: 36:namespace detail { -: 37: -: 38://@{ -: 39:/// \brief Converts a mutant class to a view with zero overhead. -: 40:/** -: 41: -: 42:This function is a safe wrapper around reinterpret_cast. It checks at -: 43:compile time that the desired view is supported by the mutant class. -: 44:See also mutant, can_mutate_in. -: 45:\ingroup mutant_group -: 46: **/ -: 47: -: 48: -: 49:template< class View, class Type > -: 50:BOOST_DEDUCED_TYPENAME enable_if< mpl::not_< is_const< Type > >, -: 51: -: 52:View& -: 53: function _ZN5boost6bimaps8relation6detail6mutateINS1_15structured_pairINS0_4tags6taggedIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_9member_at5rightEEENS6_IKN4ribi17CanvasColorSystemENSE_4leftEEEN4mpl_2naENS1_13mirror_layoutEEENS1_15mutant_relationISL_SG_SN_Lb1EEEEENS_9enable_ifINS_3mpl4not_INS_8is_constIT0_EEEERT_E4typeERSW_ called 0 returned 0% blocks executed 0% function _ZN5boost6bimaps8relation6detail6mutateINS1_15structured_pairINS0_4tags6taggedIKN4ribi17CanvasColorSystemENS1_9member_at4leftEEENS6_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSA_5rightEEEN4mpl_2naENS1_13normal_layoutEEENS1_15mutant_relationISC_SL_SN_Lb1EEEEENS_9enable_ifINS_3mpl4not_INS_8is_constIT0_EEEERT_E4typeERSW_ called 0 returned 0% blocks executed 0% #####: 54:>::type mutate( Type & m ) -: 55:{ -: 56: BOOST_MPL_ASSERT(( -: 57: ::boost::mpl::contains -: 58: )); #####: 59: return *reinterpret_cast< View* >(boost::addressof(m)); call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 60:} -: 61: -: 62:template< class View, class Type > -: 63:BOOST_DEDUCED_TYPENAME enable_if< is_const< Type >, -: 64: -: 65:const View& -: 66: function _ZN5boost6bimaps8relation6detail6mutateINS1_15mutant_relationINS0_4tags6taggedIKN4ribi17CanvasColorSystemENS1_9member_at4leftEEENS6_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSA_5rightEEEN4mpl_2naELb1EEEKNS4_ISC_SL_SN_Lb0EEEEENS_9enable_ifINS_8is_constIT0_EERKT_E4typeERST_ called 0 returned 0% blocks executed 0% #####: 67:>::type mutate( Type & m ) -: 68:{ -: 69: BOOST_MPL_ASSERT(( -: 70: ::boost::mpl::contains -: 71: )); #####: 72: return *reinterpret_cast< const View* >(boost::addressof(m)); call 0 never executed call 1 never executed -: 73:} -: 74: -: 75://@} -: 76: -: 77:} // namespace detail -: 78:} // namespace relation -: 79:} // namespace bimaps -: 80:} // namespace boost -: 81: -: 82:#endif // BOOST_BIMAP_RELATION_DETAIL_MUTANT_HPP -: 83: <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#function#function_template.hpp.gcov -: 0:Source:/usr/include/boost/function/function_template.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Boost.Function library -: 2: -: 3:// Copyright Douglas Gregor 2001-2006 -: 4:// Copyright Emil Dotchevski 2007 -: 5:// Use, modification and distribution is subject to the Boost Software License, Version 1.0. -: 6:// (See accompanying file LICENSE_1_0.txt or copy at -: 7:// http://www.boost.org/LICENSE_1_0.txt) -: 8: -: 9:// For more information, see http://www.boost.org -: 10: -: 11:// Note: this header is a header template and must NOT have multiple-inclusion -: 12:// protection. -: 13:#include -: 14:#include -: 15: -: 16:#if defined(BOOST_MSVC) -: 17:# pragma warning( push ) -: 18:# pragma warning( disable : 4127 ) // "conditional expression is constant" -: 19:#endif -: 20: -: 21:#define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T) -: 22: -: 23:#define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T) -: 24: -: 25:#define BOOST_FUNCTION_PARM(J,I,D) BOOST_PP_CAT(T,I) BOOST_PP_CAT(a,I) -: 26: -: 27:#define BOOST_FUNCTION_PARMS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_PARM,BOOST_PP_EMPTY) -: 28: -: 29:#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES -: 30:# define BOOST_FUNCTION_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, a) -: 31:#else -: 32:# include -: 33:# define BOOST_FUNCTION_ARG(J,I,D) ::boost::forward< BOOST_PP_CAT(T,I) >(BOOST_PP_CAT(a,I)) -: 34:# define BOOST_FUNCTION_ARGS BOOST_PP_ENUM(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG,BOOST_PP_EMPTY) -: 35:#endif -: 36: -: 37:#define BOOST_FUNCTION_ARG_TYPE(J,I,D) \ -: 38: typedef BOOST_PP_CAT(T,I) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(I)),_type); -: 39: -: 40:#define BOOST_FUNCTION_ARG_TYPES BOOST_PP_REPEAT(BOOST_FUNCTION_NUM_ARGS,BOOST_FUNCTION_ARG_TYPE,BOOST_PP_EMPTY) -: 41: -: 42:// Comma if nonzero number of arguments -: 43:#if BOOST_FUNCTION_NUM_ARGS == 0 -: 44:# define BOOST_FUNCTION_COMMA -: 45:#else -: 46:# define BOOST_FUNCTION_COMMA , -: 47:#endif // BOOST_FUNCTION_NUM_ARGS > 0 -: 48: -: 49:// Class names used in this version of the code -: 50:#define BOOST_FUNCTION_FUNCTION BOOST_JOIN(function,BOOST_FUNCTION_NUM_ARGS) -: 51:#define BOOST_FUNCTION_FUNCTION_INVOKER \ -: 52: BOOST_JOIN(function_invoker,BOOST_FUNCTION_NUM_ARGS) -: 53:#define BOOST_FUNCTION_VOID_FUNCTION_INVOKER \ -: 54: BOOST_JOIN(void_function_invoker,BOOST_FUNCTION_NUM_ARGS) -: 55:#define BOOST_FUNCTION_FUNCTION_OBJ_INVOKER \ -: 56: BOOST_JOIN(function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -: 57:#define BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER \ -: 58: BOOST_JOIN(void_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -: 59:#define BOOST_FUNCTION_FUNCTION_REF_INVOKER \ -: 60: BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS) -: 61:#define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER \ -: 62: BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS) -: 63:#define BOOST_FUNCTION_MEMBER_INVOKER \ -: 64: BOOST_JOIN(function_mem_invoker,BOOST_FUNCTION_NUM_ARGS) -: 65:#define BOOST_FUNCTION_VOID_MEMBER_INVOKER \ -: 66: BOOST_JOIN(function_void_mem_invoker,BOOST_FUNCTION_NUM_ARGS) -: 67:#define BOOST_FUNCTION_GET_FUNCTION_INVOKER \ -: 68: BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS) -: 69:#define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER \ -: 70: BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS) -: 71:#define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER \ -: 72: BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS) -: 73:#define BOOST_FUNCTION_GET_MEMBER_INVOKER \ -: 74: BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS) -: 75:#define BOOST_FUNCTION_GET_INVOKER \ -: 76: BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS) -: 77:#define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS) -: 78: -: 79:#ifndef BOOST_NO_VOID_RETURNS -: 80:# define BOOST_FUNCTION_VOID_RETURN_TYPE void -: 81:# define BOOST_FUNCTION_RETURN(X) X -: 82:#else -: 83:# define BOOST_FUNCTION_VOID_RETURN_TYPE boost::detail::function::unusable -: 84:# define BOOST_FUNCTION_RETURN(X) X; return BOOST_FUNCTION_VOID_RETURN_TYPE () -: 85:#endif -: 86: -: 87:namespace boost { -: 88: namespace detail { -: 89: namespace function { -: 90: template< -: 91: typename FunctionPtr, -: 92: typename R BOOST_FUNCTION_COMMA -: 93: BOOST_FUNCTION_TEMPLATE_PARMS -: 94: > -: 95: struct BOOST_FUNCTION_FUNCTION_INVOKER -: 96: { -: 97: static R invoke(function_buffer& function_ptr BOOST_FUNCTION_COMMA -: 98: BOOST_FUNCTION_PARMS) -: 99: { -: 100: FunctionPtr f = reinterpret_cast(function_ptr.members.func_ptr); -: 101: return f(BOOST_FUNCTION_ARGS); -: 102: } -: 103: }; -: 104: -: 105: template< -: 106: typename FunctionPtr, -: 107: typename R BOOST_FUNCTION_COMMA -: 108: BOOST_FUNCTION_TEMPLATE_PARMS -: 109: > -: 110: struct BOOST_FUNCTION_VOID_FUNCTION_INVOKER -: 111: { -: 112: static BOOST_FUNCTION_VOID_RETURN_TYPE -: 113: invoke(function_buffer& function_ptr BOOST_FUNCTION_COMMA -: 114: BOOST_FUNCTION_PARMS) -: 115: -: 116: { -: 117: FunctionPtr f = reinterpret_cast(function_ptr.members.func_ptr); -: 118: BOOST_FUNCTION_RETURN(f(BOOST_FUNCTION_ARGS)); -: 119: } -: 120: }; -: 121: -: 122: template< -: 123: typename FunctionObj, -: 124: typename R BOOST_FUNCTION_COMMA -: 125: BOOST_FUNCTION_TEMPLATE_PARMS -: 126: > -: 127: struct BOOST_FUNCTION_FUNCTION_OBJ_INVOKER -: 128: { -: 129: static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA -: 130: BOOST_FUNCTION_PARMS) -: 131: -: 132: { -: 133: FunctionObj* f; -: 134: if (function_allows_small_object_optimization::value) -: 135: f = reinterpret_cast(function_obj_ptr.data); -: 136: else -: 137: f = reinterpret_cast(function_obj_ptr.members.obj_ptr); -: 138: return (*f)(BOOST_FUNCTION_ARGS); -: 139: } -: 140: }; -: 141: -: 142: template< -: 143: typename FunctionObj, -: 144: typename R BOOST_FUNCTION_COMMA -: 145: BOOST_FUNCTION_TEMPLATE_PARMS -: 146: > -: 147: struct BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER -: 148: { -: 149: static BOOST_FUNCTION_VOID_RETURN_TYPE -: 150: invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA -: 151: BOOST_FUNCTION_PARMS) -: 152: -: 153: { -: 154: FunctionObj* f; -: 155: if (function_allows_small_object_optimization::value) -: 156: f = reinterpret_cast(function_obj_ptr.data); -: 157: else -: 158: f = reinterpret_cast(function_obj_ptr.members.obj_ptr); -: 159: BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS)); -: 160: } -: 161: }; -: 162: -: 163: template< -: 164: typename FunctionObj, -: 165: typename R BOOST_FUNCTION_COMMA -: 166: BOOST_FUNCTION_TEMPLATE_PARMS -: 167: > -: 168: struct BOOST_FUNCTION_FUNCTION_REF_INVOKER -: 169: { -: 170: static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA -: 171: BOOST_FUNCTION_PARMS) -: 172: -: 173: { -: 174: FunctionObj* f = -: 175: reinterpret_cast(function_obj_ptr.members.obj_ptr); -: 176: return (*f)(BOOST_FUNCTION_ARGS); -: 177: } -: 178: }; -: 179: -: 180: template< -: 181: typename FunctionObj, -: 182: typename R BOOST_FUNCTION_COMMA -: 183: BOOST_FUNCTION_TEMPLATE_PARMS -: 184: > -: 185: struct BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER -: 186: { -: 187: static BOOST_FUNCTION_VOID_RETURN_TYPE -: 188: invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA -: 189: BOOST_FUNCTION_PARMS) -: 190: -: 191: { -: 192: FunctionObj* f = -: 193: reinterpret_cast(function_obj_ptr.members.obj_ptr); -: 194: BOOST_FUNCTION_RETURN((*f)(BOOST_FUNCTION_ARGS)); -: 195: } -: 196: }; -: 197: -: 198:#if BOOST_FUNCTION_NUM_ARGS > 0 -: 199: /* Handle invocation of member pointers. */ -: 200: template< -: 201: typename MemberPtr, -: 202: typename R BOOST_FUNCTION_COMMA -: 203: BOOST_FUNCTION_TEMPLATE_PARMS -: 204: > -: 205: struct BOOST_FUNCTION_MEMBER_INVOKER -: 206: { -: 207: static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA -: 208: BOOST_FUNCTION_PARMS) -: 209: -: 210: { -: 211: MemberPtr* f = -: 212: reinterpret_cast(function_obj_ptr.data); -: 213: return boost::mem_fn(*f)(BOOST_FUNCTION_ARGS); -: 214: } -: 215: }; -: 216: -: 217: template< -: 218: typename MemberPtr, -: 219: typename R BOOST_FUNCTION_COMMA -: 220: BOOST_FUNCTION_TEMPLATE_PARMS -: 221: > -: 222: struct BOOST_FUNCTION_VOID_MEMBER_INVOKER -: 223: { -: 224: static BOOST_FUNCTION_VOID_RETURN_TYPE -: 225: invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA -: 226: BOOST_FUNCTION_PARMS) -: 227: -: 228: { -: 229: MemberPtr* f = -: 230: reinterpret_cast(function_obj_ptr.data); -: 231: BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS)); -: 232: } -: 233: }; -: 234:#endif -: 235: -: 236: template< -: 237: typename FunctionPtr, -: 238: typename R BOOST_FUNCTION_COMMA -: 239: BOOST_FUNCTION_TEMPLATE_PARMS -: 240: > -: 241: struct BOOST_FUNCTION_GET_FUNCTION_INVOKER -: 242: { -: 243: typedef typename mpl::if_c<(is_void::value), -: 244: BOOST_FUNCTION_VOID_FUNCTION_INVOKER< -: 245: FunctionPtr, -: 246: R BOOST_FUNCTION_COMMA -: 247: BOOST_FUNCTION_TEMPLATE_ARGS -: 248: >, -: 249: BOOST_FUNCTION_FUNCTION_INVOKER< -: 250: FunctionPtr, -: 251: R BOOST_FUNCTION_COMMA -: 252: BOOST_FUNCTION_TEMPLATE_ARGS -: 253: > -: 254: >::type type; -: 255: }; -: 256: -: 257: template< -: 258: typename FunctionObj, -: 259: typename R BOOST_FUNCTION_COMMA -: 260: BOOST_FUNCTION_TEMPLATE_PARMS -: 261: > -: 262: struct BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER -: 263: { -: 264: typedef typename mpl::if_c<(is_void::value), -: 265: BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER< -: 266: FunctionObj, -: 267: R BOOST_FUNCTION_COMMA -: 268: BOOST_FUNCTION_TEMPLATE_ARGS -: 269: >, -: 270: BOOST_FUNCTION_FUNCTION_OBJ_INVOKER< -: 271: FunctionObj, -: 272: R BOOST_FUNCTION_COMMA -: 273: BOOST_FUNCTION_TEMPLATE_ARGS -: 274: > -: 275: >::type type; -: 276: }; -: 277: -: 278: template< -: 279: typename FunctionObj, -: 280: typename R BOOST_FUNCTION_COMMA -: 281: BOOST_FUNCTION_TEMPLATE_PARMS -: 282: > -: 283: struct BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER -: 284: { -: 285: typedef typename mpl::if_c<(is_void::value), -: 286: BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER< -: 287: FunctionObj, -: 288: R BOOST_FUNCTION_COMMA -: 289: BOOST_FUNCTION_TEMPLATE_ARGS -: 290: >, -: 291: BOOST_FUNCTION_FUNCTION_REF_INVOKER< -: 292: FunctionObj, -: 293: R BOOST_FUNCTION_COMMA -: 294: BOOST_FUNCTION_TEMPLATE_ARGS -: 295: > -: 296: >::type type; -: 297: }; -: 298: -: 299:#if BOOST_FUNCTION_NUM_ARGS > 0 -: 300: /* Retrieve the appropriate invoker for a member pointer. */ -: 301: template< -: 302: typename MemberPtr, -: 303: typename R BOOST_FUNCTION_COMMA -: 304: BOOST_FUNCTION_TEMPLATE_PARMS -: 305: > -: 306: struct BOOST_FUNCTION_GET_MEMBER_INVOKER -: 307: { -: 308: typedef typename mpl::if_c<(is_void::value), -: 309: BOOST_FUNCTION_VOID_MEMBER_INVOKER< -: 310: MemberPtr, -: 311: R BOOST_FUNCTION_COMMA -: 312: BOOST_FUNCTION_TEMPLATE_ARGS -: 313: >, -: 314: BOOST_FUNCTION_MEMBER_INVOKER< -: 315: MemberPtr, -: 316: R BOOST_FUNCTION_COMMA -: 317: BOOST_FUNCTION_TEMPLATE_ARGS -: 318: > -: 319: >::type type; -: 320: }; -: 321:#endif -: 322: -: 323: /* Given the tag returned by get_function_tag, retrieve the -: 324: actual invoker that will be used for the given function -: 325: object. -: 326: -: 327: Each specialization contains an "apply" nested class template -: 328: that accepts the function object, return type, function -: 329: argument types, and allocator. The resulting "apply" class -: 330: contains two typedefs, "invoker_type" and "manager_type", -: 331: which correspond to the invoker and manager types. */ -: 332: template -: 333: struct BOOST_FUNCTION_GET_INVOKER { }; -: 334: -: 335: /* Retrieve the invoker for a function pointer. */ -: 336: template<> -: 337: struct BOOST_FUNCTION_GET_INVOKER -: 338: { -: 339: template -: 341: struct apply -: 342: { -: 343: typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER< -: 344: FunctionPtr, -: 345: R BOOST_FUNCTION_COMMA -: 346: BOOST_FUNCTION_TEMPLATE_ARGS -: 347: >::type -: 348: invoker_type; -: 349: -: 350: typedef functor_manager manager_type; -: 351: }; -: 352: -: 353: template -: 356: struct apply_a -: 357: { -: 358: typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER< -: 359: FunctionPtr, -: 360: R BOOST_FUNCTION_COMMA -: 361: BOOST_FUNCTION_TEMPLATE_ARGS -: 362: >::type -: 363: invoker_type; -: 364: -: 365: typedef functor_manager manager_type; -: 366: }; -: 367: }; -: 368: -: 369:#if BOOST_FUNCTION_NUM_ARGS > 0 -: 370: /* Retrieve the invoker for a member pointer. */ -: 371: template<> -: 372: struct BOOST_FUNCTION_GET_INVOKER -: 373: { -: 374: template -: 376: struct apply -: 377: { -: 378: typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER< -: 379: MemberPtr, -: 380: R BOOST_FUNCTION_COMMA -: 381: BOOST_FUNCTION_TEMPLATE_ARGS -: 382: >::type -: 383: invoker_type; -: 384: -: 385: typedef functor_manager manager_type; -: 386: }; -: 387: -: 388: template -: 391: struct apply_a -: 392: { -: 393: typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER< -: 394: MemberPtr, -: 395: R BOOST_FUNCTION_COMMA -: 396: BOOST_FUNCTION_TEMPLATE_ARGS -: 397: >::type -: 398: invoker_type; -: 399: -: 400: typedef functor_manager manager_type; -: 401: }; -: 402: }; -: 403:#endif -: 404: -: 405: /* Retrieve the invoker for a function object. */ -: 406: template<> -: 407: struct BOOST_FUNCTION_GET_INVOKER -: 408: { -: 409: template -: 411: struct apply -: 412: { -: 413: typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER< -: 414: FunctionObj, -: 415: R BOOST_FUNCTION_COMMA -: 416: BOOST_FUNCTION_TEMPLATE_ARGS -: 417: >::type -: 418: invoker_type; -: 419: -: 420: typedef functor_manager manager_type; -: 421: }; -: 422: -: 423: template -: 426: struct apply_a -: 427: { -: 428: typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER< -: 429: FunctionObj, -: 430: R BOOST_FUNCTION_COMMA -: 431: BOOST_FUNCTION_TEMPLATE_ARGS -: 432: >::type -: 433: invoker_type; -: 434: -: 435: typedef functor_manager_a manager_type; -: 436: }; -: 437: }; -: 438: -: 439: /* Retrieve the invoker for a reference to a function object. */ -: 440: template<> -: 441: struct BOOST_FUNCTION_GET_INVOKER -: 442: { -: 443: template -: 445: struct apply -: 446: { -: 447: typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER< -: 448: typename RefWrapper::type, -: 449: R BOOST_FUNCTION_COMMA -: 450: BOOST_FUNCTION_TEMPLATE_ARGS -: 451: >::type -: 452: invoker_type; -: 453: -: 454: typedef reference_manager manager_type; -: 455: }; -: 456: -: 457: template -: 460: struct apply_a -: 461: { -: 462: typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER< -: 463: typename RefWrapper::type, -: 464: R BOOST_FUNCTION_COMMA -: 465: BOOST_FUNCTION_TEMPLATE_ARGS -: 466: >::type -: 467: invoker_type; -: 468: -: 469: typedef reference_manager manager_type; -: 470: }; -: 471: }; -: 472: -: 473: -: 474: /** -: 475: * vtable for a specific boost::function instance. This -: 476: * structure must be an aggregate so that we can use static -: 477: * initialization in boost::function's assign_to and assign_to_a -: 478: * members. It therefore cannot have any constructors, -: 479: * destructors, base classes, etc. -: 480: */ -: 481: template -: 482: struct BOOST_FUNCTION_VTABLE -: 483: { -: 484:#ifndef BOOST_NO_VOID_RETURNS -: 485: typedef R result_type; -: 486:#else -: 487: typedef typename function_return_type::type result_type; -: 488:#endif // BOOST_NO_VOID_RETURNS -: 489: -: 490: typedef result_type (*invoker_type)(function_buffer& -: 491: BOOST_FUNCTION_COMMA -: 492: BOOST_FUNCTION_TEMPLATE_ARGS); -: 493: -: 494: template -: 495: bool assign_to(F f, function_buffer& functor) const -: 496: { -: 497: typedef typename get_function_tag::type tag; -: 498: return assign_to(f, functor, tag()); -: 499: } -: 500: template -: 501: bool assign_to_a(F f, function_buffer& functor, Allocator a) const -: 502: { -: 503: typedef typename get_function_tag::type tag; -: 504: return assign_to_a(f, functor, a, tag()); -: 505: } -: 506: -: 507: void clear(function_buffer& functor) const -: 508: { -: 509: if (base.manager) -: 510: base.manager(functor, functor, destroy_functor_tag); -: 511: } -: 512: -: 513: private: -: 514: // Function pointers -: 515: template -: 516: bool -: 517: assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag) const -: 518: { -: 519: this->clear(functor); -: 520: if (f) { -: 521: // should be a reinterpret cast, but some compilers insist -: 522: // on giving cv-qualifiers to free functions -: 523: functor.members.func_ptr = reinterpret_cast(f); -: 524: return true; -: 525: } else { -: 526: return false; -: 527: } -: 528: } -: 529: template -: 530: bool -: 531: assign_to_a(FunctionPtr f, function_buffer& functor, Allocator, function_ptr_tag) const -: 532: { -: 533: return assign_to(f,functor,function_ptr_tag()); -: 534: } -: 535: -: 536: // Member pointers -: 537:#if BOOST_FUNCTION_NUM_ARGS > 0 -: 538: template -: 539: bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const -: 540: { -: 541: // DPG TBD: Add explicit support for member function -: 542: // objects, so we invoke through mem_fn() but we retain the -: 543: // right target_type() values. -: 544: if (f) { -: 545: this->assign_to(boost::mem_fn(f), functor); -: 546: return true; -: 547: } else { -: 548: return false; -: 549: } -: 550: } -: 551: template -: 552: bool assign_to_a(MemberPtr f, function_buffer& functor, Allocator a, member_ptr_tag) const -: 553: { -: 554: // DPG TBD: Add explicit support for member function -: 555: // objects, so we invoke through mem_fn() but we retain the -: 556: // right target_type() values. -: 557: if (f) { -: 558: this->assign_to_a(boost::mem_fn(f), functor, a); -: 559: return true; -: 560: } else { -: 561: return false; -: 562: } -: 563: } -: 564:#endif // BOOST_FUNCTION_NUM_ARGS > 0 -: 565: -: 566: // Function objects -: 567: // Assign to a function object using the small object optimization -: 568: template -: 569: void -: 570: assign_functor(FunctionObj f, function_buffer& functor, mpl::true_) const -: 571: { -: 572: new (reinterpret_cast(functor.data)) FunctionObj(f); -: 573: } -: 574: template -: 575: void -: 576: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator, mpl::true_) const -: 577: { -: 578: assign_functor(f,functor,mpl::true_()); -: 579: } -: 580: -: 581: // Assign to a function object allocated on the heap. -: 582: template -: 583: void -: 584: assign_functor(FunctionObj f, function_buffer& functor, mpl::false_) const -: 585: { -: 586: functor.members.obj_ptr = new FunctionObj(f); -: 587: } -: 588: template -: 589: void -: 590: assign_functor_a(FunctionObj f, function_buffer& functor, Allocator a, mpl::false_) const -: 591: { -: 592: typedef functor_wrapper functor_wrapper_type; -: 593: typedef typename Allocator::template rebind::other -: 594: wrapper_allocator_type; -: 595: typedef typename wrapper_allocator_type::pointer wrapper_allocator_pointer_type; -: 596: wrapper_allocator_type wrapper_allocator(a); -: 597: wrapper_allocator_pointer_type copy = wrapper_allocator.allocate(1); -: 598: wrapper_allocator.construct(copy, functor_wrapper_type(f,a)); -: 599: functor_wrapper_type* new_f = static_cast(copy); -: 600: functor.members.obj_ptr = new_f; -: 601: } -: 602: -: 603: template -: 604: bool -: 605: assign_to(FunctionObj f, function_buffer& functor, function_obj_tag) const -: 606: { -: 607: if (!boost::detail::function::has_empty_target(boost::addressof(f))) { -: 608: assign_functor(f, functor, -: 609: mpl::bool_<(function_allows_small_object_optimization::value)>()); -: 610: return true; -: 611: } else { -: 612: return false; -: 613: } -: 614: } -: 615: template -: 616: bool -: 617: assign_to_a(FunctionObj f, function_buffer& functor, Allocator a, function_obj_tag) const -: 618: { -: 619: if (!boost::detail::function::has_empty_target(boost::addressof(f))) { -: 620: assign_functor_a(f, functor, a, -: 621: mpl::bool_<(function_allows_small_object_optimization::value)>()); -: 622: return true; -: 623: } else { -: 624: return false; -: 625: } -: 626: } -: 627: -: 628: // Reference to a function object -: 629: template -: 630: bool -: 631: assign_to(const reference_wrapper& f, -: 632: function_buffer& functor, function_obj_ref_tag) const -: 633: { -: 634: functor.members.obj_ref.obj_ptr = (void *)(f.get_pointer()); -: 635: functor.members.obj_ref.is_const_qualified = is_const::value; -: 636: functor.members.obj_ref.is_volatile_qualified = is_volatile::value; -: 637: return true; -: 638: } -: 639: template -: 640: bool -: 641: assign_to_a(const reference_wrapper& f, -: 642: function_buffer& functor, Allocator, function_obj_ref_tag) const -: 643: { -: 644: return assign_to(f,functor,function_obj_ref_tag()); -: 645: } -: 646: -: 647: public: -: 648: vtable_base base; -: 649: invoker_type invoker; -: 650: }; -: 651: } // end namespace function -: 652: } // end namespace detail -: 653: -: 654: template< -: 655: typename R BOOST_FUNCTION_COMMA -: 656: BOOST_FUNCTION_TEMPLATE_PARMS -: 657: > -: 658: class BOOST_FUNCTION_FUNCTION : public function_base -: 659: { -: 660: public: -: 661:#ifndef BOOST_NO_VOID_RETURNS -: 662: typedef R result_type; -: 663:#else -: 664: typedef typename boost::detail::function::function_return_type::type -: 665: result_type; -: 666:#endif // BOOST_NO_VOID_RETURNS -: 667: -: 668: private: -: 669: typedef boost::detail::function::BOOST_FUNCTION_VTABLE< -: 670: R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_ARGS> -: 671: vtable_type; -: 672: function _ZNK5boost9function1IvPN4ribi9tictactoe4GameEE10get_vtableEv called 0 returned 0% blocks executed 0% #####: 673: vtable_type* get_vtable() const { -: 674: return reinterpret_cast( #####: 675: reinterpret_cast(vtable) & ~static_cast(0x01)); call 0 never executed -: 676: } -: 677: -: 678: struct clear_type {}; -: 679: -: 680: public: -: 681: BOOST_STATIC_CONSTANT(int, args = BOOST_FUNCTION_NUM_ARGS); -: 682: -: 683: // add signature for boost::lambda -: 684: template -: 685: struct sig -: 686: { -: 687: typedef result_type type; -: 688: }; -: 689: -: 690:#if BOOST_FUNCTION_NUM_ARGS == 1 -: 691: typedef T0 argument_type; -: 692:#elif BOOST_FUNCTION_NUM_ARGS == 2 -: 693: typedef T0 first_argument_type; -: 694: typedef T1 second_argument_type; -: 695:#endif -: 696: -: 697: BOOST_STATIC_CONSTANT(int, arity = BOOST_FUNCTION_NUM_ARGS); -: 698: BOOST_FUNCTION_ARG_TYPES -: 699: -: 700: typedef BOOST_FUNCTION_FUNCTION self_type; -: 701: -: 702: BOOST_FUNCTION_FUNCTION() : function_base() { } -: 703: -: 704: // MSVC chokes if the following two constructors are collapsed into -: 705: // one with a default parameter. -: 706: template -: 707: BOOST_FUNCTION_FUNCTION(Functor BOOST_FUNCTION_TARGET_FIX(const &) f -: 708:#ifndef BOOST_NO_SFINAE -: 709: ,typename boost::enable_if_c< -: 710: !(is_integral::value), -: 711: int>::type = 0 -: 712:#endif // BOOST_NO_SFINAE -: 713: ) : -: 714: function_base() -: 715: { -: 716: this->assign_to(f); -: 717: } -: 718: template -: 719: BOOST_FUNCTION_FUNCTION(Functor BOOST_FUNCTION_TARGET_FIX(const &) f, Allocator a -: 720:#ifndef BOOST_NO_SFINAE -: 721: ,typename boost::enable_if_c< -: 722: !(is_integral::value), -: 723: int>::type = 0 -: 724:#endif // BOOST_NO_SFINAE -: 725: ) : -: 726: function_base() -: 727: { -: 728: this->assign_to_a(f,a); -: 729: } -: 730: -: 731:#ifndef BOOST_NO_SFINAE -: 732: BOOST_FUNCTION_FUNCTION(clear_type*) : function_base() { } -: 733:#else -: 734: BOOST_FUNCTION_FUNCTION(int zero) : function_base() -: 735: { -: 736: BOOST_ASSERT(zero == 0); -: 737: } -: 738:#endif -: 739: -: 740: BOOST_FUNCTION_FUNCTION(const BOOST_FUNCTION_FUNCTION& f) : function_base() -: 741: { -: 742: this->assign_to_own(f); -: 743: } -: 744: -: 745:#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -: 746: BOOST_FUNCTION_FUNCTION(BOOST_FUNCTION_FUNCTION&& f) : function_base() -: 747: { -: 748: this->move_assign(f); -: 749: } -: 750:#endif -: 751: -: 752: ~BOOST_FUNCTION_FUNCTION() { clear(); } -: 753: function _ZNK5boost9function1IvPN4ribi9tictactoe4GameEEclES4_ called 0 returned 0% blocks executed 0% #####: 754: result_type operator()(BOOST_FUNCTION_PARMS) const -: 755: { #####: 756: if (this->empty()) call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed #####: 757: boost::throw_exception(bad_function_call()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 758: #####: 759: return get_vtable()->invoker call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed #####: 760: (this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS); -: 761: } -: 762: -: 763: // The distinction between when to use BOOST_FUNCTION_FUNCTION and -: 764: // when to use self_type is obnoxious. MSVC cannot handle self_type as -: 765: // the return type of these assignment operators, but Borland C++ cannot -: 766: // handle BOOST_FUNCTION_FUNCTION as the type of the temporary to -: 767: // construct. -: 768: template -: 769:#ifndef BOOST_NO_SFINAE -: 770: typename boost::enable_if_c< -: 771: !(is_integral::value), -: 772: BOOST_FUNCTION_FUNCTION&>::type -: 773:#else -: 774: BOOST_FUNCTION_FUNCTION& -: 775:#endif -: 776: operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f) -: 777: { -: 778: this->clear(); -: 779: BOOST_TRY { -: 780: this->assign_to(f); -: 781: } BOOST_CATCH (...) { -: 782: vtable = 0; -: 783: BOOST_RETHROW; -: 784: } -: 785: BOOST_CATCH_END -: 786: return *this; -: 787: } -: 788: template -: 789: void assign(Functor BOOST_FUNCTION_TARGET_FIX(const &) f, Allocator a) -: 790: { -: 791: this->clear(); -: 792: BOOST_TRY{ -: 793: this->assign_to_a(f,a); -: 794: } BOOST_CATCH (...) { -: 795: vtable = 0; -: 796: BOOST_RETHROW; -: 797: } -: 798: BOOST_CATCH_END -: 799: } -: 800: -: 801:#ifndef BOOST_NO_SFINAE -: 802: BOOST_FUNCTION_FUNCTION& operator=(clear_type*) -: 803: { -: 804: this->clear(); -: 805: return *this; -: 806: } -: 807:#else -: 808: BOOST_FUNCTION_FUNCTION& operator=(int zero) -: 809: { -: 810: BOOST_ASSERT(zero == 0); -: 811: this->clear(); -: 812: return *this; -: 813: } -: 814:#endif -: 815: -: 816: // Assignment from another BOOST_FUNCTION_FUNCTION -: 817: BOOST_FUNCTION_FUNCTION& operator=(const BOOST_FUNCTION_FUNCTION& f) -: 818: { -: 819: if (&f == this) -: 820: return *this; -: 821: -: 822: this->clear(); -: 823: BOOST_TRY { -: 824: this->assign_to_own(f); -: 825: } BOOST_CATCH (...) { -: 826: vtable = 0; -: 827: BOOST_RETHROW; -: 828: } -: 829: BOOST_CATCH_END -: 830: return *this; -: 831: } -: 832: -: 833:#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -: 834: // Move assignment from another BOOST_FUNCTION_FUNCTION -: 835: BOOST_FUNCTION_FUNCTION& operator=(BOOST_FUNCTION_FUNCTION&& f) -: 836: { -: 837: if (&f == this) -: 838: return *this; -: 839: -: 840: this->clear(); -: 841: BOOST_TRY { -: 842: this->move_assign(f); -: 843: } BOOST_CATCH (...) { -: 844: vtable = 0; -: 845: BOOST_RETHROW; -: 846: } -: 847: BOOST_CATCH_END -: 848: return *this; -: 849: } -: 850:#endif -: 851: -: 852: void swap(BOOST_FUNCTION_FUNCTION& other) -: 853: { -: 854: if (&other == this) -: 855: return; -: 856: -: 857: BOOST_FUNCTION_FUNCTION tmp; -: 858: tmp.move_assign(*this); -: 859: this->move_assign(other); -: 860: other.move_assign(tmp); -: 861: } -: 862: -: 863: // Clear out a target, if there is one -: 864: void clear() -: 865: { -: 866: if (vtable) { -: 867: if (!this->has_trivial_copy_and_destroy()) -: 868: get_vtable()->clear(this->functor); -: 869: vtable = 0; -: 870: } -: 871: } -: 872: -: 873:#if (defined __SUNPRO_CC) && (__SUNPRO_CC <= 0x530) && !(defined BOOST_NO_COMPILER_CONFIG) -: 874: // Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it -: 875: operator bool () const { return !this->empty(); } -: 876:#else -: 877: private: -: 878: struct dummy { -: 879: void nonnull() {} -: 880: }; -: 881: -: 882: typedef void (dummy::*safe_bool)(); -: 883: -: 884: public: -: 885: operator safe_bool () const -: 886: { return (this->empty())? 0 : &dummy::nonnull; } -: 887: -: 888: bool operator!() const -: 889: { return this->empty(); } -: 890:#endif -: 891: -: 892: private: -: 893: void assign_to_own(const BOOST_FUNCTION_FUNCTION& f) -: 894: { -: 895: if (!f.empty()) { -: 896: this->vtable = f.vtable; -: 897: if (this->has_trivial_copy_and_destroy()) -: 898: this->functor = f.functor; -: 899: else -: 900: get_vtable()->base.manager(f.functor, this->functor, -: 901: boost::detail::function::clone_functor_tag); -: 902: } -: 903: } -: 904: -: 905: template -: 906: void assign_to(Functor f) -: 907: { -: 908: using boost::detail::function::vtable_base; -: 909: -: 910: typedef typename boost::detail::function::get_function_tag::type tag; -: 911: typedef boost::detail::function::BOOST_FUNCTION_GET_INVOKER get_invoker; -: 912: typedef typename get_invoker:: -: 913: template apply -: 915: handler_type; -: 916: -: 917: typedef typename handler_type::invoker_type invoker_type; -: 918: typedef typename handler_type::manager_type manager_type; -: 919: -: 920: // Note: it is extremely important that this initialization use -: 921: // static initialization. Otherwise, we will have a race -: 922: // condition here in multi-threaded code. See -: 923: // http://thread.gmane.org/gmane.comp.lib.boost.devel/164902/. -: 924: static const vtable_type stored_vtable = -: 925: { { &manager_type::manage }, &invoker_type::invoke }; -: 926: -: 927: if (stored_vtable.assign_to(f, functor)) { -: 928: std::size_t value = reinterpret_cast(&stored_vtable.base); -: 929: // coverity[pointless_expression]: suppress coverity warnings on apparant if(const). -: 930: if (boost::has_trivial_copy_constructor::value && -: 931: boost::has_trivial_destructor::value && -: 932: boost::detail::function::function_allows_small_object_optimization::value) -: 933: value |= static_cast(0x01); -: 934: vtable = reinterpret_cast(value); -: 935: } else -: 936: vtable = 0; -: 937: } -: 938: -: 939: template -: 940: void assign_to_a(Functor f,Allocator a) -: 941: { -: 942: using boost::detail::function::vtable_base; -: 943: -: 944: typedef typename boost::detail::function::get_function_tag::type tag; -: 945: typedef boost::detail::function::BOOST_FUNCTION_GET_INVOKER get_invoker; -: 946: typedef typename get_invoker:: -: 947: template apply_a -: 950: handler_type; -: 951: -: 952: typedef typename handler_type::invoker_type invoker_type; -: 953: typedef typename handler_type::manager_type manager_type; -: 954: -: 955: // Note: it is extremely important that this initialization use -: 956: // static initialization. Otherwise, we will have a race -: 957: // condition here in multi-threaded code. See -: 958: // http://thread.gmane.org/gmane.comp.lib.boost.devel/164902/. -: 959: static const vtable_type stored_vtable = -: 960: { { &manager_type::manage }, &invoker_type::invoke }; -: 961: -: 962: if (stored_vtable.assign_to_a(f, functor, a)) { -: 963: std::size_t value = reinterpret_cast(&stored_vtable.base); -: 964: // coverity[pointless_expression]: suppress coverity warnings on apparant if(const). -: 965: if (boost::has_trivial_copy_constructor::value && -: 966: boost::has_trivial_destructor::value && -: 967: boost::detail::function::function_allows_small_object_optimization::value) -: 968: value |= static_cast(0x01); -: 969: vtable = reinterpret_cast(value); -: 970: } else -: 971: vtable = 0; -: 972: } -: 973: -: 974: // Moves the value from the specified argument to *this. If the argument -: 975: // has its function object allocated on the heap, move_assign will pass -: 976: // its buffer to *this, and set the argument's buffer pointer to NULL. -: 977: void move_assign(BOOST_FUNCTION_FUNCTION& f) -: 978: { -: 979: if (&f == this) -: 980: return; -: 981: -: 982: BOOST_TRY { -: 983: if (!f.empty()) { -: 984: this->vtable = f.vtable; -: 985: if (this->has_trivial_copy_and_destroy()) -: 986: this->functor = f.functor; -: 987: else -: 988: get_vtable()->base.manager(f.functor, this->functor, -: 989: boost::detail::function::move_functor_tag); -: 990: f.vtable = 0; -: 991: } else { -: 992: clear(); -: 993: } -: 994: } BOOST_CATCH (...) { -: 995: vtable = 0; -: 996: BOOST_RETHROW; -: 997: } -: 998: BOOST_CATCH_END -: 999: } -: 1000: }; -: 1001: -: 1002: template -: 1003: inline void swap(BOOST_FUNCTION_FUNCTION< -: 1004: R BOOST_FUNCTION_COMMA -: 1005: BOOST_FUNCTION_TEMPLATE_ARGS -: 1006: >& f1, -: 1007: BOOST_FUNCTION_FUNCTION< -: 1008: R BOOST_FUNCTION_COMMA -: 1009: BOOST_FUNCTION_TEMPLATE_ARGS -: 1010: >& f2) -: 1011: { -: 1012: f1.swap(f2); -: 1013: } -: 1014: -: 1015:// Poison comparisons between boost::function objects of the same type. -: 1016:template -: 1017: void operator==(const BOOST_FUNCTION_FUNCTION< -: 1018: R BOOST_FUNCTION_COMMA -: 1019: BOOST_FUNCTION_TEMPLATE_ARGS>&, -: 1020: const BOOST_FUNCTION_FUNCTION< -: 1021: R BOOST_FUNCTION_COMMA -: 1022: BOOST_FUNCTION_TEMPLATE_ARGS>&); -: 1023:template -: 1024: void operator!=(const BOOST_FUNCTION_FUNCTION< -: 1025: R BOOST_FUNCTION_COMMA -: 1026: BOOST_FUNCTION_TEMPLATE_ARGS>&, -: 1027: const BOOST_FUNCTION_FUNCTION< -: 1028: R BOOST_FUNCTION_COMMA -: 1029: BOOST_FUNCTION_TEMPLATE_ARGS>& ); -: 1030: -: 1031:#if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX) -: 1032: -: 1033:#if BOOST_FUNCTION_NUM_ARGS == 0 -: 1034:#define BOOST_FUNCTION_PARTIAL_SPEC R (void) -: 1035:#else -: 1036:#define BOOST_FUNCTION_PARTIAL_SPEC R (BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS,T)) -: 1037:#endif -: 1038: -: 1039:template -: 1041:class function -: 1042: : public BOOST_FUNCTION_FUNCTION -: 1043:{ -: 1044: typedef BOOST_FUNCTION_FUNCTION base_type; -: 1045: typedef function self_type; -: 1046: -: 1047: struct clear_type {}; -: 1048: -: 1049:public: -: 1050: -: 1051: function() : base_type() {} -: 1052: -: 1053: template -: 1054: function(Functor f -: 1055:#ifndef BOOST_NO_SFINAE -: 1056: ,typename boost::enable_if_c< -: 1057: !(is_integral::value), -: 1058: int>::type = 0 -: 1059:#endif -: 1060: ) : -: 1061: base_type(f) -: 1062: { -: 1063: } -: 1064: template -: 1065: function(Functor f, Allocator a -: 1066:#ifndef BOOST_NO_SFINAE -: 1067: ,typename boost::enable_if_c< -: 1068: !(is_integral::value), -: 1069: int>::type = 0 -: 1070:#endif -: 1071: ) : -: 1072: base_type(f,a) -: 1073: { -: 1074: } -: 1075: -: 1076:#ifndef BOOST_NO_SFINAE -: 1077: function(clear_type*) : base_type() {} -: 1078:#endif -: 1079: -: 1080: function(const self_type& f) : base_type(static_cast(f)){} -: 1081: -: 1082: function(const base_type& f) : base_type(static_cast(f)){} -: 1083: -: 1084:#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -: 1085: // Move constructors -: 1086: function(self_type&& f): base_type(static_cast(f)){} -: 1087: function(base_type&& f): base_type(static_cast(f)){} -: 1088:#endif -: 1089: -: 1090: self_type& operator=(const self_type& f) -: 1091: { -: 1092: self_type(f).swap(*this); -: 1093: return *this; -: 1094: } -: 1095: -: 1096:#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -: 1097: self_type& operator=(self_type&& f) -: 1098: { -: 1099: self_type(static_cast(f)).swap(*this); -: 1100: return *this; -: 1101: } -: 1102:#endif -: 1103: -: 1104: template -: 1105:#ifndef BOOST_NO_SFINAE -: 1106: typename boost::enable_if_c< -: 1107: !(is_integral::value), -: 1108: self_type&>::type -: 1109:#else -: 1110: self_type& -: 1111:#endif -: 1112: operator=(Functor f) -: 1113: { -: 1114: self_type(f).swap(*this); -: 1115: return *this; -: 1116: } -: 1117: -: 1118:#ifndef BOOST_NO_SFINAE -: 1119: self_type& operator=(clear_type*) -: 1120: { -: 1121: this->clear(); -: 1122: return *this; -: 1123: } -: 1124:#endif -: 1125: -: 1126: self_type& operator=(const base_type& f) -: 1127: { -: 1128: self_type(f).swap(*this); -: 1129: return *this; -: 1130: } -: 1131: -: 1132:#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES -: 1133: self_type& operator=(base_type&& f) -: 1134: { -: 1135: self_type(static_cast(f)).swap(*this); -: 1136: return *this; -: 1137: } -: 1138:#endif -: 1139:}; -: 1140: -: 1141:#undef BOOST_FUNCTION_PARTIAL_SPEC -: 1142:#endif // have partial specialization -: 1143: -: 1144:} // end namespace boost -: 1145: -: 1146:// Cleanup after ourselves... -: 1147:#undef BOOST_FUNCTION_VTABLE -: 1148:#undef BOOST_FUNCTION_COMMA -: 1149:#undef BOOST_FUNCTION_FUNCTION -: 1150:#undef BOOST_FUNCTION_FUNCTION_INVOKER -: 1151:#undef BOOST_FUNCTION_VOID_FUNCTION_INVOKER -: 1152:#undef BOOST_FUNCTION_FUNCTION_OBJ_INVOKER -: 1153:#undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER -: 1154:#undef BOOST_FUNCTION_FUNCTION_REF_INVOKER -: 1155:#undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER -: 1156:#undef BOOST_FUNCTION_MEMBER_INVOKER -: 1157:#undef BOOST_FUNCTION_VOID_MEMBER_INVOKER -: 1158:#undef BOOST_FUNCTION_GET_FUNCTION_INVOKER -: 1159:#undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER -: 1160:#undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER -: 1161:#undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER -: 1162:#undef BOOST_FUNCTION_GET_INVOKER -: 1163:#undef BOOST_FUNCTION_TEMPLATE_PARMS -: 1164:#undef BOOST_FUNCTION_TEMPLATE_ARGS -: 1165:#undef BOOST_FUNCTION_PARMS -: 1166:#undef BOOST_FUNCTION_PARM -: 1167:#ifdef BOOST_FUNCTION_ARG -: 1168:# undef BOOST_FUNCTION_ARG -: 1169:#endif -: 1170:#undef BOOST_FUNCTION_ARGS -: 1171:#undef BOOST_FUNCTION_ARG_TYPE -: 1172:#undef BOOST_FUNCTION_ARG_TYPES -: 1173:#undef BOOST_FUNCTION_VOID_RETURN_TYPE -: 1174:#undef BOOST_FUNCTION_RETURN -: 1175: -: 1176:#if defined(BOOST_MSVC) -: 1177:# pragma warning( pop ) -: 1178:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#c++#7#bits#deque.tcc.gcov -: 0:Source:/usr/include/c++/7/bits/deque.tcc -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Deque implementation (out of line) -*- C++ -*- -: 2: -: 3:// Copyright (C) 2001-2017 Free Software Foundation, Inc. -: 4:// -: 5:// This file is part of the GNU ISO C++ Library. This library is free -: 6:// software; you can redistribute it and/or modify it under the -: 7:// terms of the GNU General Public License as published by the -: 8:// Free Software Foundation; either version 3, or (at your option) -: 9:// any later version. -: 10: -: 11:// This library is distributed in the hope that it will be useful, -: 12:// but WITHOUT ANY WARRANTY; without even the implied warranty of -: 13:// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -: 14:// GNU General Public License for more details. -: 15: -: 16:// Under Section 7 of GPL version 3, you are granted additional -: 17:// permissions described in the GCC Runtime Library Exception, version -: 18:// 3.1, as published by the Free Software Foundation. -: 19: -: 20:// You should have received a copy of the GNU General Public License and -: 21:// a copy of the GCC Runtime Library Exception along with this program; -: 22:// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -: 23:// . -: 24: -: 25:/* -: 26: * -: 27: * Copyright (c) 1994 -: 28: * Hewlett-Packard Company -: 29: * -: 30: * Permission to use, copy, modify, distribute and sell this software -: 31: * and its documentation for any purpose is hereby granted without fee, -: 32: * provided that the above copyright notice appear in all copies and -: 33: * that both that copyright notice and this permission notice appear -: 34: * in supporting documentation. Hewlett-Packard Company makes no -: 35: * representations about the suitability of this software for any -: 36: * purpose. It is provided "as is" without express or implied warranty. -: 37: * -: 38: * -: 39: * Copyright (c) 1997 -: 40: * Silicon Graphics Computer Systems, Inc. -: 41: * -: 42: * Permission to use, copy, modify, distribute and sell this software -: 43: * and its documentation for any purpose is hereby granted without fee, -: 44: * provided that the above copyright notice appear in all copies and -: 45: * that both that copyright notice and this permission notice appear -: 46: * in supporting documentation. Silicon Graphics makes no -: 47: * representations about the suitability of this software for any -: 48: * purpose. It is provided "as is" without express or implied warranty. -: 49: */ -: 50: -: 51:/** @file bits/deque.tcc -: 52: * This is an internal header file, included by other library headers. -: 53: * Do not attempt to use it directly. @headername{deque} -: 54: */ -: 55: -: 56:#ifndef _DEQUE_TCC -: 57:#define _DEQUE_TCC 1 -: 58: -: 59:namespace std _GLIBCXX_VISIBILITY(default) -: 60:{ -: 61:_GLIBCXX_BEGIN_NAMESPACE_CONTAINER -: 62: -: 63:#if __cplusplus >= 201103L -: 64: template -: 65: void -: 66: deque<_Tp, _Alloc>:: -: 67: _M_default_initialize() -: 68: { -: 69: _Map_pointer __cur; -: 70: __try -: 71: { -: 72: for (__cur = this->_M_impl._M_start._M_node; -: 73: __cur < this->_M_impl._M_finish._M_node; -: 74: ++__cur) -: 75: std::__uninitialized_default_a(*__cur, *__cur + _S_buffer_size(), -: 76: _M_get_Tp_allocator()); -: 77: std::__uninitialized_default_a(this->_M_impl._M_finish._M_first, -: 78: this->_M_impl._M_finish._M_cur, -: 79: _M_get_Tp_allocator()); -: 80: } -: 81: __catch(...) -: 82: { -: 83: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), -: 84: _M_get_Tp_allocator()); -: 85: __throw_exception_again; -: 86: } -: 87: } -: 88:#endif -: 89: -: 90: template -: 91: deque<_Tp, _Alloc>& -: 92: deque<_Tp, _Alloc>:: -: 93: operator=(const deque& __x) -: 94: { -: 95: if (&__x != this) -: 96: { -: 97:#if __cplusplus >= 201103L -: 98: if (_Alloc_traits::_S_propagate_on_copy_assign()) -: 99: { -: 100: if (!_Alloc_traits::_S_always_equal() -: 101: && _M_get_Tp_allocator() != __x._M_get_Tp_allocator()) -: 102: { -: 103: // Replacement allocator cannot free existing storage, -: 104: // so deallocate everything and take copy of __x's data. -: 105: _M_replace_map(__x, __x.get_allocator()); -: 106: std::__alloc_on_copy(_M_get_Tp_allocator(), -: 107: __x._M_get_Tp_allocator()); -: 108: return *this; -: 109: } -: 110: std::__alloc_on_copy(_M_get_Tp_allocator(), -: 111: __x._M_get_Tp_allocator()); -: 112: } -: 113:#endif -: 114: const size_type __len = size(); -: 115: if (__len >= __x.size()) -: 116: _M_erase_at_end(std::copy(__x.begin(), __x.end(), -: 117: this->_M_impl._M_start)); -: 118: else -: 119: { -: 120: const_iterator __mid = __x.begin() + difference_type(__len); -: 121: std::copy(__x.begin(), __mid, this->_M_impl._M_start); -: 122: _M_range_insert_aux(this->_M_impl._M_finish, __mid, __x.end(), -: 123: std::random_access_iterator_tag()); -: 124: } -: 125: } -: 126: return *this; -: 127: } -: 128: -: 129:#if __cplusplus >= 201103L -: 130: template -: 131: template -: 132:#if __cplusplus > 201402L -: 133: typename deque<_Tp, _Alloc>::reference -: 134:#else -: 135: void -: 136:#endif -: 137: deque<_Tp, _Alloc>:: -: 138: emplace_front(_Args&&... __args) -: 139: { -: 140: if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first) -: 141: { -: 142: _Alloc_traits::construct(this->_M_impl, -: 143: this->_M_impl._M_start._M_cur - 1, -: 144: std::forward<_Args>(__args)...); -: 145: --this->_M_impl._M_start._M_cur; -: 146: } -: 147: else -: 148: _M_push_front_aux(std::forward<_Args>(__args)...); -: 149:#if __cplusplus > 201402L -: 150: return front(); -: 151:#endif -: 152: } -: 153: -: 154: template -: 155: template -: 156:#if __cplusplus > 201402L -: 157: typename deque<_Tp, _Alloc>::reference -: 158:#else -: 159: void -: 160:#endif -: 161: deque<_Tp, _Alloc>:: -: 162: emplace_back(_Args&&... __args) -: 163: { -: 164: if (this->_M_impl._M_finish._M_cur -: 165: != this->_M_impl._M_finish._M_last - 1) -: 166: { -: 167: _Alloc_traits::construct(this->_M_impl, -: 168: this->_M_impl._M_finish._M_cur, -: 169: std::forward<_Args>(__args)...); -: 170: ++this->_M_impl._M_finish._M_cur; -: 171: } -: 172: else -: 173: _M_push_back_aux(std::forward<_Args>(__args)...); -: 174:#if __cplusplus > 201402L -: 175: return back(); -: 176:#endif -: 177: } -: 178:#endif -: 179: -: 180:#if __cplusplus >= 201103L -: 181: template -: 182: template -: 183: typename deque<_Tp, _Alloc>::iterator -: 184: deque<_Tp, _Alloc>:: -: 185: emplace(const_iterator __position, _Args&&... __args) -: 186: { -: 187: if (__position._M_cur == this->_M_impl._M_start._M_cur) -: 188: { -: 189: emplace_front(std::forward<_Args>(__args)...); -: 190: return this->_M_impl._M_start; -: 191: } -: 192: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) -: 193: { -: 194: emplace_back(std::forward<_Args>(__args)...); -: 195: iterator __tmp = this->_M_impl._M_finish; -: 196: --__tmp; -: 197: return __tmp; -: 198: } -: 199: else -: 200: return _M_insert_aux(__position._M_const_cast(), -: 201: std::forward<_Args>(__args)...); -: 202: } -: 203:#endif -: 204: -: 205: template -: 206: typename deque<_Tp, _Alloc>::iterator -: 207: deque<_Tp, _Alloc>:: -: 208:#if __cplusplus >= 201103L -: 209: insert(const_iterator __position, const value_type& __x) -: 210:#else -: 211: insert(iterator __position, const value_type& __x) -: 212:#endif -: 213: { -: 214: if (__position._M_cur == this->_M_impl._M_start._M_cur) -: 215: { -: 216: push_front(__x); -: 217: return this->_M_impl._M_start; -: 218: } -: 219: else if (__position._M_cur == this->_M_impl._M_finish._M_cur) -: 220: { -: 221: push_back(__x); -: 222: iterator __tmp = this->_M_impl._M_finish; -: 223: --__tmp; -: 224: return __tmp; -: 225: } -: 226: else -: 227: return _M_insert_aux(__position._M_const_cast(), __x); -: 228: } -: 229: -: 230: template -: 231: typename deque<_Tp, _Alloc>::iterator -: 232: deque<_Tp, _Alloc>:: -: 233: _M_erase(iterator __position) -: 234: { -: 235: iterator __next = __position; -: 236: ++__next; -: 237: const difference_type __index = __position - begin(); -: 238: if (static_cast(__index) < (size() >> 1)) -: 239: { -: 240: if (__position != begin()) -: 241: _GLIBCXX_MOVE_BACKWARD3(begin(), __position, __next); -: 242: pop_front(); -: 243: } -: 244: else -: 245: { -: 246: if (__next != end()) -: 247: _GLIBCXX_MOVE3(__next, end(), __position); -: 248: pop_back(); -: 249: } -: 250: return begin() + __index; -: 251: } -: 252: -: 253: template -: 254: typename deque<_Tp, _Alloc>::iterator -: 255: deque<_Tp, _Alloc>:: -: 256: _M_erase(iterator __first, iterator __last) -: 257: { -: 258: if (__first == __last) -: 259: return __first; -: 260: else if (__first == begin() && __last == end()) -: 261: { -: 262: clear(); -: 263: return end(); -: 264: } -: 265: else -: 266: { -: 267: const difference_type __n = __last - __first; -: 268: const difference_type __elems_before = __first - begin(); -: 269: if (static_cast(__elems_before) <= (size() - __n) / 2) -: 270: { -: 271: if (__first != begin()) -: 272: _GLIBCXX_MOVE_BACKWARD3(begin(), __first, __last); -: 273: _M_erase_at_begin(begin() + __n); -: 274: } -: 275: else -: 276: { -: 277: if (__last != end()) -: 278: _GLIBCXX_MOVE3(__last, end(), __first); -: 279: _M_erase_at_end(end() - __n); -: 280: } -: 281: return begin() + __elems_before; -: 282: } -: 283: } -: 284: -: 285: template -: 286: template -: 287: void -: 288: deque<_Tp, _Alloc>:: -: 289: _M_assign_aux(_InputIterator __first, _InputIterator __last, -: 290: std::input_iterator_tag) -: 291: { -: 292: iterator __cur = begin(); -: 293: for (; __first != __last && __cur != end(); ++__cur, ++__first) -: 294: *__cur = *__first; -: 295: if (__first == __last) -: 296: _M_erase_at_end(__cur); -: 297: else -: 298: _M_range_insert_aux(end(), __first, __last, -: 299: std::__iterator_category(__first)); -: 300: } -: 301: -: 302: template -: 303: void -: 304: deque<_Tp, _Alloc>:: -: 305: _M_fill_insert(iterator __pos, size_type __n, const value_type& __x) -: 306: { -: 307: if (__pos._M_cur == this->_M_impl._M_start._M_cur) -: 308: { -: 309: iterator __new_start = _M_reserve_elements_at_front(__n); -: 310: __try -: 311: { -: 312: std::__uninitialized_fill_a(__new_start, this->_M_impl._M_start, -: 313: __x, _M_get_Tp_allocator()); -: 314: this->_M_impl._M_start = __new_start; -: 315: } -: 316: __catch(...) -: 317: { -: 318: _M_destroy_nodes(__new_start._M_node, -: 319: this->_M_impl._M_start._M_node); -: 320: __throw_exception_again; -: 321: } -: 322: } -: 323: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) -: 324: { -: 325: iterator __new_finish = _M_reserve_elements_at_back(__n); -: 326: __try -: 327: { -: 328: std::__uninitialized_fill_a(this->_M_impl._M_finish, -: 329: __new_finish, __x, -: 330: _M_get_Tp_allocator()); -: 331: this->_M_impl._M_finish = __new_finish; -: 332: } -: 333: __catch(...) -: 334: { -: 335: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -: 336: __new_finish._M_node + 1); -: 337: __throw_exception_again; -: 338: } -: 339: } -: 340: else -: 341: _M_insert_aux(__pos, __n, __x); -: 342: } -: 343: -: 344:#if __cplusplus >= 201103L -: 345: template -: 346: void -: 347: deque<_Tp, _Alloc>:: -: 348: _M_default_append(size_type __n) -: 349: { -: 350: if (__n) -: 351: { -: 352: iterator __new_finish = _M_reserve_elements_at_back(__n); -: 353: __try -: 354: { -: 355: std::__uninitialized_default_a(this->_M_impl._M_finish, -: 356: __new_finish, -: 357: _M_get_Tp_allocator()); -: 358: this->_M_impl._M_finish = __new_finish; -: 359: } -: 360: __catch(...) -: 361: { -: 362: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -: 363: __new_finish._M_node + 1); -: 364: __throw_exception_again; -: 365: } -: 366: } -: 367: } -: 368: -: 369: template -: 370: bool -: 371: deque<_Tp, _Alloc>:: -: 372: _M_shrink_to_fit() -: 373: { -: 374: const difference_type __front_capacity -: 375: = (this->_M_impl._M_start._M_cur - this->_M_impl._M_start._M_first); -: 376: if (__front_capacity == 0) -: 377: return false; -: 378: -: 379: const difference_type __back_capacity -: 380: = (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur); -: 381: if (__front_capacity + __back_capacity < _S_buffer_size()) -: 382: return false; -: 383: -: 384: return std::__shrink_to_fit_aux::_S_do_it(*this); -: 385: } -: 386:#endif -: 387: -: 388: template -: 389: void -: 390: deque<_Tp, _Alloc>:: -: 391: _M_fill_initialize(const value_type& __value) -: 392: { -: 393: _Map_pointer __cur; -: 394: __try -: 395: { -: 396: for (__cur = this->_M_impl._M_start._M_node; -: 397: __cur < this->_M_impl._M_finish._M_node; -: 398: ++__cur) -: 399: std::__uninitialized_fill_a(*__cur, *__cur + _S_buffer_size(), -: 400: __value, _M_get_Tp_allocator()); -: 401: std::__uninitialized_fill_a(this->_M_impl._M_finish._M_first, -: 402: this->_M_impl._M_finish._M_cur, -: 403: __value, _M_get_Tp_allocator()); -: 404: } -: 405: __catch(...) -: 406: { -: 407: std::_Destroy(this->_M_impl._M_start, iterator(*__cur, __cur), -: 408: _M_get_Tp_allocator()); -: 409: __throw_exception_again; -: 410: } -: 411: } -: 412: -: 413: template -: 414: template -: 415: void -: 416: deque<_Tp, _Alloc>:: -: 417: _M_range_initialize(_InputIterator __first, _InputIterator __last, -: 418: std::input_iterator_tag) -: 419: { -: 420: this->_M_initialize_map(0); -: 421: __try -: 422: { -: 423: for (; __first != __last; ++__first) -: 424:#if __cplusplus >= 201103L -: 425: emplace_back(*__first); -: 426:#else -: 427: push_back(*__first); -: 428:#endif -: 429: } -: 430: __catch(...) -: 431: { -: 432: clear(); -: 433: __throw_exception_again; -: 434: } -: 435: } -: 436: -: 437: template -: 438: template -: 439: void -: 440: deque<_Tp, _Alloc>:: -: 441: _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, -: 442: std::forward_iterator_tag) -: 443: { -: 444: const size_type __n = std::distance(__first, __last); -: 445: this->_M_initialize_map(__n); -: 446: -: 447: _Map_pointer __cur_node; -: 448: __try -: 449: { -: 450: for (__cur_node = this->_M_impl._M_start._M_node; -: 451: __cur_node < this->_M_impl._M_finish._M_node; -: 452: ++__cur_node) -: 453: { -: 454: _ForwardIterator __mid = __first; -: 455: std::advance(__mid, _S_buffer_size()); -: 456: std::__uninitialized_copy_a(__first, __mid, *__cur_node, -: 457: _M_get_Tp_allocator()); -: 458: __first = __mid; -: 459: } -: 460: std::__uninitialized_copy_a(__first, __last, -: 461: this->_M_impl._M_finish._M_first, -: 462: _M_get_Tp_allocator()); -: 463: } -: 464: __catch(...) -: 465: { -: 466: std::_Destroy(this->_M_impl._M_start, -: 467: iterator(*__cur_node, __cur_node), -: 468: _M_get_Tp_allocator()); -: 469: __throw_exception_again; -: 470: } -: 471: } -: 472: -: 473: // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_last - 1. -: 474: template -: 475:#if __cplusplus >= 201103L -: 476: template -: 477: void function _ZNSt5dequeIPKvSaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT_ called 0 returned 0% blocks executed 0% #####: 478: deque<_Tp, _Alloc>:: -: 479: _M_push_back_aux(_Args&&... __args) -: 480:#else -: 481: void -: 482: deque<_Tp, _Alloc>:: -: 483: _M_push_back_aux(const value_type& __t) -: 484:#endif -: 485: { #####: 486: _M_reserve_map_at_back(); call 0 never executed call 1 never executed #####: 487: *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 488: __try -: 489: { -: 490:#if __cplusplus >= 201103L #####: 491: _Alloc_traits::construct(this->_M_impl, call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed branch 5 never executed branch 6 never executed -: 492: this->_M_impl._M_finish._M_cur, -: 493: std::forward<_Args>(__args)...); -: 494:#else -: 495: this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t); -: 496:#endif #####: 497: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node call 0 never executed call 1 never executed call 2 never executed -: 498: + 1); #####: 499: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_first; call 0 never executed call 1 never executed -: 500: } =====: 501: __catch(...) call 0 never executed call 1 never executed -: 502: { =====: 503: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + 1)); call 0 never executed call 1 never executed call 2 never executed call 3 never executed =====: 504: __throw_exception_again; call 0 never executed -: 505: } #####: 506: } -: 507: -: 508: // Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_first. -: 509: template -: 510:#if __cplusplus >= 201103L -: 511: template -: 512: void -: 513: deque<_Tp, _Alloc>:: -: 514: _M_push_front_aux(_Args&&... __args) -: 515:#else -: 516: void -: 517: deque<_Tp, _Alloc>:: -: 518: _M_push_front_aux(const value_type& __t) -: 519:#endif -: 520: { -: 521: _M_reserve_map_at_front(); -: 522: *(this->_M_impl._M_start._M_node - 1) = this->_M_allocate_node(); -: 523: __try -: 524: { -: 525: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node -: 526: - 1); -: 527: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_last - 1; -: 528:#if __cplusplus >= 201103L -: 529: _Alloc_traits::construct(this->_M_impl, -: 530: this->_M_impl._M_start._M_cur, -: 531: std::forward<_Args>(__args)...); -: 532:#else -: 533: this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t); -: 534:#endif -: 535: } -: 536: __catch(...) -: 537: { -: 538: ++this->_M_impl._M_start; -: 539: _M_deallocate_node(*(this->_M_impl._M_start._M_node - 1)); -: 540: __throw_exception_again; -: 541: } -: 542: } -: 543: -: 544: // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_first. -: 545: template function _ZNSt5dequeIPKvSaIS1_EE15_M_pop_back_auxEv called 0 returned 0% blocks executed 0% #####: 546: void deque<_Tp, _Alloc>:: -: 547: _M_pop_back_aux() -: 548: { #####: 549: _M_deallocate_node(this->_M_impl._M_finish._M_first); call 0 never executed call 1 never executed call 2 never executed #####: 550: this->_M_impl._M_finish._M_set_node(this->_M_impl._M_finish._M_node - 1); call 0 never executed call 1 never executed call 2 never executed #####: 551: this->_M_impl._M_finish._M_cur = this->_M_impl._M_finish._M_last - 1; call 0 never executed call 1 never executed #####: 552: _Alloc_traits::destroy(_M_get_Tp_allocator(), call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 553: this->_M_impl._M_finish._M_cur); #####: 554: } -: 555: -: 556: // Called only if _M_impl._M_start._M_cur == _M_impl._M_start._M_last - 1. -: 557: // Note that if the deque has at least one element (a precondition for this -: 558: // member function), and if -: 559: // _M_impl._M_start._M_cur == _M_impl._M_start._M_last, -: 560: // then the deque must have at least two nodes. -: 561: template -: 562: void deque<_Tp, _Alloc>:: -: 563: _M_pop_front_aux() -: 564: { -: 565: _Alloc_traits::destroy(_M_get_Tp_allocator(), -: 566: this->_M_impl._M_start._M_cur); -: 567: _M_deallocate_node(this->_M_impl._M_start._M_first); -: 568: this->_M_impl._M_start._M_set_node(this->_M_impl._M_start._M_node + 1); -: 569: this->_M_impl._M_start._M_cur = this->_M_impl._M_start._M_first; -: 570: } -: 571: -: 572: template -: 573: template -: 574: void -: 575: deque<_Tp, _Alloc>:: -: 576: _M_range_insert_aux(iterator __pos, -: 577: _InputIterator __first, _InputIterator __last, -: 578: std::input_iterator_tag) -: 579: { std::copy(__first, __last, std::inserter(*this, __pos)); } -: 580: -: 581: template -: 582: template -: 583: void -: 584: deque<_Tp, _Alloc>:: -: 585: _M_range_insert_aux(iterator __pos, -: 586: _ForwardIterator __first, _ForwardIterator __last, -: 587: std::forward_iterator_tag) -: 588: { -: 589: const size_type __n = std::distance(__first, __last); -: 590: if (__pos._M_cur == this->_M_impl._M_start._M_cur) -: 591: { -: 592: iterator __new_start = _M_reserve_elements_at_front(__n); -: 593: __try -: 594: { -: 595: std::__uninitialized_copy_a(__first, __last, __new_start, -: 596: _M_get_Tp_allocator()); -: 597: this->_M_impl._M_start = __new_start; -: 598: } -: 599: __catch(...) -: 600: { -: 601: _M_destroy_nodes(__new_start._M_node, -: 602: this->_M_impl._M_start._M_node); -: 603: __throw_exception_again; -: 604: } -: 605: } -: 606: else if (__pos._M_cur == this->_M_impl._M_finish._M_cur) -: 607: { -: 608: iterator __new_finish = _M_reserve_elements_at_back(__n); -: 609: __try -: 610: { -: 611: std::__uninitialized_copy_a(__first, __last, -: 612: this->_M_impl._M_finish, -: 613: _M_get_Tp_allocator()); -: 614: this->_M_impl._M_finish = __new_finish; -: 615: } -: 616: __catch(...) -: 617: { -: 618: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -: 619: __new_finish._M_node + 1); -: 620: __throw_exception_again; -: 621: } -: 622: } -: 623: else -: 624: _M_insert_aux(__pos, __first, __last, __n); -: 625: } -: 626: -: 627: template -: 628:#if __cplusplus >= 201103L -: 629: template -: 630: typename deque<_Tp, _Alloc>::iterator -: 631: deque<_Tp, _Alloc>:: -: 632: _M_insert_aux(iterator __pos, _Args&&... __args) -: 633: { -: 634: value_type __x_copy(std::forward<_Args>(__args)...); // XXX copy -: 635:#else -: 636: typename deque<_Tp, _Alloc>::iterator -: 637: deque<_Tp, _Alloc>:: -: 638: _M_insert_aux(iterator __pos, const value_type& __x) -: 639: { -: 640: value_type __x_copy = __x; // XXX copy -: 641:#endif -: 642: difference_type __index = __pos - this->_M_impl._M_start; -: 643: if (static_cast(__index) < size() / 2) -: 644: { -: 645: push_front(_GLIBCXX_MOVE(front())); -: 646: iterator __front1 = this->_M_impl._M_start; -: 647: ++__front1; -: 648: iterator __front2 = __front1; -: 649: ++__front2; -: 650: __pos = this->_M_impl._M_start + __index; -: 651: iterator __pos1 = __pos; -: 652: ++__pos1; -: 653: _GLIBCXX_MOVE3(__front2, __pos1, __front1); -: 654: } -: 655: else -: 656: { -: 657: push_back(_GLIBCXX_MOVE(back())); -: 658: iterator __back1 = this->_M_impl._M_finish; -: 659: --__back1; -: 660: iterator __back2 = __back1; -: 661: --__back2; -: 662: __pos = this->_M_impl._M_start + __index; -: 663: _GLIBCXX_MOVE_BACKWARD3(__pos, __back2, __back1); -: 664: } -: 665: *__pos = _GLIBCXX_MOVE(__x_copy); -: 666: return __pos; -: 667: } -: 668: -: 669: template -: 670: void -: 671: deque<_Tp, _Alloc>:: -: 672: _M_insert_aux(iterator __pos, size_type __n, const value_type& __x) -: 673: { -: 674: const difference_type __elems_before = __pos - this->_M_impl._M_start; -: 675: const size_type __length = this->size(); -: 676: value_type __x_copy = __x; -: 677: if (__elems_before < difference_type(__length / 2)) -: 678: { -: 679: iterator __new_start = _M_reserve_elements_at_front(__n); -: 680: iterator __old_start = this->_M_impl._M_start; -: 681: __pos = this->_M_impl._M_start + __elems_before; -: 682: __try -: 683: { -: 684: if (__elems_before >= difference_type(__n)) -: 685: { -: 686: iterator __start_n = (this->_M_impl._M_start -: 687: + difference_type(__n)); -: 688: std::__uninitialized_move_a(this->_M_impl._M_start, -: 689: __start_n, __new_start, -: 690: _M_get_Tp_allocator()); -: 691: this->_M_impl._M_start = __new_start; -: 692: _GLIBCXX_MOVE3(__start_n, __pos, __old_start); -: 693: std::fill(__pos - difference_type(__n), __pos, __x_copy); -: 694: } -: 695: else -: 696: { -: 697: std::__uninitialized_move_fill(this->_M_impl._M_start, -: 698: __pos, __new_start, -: 699: this->_M_impl._M_start, -: 700: __x_copy, -: 701: _M_get_Tp_allocator()); -: 702: this->_M_impl._M_start = __new_start; -: 703: std::fill(__old_start, __pos, __x_copy); -: 704: } -: 705: } -: 706: __catch(...) -: 707: { -: 708: _M_destroy_nodes(__new_start._M_node, -: 709: this->_M_impl._M_start._M_node); -: 710: __throw_exception_again; -: 711: } -: 712: } -: 713: else -: 714: { -: 715: iterator __new_finish = _M_reserve_elements_at_back(__n); -: 716: iterator __old_finish = this->_M_impl._M_finish; -: 717: const difference_type __elems_after = -: 718: difference_type(__length) - __elems_before; -: 719: __pos = this->_M_impl._M_finish - __elems_after; -: 720: __try -: 721: { -: 722: if (__elems_after > difference_type(__n)) -: 723: { -: 724: iterator __finish_n = (this->_M_impl._M_finish -: 725: - difference_type(__n)); -: 726: std::__uninitialized_move_a(__finish_n, -: 727: this->_M_impl._M_finish, -: 728: this->_M_impl._M_finish, -: 729: _M_get_Tp_allocator()); -: 730: this->_M_impl._M_finish = __new_finish; -: 731: _GLIBCXX_MOVE_BACKWARD3(__pos, __finish_n, __old_finish); -: 732: std::fill(__pos, __pos + difference_type(__n), __x_copy); -: 733: } -: 734: else -: 735: { -: 736: std::__uninitialized_fill_move(this->_M_impl._M_finish, -: 737: __pos + difference_type(__n), -: 738: __x_copy, __pos, -: 739: this->_M_impl._M_finish, -: 740: _M_get_Tp_allocator()); -: 741: this->_M_impl._M_finish = __new_finish; -: 742: std::fill(__pos, __old_finish, __x_copy); -: 743: } -: 744: } -: 745: __catch(...) -: 746: { -: 747: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -: 748: __new_finish._M_node + 1); -: 749: __throw_exception_again; -: 750: } -: 751: } -: 752: } -: 753: -: 754: template -: 755: template -: 756: void -: 757: deque<_Tp, _Alloc>:: -: 758: _M_insert_aux(iterator __pos, -: 759: _ForwardIterator __first, _ForwardIterator __last, -: 760: size_type __n) -: 761: { -: 762: const difference_type __elemsbefore = __pos - this->_M_impl._M_start; -: 763: const size_type __length = size(); -: 764: if (static_cast(__elemsbefore) < __length / 2) -: 765: { -: 766: iterator __new_start = _M_reserve_elements_at_front(__n); -: 767: iterator __old_start = this->_M_impl._M_start; -: 768: __pos = this->_M_impl._M_start + __elemsbefore; -: 769: __try -: 770: { -: 771: if (__elemsbefore >= difference_type(__n)) -: 772: { -: 773: iterator __start_n = (this->_M_impl._M_start -: 774: + difference_type(__n)); -: 775: std::__uninitialized_move_a(this->_M_impl._M_start, -: 776: __start_n, __new_start, -: 777: _M_get_Tp_allocator()); -: 778: this->_M_impl._M_start = __new_start; -: 779: _GLIBCXX_MOVE3(__start_n, __pos, __old_start); -: 780: std::copy(__first, __last, __pos - difference_type(__n)); -: 781: } -: 782: else -: 783: { -: 784: _ForwardIterator __mid = __first; -: 785: std::advance(__mid, difference_type(__n) - __elemsbefore); -: 786: std::__uninitialized_move_copy(this->_M_impl._M_start, -: 787: __pos, __first, __mid, -: 788: __new_start, -: 789: _M_get_Tp_allocator()); -: 790: this->_M_impl._M_start = __new_start; -: 791: std::copy(__mid, __last, __old_start); -: 792: } -: 793: } -: 794: __catch(...) -: 795: { -: 796: _M_destroy_nodes(__new_start._M_node, -: 797: this->_M_impl._M_start._M_node); -: 798: __throw_exception_again; -: 799: } -: 800: } -: 801: else -: 802: { -: 803: iterator __new_finish = _M_reserve_elements_at_back(__n); -: 804: iterator __old_finish = this->_M_impl._M_finish; -: 805: const difference_type __elemsafter = -: 806: difference_type(__length) - __elemsbefore; -: 807: __pos = this->_M_impl._M_finish - __elemsafter; -: 808: __try -: 809: { -: 810: if (__elemsafter > difference_type(__n)) -: 811: { -: 812: iterator __finish_n = (this->_M_impl._M_finish -: 813: - difference_type(__n)); -: 814: std::__uninitialized_move_a(__finish_n, -: 815: this->_M_impl._M_finish, -: 816: this->_M_impl._M_finish, -: 817: _M_get_Tp_allocator()); -: 818: this->_M_impl._M_finish = __new_finish; -: 819: _GLIBCXX_MOVE_BACKWARD3(__pos, __finish_n, __old_finish); -: 820: std::copy(__first, __last, __pos); -: 821: } -: 822: else -: 823: { -: 824: _ForwardIterator __mid = __first; -: 825: std::advance(__mid, __elemsafter); -: 826: std::__uninitialized_copy_move(__mid, __last, __pos, -: 827: this->_M_impl._M_finish, -: 828: this->_M_impl._M_finish, -: 829: _M_get_Tp_allocator()); -: 830: this->_M_impl._M_finish = __new_finish; -: 831: std::copy(__first, __mid, __pos); -: 832: } -: 833: } -: 834: __catch(...) -: 835: { -: 836: _M_destroy_nodes(this->_M_impl._M_finish._M_node + 1, -: 837: __new_finish._M_node + 1); -: 838: __throw_exception_again; -: 839: } -: 840: } -: 841: } -: 842: -: 843: template -: 844: void -: 845: deque<_Tp, _Alloc>:: -: 846: _M_destroy_data_aux(iterator __first, iterator __last) -: 847: { -: 848: for (_Map_pointer __node = __first._M_node + 1; -: 849: __node < __last._M_node; ++__node) -: 850: std::_Destroy(*__node, *__node + _S_buffer_size(), -: 851: _M_get_Tp_allocator()); -: 852: -: 853: if (__first._M_node != __last._M_node) -: 854: { -: 855: std::_Destroy(__first._M_cur, __first._M_last, -: 856: _M_get_Tp_allocator()); -: 857: std::_Destroy(__last._M_first, __last._M_cur, -: 858: _M_get_Tp_allocator()); -: 859: } -: 860: else -: 861: std::_Destroy(__first._M_cur, __last._M_cur, -: 862: _M_get_Tp_allocator()); -: 863: } -: 864: -: 865: template -: 866: void -: 867: deque<_Tp, _Alloc>:: -: 868: _M_new_elements_at_front(size_type __new_elems) -: 869: { -: 870: if (this->max_size() - this->size() < __new_elems) -: 871: __throw_length_error(__N("deque::_M_new_elements_at_front")); -: 872: -: 873: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) -: 874: / _S_buffer_size()); -: 875: _M_reserve_map_at_front(__new_nodes); -: 876: size_type __i; -: 877: __try -: 878: { -: 879: for (__i = 1; __i <= __new_nodes; ++__i) -: 880: *(this->_M_impl._M_start._M_node - __i) = this->_M_allocate_node(); -: 881: } -: 882: __catch(...) -: 883: { -: 884: for (size_type __j = 1; __j < __i; ++__j) -: 885: _M_deallocate_node(*(this->_M_impl._M_start._M_node - __j)); -: 886: __throw_exception_again; -: 887: } -: 888: } -: 889: -: 890: template -: 891: void -: 892: deque<_Tp, _Alloc>:: -: 893: _M_new_elements_at_back(size_type __new_elems) -: 894: { -: 895: if (this->max_size() - this->size() < __new_elems) -: 896: __throw_length_error(__N("deque::_M_new_elements_at_back")); -: 897: -: 898: const size_type __new_nodes = ((__new_elems + _S_buffer_size() - 1) -: 899: / _S_buffer_size()); -: 900: _M_reserve_map_at_back(__new_nodes); -: 901: size_type __i; -: 902: __try -: 903: { -: 904: for (__i = 1; __i <= __new_nodes; ++__i) -: 905: *(this->_M_impl._M_finish._M_node + __i) = this->_M_allocate_node(); -: 906: } -: 907: __catch(...) -: 908: { -: 909: for (size_type __j = 1; __j < __i; ++__j) -: 910: _M_deallocate_node(*(this->_M_impl._M_finish._M_node + __j)); -: 911: __throw_exception_again; -: 912: } -: 913: } -: 914: -: 915: template -: 916: void function _ZNSt5dequeIPKvSaIS1_EE17_M_reallocate_mapEmb called 0 returned 0% blocks executed 0% #####: 917: deque<_Tp, _Alloc>:: -: 918: _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front) -: 919: { #####: 920: const size_type __old_num_nodes #####: 921: = this->_M_impl._M_finish._M_node - this->_M_impl._M_start._M_node + 1; call 0 never executed call 1 never executed #####: 922: const size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; -: 923: -: 924: _Map_pointer __new_nstart; #####: 925: if (this->_M_impl._M_map_size > 2 * __new_num_nodes) call 0 never executed branch 1 never executed branch 2 never executed -: 926: { #####: 927: __new_nstart = this->_M_impl._M_map + (this->_M_impl._M_map_size call 0 never executed call 1 never executed #####: 928: - __new_num_nodes) / 2 #####: 929: + (__add_at_front ? __nodes_to_add : 0); branch 0 never executed branch 1 never executed #####: 930: if (__new_nstart < this->_M_impl._M_start._M_node) call 0 never executed branch 1 never executed branch 2 never executed #####: 931: std::copy(this->_M_impl._M_start._M_node, call 0 never executed call 1 never executed #####: 932: this->_M_impl._M_finish._M_node + 1, call 0 never executed -: 933: __new_nstart); -: 934: else #####: 935: std::copy_backward(this->_M_impl._M_start._M_node, call 0 never executed call 1 never executed #####: 936: this->_M_impl._M_finish._M_node + 1, call 0 never executed #####: 937: __new_nstart + __old_num_nodes); -: 938: } -: 939: else -: 940: { #####: 941: size_type __new_map_size = this->_M_impl._M_map_size call 0 never executed #####: 942: + std::max(this->_M_impl._M_map_size, call 0 never executed call 1 never executed call 2 never executed -: 943: __nodes_to_add) + 2; -: 944: #####: 945: _Map_pointer __new_map = this->_M_allocate_map(__new_map_size); call 0 never executed call 1 never executed #####: 946: __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 #####: 947: + (__add_at_front ? __nodes_to_add : 0); branch 0 never executed branch 1 never executed #####: 948: std::copy(this->_M_impl._M_start._M_node, call 0 never executed call 1 never executed #####: 949: this->_M_impl._M_finish._M_node + 1, call 0 never executed -: 950: __new_nstart); #####: 951: _M_deallocate_map(this->_M_impl._M_map, this->_M_impl._M_map_size); call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 952: #####: 953: this->_M_impl._M_map = __new_map; call 0 never executed #####: 954: this->_M_impl._M_map_size = __new_map_size; call 0 never executed -: 955: } -: 956: #####: 957: this->_M_impl._M_start._M_set_node(__new_nstart); call 0 never executed call 1 never executed #####: 958: this->_M_impl._M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); call 0 never executed call 1 never executed #####: 959: } -: 960: -: 961: // Overload for deque::iterators, exploiting the "segmented-iterator -: 962: // optimization". -: 963: template -: 964: void -: 965: fill(const _Deque_iterator<_Tp, _Tp&, _Tp*>& __first, -: 966: const _Deque_iterator<_Tp, _Tp&, _Tp*>& __last, const _Tp& __value) -: 967: { -: 968: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -: 969: -: 970: for (typename _Self::_Map_pointer __node = __first._M_node + 1; -: 971: __node < __last._M_node; ++__node) -: 972: std::fill(*__node, *__node + _Self::_S_buffer_size(), __value); -: 973: -: 974: if (__first._M_node != __last._M_node) -: 975: { -: 976: std::fill(__first._M_cur, __first._M_last, __value); -: 977: std::fill(__last._M_first, __last._M_cur, __value); -: 978: } -: 979: else -: 980: std::fill(__first._M_cur, __last._M_cur, __value); -: 981: } -: 982: -: 983: template -: 984: _Deque_iterator<_Tp, _Tp&, _Tp*> -: 985: copy(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -: 986: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -: 987: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -: 988: { -: 989: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -: 990: typedef typename _Self::difference_type difference_type; -: 991: -: 992: difference_type __len = __last - __first; -: 993: while (__len > 0) -: 994: { -: 995: const difference_type __clen -: 996: = std::min(__len, std::min(__first._M_last - __first._M_cur, -: 997: __result._M_last - __result._M_cur)); -: 998: std::copy(__first._M_cur, __first._M_cur + __clen, __result._M_cur); -: 999: __first += __clen; -: 1000: __result += __clen; -: 1001: __len -= __clen; -: 1002: } -: 1003: return __result; -: 1004: } -: 1005: -: 1006: template -: 1007: _Deque_iterator<_Tp, _Tp&, _Tp*> -: 1008: copy_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -: 1009: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -: 1010: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -: 1011: { -: 1012: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -: 1013: typedef typename _Self::difference_type difference_type; -: 1014: -: 1015: difference_type __len = __last - __first; -: 1016: while (__len > 0) -: 1017: { -: 1018: difference_type __llen = __last._M_cur - __last._M_first; -: 1019: _Tp* __lend = __last._M_cur; -: 1020: -: 1021: difference_type __rlen = __result._M_cur - __result._M_first; -: 1022: _Tp* __rend = __result._M_cur; -: 1023: -: 1024: if (!__llen) -: 1025: { -: 1026: __llen = _Self::_S_buffer_size(); -: 1027: __lend = *(__last._M_node - 1) + __llen; -: 1028: } -: 1029: if (!__rlen) -: 1030: { -: 1031: __rlen = _Self::_S_buffer_size(); -: 1032: __rend = *(__result._M_node - 1) + __rlen; -: 1033: } -: 1034: -: 1035: const difference_type __clen = std::min(__len, -: 1036: std::min(__llen, __rlen)); -: 1037: std::copy_backward(__lend - __clen, __lend, __rend); -: 1038: __last -= __clen; -: 1039: __result -= __clen; -: 1040: __len -= __clen; -: 1041: } -: 1042: return __result; -: 1043: } -: 1044: -: 1045:#if __cplusplus >= 201103L -: 1046: template -: 1047: _Deque_iterator<_Tp, _Tp&, _Tp*> -: 1048: move(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -: 1049: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -: 1050: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -: 1051: { -: 1052: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -: 1053: typedef typename _Self::difference_type difference_type; -: 1054: -: 1055: difference_type __len = __last - __first; -: 1056: while (__len > 0) -: 1057: { -: 1058: const difference_type __clen -: 1059: = std::min(__len, std::min(__first._M_last - __first._M_cur, -: 1060: __result._M_last - __result._M_cur)); -: 1061: std::move(__first._M_cur, __first._M_cur + __clen, __result._M_cur); -: 1062: __first += __clen; -: 1063: __result += __clen; -: 1064: __len -= __clen; -: 1065: } -: 1066: return __result; -: 1067: } -: 1068: -: 1069: template -: 1070: _Deque_iterator<_Tp, _Tp&, _Tp*> -: 1071: move_backward(_Deque_iterator<_Tp, const _Tp&, const _Tp*> __first, -: 1072: _Deque_iterator<_Tp, const _Tp&, const _Tp*> __last, -: 1073: _Deque_iterator<_Tp, _Tp&, _Tp*> __result) -: 1074: { -: 1075: typedef typename _Deque_iterator<_Tp, _Tp&, _Tp*>::_Self _Self; -: 1076: typedef typename _Self::difference_type difference_type; -: 1077: -: 1078: difference_type __len = __last - __first; -: 1079: while (__len > 0) -: 1080: { -: 1081: difference_type __llen = __last._M_cur - __last._M_first; -: 1082: _Tp* __lend = __last._M_cur; -: 1083: -: 1084: difference_type __rlen = __result._M_cur - __result._M_first; -: 1085: _Tp* __rend = __result._M_cur; -: 1086: -: 1087: if (!__llen) -: 1088: { -: 1089: __llen = _Self::_S_buffer_size(); -: 1090: __lend = *(__last._M_node - 1) + __llen; -: 1091: } -: 1092: if (!__rlen) -: 1093: { -: 1094: __rlen = _Self::_S_buffer_size(); -: 1095: __rend = *(__result._M_node - 1) + __rlen; -: 1096: } -: 1097: -: 1098: const difference_type __clen = std::min(__len, -: 1099: std::min(__llen, __rlen)); -: 1100: std::move_backward(__lend - __clen, __lend, __rend); -: 1101: __last -= __clen; -: 1102: __result -= __clen; -: 1103: __len -= __clen; -: 1104: } -: 1105: return __result; -: 1106: } -: 1107:#endif -: 1108: -: 1109:_GLIBCXX_END_NAMESPACE_CONTAINER -: 1110:} // namespace std -: 1111: -: 1112:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#xpressive#sub_match.hpp.gcov -: 0:Source:/usr/include/boost/xpressive/sub_match.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1://///////////////////////////////////////////////////////////////////////////// -: 2:/// \file sub_match.hpp -: 3:/// Contains the definition of the class template sub_match\<\> -: 4:/// and associated helper functions -: 5:// -: 6:// Copyright 2008 Eric Niebler. Distributed under the Boost -: 7:// Software License, Version 1.0. (See accompanying file -: 8:// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -: 9: -: 10:#ifndef BOOST_XPRESSIVE_SUB_MATCH_HPP_EAN_10_04_2005 -: 11:#define BOOST_XPRESSIVE_SUB_MATCH_HPP_EAN_10_04_2005 -: 12: -: 13:// MS compatible compilers support #pragma once -: 14:#if defined(_MSC_VER) -: 15:# pragma once -: 16:#endif -: 17: -: 18:#include -: 19:#include -: 20:#include -: 21:#include -: 22:#include -: 23:#include -: 24:#include -: 25:#include -: 26:#include -: 27:#include -: 28:#include -: 29: -: 30://{{AFX_DOC_COMMENT -: 31://///////////////////////////////////////////////////////////////////////////// -: 32:// This is a hack to get Doxygen to show the inheritance relation between -: 33:// sub_match and std::pair. -: 34:#ifdef BOOST_XPRESSIVE_DOXYGEN_INVOKED -: 35:/// INTERNAL ONLY -: 36:namespace std -: 37:{ -: 38: /// INTERNAL ONLY -: 39: template struct pair {}; -: 40:} -: 41:#endif -: 42://}}AFX_DOC_COMMENT -: 43: -: 44:namespace boost { namespace xpressive -: 45:{ -: 46: -: 47://///////////////////////////////////////////////////////////////////////////// -: 48:// sub_match -: 49:// -: 50:/// \brief Class template \c sub_match denotes the sequence of characters matched by a particular -: 51:/// marked sub-expression. -: 52:/// -: 53:/// When the marked sub-expression denoted by an object of type \c sub_match\<\> participated in a -: 54:/// regular expression match then member \c matched evaluates to \c true, and members \c first and \c second -: 55:/// denote the range of characters [first,second) which formed that match. Otherwise \c matched is \c false, -: 56:/// and members \c first and \c second contained undefined values. -: 57:/// -: 58:/// If an object of type \c sub_match\<\> represents sub-expression 0 - that is to say the whole match - -: 59:/// then member \c matched is always \c true, unless a partial match was obtained as a result of the flag -: 60:/// \c match_partial being passed to a regular expression algorithm, in which case member \c matched is -: 61:/// \c false, and members \c first and \c second represent the character range that formed the partial match. -: 62:template function _ZN5boost9xpressive9sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEaSEOSD_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive9sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEaSERKSD_ called 0 returned 0% blocks executed 0% #####: 63:struct sub_match call 0 never executed call 1 never executed call 2 never executed call 3 never executed branch 4 never executed branch 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed branch 12 never executed branch 13 never executed call 14 never executed call 15 never executed -: 64: : std::pair -: 65:{ -: 66:private: -: 67: /// INTERNAL ONLY -: 68: /// -: 69: struct dummy { int i_; }; -: 70: typedef int dummy::*bool_type; -: 71: -: 72:public: -: 73: typedef typename iterator_value::type value_type; -: 74: typedef typename iterator_difference::type difference_type; -: 75: typedef typename detail::string_type::type string_type; -: 76: typedef BidiIter iterator; -: 77: function _ZN5boost9xpressive9sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2Ev called 0 returned 0% blocks executed 0% #####: 78: sub_match() call 0 never executed -: 79: : std::pair() #####: 80: , matched(false) call 0 never executed call 1 never executed call 2 never executed -: 81: { #####: 82: } -: 83: function _ZN5boost9xpressive9sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ESC_SC_b called 0 returned 0% blocks executed 0% #####: 84: sub_match(BidiIter first, BidiIter second, bool matched_ = false) call 0 never executed -: 85: : std::pair(first, second) #####: 86: , matched(matched_) call 0 never executed call 1 never executed call 2 never executed -: 87: { #####: 88: } -: 89: -: 90: string_type str() const -: 91: { -: 92: return this->matched ? string_type(this->first, this->second) : string_type(); -: 93: } -: 94: function _ZNK5boost9xpressive9sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEcvSB_Ev called 0 returned 0% blocks executed 0% #####: 95: operator string_type() const -: 96: { #####: 97: return this->matched ? string_type(this->first, this->second) : string_type(); call 0 never executed branch 1 never executed branch 2 never executed branch 3 never executed branch 4 never executed call 5 never executed call 6 never executed branch 7 never executed branch 8 never executed call 9 never executed branch 10 never executed branch 11 never executed call 12 never executed branch 13 never executed branch 14 never executed call 15 never executed -: 98: } -: 99: function _ZNK5boost9xpressive9sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE6lengthEv called 0 returned 0% blocks executed 0% #####: 100: difference_type length() const -: 101: { #####: 102: return this->matched ? std::distance(this->first, this->second) : 0; call 0 never executed branch 1 never executed branch 2 never executed branch 3 never executed branch 4 never executed call 5 never executed -: 103: } -: 104: -: 105: operator bool_type() const -: 106: { -: 107: return this->matched ? &dummy::i_ : 0; -: 108: } -: 109: -: 110: bool operator !() const -: 111: { -: 112: return !this->matched; -: 113: } -: 114: -: 115: /// \brief Performs a lexicographic string comparison -: 116: /// \param str the string against which to compare -: 117: /// \return the results of (*this).str().compare(str) -: 118: int compare(string_type const &str) const -: 119: { -: 120: return this->str().compare(str); -: 121: } -: 122: -: 123: /// \overload -: 124: /// -: 125: int compare(sub_match const &sub) const -: 126: { -: 127: return this->str().compare(sub.str()); -: 128: } -: 129: -: 130: /// \overload -: 131: /// -: 132: int compare(value_type const *ptr) const -: 133: { -: 134: return this->str().compare(ptr); -: 135: } -: 136: -: 137: /// \brief true if this sub-match participated in the full match. -: 138: bool matched; -: 139:}; -: 140: -: 141://///////////////////////////////////////////////////////////////////////////// -: 142:/// \brief \c range_begin() to make \c sub_match\<\> a valid range -: 143:/// \param sub the \c sub_match\<\> object denoting the range -: 144:/// \return \c sub.first -: 145:/// \pre \c sub.first is not singular -: 146:template -: 147:inline BidiIter range_begin(sub_match &sub) -: 148:{ -: 149: return sub.first; -: 150:} -: 151: -: 152:/// \overload -: 153:/// -: 154:template -: 155:inline BidiIter range_begin(sub_match const &sub) -: 156:{ -: 157: return sub.first; -: 158:} -: 159: -: 160://///////////////////////////////////////////////////////////////////////////// -: 161:/// \brief \c range_end() to make \c sub_match\<\> a valid range -: 162:/// \param sub the \c sub_match\<\> object denoting the range -: 163:/// \return \c sub.second -: 164:/// \pre \c sub.second is not singular -: 165:template -: 166:inline BidiIter range_end(sub_match &sub) -: 167:{ -: 168: return sub.second; -: 169:} -: 170: -: 171:/// \overload -: 172:/// -: 173:template -: 174:inline BidiIter range_end(sub_match const &sub) -: 175:{ -: 176: return sub.second; -: 177:} -: 178: -: 179://///////////////////////////////////////////////////////////////////////////// -: 180:/// \brief insertion operator for sending sub-matches to ostreams -: 181:/// \param sout output stream. -: 182:/// \param sub sub_match object to be written to the stream. -: 183:/// \return sout \<\< sub.str() -: 184:template -: 185:inline std::basic_ostream &operator << -: 186:( -: 187: std::basic_ostream &sout -: 188: , sub_match const &sub -: 189:) -: 190:{ -: 191: typedef typename iterator_value::type char_type; -: 192: BOOST_MPL_ASSERT_MSG( -: 193: (boost::is_same::value) -: 194: , CHARACTER_TYPES_OF_STREAM_AND_SUB_MATCH_MUST_MATCH -: 195: , (Char, char_type) -: 196: ); -: 197: if(sub.matched) -: 198: { -: 199: std::ostream_iterator iout(sout); -: 200: std::copy(sub.first, sub.second, iout); -: 201: } -: 202: return sout; -: 203:} -: 204: -: 205: -: 206:// BUGBUG make these more efficient -: 207: -: 208:template -: 209:bool operator == (sub_match const &lhs, sub_match const &rhs) -: 210:{ -: 211: return lhs.compare(rhs) == 0; -: 212:} -: 213: -: 214:template -: 215:bool operator != (sub_match const &lhs, sub_match const &rhs) -: 216:{ -: 217: return lhs.compare(rhs) != 0; -: 218:} -: 219: -: 220:template -: 221:bool operator < (sub_match const &lhs, sub_match const &rhs) -: 222:{ -: 223: return lhs.compare(rhs) < 0; -: 224:} -: 225: -: 226:template -: 227:bool operator <= (sub_match const &lhs, sub_match const &rhs) -: 228:{ -: 229: return lhs.compare(rhs) <= 0; -: 230:} -: 231: -: 232:template -: 233:bool operator >= (sub_match const &lhs, sub_match const &rhs) -: 234:{ -: 235: return lhs.compare(rhs) >= 0; -: 236:} -: 237: -: 238:template -: 239:bool operator > (sub_match const &lhs, sub_match const &rhs) -: 240:{ -: 241: return lhs.compare(rhs) > 0; -: 242:} -: 243: -: 244:template -: 245:bool operator == (typename iterator_value::type const *lhs, sub_match const &rhs) -: 246:{ -: 247: return lhs == rhs.str(); -: 248:} -: 249: -: 250:template -: 251:bool operator != (typename iterator_value::type const *lhs, sub_match const &rhs) -: 252:{ -: 253: return lhs != rhs.str(); -: 254:} -: 255: -: 256:template -: 257:bool operator < (typename iterator_value::type const *lhs, sub_match const &rhs) -: 258:{ -: 259: return lhs < rhs.str(); -: 260:} -: 261: -: 262:template -: 263:bool operator > (typename iterator_value::type const *lhs, sub_match const &rhs) -: 264:{ -: 265: return lhs> rhs.str(); -: 266:} -: 267: -: 268:template -: 269:bool operator >= (typename iterator_value::type const *lhs, sub_match const &rhs) -: 270:{ -: 271: return lhs >= rhs.str(); -: 272:} -: 273: -: 274:template -: 275:bool operator <= (typename iterator_value::type const *lhs, sub_match const &rhs) -: 276:{ -: 277: return lhs <= rhs.str(); -: 278:} -: 279: -: 280:template -: 281:bool operator == (sub_match const &lhs, typename iterator_value::type const *rhs) -: 282:{ -: 283: return lhs.str() == rhs; -: 284:} -: 285: -: 286:template -: 287:bool operator != (sub_match const &lhs, typename iterator_value::type const *rhs) -: 288:{ -: 289: return lhs.str() != rhs; -: 290:} -: 291: -: 292:template -: 293:bool operator < (sub_match const &lhs, typename iterator_value::type const *rhs) -: 294:{ -: 295: return lhs.str() < rhs; -: 296:} -: 297: -: 298:template -: 299:bool operator > (sub_match const &lhs, typename iterator_value::type const *rhs) -: 300:{ -: 301: return lhs.str() > rhs; -: 302:} -: 303: -: 304:template -: 305:bool operator >= (sub_match const &lhs, typename iterator_value::type const *rhs) -: 306:{ -: 307: return lhs.str() >= rhs; -: 308:} -: 309: -: 310:template -: 311:bool operator <= (sub_match const &lhs, typename iterator_value::type const *rhs) -: 312:{ -: 313: return lhs.str() <= rhs; -: 314:} -: 315: -: 316:template -: 317:bool operator == (typename iterator_value::type const &lhs, sub_match const &rhs) -: 318:{ -: 319: return lhs == rhs.str(); -: 320:} -: 321: -: 322:template -: 323:bool operator != (typename iterator_value::type const &lhs, sub_match const &rhs) -: 324:{ -: 325: return lhs != rhs.str(); -: 326:} -: 327: -: 328:template -: 329:bool operator < (typename iterator_value::type const &lhs, sub_match const &rhs) -: 330:{ -: 331: return lhs < rhs.str(); -: 332:} -: 333: -: 334:template -: 335:bool operator > (typename iterator_value::type const &lhs, sub_match const &rhs) -: 336:{ -: 337: return lhs> rhs.str(); -: 338:} -: 339: -: 340:template -: 341:bool operator >= (typename iterator_value::type const &lhs, sub_match const &rhs) -: 342:{ -: 343: return lhs >= rhs.str(); -: 344:} -: 345: -: 346:template -: 347:bool operator <= (typename iterator_value::type const &lhs, sub_match const &rhs) -: 348:{ -: 349: return lhs <= rhs.str(); -: 350:} -: 351: -: 352:template -: 353:bool operator == (sub_match const &lhs, typename iterator_value::type const &rhs) -: 354:{ -: 355: return lhs.str() == rhs; -: 356:} -: 357: -: 358:template -: 359:bool operator != (sub_match const &lhs, typename iterator_value::type const &rhs) -: 360:{ -: 361: return lhs.str() != rhs; -: 362:} -: 363: -: 364:template -: 365:bool operator < (sub_match const &lhs, typename iterator_value::type const &rhs) -: 366:{ -: 367: return lhs.str() < rhs; -: 368:} -: 369: -: 370:template -: 371:bool operator > (sub_match const &lhs, typename iterator_value::type const &rhs) -: 372:{ -: 373: return lhs.str() > rhs; -: 374:} -: 375: -: 376:template -: 377:bool operator >= (sub_match const &lhs, typename iterator_value::type const &rhs) -: 378:{ -: 379: return lhs.str() >= rhs; -: 380:} -: 381: -: 382:template -: 383:bool operator <= (sub_match const &lhs, typename iterator_value::type const &rhs) -: 384:{ -: 385: return lhs.str() <= rhs; -: 386:} -: 387: -: 388:// Operator+ convenience function -: 389:template -: 390:typename sub_match::string_type -: 391:operator + (sub_match const &lhs, sub_match const &rhs) -: 392:{ -: 393: return lhs.str() + rhs.str(); -: 394:} -: 395: -: 396:template -: 397:typename sub_match::string_type -: 398:operator + (sub_match const &lhs, typename iterator_value::type const &rhs) -: 399:{ -: 400: return lhs.str() + rhs; -: 401:} -: 402: -: 403:template -: 404:typename sub_match::string_type -: 405:operator + (typename iterator_value::type const &lhs, sub_match const &rhs) -: 406:{ -: 407: return lhs + rhs.str(); -: 408:} -: 409: -: 410:template -: 411:typename sub_match::string_type -: 412:operator + (sub_match const &lhs, typename iterator_value::type const *rhs) -: 413:{ -: 414: return lhs.str() + rhs; -: 415:} -: 416: -: 417:template -: 418:typename sub_match::string_type -: 419:operator + (typename iterator_value::type const *lhs, sub_match const &rhs) -: 420:{ -: 421: return lhs + rhs.str(); -: 422:} -: 423: -: 424:template -: 425:typename sub_match::string_type -: 426:operator + (sub_match const &lhs, typename sub_match::string_type const &rhs) -: 427:{ -: 428: return lhs.str() + rhs; -: 429:} -: 430: -: 431:template -: 432:typename sub_match::string_type -: 433:operator + (typename sub_match::string_type const &lhs, sub_match const &rhs) -: 434:{ -: 435: return lhs + rhs.str(); -: 436:} -: 437: -: 438:}} // namespace boost::xpressive -: 439: -: 440:// Hook the Boost.Range customization points to make sub_match a valid range. -: 441:namespace boost -: 442:{ -: 443: /// INTERNAL ONLY -: 444: /// -: 445: template -: 446: struct range_mutable_iterator > -: 447: { -: 448: typedef BidiIter type; -: 449: }; -: 450: -: 451: /// INTERNAL ONLY -: 452: /// -: 453: template -: 454: struct range_const_iterator > -: 455: { -: 456: typedef BidiIter type; -: 457: }; -: 458:} -: 459: -: 460:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/^#RibiClasses#CppCanvas#canvascolorsystems.cpp.gcov -: 0:Source:../RibiClasses/CppCanvas/canvascolorsystems.cpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#include "canvascolorsystems.h" -: 2: -: 3:#include -: 4: 1: 5:boost::bimap ribi::CanvasColorSystems::m_map; call 0 returned 100% call 1 returned 100% call 2 returned 100% branch 3 taken 100% (fallthrough) branch 4 taken 0% (throw) call 5 returned 100% call 6 returned 100% call 7 returned 100% call 8 never executed call 9 never executed -: 6: function _ZN4ribi18CanvasColorSystemsC2Ev called 0 returned 0% blocks executed 0% #####: 7:ribi::CanvasColorSystems::CanvasColorSystems() -: 8:{ -: 9: #####: 10:} -: 11: function _ZN4ribi18CanvasColorSystems9CreateMapB5cxx11Ev called 0 returned 0% blocks executed 0% #####: 12:boost::bimap ribi::CanvasColorSystems::CreateMap() -: 13:{ #####: 14: boost::bimap m; call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed #####: 15: m.insert(boost::bimap::value_type( call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed call 8 never executed call 9 never executed branch 10 never executed branch 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed -: 16: CanvasColorSystem::invert,"invert")); #####: 17: m.insert(boost::bimap::value_type( call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed call 8 never executed call 9 never executed branch 10 never executed branch 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed call 18 never executed -: 18: CanvasColorSystem::normal,"normal")); #####: 19: return m; call 0 never executed -: 20:} -: 21: function _ZNK4ribi18CanvasColorSystems6GetAllEv called 0 returned 0% blocks executed 0% #####: 22:std::vector ribi::CanvasColorSystems::GetAll() const noexcept -: 23:{ -: 24: const std::vector v { -: 25: CanvasColorSystem::invert, -: 26: CanvasColorSystem::normal #####: 27: }; call 0 never executed call 1 never executed call 2 never executed #####: 28: assert(static_cast(v.size()) == static_cast(CanvasColorSystem::n_types)); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed #####: 29: return v; -: 30:} -: 31: function _ZNK4ribi18CanvasColorSystems5ToStrB5cxx11ENS_17CanvasColorSystemE called 0 returned 0% blocks executed 0% #####: 32:std::string ribi::CanvasColorSystems::ToStr(const CanvasColorSystem type) const noexcept -: 33:{ #####: 34: if (m_map.left.empty()) m_map = CreateMap(); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed #####: 35: assert(!m_map.left.empty()); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed #####: 36: assert(m_map.left.count(type)); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed #####: 37: const std::string s = m_map.left.find(type)->second; call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 38: return s; -: 39:} -: 40: function _ZNK4ribi18CanvasColorSystems6ToTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE called 0 returned 0% blocks executed 0% #####: 41:ribi::CanvasColorSystem ribi::CanvasColorSystems::ToType(const std::string& s) const -: 42:{ #####: 43: if (m_map.right.empty()) m_map = CreateMap(); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed call 8 never executed call 9 never executed call 10 never executed #####: 44: assert(!m_map.right.empty()); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed #####: 45: assert(m_map.right.count(s) == 1); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed #####: 46: const CanvasColorSystem t = m_map.right.find(s)->second; call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed call 5 never executed #####: 47: return t; function _GLOBAL__sub_I_canvascolorsystems.cpp called 1 returned 100% blocks executed 100% function _Z41__static_initialization_and_destruction_0ii called 1 returned 100% blocks executed 77% 3: 48:} call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% branch 3 taken 100% (fallthrough) branch 4 taken 0% <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#smart_ptr#detail#operator_bool.hpp.gcov -: 0:Source:/usr/include/boost/smart_ptr/detail/operator_bool.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixtext.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixtext.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// This header intentionally has no include guards. -: 2:// -: 3:// Copyright (c) 2001-2009, 2012 Peter Dimov -: 4:// -: 5:// Distributed under the Boost Software License, Version 1.0. -: 6:// See accompanying file LICENSE_1_0.txt or copy at -: 7:// http://www.boost.org/LICENSE_1_0.txt -: 8: -: 9:#if !defined( BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS ) && !defined( BOOST_NO_CXX11_NULLPTR )\ -: 10: && !(defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x5130)) -: 11: function _ZNK5boost10shared_ptrIKN4ribi15DotMatrixStringEEcvbEv called 0 returned 0% blocks executed 0% #####: 12: explicit operator bool () const BOOST_SP_NOEXCEPT -: 13: { #####: 14: return px != 0; call 0 never executed -: 15: } -: 16: -: 17:#elif ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570) ) || defined(__CINT__) -: 18: -: 19: operator bool () const BOOST_SP_NOEXCEPT -: 20: { -: 21: return px != 0; -: 22: } -: 23: -: 24:#elif defined( _MANAGED ) -: 25: -: 26: static void unspecified_bool( this_type*** ) -: 27: { -: 28: } -: 29: -: 30: typedef void (*unspecified_bool_type)( this_type*** ); -: 31: -: 32: operator unspecified_bool_type() const BOOST_SP_NOEXCEPT -: 33: { -: 34: return px == 0? 0: unspecified_bool; -: 35: } -: 36: -: 37:#elif \ -: 38: ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \ -: 39: ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \ -: 40: ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) ) -: 41: -: 42: typedef element_type * (this_type::*unspecified_bool_type)() const; -: 43: -: 44: operator unspecified_bool_type() const BOOST_SP_NOEXCEPT -: 45: { -: 46: return px == 0? 0: &this_type::get; -: 47: } -: 48: -: 49:#else -: 50: -: 51: typedef element_type * this_type::*unspecified_bool_type; -: 52: -: 53: operator unspecified_bool_type() const BOOST_SP_NOEXCEPT -: 54: { -: 55: return px == 0? 0: &this_type::px; -: 56: } -: 57: -: 58:#endif -: 59: -: 60: // operator! is redundant, but some compilers need it -: 61: bool operator! () const BOOST_SP_NOEXCEPT -: 62: { -: 63: return px == 0; -: 64: } <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#xpressive#detail#core#access.hpp.gcov -: 0:Source:/usr/include/boost/xpressive/detail/core/access.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1://///////////////////////////////////////////////////////////////////////////// -: 2:// access.hpp -: 3:// -: 4:// Copyright 2008 Eric Niebler. Distributed under the Boost -: 5:// Software License, Version 1.0. (See accompanying file -: 6:// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -: 7: -: 8:#ifndef BOOST_XPRESSIVE_DETAIL_CORE_ACCESS_HPP_EAN_10_04_2005 -: 9:#define BOOST_XPRESSIVE_DETAIL_CORE_ACCESS_HPP_EAN_10_04_2005 -: 10: -: 11:// MS compatible compilers support #pragma once -: 12:#if defined(_MSC_VER) -: 13:# pragma once -: 14:#endif -: 15: -: 16:#include -: 17:#include -: 18:#include -: 19:#include -: 20:#include -: 21:#include // for type_info_less -: 22: -: 23:namespace boost { namespace xpressive { namespace detail -: 24:{ -: 25: -: 26://///////////////////////////////////////////////////////////////////////////// -: 27:// core_access -: 28:// -: 29:template -: 30:struct core_access -: 31:{ -: 32: typedef typename iterator_value::type char_type; -: 33: -: 34: static std::size_t get_hidden_mark_count(basic_regex const &rex) -: 35: { -: 36: return proto::value(rex)->hidden_mark_count_; -: 37: } -: 38: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE5matchERKNS0_11basic_regexISD_EERNS1_11match_stateISD_EE called 0 returned 0% blocks executed 0% #####: 39: static bool match(basic_regex const &rex, match_state &state) -: 40: { #####: 41: return rex.match_(state); call 0 never executed call 1 never executed -: 42: } -: 43: -: 44: static shared_ptr > const & function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE14get_regex_implERKNS0_11basic_regexISD_EE called 0 returned 0% blocks executed 0% #####: 45: get_regex_impl(basic_regex const &rex) -: 46: { #####: 47: return proto::value(rex).get(); call 0 never executed call 1 never executed -: 48: } -: 49: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE21init_sub_match_vectorERNS1_16sub_match_vectorISD_EEPNS1_14sub_match_implISD_EEm called 0 returned 0% blocks executed 0% #####: 50: static void init_sub_match_vector -: 51: ( -: 52: sub_match_vector &subs_vect -: 53: , sub_match_impl *subs_ptr -: 54: , std::size_t size -: 55: ) -: 56: { #####: 57: subs_vect.init_(subs_ptr, size); call 0 never executed call 1 never executed #####: 58: } -: 59: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE21init_sub_match_vectorERNS1_16sub_match_vectorISD_EEPNS1_14sub_match_implISD_EEmRKSG_ called 0 returned 0% blocks executed 0% #####: 60: static void init_sub_match_vector -: 61: ( -: 62: sub_match_vector &subs_vect -: 63: , sub_match_impl *subs_ptr -: 64: , std::size_t size -: 65: , sub_match_vector const &that -: 66: ) -: 67: { #####: 68: subs_vect.init_(subs_ptr, size, that); call 0 never executed call 1 never executed #####: 69: } -: 70: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE18init_match_resultsERNS0_13match_resultsISD_EEPKvRKNS_13intrusive_ptrIKNS1_6traitsIcEEEEPNS1_14sub_match_implISD_EEmRKSt6vectorINS1_10named_markIcEESaISW_EE called 0 returned 0% blocks executed 0% #####: 71: static void init_match_results -: 72: ( -: 73: match_results &what -: 74: , regex_id_type regex_id -: 75: , intrusive_ptr const> const &tr -: 76: , sub_match_impl *sub_matches -: 77: , std::size_t size -: 78: , std::vector > const &named_marks -: 79: ) -: 80: { #####: 81: what.init_(regex_id, tr, sub_matches, size, named_marks); call 0 never executed call 1 never executed #####: 82: } -: 83: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE20get_sub_match_vectorERNS0_13match_resultsISD_EE called 0 returned 0% blocks executed 0% #####: 84: static sub_match_vector &get_sub_match_vector(match_results &what) -: 85: { #####: 86: return what.sub_matches_; call 0 never executed -: 87: } -: 88: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE15get_sub_matchesERNS1_16sub_match_vectorISD_EE called 0 returned 0% blocks executed 0% #####: 89: static sub_match_impl *get_sub_matches(sub_match_vector &subs) -: 90: { #####: 91: return subs.sub_matches_; call 0 never executed -: 92: } -: 93: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE10get_extrasERNS0_13match_resultsISD_EE called 0 returned 0% blocks executed 0% #####: 94: static results_extras &get_extras(match_results &what) -: 95: { #####: 96: return what.get_extras_(); call 0 never executed call 1 never executed call 2 never executed -: 97: } -: 98: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE18get_nested_resultsERNS0_13match_resultsISD_EE called 0 returned 0% blocks executed 0% #####: 99: static nested_results &get_nested_results(match_results &what) -: 100: { #####: 101: return what.nested_results_; call 0 never executed -: 102: } -: 103: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE15get_action_argsERNS0_13match_resultsISD_EE called 0 returned 0% blocks executed 0% #####: 104: static action_args_type &get_action_args(match_results &what) -: 105: { #####: 106: return what.args_; call 0 never executed -: 107: } -: 108: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE17set_prefix_suffixERNS0_13match_resultsISD_EESD_SD_ called 0 returned 0% blocks executed 0% #####: 109: static void set_prefix_suffix(match_results &what, BidiIter begin, BidiIter end) -: 110: { #####: 111: what.set_prefix_suffix_(begin, end); call 0 never executed call 1 never executed #####: 112: } -: 113: function _ZN5boost9xpressive6detail11core_accessIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE5resetERNS0_13match_resultsISD_EE called 0 returned 0% blocks executed 0% #####: 114: static void reset(match_results &what) -: 115: { #####: 116: what.reset_(); call 0 never executed call 1 never executed #####: 117: } -: 118: -: 119: static void set_base(match_results &what, BidiIter base) -: 120: { -: 121: what.set_base_(base); -: 122: } -: 123: -: 124: static BidiIter get_base(match_results &what) -: 125: { -: 126: return *what.base_; -: 127: } -: 128:}; -: 129: -: 130:}}} // namespace boost::xpressive::detail -: 131: -: 132:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#multi_array#extent_range.hpp.gcov -: 0:Source:/usr/include/boost/multi_array/extent_range.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Copyright 2002 The Trustees of Indiana University. -: 2: -: 3:// Use, modification and distribution is subject to the Boost Software -: 4:// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -: 5:// http://www.boost.org/LICENSE_1_0.txt) -: 6: -: 7:// Boost.MultiArray Library -: 8:// Authors: Ronald Garcia -: 9:// Jeremy Siek -: 10:// Andrew Lumsdaine -: 11:// See http://www.boost.org/libs/multi_array for documentation. -: 12: -: 13:#ifndef BOOST_EXTENT_RANGE_RG071801_HPP -: 14:#define BOOST_EXTENT_RANGE_RG071801_HPP -: 15: -: 16:#include -: 17: -: 18:namespace boost { -: 19:namespace detail { -: 20:namespace multi_array { -: 21: -: 22:template -: 23:class extent_range : private std::pair { -: 24: typedef std::pair super_type; -: 25:public: -: 26: typedef Extent index; -: 27: typedef SizeType size_type; -: 28: -: 29: extent_range(index start, index finish) : -: 30: super_type(start,finish) { } -: 31: -: 32: extent_range(index finish) : -: 33: super_type(0,finish) { } -: 34: function _ZN5boost6detail11multi_array12extent_rangeIlmEC2Ev called 0 returned 0% blocks executed 0% #####: 35: extent_range() : super_type(0,0) { } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 36: -: 37: index start() const { return super_type::first; } -: 38: -: 39: index finish() const { return super_type::second; } -: 40: -: 41: size_type size() const { return super_type::second - super_type::first; } -: 42:}; -: 43: -: 44:} // namespace multi_array -: 45:} // namespace detail -: 46:} // namespace boost -: 47: -: 48: -: 49:#endif // BOOST_EXTENT_RANGE_RG071801_HPP <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#signals2#detail#slot_call_iterator.hpp.gcov -: 0:Source:/usr/include/boost/signals2/detail/slot_call_iterator.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Boost.Signals2 library -: 2: -: 3:// Copyright Douglas Gregor 2001-2004. -: 4:// Copyright Frank Mori Hess 2007-2008. -: 5:// Use, modification and -: 6:// distribution is subject to the Boost Software License, Version -: 7:// 1.0. (See accompanying file LICENSE_1_0.txt or copy at -: 8:// http://www.boost.org/LICENSE_1_0.txt) -: 9: -: 10:// For more information, see http://www.boost.org -: 11: -: 12:#ifndef BOOST_SIGNALS2_SLOT_CALL_ITERATOR_HPP -: 13:#define BOOST_SIGNALS2_SLOT_CALL_ITERATOR_HPP -: 14: -: 15:#include -: 16:#include -: 17:#include -: 18:#include -: 19:#include -: 20:#include -: 21:#include -: 22:#include -: 23:#include -: 24:#include -: 25:#include -: 26:#include -: 27:#include -: 28: -: 29:namespace boost { -: 30: namespace signals2 { -: 31: namespace detail { -: 32: template -: 33: class slot_call_iterator_cache -: 34: { -: 35: public: function _ZN5boost8signals26detail24slot_call_iterator_cacheINS1_9void_typeENS1_21variadic_slot_invokerIS3_JPN4ribi9tictactoe4GameEEEEEC2ERKS9_ called 0 returned 0% blocks executed 0% #####: 36: slot_call_iterator_cache(const Function &f_arg): call 0 never executed -: 37: f(f_arg), -: 38: connected_slot_count(0), -: 39: disconnected_slot_count(0), #####: 40: m_active_slot(0) call 0 never executed call 1 never executed call 2 never executed call 3 never executed branch 4 never executed branch 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed #####: 41: {} -: 42: function _ZN5boost8signals26detail24slot_call_iterator_cacheINS1_9void_typeENS1_21variadic_slot_invokerIS3_JPN4ribi9tictactoe4GameEEEEED2Ev called 0 returned 0% blocks executed 0% #####: 43: ~slot_call_iterator_cache() -: 44: { #####: 45: if(m_active_slot) call 0 never executed branch 1 never executed branch 2 never executed -: 46: { #####: 47: garbage_collecting_lock lock(*m_active_slot); call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 48: m_active_slot->dec_slot_refcount(lock); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 49: } #####: 50: } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 51: -: 52: template function _ZN5boost8signals26detail24slot_call_iterator_cacheINS1_9void_typeENS1_21variadic_slot_invokerIS3_JPN4ribi9tictactoe4GameEEEEE15set_active_slotINS1_20connection_body_baseEEEvRNS1_23garbage_collecting_lockIT_EEPSC_ called 0 returned 0% blocks executed 0% #####: 53: void set_active_slot(garbage_collecting_lock &lock, -: 54: connection_body_base *active_slot) -: 55: { #####: 56: if(m_active_slot) call 0 never executed branch 1 never executed branch 2 never executed #####: 57: m_active_slot->dec_slot_refcount(lock); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed #####: 58: m_active_slot = active_slot; call 0 never executed #####: 59: if(m_active_slot) call 0 never executed branch 1 never executed branch 2 never executed #####: 60: m_active_slot->inc_slot_refcount(lock); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed #####: 61: } -: 62: -: 63: optional result; -: 64: typedef auto_buffer > tracked_ptrs_type; -: 65: tracked_ptrs_type tracked_ptrs; -: 66: Function f; -: 67: unsigned connected_slot_count; -: 68: unsigned disconnected_slot_count; -: 69: connection_body_base *m_active_slot; -: 70: }; -: 71: -: 72: // Generates a slot call iterator. Essentially, this is an iterator that: -: 73: // - skips over disconnected slots in the underlying list -: 74: // - calls the connected slots when dereferenced -: 75: // - caches the result of calling the slots -: 76: template -: 77: class slot_call_iterator_t -: 78: : public boost::iterator_facade, -: 79: typename Function::result_type, -: 80: boost::single_pass_traversal_tag, -: 81: typename boost::add_reference::type>::type > -: 82: { -: 83: typedef boost::iterator_facade, -: 84: typename Function::result_type, -: 85: boost::single_pass_traversal_tag, -: 86: typename boost::add_reference::type>::type > -: 87: inherited; -: 88: -: 89: typedef typename Function::result_type result_type; -: 90: -: 91: typedef slot_call_iterator_cache cache_type; -: 92: -: 93: friend class boost::iterator_core_access; -: 94: -: 95: public: function _ZN5boost8signals26detail20slot_call_iterator_tINS1_21variadic_slot_invokerINS1_9void_typeEJPN4ribi9tictactoe4GameEEEESt14_List_iteratorINS_10shared_ptrINS1_15connection_bodyISt4pairINS1_15slot_meta_groupENS_8optionalIiEEENS0_4slotIFvS8_ENS_8functionISJ_EEEENS0_5mutexEEEEEESO_EC2ESQ_SQ_RNS1_24slot_call_iterator_cacheIS4_S9_EE called 0 returned 0% blocks executed 0% #####: 96: slot_call_iterator_t(Iterator iter_in, Iterator end_in, call 0 never executed -: 97: cache_type &c): -: 98: iter(iter_in), end(end_in), #####: 99: cache(&c), callable_iter(end_in) call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 100: { #####: 101: lock_next_callable(); call 0 never executed call 1 never executed #####: 102: } -: 103: -: 104: typename inherited::reference function _ZNK5boost8signals26detail20slot_call_iterator_tINS1_21variadic_slot_invokerINS1_9void_typeEJPN4ribi9tictactoe4GameEEEESt14_List_iteratorINS_10shared_ptrINS1_15connection_bodyISt4pairINS1_15slot_meta_groupENS_8optionalIiEEENS0_4slotIFvS8_ENS_8functionISJ_EEEENS0_5mutexEEEEEESO_E11dereferenceEv called 0 returned 0% blocks executed 0% #####: 105: dereference() const -: 106: { #####: 107: if (!cache->result) { call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed -: 108: BOOST_TRY -: 109: { #####: 110: cache->result.reset(cache->f(*iter)); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed branch 8 never executed branch 9 never executed call 10 never executed branch 11 never executed branch 12 never executed branch 13 never executed branch 14 never executed call 15 never executed -: 111: } =====: 112: BOOST_CATCH(expired_slot &) call 0 never executed call 1 never executed call 2 never executed -: 113: { =====: 114: (*iter)->disconnect(); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed branch 8 never executed branch 9 never executed =====: 115: BOOST_RETHROW call 0 never executed -: 116: } -: 117: BOOST_CATCH_END -: 118: } #####: 119: return cache->result.get(); call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 120: } -: 121: function _ZN5boost8signals26detail20slot_call_iterator_tINS1_21variadic_slot_invokerINS1_9void_typeEJPN4ribi9tictactoe4GameEEEESt14_List_iteratorINS_10shared_ptrINS1_15connection_bodyISt4pairINS1_15slot_meta_groupENS_8optionalIiEEENS0_4slotIFvS8_ENS_8functionISJ_EEEENS0_5mutexEEEEEESO_E9incrementEv called 0 returned 0% blocks executed 0% #####: 122: void increment() -: 123: { #####: 124: ++iter; call 0 never executed call 1 never executed #####: 125: lock_next_callable(); call 0 never executed call 1 never executed #####: 126: cache->result.reset(); call 0 never executed call 1 never executed call 2 never executed #####: 127: } -: 128: function _ZNK5boost8signals26detail20slot_call_iterator_tINS1_21variadic_slot_invokerINS1_9void_typeEJPN4ribi9tictactoe4GameEEEESt14_List_iteratorINS_10shared_ptrINS1_15connection_bodyISt4pairINS1_15slot_meta_groupENS_8optionalIiEEENS0_4slotIFvS8_ENS_8functionISJ_EEEENS0_5mutexEEEEEESO_E5equalERKSR_ called 0 returned 0% blocks executed 0% #####: 129: bool equal(const slot_call_iterator_t& other) const -: 130: { #####: 131: return iter == other.iter; call 0 never executed call 1 never executed call 2 never executed -: 132: } -: 133: -: 134: private: -: 135: typedef garbage_collecting_lock lock_type; -: 136: function _ZNK5boost8signals26detail20slot_call_iterator_tINS1_21variadic_slot_invokerINS1_9void_typeEJPN4ribi9tictactoe4GameEEEESt14_List_iteratorINS_10shared_ptrINS1_15connection_bodyISt4pairINS1_15slot_meta_groupENS_8optionalIiEEENS0_4slotIFvS8_ENS_8functionISJ_EEEENS0_5mutexEEEEEESO_E17set_callable_iterERNS1_23garbage_collecting_lockINS1_20connection_body_baseEEESQ_ called 0 returned 0% blocks executed 0% #####: 137: void set_callable_iter(lock_type &lock, Iterator newValue) const -: 138: { #####: 139: callable_iter = newValue; call 0 never executed #####: 140: if(callable_iter == end) call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed #####: 141: cache->set_active_slot(lock, 0); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 142: else #####: 143: cache->set_active_slot(lock, (*callable_iter).get()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed #####: 144: } -: 145: function _ZNK5boost8signals26detail20slot_call_iterator_tINS1_21variadic_slot_invokerINS1_9void_typeEJPN4ribi9tictactoe4GameEEEESt14_List_iteratorINS_10shared_ptrINS1_15connection_bodyISt4pairINS1_15slot_meta_groupENS_8optionalIiEEENS0_4slotIFvS8_ENS_8functionISJ_EEEENS0_5mutexEEEEEESO_E18lock_next_callableEv called 0 returned 0% blocks executed 0% #####: 146: void lock_next_callable() const -: 147: { #####: 148: if(iter == callable_iter) call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed -: 149: { #####: 150: return; -: 151: } #####: 152: if(iter == end) call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed -: 153: { #####: 154: if(callable_iter != end) call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed -: 155: { #####: 156: lock_type lock(**callable_iter); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed call 8 never executed call 9 never executed #####: 157: set_callable_iter(lock, end); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed #####: 158: return; -: 159: } -: 160: } -: 161: // we're only locking the first connection body, -: 162: // but it doesn't matter they all use the same mutex #####: 163: lock_type lock(**iter); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed call 8 never executed call 9 never executed #####: 164: for(;iter != end; ++iter) call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed call 5 never executed call 6 never executed -: 165: { #####: 166: cache->tracked_ptrs.clear(); call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed #####: 167: (*iter)->nolock_grab_tracked_objects(lock, std::back_inserter(cache->tracked_ptrs)); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed branch 10 never executed branch 11 never executed call 12 never executed branch 13 never executed branch 14 never executed #####: 168: if((*iter)->nolock_nograb_connected()) call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed branch 8 never executed branch 9 never executed -: 169: { #####: 170: ++cache->connected_slot_count; call 0 never executed call 1 never executed call 2 never executed -: 171: }else -: 172: { #####: 173: ++cache->disconnected_slot_count; call 0 never executed call 1 never executed call 2 never executed -: 174: } #####: 175: if((*iter)->nolock_nograb_blocked() == false) call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed branch 8 never executed branch 9 never executed branch 10 never executed branch 11 never executed -: 176: { #####: 177: set_callable_iter(lock, iter); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed #####: 178: break; -: 179: } -: 180: } #####: 181: if(iter == end) call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed -: 182: { #####: 183: set_callable_iter(lock, end); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed -: 184: } -: 185: } -: 186: -: 187: mutable Iterator iter; -: 188: Iterator end; -: 189: cache_type *cache; -: 190: mutable Iterator callable_iter; -: 191: }; -: 192: } // end namespace detail -: 193: } // end namespace BOOST_SIGNALS_NAMESPACE -: 194:} // end namespace boost -: 195: -: 196:#endif // BOOST_SIGNALS2_SLOT_CALL_ITERATOR_HPP <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#c++#7#bits#stl_heap.h.gcov -: 0:Source:/usr/include/c++/7/bits/stl_heap.h -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Heap implementation -*- C++ -*- -: 2: -: 3:// Copyright (C) 2001-2017 Free Software Foundation, Inc. -: 4:// -: 5:// This file is part of the GNU ISO C++ Library. This library is free -: 6:// software; you can redistribute it and/or modify it under the -: 7:// terms of the GNU General Public License as published by the -: 8:// Free Software Foundation; either version 3, or (at your option) -: 9:// any later version. -: 10: -: 11:// This library is distributed in the hope that it will be useful, -: 12:// but WITHOUT ANY WARRANTY; without even the implied warranty of -: 13:// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -: 14:// GNU General Public License for more details. -: 15: -: 16:// Under Section 7 of GPL version 3, you are granted additional -: 17:// permissions described in the GCC Runtime Library Exception, version -: 18:// 3.1, as published by the Free Software Foundation. -: 19: -: 20:// You should have received a copy of the GNU General Public License and -: 21:// a copy of the GCC Runtime Library Exception along with this program; -: 22:// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -: 23:// . -: 24: -: 25:/* -: 26: * -: 27: * Copyright (c) 1994 -: 28: * Hewlett-Packard Company -: 29: * -: 30: * Permission to use, copy, modify, distribute and sell this software -: 31: * and its documentation for any purpose is hereby granted without fee, -: 32: * provided that the above copyright notice appear in all copies and -: 33: * that both that copyright notice and this permission notice appear -: 34: * in supporting documentation. Hewlett-Packard Company makes no -: 35: * representations about the suitability of this software for any -: 36: * purpose. It is provided "as is" without express or implied warranty. -: 37: * -: 38: * Copyright (c) 1997 -: 39: * Silicon Graphics Computer Systems, Inc. -: 40: * -: 41: * Permission to use, copy, modify, distribute and sell this software -: 42: * and its documentation for any purpose is hereby granted without fee, -: 43: * provided that the above copyright notice appear in all copies and -: 44: * that both that copyright notice and this permission notice appear -: 45: * in supporting documentation. Silicon Graphics makes no -: 46: * representations about the suitability of this software for any -: 47: * purpose. It is provided "as is" without express or implied warranty. -: 48: */ -: 49: -: 50:/** @file bits/stl_heap.h -: 51: * This is an internal header file, included by other library headers. -: 52: * Do not attempt to use it directly. @headername{queue} -: 53: */ -: 54: -: 55:#ifndef _STL_HEAP_H -: 56:#define _STL_HEAP_H 1 -: 57: -: 58:#include -: 59:#include -: 60:#include -: 61: -: 62:namespace std _GLIBCXX_VISIBILITY(default) -: 63:{ -: 64:_GLIBCXX_BEGIN_NAMESPACE_VERSION -: 65: -: 66: /** -: 67: * @defgroup heap_algorithms Heap -: 68: * @ingroup sorting_algorithms -: 69: */ -: 70: -: 71: template -: 73: _Distance -: 74: __is_heap_until(_RandomAccessIterator __first, _Distance __n, -: 75: _Compare& __comp) -: 76: { -: 77: _Distance __parent = 0; -: 78: for (_Distance __child = 1; __child < __n; ++__child) -: 79: { -: 80: if (__comp(__first + __parent, __first + __child)) -: 81: return __child; -: 82: if ((__child & 1) == 0) -: 83: ++__parent; -: 84: } -: 85: return __n; -: 86: } -: 87: -: 88: // __is_heap, a predicate testing whether or not a range is a heap. -: 89: // This function is an extension, not part of the C++ standard. -: 90: template -: 91: inline bool -: 92: __is_heap(_RandomAccessIterator __first, _Distance __n) -: 93: { -: 94: __gnu_cxx::__ops::_Iter_less_iter __comp; -: 95: return std::__is_heap_until(__first, __n, __comp) == __n; -: 96: } -: 97: -: 98: template -: 100: inline bool -: 101: __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n) -: 102: { -: 103: typedef __decltype(__comp) _Cmp; -: 104: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp)); -: 105: return std::__is_heap_until(__first, __n, __cmp) == __n; -: 106: } -: 107: -: 108: template -: 109: inline bool -: 110: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -: 111: { return std::__is_heap(__first, std::distance(__first, __last)); } -: 112: -: 113: template -: 114: inline bool -: 115: __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 116: _Compare __comp) -: 117: { -: 118: return std::__is_heap(__first, _GLIBCXX_MOVE(__comp), -: 119: std::distance(__first, __last)); -: 120: } -: 121: -: 122: // Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap, -: 123: // + is_heap and is_heap_until in C++0x. -: 124: -: 125: template -: 127: void function _ZSt11__push_heapIPN5boost11multi_index6detail14copy_map_entryINS2_18ordered_index_nodeINS2_19null_augment_policyENS4_IS5_NS2_15index_node_baseINS0_6bimaps8relation15mutant_relationINS7_4tags6taggedIKN4ribi17CanvasColorSystemENS8_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEEN4mpl_2naELb1EEESaIST_EEEEEEEEElSY_N9__gnu_cxx5__ops14_Iter_less_valEEvT_T0_S14_T1_RT2_ called 0 returned 0% blocks executed 0% #####: 128: __push_heap(_RandomAccessIterator __first, -: 129: _Distance __holeIndex, _Distance __topIndex, _Tp __value, -: 130: _Compare& __comp) -: 131: { #####: 132: _Distance __parent = (__holeIndex - 1) / 2; #####: 133: while (__holeIndex > __topIndex && __comp(__first + __parent, __value)) branch 0 never executed branch 1 never executed call 2 never executed call 3 never executed branch 4 never executed branch 5 never executed branch 6 never executed branch 7 never executed -: 134: { #####: 135: *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __parent)); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed #####: 136: __holeIndex = __parent; #####: 137: __parent = (__holeIndex - 1) / 2; -: 138: } #####: 139: *(__first + __holeIndex) = _GLIBCXX_MOVE(__value); call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 140: } -: 141: -: 142: /** -: 143: * @brief Push an element onto a heap. -: 144: * @param __first Start of heap. -: 145: * @param __last End of heap + element. -: 146: * @ingroup heap_algorithms -: 147: * -: 148: * This operation pushes the element at last-1 onto the valid heap -: 149: * over the range [__first,__last-1). After completion, -: 150: * [__first,__last) is a valid heap. -: 151: */ -: 152: template -: 153: inline void -: 154: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -: 155: { -: 156: typedef typename iterator_traits<_RandomAccessIterator>::value_type -: 157: _ValueType; -: 158: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -: 159: _DistanceType; -: 160: -: 161: // concept requirements -: 162: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 163: _RandomAccessIterator>) -: 164: __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>) -: 165: __glibcxx_requires_valid_range(__first, __last); -: 166: __glibcxx_requires_irreflexive(__first, __last); -: 167: __glibcxx_requires_heap(__first, __last - 1); -: 168: -: 169: __gnu_cxx::__ops::_Iter_less_val __comp; -: 170: _ValueType __value = _GLIBCXX_MOVE(*(__last - 1)); -: 171: std::__push_heap(__first, _DistanceType((__last - __first) - 1), -: 172: _DistanceType(0), _GLIBCXX_MOVE(__value), __comp); -: 173: } -: 174: -: 175: /** -: 176: * @brief Push an element onto a heap using comparison functor. -: 177: * @param __first Start of heap. -: 178: * @param __last End of heap + element. -: 179: * @param __comp Comparison functor. -: 180: * @ingroup heap_algorithms -: 181: * -: 182: * This operation pushes the element at __last-1 onto the valid -: 183: * heap over the range [__first,__last-1). After completion, -: 184: * [__first,__last) is a valid heap. Compare operations are -: 185: * performed using comp. -: 186: */ -: 187: template -: 188: inline void -: 189: push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 190: _Compare __comp) -: 191: { -: 192: typedef typename iterator_traits<_RandomAccessIterator>::value_type -: 193: _ValueType; -: 194: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -: 195: _DistanceType; -: 196: -: 197: // concept requirements -: 198: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 199: _RandomAccessIterator>) -: 200: __glibcxx_requires_valid_range(__first, __last); -: 201: __glibcxx_requires_irreflexive_pred(__first, __last, __comp); -: 202: __glibcxx_requires_heap_pred(__first, __last - 1, __comp); -: 203: -: 204: __decltype(__gnu_cxx::__ops::__iter_comp_val(_GLIBCXX_MOVE(__comp))) -: 205: __cmp(_GLIBCXX_MOVE(__comp)); -: 206: _ValueType __value = _GLIBCXX_MOVE(*(__last - 1)); -: 207: std::__push_heap(__first, _DistanceType((__last - __first) - 1), -: 208: _DistanceType(0), _GLIBCXX_MOVE(__value), __cmp); -: 209: } -: 210: -: 211: template -: 213: void function _ZSt13__adjust_heapIPN5boost11multi_index6detail14copy_map_entryINS2_18ordered_index_nodeINS2_19null_augment_policyENS4_IS5_NS2_15index_node_baseINS0_6bimaps8relation15mutant_relationINS7_4tags6taggedIKN4ribi17CanvasColorSystemENS8_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEEN4mpl_2naELb1EEESaIST_EEEEEEEEElSY_N9__gnu_cxx5__ops15_Iter_less_iterEEvT_T0_S14_T1_T2_ called 0 returned 0% blocks executed 0% #####: 214: __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, -: 215: _Distance __len, _Tp __value, _Compare __comp) -: 216: { #####: 217: const _Distance __topIndex = __holeIndex; #####: 218: _Distance __secondChild = __holeIndex; #####: 219: while (__secondChild < (__len - 1) / 2) branch 0 never executed branch 1 never executed -: 220: { #####: 221: __secondChild = 2 * (__secondChild + 1); #####: 222: if (__comp(__first + __secondChild, call 0 never executed branch 1 never executed branch 2 never executed branch 3 never executed branch 4 never executed #####: 223: __first + (__secondChild - 1))) #####: 224: __secondChild--; #####: 225: *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __secondChild)); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed #####: 226: __holeIndex = __secondChild; -: 227: } #####: 228: if ((__len & 1) == 0 && __secondChild == (__len - 2) / 2) branch 0 never executed branch 1 never executed branch 2 never executed branch 3 never executed branch 4 never executed branch 5 never executed -: 229: { #####: 230: __secondChild = 2 * (__secondChild + 1); #####: 231: *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 232: + (__secondChild - 1))); #####: 233: __holeIndex = __secondChild - 1; -: 234: } -: 235: __decltype(__gnu_cxx::__ops::__iter_comp_val(_GLIBCXX_MOVE(__comp))) #####: 236: __cmp(_GLIBCXX_MOVE(__comp)); call 0 never executed call 1 never executed call 2 never executed #####: 237: std::__push_heap(__first, __holeIndex, __topIndex, call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed #####: 238: _GLIBCXX_MOVE(__value), __cmp); call 0 never executed #####: 239: } -: 240: -: 241: template -: 242: inline void function _ZSt10__pop_heapIPN5boost11multi_index6detail14copy_map_entryINS2_18ordered_index_nodeINS2_19null_augment_policyENS4_IS5_NS2_15index_node_baseINS0_6bimaps8relation15mutant_relationINS7_4tags6taggedIKN4ribi17CanvasColorSystemENS8_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEEN4mpl_2naELb1EEESaIST_EEEEEEEEEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S13_S13_RT0_ called 0 returned 0% blocks executed 0% #####: 243: __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 244: _RandomAccessIterator __result, _Compare& __comp) -: 245: { -: 246: typedef typename iterator_traits<_RandomAccessIterator>::value_type -: 247: _ValueType; -: 248: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -: 249: _DistanceType; -: 250: #####: 251: _ValueType __value = _GLIBCXX_MOVE(*__result); call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 252: *__result = _GLIBCXX_MOVE(*__first); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed #####: 253: std::__adjust_heap(__first, _DistanceType(0), call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed #####: 254: _DistanceType(__last - __first), #####: 255: _GLIBCXX_MOVE(__value), __comp); call 0 never executed #####: 256: } -: 257: -: 258: /** -: 259: * @brief Pop an element off a heap. -: 260: * @param __first Start of heap. -: 261: * @param __last End of heap. -: 262: * @pre [__first, __last) is a valid, non-empty range. -: 263: * @ingroup heap_algorithms -: 264: * -: 265: * This operation pops the top of the heap. The elements __first -: 266: * and __last-1 are swapped and [__first,__last-1) is made into a -: 267: * heap. -: 268: */ -: 269: template -: 270: inline void -: 271: pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -: 272: { -: 273: // concept requirements -: 274: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 275: _RandomAccessIterator>) -: 276: __glibcxx_function_requires(_LessThanComparableConcept< -: 277: typename iterator_traits<_RandomAccessIterator>::value_type>) -: 278: __glibcxx_requires_non_empty_range(__first, __last); -: 279: __glibcxx_requires_valid_range(__first, __last); -: 280: __glibcxx_requires_irreflexive(__first, __last); -: 281: __glibcxx_requires_heap(__first, __last); -: 282: -: 283: if (__last - __first > 1) -: 284: { -: 285: --__last; -: 286: __gnu_cxx::__ops::_Iter_less_iter __comp; -: 287: std::__pop_heap(__first, __last, __last, __comp); -: 288: } -: 289: } -: 290: -: 291: /** -: 292: * @brief Pop an element off a heap using comparison functor. -: 293: * @param __first Start of heap. -: 294: * @param __last End of heap. -: 295: * @param __comp Comparison functor to use. -: 296: * @ingroup heap_algorithms -: 297: * -: 298: * This operation pops the top of the heap. The elements __first -: 299: * and __last-1 are swapped and [__first,__last-1) is made into a -: 300: * heap. Comparisons are made using comp. -: 301: */ -: 302: template -: 303: inline void -: 304: pop_heap(_RandomAccessIterator __first, -: 305: _RandomAccessIterator __last, _Compare __comp) -: 306: { -: 307: // concept requirements -: 308: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 309: _RandomAccessIterator>) -: 310: __glibcxx_requires_valid_range(__first, __last); -: 311: __glibcxx_requires_irreflexive_pred(__first, __last, __comp); -: 312: __glibcxx_requires_non_empty_range(__first, __last); -: 313: __glibcxx_requires_heap_pred(__first, __last, __comp); -: 314: -: 315: if (__last - __first > 1) -: 316: { -: 317: typedef __decltype(__comp) _Cmp; -: 318: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp)); -: 319: --__last; -: 320: std::__pop_heap(__first, __last, __last, __cmp); -: 321: } -: 322: } -: 323: -: 324: template -: 325: void function _ZSt11__make_heapIPN5boost11multi_index6detail14copy_map_entryINS2_18ordered_index_nodeINS2_19null_augment_policyENS4_IS5_NS2_15index_node_baseINS0_6bimaps8relation15mutant_relationINS7_4tags6taggedIKN4ribi17CanvasColorSystemENS8_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEEN4mpl_2naELb1EEESaIST_EEEEEEEEEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S13_RT0_ called 0 returned 0% blocks executed 0% #####: 326: __make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 327: _Compare& __comp) -: 328: { -: 329: typedef typename iterator_traits<_RandomAccessIterator>::value_type -: 330: _ValueType; -: 331: typedef typename iterator_traits<_RandomAccessIterator>::difference_type -: 332: _DistanceType; -: 333: #####: 334: if (__last - __first < 2) branch 0 never executed branch 1 never executed #####: 335: return; -: 336: #####: 337: const _DistanceType __len = __last - __first; #####: 338: _DistanceType __parent = (__len - 2) / 2; #####: 339: while (true) -: 340: { #####: 341: _ValueType __value = _GLIBCXX_MOVE(*(__first + __parent)); call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 342: std::__adjust_heap(__first, __parent, __len, _GLIBCXX_MOVE(__value), call 0 never executed call 1 never executed call 2 never executed branch 3 never executed branch 4 never executed -: 343: __comp); #####: 344: if (__parent == 0) branch 0 never executed branch 1 never executed #####: 345: return; #####: 346: __parent--; -: 347: } -: 348: } -: 349: -: 350: /** -: 351: * @brief Construct a heap over a range. -: 352: * @param __first Start of heap. -: 353: * @param __last End of heap. -: 354: * @ingroup heap_algorithms -: 355: * -: 356: * This operation makes the elements in [__first,__last) into a heap. -: 357: */ -: 358: template -: 359: inline void -: 360: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -: 361: { -: 362: // concept requirements -: 363: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 364: _RandomAccessIterator>) -: 365: __glibcxx_function_requires(_LessThanComparableConcept< -: 366: typename iterator_traits<_RandomAccessIterator>::value_type>) -: 367: __glibcxx_requires_valid_range(__first, __last); -: 368: __glibcxx_requires_irreflexive(__first, __last); -: 369: -: 370: __gnu_cxx::__ops::_Iter_less_iter __comp; -: 371: std::__make_heap(__first, __last, __comp); -: 372: } -: 373: -: 374: /** -: 375: * @brief Construct a heap over a range using comparison functor. -: 376: * @param __first Start of heap. -: 377: * @param __last End of heap. -: 378: * @param __comp Comparison functor to use. -: 379: * @ingroup heap_algorithms -: 380: * -: 381: * This operation makes the elements in [__first,__last) into a heap. -: 382: * Comparisons are made using __comp. -: 383: */ -: 384: template -: 385: inline void -: 386: make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 387: _Compare __comp) -: 388: { -: 389: // concept requirements -: 390: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 391: _RandomAccessIterator>) -: 392: __glibcxx_requires_valid_range(__first, __last); -: 393: __glibcxx_requires_irreflexive_pred(__first, __last, __comp); -: 394: -: 395: typedef __decltype(__comp) _Cmp; -: 396: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp)); -: 397: std::__make_heap(__first, __last, __cmp); -: 398: } -: 399: -: 400: template -: 401: void function _ZSt11__sort_heapIPN5boost11multi_index6detail14copy_map_entryINS2_18ordered_index_nodeINS2_19null_augment_policyENS4_IS5_NS2_15index_node_baseINS0_6bimaps8relation15mutant_relationINS7_4tags6taggedIKN4ribi17CanvasColorSystemENS8_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEEN4mpl_2naELb1EEESaIST_EEEEEEEEEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S13_RT0_ called 0 returned 0% blocks executed 0% #####: 402: __sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 403: _Compare& __comp) -: 404: { #####: 405: while (__last - __first > 1) branch 0 never executed branch 1 never executed -: 406: { #####: 407: --__last; #####: 408: std::__pop_heap(__first, __last, __last, __comp); call 0 never executed -: 409: } #####: 410: } -: 411: -: 412: /** -: 413: * @brief Sort a heap. -: 414: * @param __first Start of heap. -: 415: * @param __last End of heap. -: 416: * @ingroup heap_algorithms -: 417: * -: 418: * This operation sorts the valid heap in the range [__first,__last). -: 419: */ -: 420: template -: 421: inline void -: 422: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -: 423: { -: 424: // concept requirements -: 425: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 426: _RandomAccessIterator>) -: 427: __glibcxx_function_requires(_LessThanComparableConcept< -: 428: typename iterator_traits<_RandomAccessIterator>::value_type>) -: 429: __glibcxx_requires_valid_range(__first, __last); -: 430: __glibcxx_requires_irreflexive(__first, __last); -: 431: __glibcxx_requires_heap(__first, __last); -: 432: -: 433: __gnu_cxx::__ops::_Iter_less_iter __comp; -: 434: std::__sort_heap(__first, __last, __comp); -: 435: } -: 436: -: 437: /** -: 438: * @brief Sort a heap using comparison functor. -: 439: * @param __first Start of heap. -: 440: * @param __last End of heap. -: 441: * @param __comp Comparison functor to use. -: 442: * @ingroup heap_algorithms -: 443: * -: 444: * This operation sorts the valid heap in the range [__first,__last). -: 445: * Comparisons are made using __comp. -: 446: */ -: 447: template -: 448: inline void -: 449: sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 450: _Compare __comp) -: 451: { -: 452: // concept requirements -: 453: __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< -: 454: _RandomAccessIterator>) -: 455: __glibcxx_requires_valid_range(__first, __last); -: 456: __glibcxx_requires_irreflexive_pred(__first, __last, __comp); -: 457: __glibcxx_requires_heap_pred(__first, __last, __comp); -: 458: -: 459: typedef __decltype(__comp) _Cmp; -: 460: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp)); -: 461: std::__sort_heap(__first, __last, __cmp); -: 462: } -: 463: -: 464:#if __cplusplus >= 201103L -: 465: /** -: 466: * @brief Search the end of a heap. -: 467: * @param __first Start of range. -: 468: * @param __last End of range. -: 469: * @return An iterator pointing to the first element not in the heap. -: 470: * @ingroup heap_algorithms -: 471: * -: 472: * This operation returns the last iterator i in [__first, __last) for which -: 473: * the range [__first, i) is a heap. -: 474: */ -: 475: template -: 476: inline _RandomAccessIterator -: 477: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last) -: 478: { -: 479: // concept requirements -: 480: __glibcxx_function_requires(_RandomAccessIteratorConcept< -: 481: _RandomAccessIterator>) -: 482: __glibcxx_function_requires(_LessThanComparableConcept< -: 483: typename iterator_traits<_RandomAccessIterator>::value_type>) -: 484: __glibcxx_requires_valid_range(__first, __last); -: 485: __glibcxx_requires_irreflexive(__first, __last); -: 486: -: 487: __gnu_cxx::__ops::_Iter_less_iter __comp; -: 488: return __first + -: 489: std::__is_heap_until(__first, std::distance(__first, __last), __comp); -: 490: } -: 491: -: 492: /** -: 493: * @brief Search the end of a heap using comparison functor. -: 494: * @param __first Start of range. -: 495: * @param __last End of range. -: 496: * @param __comp Comparison functor to use. -: 497: * @return An iterator pointing to the first element not in the heap. -: 498: * @ingroup heap_algorithms -: 499: * -: 500: * This operation returns the last iterator i in [__first, __last) for which -: 501: * the range [__first, i) is a heap. Comparisons are made using __comp. -: 502: */ -: 503: template -: 504: inline _RandomAccessIterator -: 505: is_heap_until(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 506: _Compare __comp) -: 507: { -: 508: // concept requirements -: 509: __glibcxx_function_requires(_RandomAccessIteratorConcept< -: 510: _RandomAccessIterator>) -: 511: __glibcxx_requires_valid_range(__first, __last); -: 512: __glibcxx_requires_irreflexive_pred(__first, __last, __comp); -: 513: -: 514: typedef __decltype(__comp) _Cmp; -: 515: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp)); -: 516: return __first -: 517: + std::__is_heap_until(__first, std::distance(__first, __last), __cmp); -: 518: } -: 519: -: 520: /** -: 521: * @brief Determines whether a range is a heap. -: 522: * @param __first Start of range. -: 523: * @param __last End of range. -: 524: * @return True if range is a heap, false otherwise. -: 525: * @ingroup heap_algorithms -: 526: */ -: 527: template -: 528: inline bool -: 529: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -: 530: { return std::is_heap_until(__first, __last) == __last; } -: 531: -: 532: /** -: 533: * @brief Determines whether a range is a heap using comparison functor. -: 534: * @param __first Start of range. -: 535: * @param __last End of range. -: 536: * @param __comp Comparison functor to use. -: 537: * @return True if range is a heap, false otherwise. -: 538: * @ingroup heap_algorithms -: 539: */ -: 540: template -: 541: inline bool -: 542: is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, -: 543: _Compare __comp) -: 544: { -: 545: // concept requirements -: 546: __glibcxx_function_requires(_RandomAccessIteratorConcept< -: 547: _RandomAccessIterator>) -: 548: __glibcxx_requires_valid_range(__first, __last); -: 549: __glibcxx_requires_irreflexive_pred(__first, __last, __comp); -: 550: -: 551: const auto __dist = std::distance(__first, __last); -: 552: typedef __decltype(__comp) _Cmp; -: 553: __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp)); -: 554: return std::__is_heap_until(__first, __dist, __cmp) == __dist; -: 555: } -: 556:#endif -: 557: -: 558:_GLIBCXX_END_NAMESPACE_VERSION -: 559:} // namespace -: 560: -: 561:#endif /* _STL_HEAP_H */ <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#xpressive#detail#core#regex_impl.hpp.gcov -: 0:Source:/usr/include/boost/xpressive/detail/core/regex_impl.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1://///////////////////////////////////////////////////////////////////////////// -: 2:// regex_impl.hpp -: 3:// -: 4:// Copyright 2008 Eric Niebler. Distributed under the Boost -: 5:// Software License, Version 1.0. (See accompanying file -: 6:// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -: 7: -: 8:#ifndef BOOST_XPRESSIVE_DETAIL_CORE_REGEX_IMPL_HPP_EAN_10_04_2005 -: 9:#define BOOST_XPRESSIVE_DETAIL_CORE_REGEX_IMPL_HPP_EAN_10_04_2005 -: 10: -: 11:// MS compatible compilers support #pragma once -: 12:#if defined(_MSC_VER) -: 13:# pragma once -: 14:#endif -: 15: -: 16:#include -: 17:#include -: 18:#include -: 19:#include -: 20:#include -: 21:#include -: 22:#include -: 23: -: 24:namespace boost { namespace xpressive { namespace detail -: 25:{ -: 26: -: 27://///////////////////////////////////////////////////////////////////////////// -: 28:// finder -: 29:template function _ZN5boost9xpressive6detail6finderIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2Ev called 0 returned 0% blocks executed 0% #####: 30:struct finder call 0 never executed call 1 never executed call 2 never executed -: 31: : counted_base > -: 32:{ function _ZN5boost9xpressive6detail6finderIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED0Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail6finderIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev called 0 returned 0% blocks executed 0% #####: 33: virtual ~finder() {} call 0 never executed call 1 never executed call 2 never executed call 3 never executed function _ZNK5boost9xpressive6detail6finderIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE22ok_for_partial_matchesEv called 0 returned 0% blocks executed 0% #####: 34: virtual bool ok_for_partial_matches() const { return true; } -: 35: virtual bool operator ()(match_state &state) const = 0; -: 36:}; -: 37: -: 38://///////////////////////////////////////////////////////////////////////////// -: 39:// traits -: 40:template function _ZN5boost9xpressive6detail6traitsIcEC2Ev called 0 returned 0% blocks executed 0% #####: 41:struct traits call 0 never executed call 1 never executed call 2 never executed -: 42: : counted_base > -: 43:{ function _ZN5boost9xpressive6detail6traitsIcED0Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail6traitsIcED2Ev called 0 returned 0% blocks executed 0% #####: 44: virtual ~traits() {} call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 45: virtual Char tolower(Char ch) const = 0; -: 46: virtual Char toupper(Char ch) const = 0; -: 47: virtual bool in_range(Char from, Char to, Char ch) const = 0; -: 48: virtual int value(Char ch, int radix) const = 0; -: 49:}; -: 50: -: 51://///////////////////////////////////////////////////////////////////////////// -: 52:// named_mark -: 53:template function _ZN5boost9xpressive6detail10named_markIcEC2EOS3_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail10named_markIcEaSERKS3_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail10named_markIcEC2ERKS3_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail10named_markIcED2Ev called 0 returned 0% blocks executed 0% #####: 54:struct named_mark call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed call 18 never executed call 19 never executed call 20 never executed -: 55:{ -: 56: typedef typename detail::string_type::type string_type; -: 57: function _ZN5boost9xpressive6detail10named_markIcEC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm called 0 returned 0% blocks executed 0% #####: 58: named_mark(string_type name, std::size_t mark_nbr) call 0 never executed -: 59: : name_(name) #####: 60: , mark_nbr_(mark_nbr) call 0 never executed call 1 never executed call 2 never executed #####: 61: {} -: 62: -: 63: string_type name_; -: 64: std::size_t mark_nbr_; -: 65:}; -: 66: -: 67://///////////////////////////////////////////////////////////////////////////// -: 68:// traits_holder -: 69:template function _ZN5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEED0Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEED2Ev called 0 returned 0% blocks executed 0% #####: 70:struct traits_holder call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed -: 71: : traits -: 72:{ -: 73: typedef typename Traits::char_type char_type; -: 74: function _ZN5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEEC2ERKS6_ called 0 returned 0% blocks executed 0% #####: 75: explicit traits_holder(Traits const &tr) call 0 never executed call 1 never executed #####: 76: : traits_(tr) call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 77: { #####: 78: } -: 79: function _ZNK5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEE6traitsEv called 0 returned 0% blocks executed 0% #####: 80: Traits const &traits() const -: 81: { #####: 82: return this->traits_; call 0 never executed -: 83: } -: 84: function _ZNK5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEE7tolowerEc called 0 returned 0% blocks executed 0% #####: 85: char_type tolower(char_type ch) const -: 86: { #####: 87: return this->tolower_(ch, typename Traits::version_tag()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 88: } -: 89: function _ZNK5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEE7toupperEc called 0 returned 0% blocks executed 0% #####: 90: char_type toupper(char_type ch) const -: 91: { #####: 92: return this->toupper_(ch, typename Traits::version_tag()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 93: } -: 94: function _ZNK5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEE5valueEci called 0 returned 0% blocks executed 0% #####: 95: int value(char_type ch, int radix) const -: 96: { #####: 97: return this->traits_.value(ch, radix); call 0 never executed call 1 never executed -: 98: } -: 99: function _ZNK5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEE8in_rangeEccc called 0 returned 0% blocks executed 0% #####: 100: bool in_range(char_type from, char_type to, char_type ch) const -: 101: { #####: 102: return this->traits_.in_range(from, to, ch); call 0 never executed -: 103: } -: 104: -: 105:private: -: 106: char_type tolower_(char_type ch, regex_traits_version_1_tag) const -: 107: { -: 108: return ch; -: 109: } -: 110: -: 111: char_type toupper_(char_type ch, regex_traits_version_1_tag) const -: 112: { -: 113: return ch; -: 114: } -: 115: function _ZNK5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEE8tolower_EcNS0_26regex_traits_version_2_tagE called 0 returned 0% blocks executed 0% #####: 116: char_type tolower_(char_type ch, regex_traits_version_2_tag) const -: 117: { #####: 118: return this->traits_.tolower(ch); call 0 never executed call 1 never executed -: 119: } -: 120: function _ZNK5boost9xpressive6detail13traits_holderINS0_12regex_traitsIcNS0_16cpp_regex_traitsIcEEEEE8toupper_EcNS0_26regex_traits_version_2_tagE called 0 returned 0% blocks executed 0% #####: 121: char_type toupper_(char_type ch, regex_traits_version_2_tag) const -: 122: { #####: 123: return this->traits_.toupper(ch); call 0 never executed call 1 never executed -: 124: } -: 125: -: 126: Traits traits_; -: 127:}; -: 128: -: 129://///////////////////////////////////////////////////////////////////////////// -: 130:// regex_impl -: 131:// -: 132:template -: 133:struct regex_impl -: 134: : enable_reference_tracking > -: 135:{ -: 136: typedef typename iterator_value::type char_type; -: 137: function _ZN5boost9xpressive6detail10regex_implIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2Ev called 0 returned 0% blocks executed 0% #####: 138: regex_impl() call 0 never executed -: 139: : enable_reference_tracking >() -: 140: , xpr_() -: 141: , traits_() -: 142: , finder_() -: 143: , named_marks_() -: 144: , mark_count_(0) #####: 145: , hidden_mark_count_(0) call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed -: 146: { -: 147: #ifdef BOOST_XPRESSIVE_DEBUG_CYCLE_TEST -: 148: ++instances; -: 149: #endif #####: 150: } -: 151: function _ZN5boost9xpressive6detail10regex_implIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKSE_ called 0 returned 0% blocks executed 0% #####: 152: regex_impl(regex_impl const &that) call 0 never executed -: 153: : enable_reference_tracking >(that) -: 154: , xpr_(that.xpr_) -: 155: , traits_(that.traits_) -: 156: , finder_(that.finder_) -: 157: , named_marks_(that.named_marks_) #####: 158: , mark_count_(that.mark_count_) call 0 never executed #####: 159: , hidden_mark_count_(that.hidden_mark_count_) call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed call 8 never executed call 9 never executed call 10 never executed branch 11 never executed branch 12 never executed call 13 never executed call 14 never executed call 15 never executed branch 16 never executed branch 17 never executed call 18 never executed call 19 never executed call 20 never executed branch 21 never executed branch 22 never executed call 23 never executed call 24 never executed call 25 never executed call 26 never executed call 27 never executed call 28 never executed call 29 never executed call 30 never executed call 31 never executed call 32 never executed call 33 never executed -: 160: { -: 161: #ifdef BOOST_XPRESSIVE_DEBUG_CYCLE_TEST -: 162: ++instances; -: 163: #endif #####: 164: } -: 165: function _ZN5boost9xpressive6detail10regex_implIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev called 0 returned 0% blocks executed 0% #####: 166: ~regex_impl() -: 167: { -: 168: #ifdef BOOST_XPRESSIVE_DEBUG_CYCLE_TEST -: 169: --instances; -: 170: #endif #####: 171: } call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed -: 172: function _ZN5boost9xpressive6detail10regex_implIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE4swapERSE_ called 0 returned 0% blocks executed 0% #####: 173: void swap(regex_impl &that) -: 174: { #####: 175: enable_reference_tracking >::swap(that); call 0 never executed call 1 never executed call 2 never executed #####: 176: this->xpr_.swap(that.xpr_); call 0 never executed call 1 never executed call 2 never executed #####: 177: this->traits_.swap(that.traits_); call 0 never executed call 1 never executed call 2 never executed #####: 178: this->finder_.swap(that.finder_); call 0 never executed call 1 never executed call 2 never executed #####: 179: this->named_marks_.swap(that.named_marks_); call 0 never executed call 1 never executed call 2 never executed #####: 180: std::swap(this->mark_count_, that.mark_count_); call 0 never executed call 1 never executed call 2 never executed #####: 181: std::swap(this->hidden_mark_count_, that.hidden_mark_count_); call 0 never executed call 1 never executed call 2 never executed #####: 182: } -: 183: -: 184: intrusive_ptr const> xpr_; -: 185: intrusive_ptr const> traits_; -: 186: intrusive_ptr > finder_; -: 187: std::vector > named_marks_; -: 188: std::size_t mark_count_; -: 189: std::size_t hidden_mark_count_; -: 190: -: 191: #ifdef BOOST_XPRESSIVE_DEBUG_CYCLE_TEST -: 192: static int instances; -: 193: #endif -: 194: -: 195:private: -: 196: regex_impl &operator =(regex_impl const &); -: 197:}; -: 198: -: 199:template function _ZN5boost9xpressive6detail4swapIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEvRNS1_10regex_implIT_EESH_ called 0 returned 0% blocks executed 0% #####: 200:void swap(regex_impl &left, regex_impl &right) -: 201:{ #####: 202: left.swap(right); call 0 never executed call 1 never executed #####: 203:} -: 204: -: 205:#ifdef BOOST_XPRESSIVE_DEBUG_CYCLE_TEST -: 206:template -: 207:int regex_impl::instances = 0; -: 208:#endif -: 209: -: 210:}}} // namespace boost::xpressive::detail -: 211: -: 212:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#throw_exception.hpp.gcov -: 0:Source:/usr/include/boost/throw_exception.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoegame.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#ifndef UUID_AA15E74A856F11E08B8D93F24824019B -: 2:#define UUID_AA15E74A856F11E08B8D93F24824019B -: 3:#if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) -: 4:#pragma GCC system_header -: 5:#endif -: 6:#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) -: 7:#pragma warning(push,1) -: 8:#endif -: 9: -: 10:// MS compatible compilers support #pragma once -: 11: -: 12:#if defined(_MSC_VER) && (_MSC_VER >= 1020) -: 13:# pragma once -: 14:#endif -: 15: -: 16:// -: 17:// boost/throw_exception.hpp -: 18:// -: 19:// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -: 20:// Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc. -: 21:// -: 22:// Distributed under the Boost Software License, Version 1.0. (See -: 23:// accompanying file LICENSE_1_0.txt or copy at -: 24:// http://www.boost.org/LICENSE_1_0.txt) -: 25:// -: 26:// http://www.boost.org/libs/utility/throw_exception.html -: 27:// -: 28: -: 29:#include -: 30:#include -: 31:#include -: 32: -: 33:#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x593) ) -: 34:# define BOOST_EXCEPTION_DISABLE -: 35:#endif -: 36: -: 37:#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1310 ) -: 38:# define BOOST_EXCEPTION_DISABLE -: 39:#endif -: 40: -: 41:#if !defined( BOOST_EXCEPTION_DISABLE ) -: 42:# include -: 43:#if !defined(BOOST_THROW_EXCEPTION_CURRENT_FUNCTION) -: 44:# include -: 45:# define BOOST_THROW_EXCEPTION_CURRENT_FUNCTION BOOST_CURRENT_FUNCTION -: 46:#endif -: 47:# define BOOST_THROW_EXCEPTION(x) ::boost::exception_detail::throw_exception_(x,BOOST_THROW_EXCEPTION_CURRENT_FUNCTION,__FILE__,__LINE__) -: 48:#else -: 49:# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x) -: 50:#endif -: 51: -: 52:namespace boost -: 53:{ -: 54:#ifdef BOOST_NO_EXCEPTIONS -: 55: -: 56:void throw_exception( std::exception const & e ); // user defined -: 57: -: 58:#else -: 59: function _ZN5boost36throw_exception_assert_compatibilityERKSt9exception called 0 returned 0% blocks executed 0% #####: 60:inline void throw_exception_assert_compatibility( std::exception const & ) { } -: 61: function _ZN5boost15throw_exceptionINS_17bad_function_callEEEvRKT_ called 0 returned 0% blocks executed 0% #####: 62:template BOOST_NORETURN inline void throw_exception( E const & e ) -: 63:{ -: 64: //All boost exceptions are required to derive from std::exception, -: 65: //to ensure compatibility with BOOST_NO_EXCEPTIONS. #####: 66: throw_exception_assert_compatibility(e); call 0 never executed call 1 never executed -: 67: -: 68:#ifndef BOOST_EXCEPTION_DISABLE #####: 69: throw enable_current_exception(enable_error_info(e)); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed call 6 never executed branch 7 never executed branch 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed -: 70:#else -: 71: throw e; -: 72:#endif -: 73:} -: 74: -: 75:#endif -: 76: -: 77:#if !defined( BOOST_EXCEPTION_DISABLE ) -: 78: namespace -: 79: exception_detail -: 80: { -: 81: template -: 82: BOOST_NORETURN -: 83: void -: 84: throw_exception_( E const & x, char const * current_function, char const * file, int line ) -: 85: { -: 86: boost::throw_exception( -: 87: set_info( -: 88: set_info( -: 89: set_info( -: 90: enable_error_info(x), -: 91: throw_function(current_function)), -: 92: throw_file(file)), -: 93: throw_line(line))); -: 94: } -: 95: } -: 96:#endif -: 97:} // namespace boost -: 98: -: 99:#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) -: 100:#pragma warning(pop) -: 101:#endif -: 102:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#x86_64-linux-gnu#qt5#QtCore#qalgorithms.h.gcov -: 0:Source:/usr/include/x86_64-linux-gnu/qt5/QtCore/qalgorithms.h -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/qttictactoemenudialog.gcno -: 0:Data:- -: 0:Runs:0 -: 0:Programs:0 -: 1:/**************************************************************************** -: 2:** -: 3:** Copyright (C) 2016 The Qt Company Ltd. -: 4:** Contact: https://www.qt.io/licensing/ -: 5:** -: 6:** This file is part of the QtCore module of the Qt Toolkit. -: 7:** -: 8:** $QT_BEGIN_LICENSE:LGPL$ -: 9:** Commercial License Usage -: 10:** Licensees holding valid commercial Qt licenses may use this file in -: 11:** accordance with the commercial license agreement provided with the -: 12:** Software or, alternatively, in accordance with the terms contained in -: 13:** a written agreement between you and The Qt Company. For licensing terms -: 14:** and conditions see https://www.qt.io/terms-conditions. For further -: 15:** information use the contact form at https://www.qt.io/contact-us. -: 16:** -: 17:** GNU Lesser General Public License Usage -: 18:** Alternatively, this file may be used under the terms of the GNU Lesser -: 19:** General Public License version 3 as published by the Free Software -: 20:** Foundation and appearing in the file LICENSE.LGPL3 included in the -: 21:** packaging of this file. Please review the following information to -: 22:** ensure the GNU Lesser General Public License version 3 requirements -: 23:** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -: 24:** -: 25:** GNU General Public License Usage -: 26:** Alternatively, this file may be used under the terms of the GNU -: 27:** General Public License version 2.0 or (at your option) the GNU General -: 28:** Public license version 3 or any later version approved by the KDE Free -: 29:** Qt Foundation. The licenses are as published by the Free Software -: 30:** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -: 31:** included in the packaging of this file. Please review the following -: 32:** information to ensure the GNU General Public License requirements will -: 33:** be met: https://www.gnu.org/licenses/gpl-2.0.html and -: 34:** https://www.gnu.org/licenses/gpl-3.0.html. -: 35:** -: 36:** $QT_END_LICENSE$ -: 37:** -: 38:****************************************************************************/ -: 39: -: 40:#ifndef QALGORITHMS_H -: 41:#define QALGORITHMS_H -: 42: -: 43:#include -: 44: -: 45:#if defined(Q_CC_MSVC) && _MSC_VER > 1500 -: 46:#include -: 47:#endif -: 48: -: 49:QT_BEGIN_NAMESPACE -: 50:QT_WARNING_PUSH -: 51:QT_WARNING_DISABLE_DEPRECATED -: 52: -: 53:/* -: 54: Warning: The contents of QAlgorithmsPrivate is not a part of the public Qt API -: 55: and may be changed from version to version or even be completely removed. -: 56:*/ -: 57:namespace QAlgorithmsPrivate { -: 58: -: 59:#if QT_DEPRECATED_SINCE(5, 2) -: 60:template -: 61:QT_DEPRECATED_X("Use std::sort") Q_OUTOFLINE_TEMPLATE void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); -: 62:template -: 63:QT_DEPRECATED_X("Use std::sort") inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy); -: 64: -: 65:template -: 66:QT_DEPRECATED_X("Use std::stable_sort") Q_OUTOFLINE_TEMPLATE void qStableSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan); -: 67:template -: 68:QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSortHelper(RandomAccessIterator, RandomAccessIterator, const T &); -: 69: -: 70:template -: 71:QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); -: 72:template -: 73:QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); -: 74:template -: 75:QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan); -: 76:#endif // QT_DEPRECATED_SINCE(5, 2) -: 77: -: 78:} -: 79: -: 80:#if QT_DEPRECATED_SINCE(5, 2) -: 81:template -: 82:QT_DEPRECATED_X("Use std::copy") inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest) -: 83:{ -: 84: while (begin != end) -: 85: *dest++ = *begin++; -: 86: return dest; -: 87:} -: 88: -: 89:template -: 90:QT_DEPRECATED_X("Use std::copy_backward") inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest) -: 91:{ -: 92: while (begin != end) -: 93: *--dest = *--end; -: 94: return dest; -: 95:} -: 96: -: 97:template -: 98:QT_DEPRECATED_X("Use std::equal") inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2) -: 99:{ -: 100: for (; first1 != last1; ++first1, ++first2) -: 101: if (!(*first1 == *first2)) -: 102: return false; -: 103: return true; -: 104:} -: 105: -: 106:template -: 107:QT_DEPRECATED_X("Use std::fill") inline void qFill(ForwardIterator first, ForwardIterator last, const T &val) -: 108:{ -: 109: for (; first != last; ++first) -: 110: *first = val; -: 111:} -: 112: -: 113:template -: 114:QT_DEPRECATED_X("Use std::fill") inline void qFill(Container &container, const T &val) -: 115:{ -: 116: qFill(container.begin(), container.end(), val); -: 117:} -: 118: -: 119:template -: 120:QT_DEPRECATED_X("Use std::find") inline InputIterator qFind(InputIterator first, InputIterator last, const T &val) -: 121:{ -: 122: while (first != last && !(*first == val)) -: 123: ++first; -: 124: return first; -: 125:} -: 126: -: 127:template -: 128:QT_DEPRECATED_X("Use std::find") inline typename Container::const_iterator qFind(const Container &container, const T &val) -: 129:{ -: 130: return qFind(container.constBegin(), container.constEnd(), val); -: 131:} -: 132: -: 133:template -: 134:QT_DEPRECATED_X("Use std::count") inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n) -: 135:{ -: 136: for (; first != last; ++first) -: 137: if (*first == value) -: 138: ++n; -: 139:} -: 140: -: 141:template -: 142:QT_DEPRECATED_X("Use std::count") inline void qCount(const Container &container, const T &value, Size &n) -: 143:{ -: 144: qCount(container.constBegin(), container.constEnd(), value, n); -: 145:} -: 146: -: 147:#ifdef Q_QDOC -: 148:typedef void* LessThan; -: 149:template LessThan qLess(); -: 150:template LessThan qGreater(); -: 151:#else -: 152:template -: 153:class QT_DEPRECATED_X("Use std::less") qLess -: 154:{ -: 155:public: -: 156: inline bool operator()(const T &t1, const T &t2) const -: 157: { -: 158: return (t1 < t2); -: 159: } -: 160:}; -: 161: -: 162:template -: 163:class QT_DEPRECATED_X("Use std::greater") qGreater -: 164:{ -: 165:public: -: 166: inline bool operator()(const T &t1, const T &t2) const -: 167: { -: 168: return (t2 < t1); -: 169: } -: 170:}; -: 171:#endif -: 172: -: 173:template -: 174:QT_DEPRECATED_X("Use std::sort") inline void qSort(RandomAccessIterator start, RandomAccessIterator end) -: 175:{ -: 176: if (start != end) -: 177: QAlgorithmsPrivate::qSortHelper(start, end, *start); -: 178:} -: 179: -: 180:template -: 181:QT_DEPRECATED_X("Use std::sort") inline void qSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) -: 182:{ -: 183: if (start != end) -: 184: QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan); -: 185:} -: 186: -: 187:template -: 188:QT_DEPRECATED_X("Use std::sort") inline void qSort(Container &c) -: 189:{ -: 190:#ifdef Q_CC_BOR -: 191: // Work around Borland 5.5 optimizer bug -: 192: c.detach(); -: 193:#endif -: 194: if (!c.empty()) -: 195: QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin()); -: 196:} -: 197: -: 198:template -: 199:QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end) -: 200:{ -: 201: if (start != end) -: 202: QAlgorithmsPrivate::qStableSortHelper(start, end, *start); -: 203:} -: 204: -: 205:template -: 206:QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan) -: 207:{ -: 208: if (start != end) -: 209: QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan); -: 210:} -: 211: -: 212:template -: 213:QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSort(Container &c) -: 214:{ -: 215:#ifdef Q_CC_BOR -: 216: // Work around Borland 5.5 optimizer bug -: 217: c.detach(); -: 218:#endif -: 219: if (!c.empty()) -: 220: QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin()); -: 221:} -: 222: -: 223:template -: 224:QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) -: 225:{ -: 226: // Implementation is duplicated from QAlgorithmsPrivate to keep existing code -: 227: // compiling. We have to allow using *begin and value with different types, -: 228: // and then implementing operator< for those types. -: 229: RandomAccessIterator middle; -: 230: int n = end - begin; -: 231: int half; -: 232: -: 233: while (n > 0) { -: 234: half = n >> 1; -: 235: middle = begin + half; -: 236: if (*middle < value) { -: 237: begin = middle + 1; -: 238: n -= half + 1; -: 239: } else { -: 240: n = half; -: 241: } -: 242: } -: 243: return begin; -: 244:} -: 245: -: 246:template -: 247:QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) -: 248:{ -: 249: return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan); -: 250:} -: 251: -: 252:template -: 253:QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE typename Container::const_iterator qLowerBound(const Container &container, const T &value) -: 254:{ -: 255: return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); -: 256:} -: 257: -: 258:template -: 259:QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value) -: 260:{ -: 261: // Implementation is duplicated from QAlgorithmsPrivate. -: 262: RandomAccessIterator middle; -: 263: int n = end - begin; -: 264: int half; -: 265: -: 266: while (n > 0) { -: 267: half = n >> 1; -: 268: middle = begin + half; -: 269: if (value < *middle) { -: 270: n = half; -: 271: } else { -: 272: begin = middle + 1; -: 273: n -= half + 1; -: 274: } -: 275: } -: 276: return begin; -: 277:} -: 278: -: 279:template -: 280:QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) -: 281:{ -: 282: return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan); -: 283:} -: 284: -: 285:template -: 286:QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE typename Container::const_iterator qUpperBound(const Container &container, const T &value) -: 287:{ -: 288: return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess()); -: 289:} -: 290: -: 291:template -: 292:QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value) -: 293:{ -: 294: // Implementation is duplicated from QAlgorithmsPrivate. -: 295: RandomAccessIterator it = qLowerBound(begin, end, value); -: 296: -: 297: if (it == end || value < *it) -: 298: return end; -: 299: -: 300: return it; -: 301:} -: 302: -: 303:template -: 304:QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) -: 305:{ -: 306: return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan); -: 307:} -: 308: -: 309:template -: 310:QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE typename Container::const_iterator qBinaryFind(const Container &container, const T &value) -: 311:{ -: 312: return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess()); -: 313:} -: 314:#endif // QT_DEPRECATED_SINCE(5, 2) -: 315: -: 316:template -: 317:Q_OUTOFLINE_TEMPLATE void qDeleteAll(ForwardIterator begin, ForwardIterator end) -: 318:{ -: 319: while (begin != end) { -: 320: delete *begin; -: 321: ++begin; -: 322: } -: 323:} -: 324: -: 325:template -: 326:inline void qDeleteAll(const Container &c) -: 327:{ -: 328: qDeleteAll(c.begin(), c.end()); -: 329:} -: 330: -: 331:/* -: 332: Warning: The contents of QAlgorithmsPrivate is not a part of the public Qt API -: 333: and may be changed from version to version or even be completely removed. -: 334:*/ -: 335:namespace QAlgorithmsPrivate { -: 336: -: 337:#if QT_DEPRECATED_SINCE(5, 2) -: 338: -: 339:template -: 340:QT_DEPRECATED_X("Use std::sort") Q_OUTOFLINE_TEMPLATE void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan) -: 341:{ -: 342:top: -: 343: int span = int(end - start); -: 344: if (span < 2) -: 345: return; -: 346: -: 347: --end; -: 348: RandomAccessIterator low = start, high = end - 1; -: 349: RandomAccessIterator pivot = start + span / 2; -: 350: -: 351: if (lessThan(*end, *start)) -: 352: qSwap(*end, *start); -: 353: if (span == 2) -: 354: return; -: 355: -: 356: if (lessThan(*pivot, *start)) -: 357: qSwap(*pivot, *start); -: 358: if (lessThan(*end, *pivot)) -: 359: qSwap(*end, *pivot); -: 360: if (span == 3) -: 361: return; -: 362: -: 363: qSwap(*pivot, *end); -: 364: -: 365: while (low < high) { -: 366: while (low < high && lessThan(*low, *end)) -: 367: ++low; -: 368: -: 369: while (high > low && lessThan(*end, *high)) -: 370: --high; -: 371: -: 372: if (low < high) { -: 373: qSwap(*low, *high); -: 374: ++low; -: 375: --high; -: 376: } else { -: 377: break; -: 378: } -: 379: } -: 380: -: 381: if (lessThan(*low, *end)) -: 382: ++low; -: 383: -: 384: qSwap(*end, *low); -: 385: qSortHelper(start, low, t, lessThan); -: 386: -: 387: start = low + 1; -: 388: ++end; -: 389: goto top; -: 390:} -: 391: -: 392:template -: 393:QT_DEPRECATED_X("Use std::sort") inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) -: 394:{ -: 395: qSortHelper(begin, end, dummy, qLess()); -: 396:} -: 397: -: 398:template -: 399:QT_DEPRECATED_X("Use std::reverse") Q_OUTOFLINE_TEMPLATE void qReverse(RandomAccessIterator begin, RandomAccessIterator end) -: 400:{ -: 401: --end; -: 402: while (begin < end) -: 403: qSwap(*begin++, *end--); -: 404:} -: 405: -: 406:template -: 407:QT_DEPRECATED_X("Use std::rotate") Q_OUTOFLINE_TEMPLATE void qRotate(RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end) -: 408:{ -: 409: qReverse(begin, middle); -: 410: qReverse(middle, end); -: 411: qReverse(begin, end); -: 412:} -: 413: -: 414:template -: 415:QT_DEPRECATED_X("Use std::merge") Q_OUTOFLINE_TEMPLATE void qMerge(RandomAccessIterator begin, RandomAccessIterator pivot, RandomAccessIterator end, T &t, LessThan lessThan) -: 416:{ -: 417: const int len1 = pivot - begin; -: 418: const int len2 = end - pivot; -: 419: -: 420: if (len1 == 0 || len2 == 0) -: 421: return; -: 422: -: 423: if (len1 + len2 == 2) { -: 424: if (lessThan(*(begin + 1), *(begin))) -: 425: qSwap(*begin, *(begin + 1)); -: 426: return; -: 427: } -: 428: -: 429: RandomAccessIterator firstCut; -: 430: RandomAccessIterator secondCut; -: 431: int len2Half; -: 432: if (len1 > len2) { -: 433: const int len1Half = len1 / 2; -: 434: firstCut = begin + len1Half; -: 435: secondCut = qLowerBound(pivot, end, *firstCut, lessThan); -: 436: len2Half = secondCut - pivot; -: 437: } else { -: 438: len2Half = len2 / 2; -: 439: secondCut = pivot + len2Half; -: 440: firstCut = qUpperBound(begin, pivot, *secondCut, lessThan); -: 441: } -: 442: -: 443: qRotate(firstCut, pivot, secondCut); -: 444: const RandomAccessIterator newPivot = firstCut + len2Half; -: 445: qMerge(begin, firstCut, newPivot, t, lessThan); -: 446: qMerge(newPivot, secondCut, end, t, lessThan); -: 447:} -: 448: -: 449:template -: 450:QT_DEPRECATED_X("Use std::stable_sort") Q_OUTOFLINE_TEMPLATE void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &t, LessThan lessThan) -: 451:{ -: 452: const int span = end - begin; -: 453: if (span < 2) -: 454: return; -: 455: -: 456: const RandomAccessIterator middle = begin + span / 2; -: 457: qStableSortHelper(begin, middle, t, lessThan); -: 458: qStableSortHelper(middle, end, t, lessThan); -: 459: qMerge(begin, middle, end, t, lessThan); -: 460:} -: 461: -: 462:template -: 463:QT_DEPRECATED_X("Use std::stable_sort") inline void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy) -: 464:{ -: 465: qStableSortHelper(begin, end, dummy, qLess()); -: 466:} -: 467: -: 468:template -: 469:QT_DEPRECATED_X("Use std::lower_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) -: 470:{ -: 471: RandomAccessIterator middle; -: 472: int n = int(end - begin); -: 473: int half; -: 474: -: 475: while (n > 0) { -: 476: half = n >> 1; -: 477: middle = begin + half; -: 478: if (lessThan(*middle, value)) { -: 479: begin = middle + 1; -: 480: n -= half + 1; -: 481: } else { -: 482: n = half; -: 483: } -: 484: } -: 485: return begin; -: 486:} -: 487: -: 488: -: 489:template -: 490:QT_DEPRECATED_X("Use std::upper_bound") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) -: 491:{ -: 492: RandomAccessIterator middle; -: 493: int n = end - begin; -: 494: int half; -: 495: -: 496: while (n > 0) { -: 497: half = n >> 1; -: 498: middle = begin + half; -: 499: if (lessThan(value, *middle)) { -: 500: n = half; -: 501: } else { -: 502: begin = middle + 1; -: 503: n -= half + 1; -: 504: } -: 505: } -: 506: return begin; -: 507:} -: 508: -: 509:template -: 510:QT_DEPRECATED_X("Use std::binary_search") Q_OUTOFLINE_TEMPLATE RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan) -: 511:{ -: 512: RandomAccessIterator it = qLowerBoundHelper(begin, end, value, lessThan); -: 513: -: 514: if (it == end || lessThan(value, *it)) -: 515: return end; -: 516: -: 517: return it; -: 518:} -: 519: -: 520:#endif // QT_DEPRECATED_SINCE(5, 2) -: 521: -: 522:#ifdef Q_CC_CLANG -: 523:// Clang had a bug where __builtin_ctz/clz/popcount were not marked as constexpr. -: 524:# if (defined __apple_build_version__ && __clang_major__ >= 7) || (Q_CC_CLANG >= 307) -: 525:# define QT_HAS_CONSTEXPR_BUILTINS -: 526:# endif -: 527:#elif defined(Q_CC_MSVC) && !defined(Q_CC_INTEL) && !defined(Q_OS_WINCE) && !defined(Q_PROCESSOR_ARM) -: 528:# define QT_HAS_CONSTEXPR_BUILTINS -: 529:#elif defined(Q_CC_GNU) -: 530:# define QT_HAS_CONSTEXPR_BUILTINS -: 531:#endif -: 532: -: 533:#if defined QT_HAS_CONSTEXPR_BUILTINS -: 534:#if defined(Q_CC_GNU) || defined(Q_CC_CLANG) -: 535:# define QT_HAS_BUILTIN_CTZS -: 536:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_ctzs(quint16 v) Q_DECL_NOTHROW -: 537:{ -: 538:# if QT_HAS_BUILTIN(__builtin_ctzs) -: 539: return __builtin_ctzs(v); -: 540:# else -: 541: return __builtin_ctz(v); -: 542:# endif -: 543:} -: 544:#define QT_HAS_BUILTIN_CLZS -: 545:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_clzs(quint16 v) Q_DECL_NOTHROW -: 546:{ -: 547:# if QT_HAS_BUILTIN(__builtin_clzs) -: 548: return __builtin_clzs(v); -: 549:# else -: 550: return __builtin_clz(v) - 16U; -: 551:# endif -: 552:} -: 553:#define QT_HAS_BUILTIN_CTZ -: 554:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_ctz(quint32 v) Q_DECL_NOTHROW -: 555:{ #####: 556: return __builtin_ctz(v); -: 557:} -: 558:#define QT_HAS_BUILTIN_CLZ -: 559:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_clz(quint32 v) Q_DECL_NOTHROW -: 560:{ -: 561: return __builtin_clz(v); -: 562:} -: 563:#define QT_HAS_BUILTIN_CTZLL -: 564:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_ctzll(quint64 v) Q_DECL_NOTHROW -: 565:{ -: 566: return __builtin_ctzll(v); -: 567:} -: 568:#define QT_HAS_BUILTIN_CLZLL -: 569:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_clzll(quint64 v) Q_DECL_NOTHROW -: 570:{ -: 571: return __builtin_clzll(v); -: 572:} -: 573:#define QALGORITHMS_USE_BUILTIN_POPCOUNT -: 574:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcount(quint32 v) Q_DECL_NOTHROW -: 575:{ -: 576: return __builtin_popcount(v); -: 577:} -: 578:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcount(quint8 v) Q_DECL_NOTHROW -: 579:{ -: 580: return __builtin_popcount(v); -: 581:} -: 582:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcount(quint16 v) Q_DECL_NOTHROW -: 583:{ -: 584: return __builtin_popcount(v); -: 585:} -: 586:#define QALGORITHMS_USE_BUILTIN_POPCOUNTLL -: 587:Q_DECL_CONSTEXPR Q_ALWAYS_INLINE uint qt_builtin_popcountll(quint64 v) Q_DECL_NOTHROW -: 588:{ -: 589: return __builtin_popcountll(v); -: 590:} -: 591:#elif defined(Q_CC_MSVC) && !defined(Q_OS_WINCE) && !defined(Q_PROCESSOR_ARM) -: 592:#define QT_POPCOUNT_CONSTEXPR -: 593:#define QT_HAS_BUILTIN_CTZ -: 594:Q_ALWAYS_INLINE unsigned long qt_builtin_ctz(quint32 val) -: 595:{ -: 596: unsigned long result; -: 597: _BitScanForward(&result, val); -: 598: return result; -: 599:} -: 600:#define QT_HAS_BUILTIN_CLZ -: 601:Q_ALWAYS_INLINE unsigned long qt_builtin_clz(quint32 val) -: 602:{ -: 603: unsigned long result; -: 604: _BitScanReverse(&result, val); -: 605: // Now Invert the result: clz will count *down* from the msb to the lsb, so the msb index is 31 -: 606: // and the lsb index is 0. The result for the index when counting up: msb index is 0 (because it -: 607: // starts there), and the lsb index is 31. -: 608: result ^= sizeof(quint32) * 8 - 1; -: 609: return result; -: 610:} -: 611:#if Q_PROCESSOR_WORDSIZE == 8 -: 612:// These are only defined for 64bit builds. -: 613:#define QT_HAS_BUILTIN_CTZLL -: 614:Q_ALWAYS_INLINE unsigned long qt_builtin_ctzll(quint64 val) -: 615:{ -: 616: unsigned long result; -: 617: _BitScanForward64(&result, val); -: 618: return result; -: 619:} -: 620:// MSVC calls it _BitScanReverse and returns the carry flag, which we don't need -: 621:#define QT_HAS_BUILTIN_CLZLL -: 622:Q_ALWAYS_INLINE unsigned long qt_builtin_clzll(quint64 val) -: 623:{ -: 624: unsigned long result; -: 625: _BitScanReverse64(&result, val); -: 626: // see qt_builtin_clz -: 627: result ^= sizeof(quint64) * 8 - 1; -: 628: return result; -: 629:} -: 630:#endif // MSVC 64bit -: 631:# define QT_HAS_BUILTIN_CTZS -: 632:Q_ALWAYS_INLINE uint qt_builtin_ctzs(quint16 v) Q_DECL_NOTHROW -: 633:{ -: 634: return qt_builtin_ctz(v); -: 635:} -: 636:#define QT_HAS_BUILTIN_CLZS -: 637:Q_ALWAYS_INLINE uint qt_builtin_clzs(quint16 v) Q_DECL_NOTHROW -: 638:{ -: 639: return qt_builtin_clz(v) - 16U; -: 640:} -: 641: -: 642:// Neither MSVC nor the Intel compiler define a macro for the POPCNT processor -: 643:// feature, so we're using either the SSE4.2 or the AVX macro as a proxy (Clang -: 644:// does define the macro). It's incorrect for two reasons: -: 645:// 1. It's a separate bit in CPUID, so a processor could implement SSE4.2 and -: 646:// not POPCNT, but that's unlikely to happen. -: 647:// 2. There are processors that support POPCNT but not AVX (Intel Nehalem -: 648:// architecture), but unlike the other compilers, MSVC has no option -: 649:// to generate code for those processors. -: 650:// So it's an acceptable compromise. -: 651:#if defined(__AVX__) || defined(__SSE4_2__) || defined(__POPCNT__) -: 652:#define QALGORITHMS_USE_BUILTIN_POPCOUNT -: 653:Q_ALWAYS_INLINE uint qt_builtin_popcount(quint32 v) Q_DECL_NOTHROW -: 654:{ -: 655: return __popcnt(v); -: 656:} -: 657:Q_ALWAYS_INLINE uint qt_builtin_popcount(quint8 v) Q_DECL_NOTHROW -: 658:{ -: 659: return __popcnt16(v); -: 660:} -: 661:Q_ALWAYS_INLINE uint qt_builtin_popcount(quint16 v) Q_DECL_NOTHROW -: 662:{ -: 663: return __popcnt16(v); -: 664:} -: 665:#if Q_PROCESSOR_WORDSIZE == 8 -: 666:#define QALGORITHMS_USE_BUILTIN_POPCOUNTLL -: 667:Q_ALWAYS_INLINE uint qt_builtin_popcountll(quint64 v) Q_DECL_NOTHROW -: 668:{ -: 669: return __popcnt64(v); -: 670:} -: 671:#endif // MSVC 64bit -: 672:#endif // __AVX__ || __SSE4_2__ || __POPCNT__ -: 673: -: 674:#endif // MSVC -: 675:#endif // QT_HAS_CONSTEXPR_BUILTINS -: 676: -: 677:#ifndef QT_POPCOUNT_CONSTEXPR -: 678:#define QT_POPCOUNT_CONSTEXPR Q_DECL_CONSTEXPR -: 679:#endif -: 680: -: 681:} //namespace QAlgorithmsPrivate -: 682: -: 683:Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint32 v) Q_DECL_NOTHROW -: 684:{ -: 685:#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT -: 686: return QAlgorithmsPrivate::qt_builtin_popcount(v); -: 687:#else -: 688: // See http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel -: 689: return -: 690: (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 691: (((v >> 12) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 692: (((v >> 24) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; -: 693:#endif -: 694:} -: 695: -: 696:Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint8 v) Q_DECL_NOTHROW -: 697:{ -: 698:#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT -: 699: return QAlgorithmsPrivate::qt_builtin_popcount(v); -: 700:#else -: 701: return -: 702: (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; -: 703:#endif -: 704:} -: 705: -: 706:Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint16 v) Q_DECL_NOTHROW -: 707:{ -: 708:#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNT -: 709: return QAlgorithmsPrivate::qt_builtin_popcount(v); -: 710:#else -: 711: return -: 712: (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 713: (((v >> 12) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; -: 714:#endif -: 715:} -: 716: -: 717:Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(quint64 v) Q_DECL_NOTHROW -: 718:{ -: 719:#ifdef QALGORITHMS_USE_BUILTIN_POPCOUNTLL -: 720: return QAlgorithmsPrivate::qt_builtin_popcountll(v); -: 721:#else -: 722: return -: 723: (((v ) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 724: (((v >> 12) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 725: (((v >> 24) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 726: (((v >> 36) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 727: (((v >> 48) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f + -: 728: (((v >> 60) & 0xfff) * Q_UINT64_C(0x1001001001001) & Q_UINT64_C(0x84210842108421)) % 0x1f; -: 729:#endif -: 730:} -: 731: -: 732:Q_DECL_CONST_FUNCTION QT_POPCOUNT_CONSTEXPR inline uint qPopulationCount(long unsigned int v) Q_DECL_NOTHROW -: 733:{ -: 734: return qPopulationCount(static_cast(v)); -: 735:} -: 736: -: 737:#if defined(Q_CC_GNU) && !defined(Q_CC_CLANG) -: 738:#undef QALGORITHMS_USE_BUILTIN_POPCOUNT -: 739:#endif -: 740:#undef QT_POPCOUNT_CONSTEXPR -: 741: function _Z22qCountTrailingZeroBitsj called 0 returned 0% blocks executed 0% #####: 742:Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint32 v) Q_DECL_NOTHROW -: 743:{ -: 744:#if defined(QT_HAS_BUILTIN_CTZ) #####: 745: return v ? QAlgorithmsPrivate::qt_builtin_ctz(v) : 32U; branch 0 never executed branch 1 never executed -: 746:#else -: 747: // see http://graphics.stanford.edu/~seander/bithacks.html#ZerosOnRightParallel -: 748: unsigned int c = 32; // c will be the number of zero bits on the right -: 749: v &= -signed(v); -: 750: if (v) c--; -: 751: if (v & 0x0000FFFF) c -= 16; -: 752: if (v & 0x00FF00FF) c -= 8; -: 753: if (v & 0x0F0F0F0F) c -= 4; -: 754: if (v & 0x33333333) c -= 2; -: 755: if (v & 0x55555555) c -= 1; -: 756: return c; -: 757:#endif -: 758:} -: 759: -: 760:Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint8 v) Q_DECL_NOTHROW -: 761:{ -: 762:#if defined(QT_HAS_BUILTIN_CTZ) -: 763: return v ? QAlgorithmsPrivate::qt_builtin_ctz(v) : 8U; -: 764:#else -: 765: unsigned int c = 8; // c will be the number of zero bits on the right -: 766: v &= -signed(v); -: 767: if (v) c--; -: 768: if (v & 0x0000000F) c -= 4; -: 769: if (v & 0x00000033) c -= 2; -: 770: if (v & 0x00000055) c -= 1; -: 771: return c; -: 772:#endif -: 773:} -: 774: -: 775:Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint16 v) Q_DECL_NOTHROW -: 776:{ -: 777:#if defined(QT_HAS_BUILTIN_CTZS) -: 778: return v ? QAlgorithmsPrivate::qt_builtin_ctzs(v) : 16U; -: 779:#else -: 780: unsigned int c = 16; // c will be the number of zero bits on the right -: 781: v &= -signed(v); -: 782: if (v) c--; -: 783: if (v & 0x000000FF) c -= 8; -: 784: if (v & 0x00000F0F) c -= 4; -: 785: if (v & 0x00003333) c -= 2; -: 786: if (v & 0x00005555) c -= 1; -: 787: return c; -: 788:#endif -: 789:} -: 790: -: 791:Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(quint64 v) Q_DECL_NOTHROW -: 792:{ -: 793:#if defined(QT_HAS_BUILTIN_CTZLL) -: 794: return v ? QAlgorithmsPrivate::qt_builtin_ctzll(v) : 64; -: 795:#else -: 796: quint32 x = static_cast(v); -: 797: return x ? qCountTrailingZeroBits(x) -: 798: : 32 + qCountTrailingZeroBits(static_cast(v >> 32)); -: 799:#endif -: 800:} -: 801: -: 802:Q_DECL_RELAXED_CONSTEXPR inline uint qCountTrailingZeroBits(unsigned long v) Q_DECL_NOTHROW -: 803:{ -: 804: return qCountTrailingZeroBits(QIntegerForSizeof::Unsigned(v)); -: 805:} -: 806: -: 807:Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint32 v) Q_DECL_NOTHROW -: 808:{ -: 809:#if defined(QT_HAS_BUILTIN_CLZ) -: 810: return v ? QAlgorithmsPrivate::qt_builtin_clz(v) : 32U; -: 811:#else -: 812: // Hacker's Delight, 2nd ed. Fig 5-16, p. 102 -: 813: v = v | (v >> 1); -: 814: v = v | (v >> 2); -: 815: v = v | (v >> 4); -: 816: v = v | (v >> 8); -: 817: v = v | (v >> 16); -: 818: return qPopulationCount(~v); -: 819:#endif -: 820:} -: 821: -: 822:Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint8 v) Q_DECL_NOTHROW -: 823:{ -: 824:#if defined(QT_HAS_BUILTIN_CLZ) -: 825: return v ? QAlgorithmsPrivate::qt_builtin_clz(v)-24U : 8U; -: 826:#else -: 827: v = v | (v >> 1); -: 828: v = v | (v >> 2); -: 829: v = v | (v >> 4); -: 830: return qPopulationCount(static_cast(~v)); -: 831:#endif -: 832:} -: 833: -: 834:Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint16 v) Q_DECL_NOTHROW -: 835:{ -: 836:#if defined(QT_HAS_BUILTIN_CLZS) -: 837: return v ? QAlgorithmsPrivate::qt_builtin_clzs(v) : 16U; -: 838:#else -: 839: v = v | (v >> 1); -: 840: v = v | (v >> 2); -: 841: v = v | (v >> 4); -: 842: v = v | (v >> 8); -: 843: return qPopulationCount(static_cast(~v)); -: 844:#endif -: 845:} -: 846: -: 847:Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(quint64 v) Q_DECL_NOTHROW -: 848:{ -: 849:#if defined(QT_HAS_BUILTIN_CLZLL) -: 850: return v ? QAlgorithmsPrivate::qt_builtin_clzll(v) : 64U; -: 851:#else -: 852: v = v | (v >> 1); -: 853: v = v | (v >> 2); -: 854: v = v | (v >> 4); -: 855: v = v | (v >> 8); -: 856: v = v | (v >> 16); -: 857: v = v | (v >> 32); -: 858: return qPopulationCount(~v); -: 859:#endif -: 860:} -: 861: -: 862:Q_DECL_RELAXED_CONSTEXPR inline uint qCountLeadingZeroBits(unsigned long v) Q_DECL_NOTHROW -: 863:{ -: 864: return qCountLeadingZeroBits(QIntegerForSizeof::Unsigned(v)); -: 865:} -: 866: -: 867:QT_WARNING_POP -: 868:QT_END_NAMESPACE -: 869: -: 870:#endif // QALGORITHMS_H <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/tictactoemenudialog.cpp.gcov -: 0:Source:tictactoemenudialog.cpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoemenudialog.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoemenudialog.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1: -: 2: -: 3:#include "tictactoemenudialog.h" -: 4: -: 5:#include -: 6:#include -: 7: -: 8:#include "dotmatrixchar.h" -: 9:#include "tictactoeai.h" -: 10:#include "tictactoeais.h" -: 11:#include "tictactoeboard.h" -: 12: -: 13:#include "tictactoegame.h" -: 14:#include "tictactoewidget.h" -: 15: -: 16: -: 17: function _ZN4ribi9tictactoe19TicTacToeMenuDialogC2Ev called 1 returned 100% blocks executed 100% 1: 18:ribi::tictactoe::TicTacToeMenuDialog::TicTacToeMenuDialog() call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% -: 19:{ -: 20: 1: 21:} -: 22: function _ZN4ribi9tictactoe19TicTacToeMenuDialog15ExecuteSpecificERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS8_EE called 1 returned 100% blocks executed 71% 1: 23:int ribi::tictactoe::TicTacToeMenuDialog::ExecuteSpecific(const std::vector& args) noexcept -: 24:{ 1: 25: bool silent{false}; 1: 26: if (std::count(args.begin(),args.end(),"-s") || std::count(args.begin(),args.end(),"--silent")) call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% branch 5 taken 100% (fallthrough) branch 6 taken 0% call 7 returned 100% call 8 returned 100% call 9 returned 100% call 10 returned 100% call 11 returned 100% branch 12 taken 100% (fallthrough) branch 13 taken 0% branch 14 taken 100% (fallthrough) branch 15 taken 0% -: 27: { 1: 28: silent = true; -: 29: } -: 30: 2: 31: boost::shared_ptr p1; call 0 returned 100% 2: 32: boost::shared_ptr p2; call 0 returned 100% 5: 33: for (const auto& arg: args) call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% branch 5 taken 80% (fallthrough) branch 6 taken 20% call 7 returned 100% call 8 returned 100% call 9 returned 100% -: 34: { 4: 35: if (arg == "-e" || arg == "--1e") p1.reset(new AiEnforceDraw); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% call 8 never executed call 9 never executed call 10 never executed call 11 never executed 4: 36: if (arg == "-m" || arg == "--1m") p1.reset(new AiPlayRandom); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% call 8 never executed call 9 never executed call 10 never executed call 11 never executed 4: 37: if (arg == "-h" || arg == "--1h") p1.reset(new AiEnforceWin); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 25% (fallthrough) branch 5 taken 75% branch 6 taken 25% (fallthrough) branch 7 taken 75% call 8 returned 100% call 9 returned 100% call 10 returned 100% call 11 returned 100% 4: 38: if (arg == "-E" || arg == "--2e") p2.reset(new AiEnforceDraw); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% call 8 never executed call 9 never executed call 10 never executed call 11 never executed 4: 39: if (arg == "-M" || arg == "--2m") p2.reset(new AiPlayRandom); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% call 8 never executed call 9 never executed call 10 never executed call 11 never executed 4: 40: if (arg == "-H" || arg == "--2h") p2.reset(new AiEnforceWin); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 25% (fallthrough) branch 5 taken 75% branch 6 taken 25% (fallthrough) branch 7 taken 75% call 8 returned 100% call 9 returned 100% call 10 returned 100% call 11 returned 100% -: 41: } -: 42: 1: 43: if (silent) branch 0 taken 100% (fallthrough) branch 1 taken 0% -: 44: { 1: 45: if (!p1 || !p2) { return 0; } //Cannot test a live game in silent mode call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% call 3 returned 100% branch 4 taken 0% (fallthrough) branch 5 taken 100% branch 6 taken 0% (fallthrough) branch 7 taken 100% -: 46: } 2: 47: tictactoe::Game t; call 0 returned 100% call 1 returned 100% -: 48: -: 49: while (1) -: 50: { 9: 51: if (!silent) { std::cout << t.ToTextCanvas() << std::endl; } branch 0 taken 0% (fallthrough) branch 1 taken 100% call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed -: 52: 9: 53: if (t.GetWinner() != tictactoe::Winner::no_winner) break; call 0 returned 100% branch 1 taken 11% (fallthrough) branch 2 taken 89% -: 54: -: 55: 16: 56: auto ai = t.GetCurrentPlayer() == Player::player1 ? p1 : p2; call 0 returned 100% branch 1 taken 50% (fallthrough) branch 2 taken 50% call 3 returned 100% call 4 returned 100% call 5 returned 100% 8: 57: if (ai) call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% -: 58: { 8: 59: const auto move(ai->SuggestMove(t)); call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% call 5 returned 100% call 6 returned 100% 8: 60: t.DoMove(move.first,move.second); call 0 returned 100% -: 61: } -: 62: else -: 63: { #####: 64: int x = 0; #####: 65: int y = 0; #####: 66: std::cout << "Please enter input:\n"; call 0 never executed #####: 67: std::cin >> x >> y; call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed #####: 68: if (t.CanDoMove(x,y)) t.DoMove(x,y); call 0 never executed branch 1 never executed branch 2 never executed call 3 never executed -: 69: } 8: 70: } 1: 71: return 0; -: 72:} -: 73: function _ZNK4ribi9tictactoe19TicTacToeMenuDialog8GetAboutEv called 0 returned 0% blocks executed 0% #####: 74:ribi::About ribi::tictactoe::TicTacToeMenuDialog::GetAbout() const noexcept -: 75:{ -: 76: About a( -: 77: "Richel Bilderbeek", -: 78: "TicTacToe", -: 79: "tic-tac-toe game", -: 80: "September 18th of 2015", -: 81: "2010-2015", -: 82: "http://www.richelbilderbeek.nl/GameTicTacToe.htm", #####: 83: GetVersion(), call 0 never executed call 1 never executed #####: 84: GetVersionHistory() call 0 never executed #####: 85: ); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed call 18 never executed call 19 never executed call 20 never executed call 21 never executed call 22 never executed call 23 never executed call 24 never executed call 25 never executed call 26 never executed call 27 never executed call 28 never executed call 29 never executed call 30 never executed call 31 never executed call 32 never executed call 33 never executed #####: 86: a.AddLibrary("DotMatrix version: " + DotMatrixChar::GetVersion()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed #####: 87: a.AddLibrary("tictactoe::Board version: " + tictactoe::Board::GetVersion()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed #####: 88: a.AddLibrary("tictactoe::Game version: " + tictactoe::Game::GetVersion()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed #####: 89: a.AddLibrary("tictactoe::Widget version: " + tictactoe::Widget::GetVersion()); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed #####: 90: return a; -: 91:} -: 92: function _ZNK4ribi9tictactoe19TicTacToeMenuDialog7GetHelpEv called 0 returned 0% blocks executed 0% #####: 93:ribi::Help ribi::tictactoe::TicTacToeMenuDialog::GetHelp() const noexcept -: 94:{ -: 95: return Help( #####: 96: this->GetAbout().GetFileTitle(), call 0 never executed call 1 never executed call 2 never executed #####: 97: this->GetAbout().GetFileDescription(), call 0 never executed call 1 never executed call 2 never executed -: 98: { -: 99: Help::Option('e',"1e","Player 1: easy"), -: 100: Help::Option('m',"1m","Player 1: medium"), -: 101: Help::Option('h',"1h","Player 1: hard"), -: 102: Help::Option('s',"silent","no output"), -: 103: Help::Option('E',"2e","Player 2: easy"), -: 104: Help::Option('M',"2m","Player 2: medium"), -: 105: Help::Option('H',"2h","Player 2: hard") -: 106: }, -: 107: { #####: 108: GetAbout().GetFileTitle(), call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 109: GetAbout().GetFileTitle() + " -e", call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 110: GetAbout().GetFileTitle() + " --1e -E", call 0 never executed call 1 never executed call 2 never executed call 3 never executed #####: 111: GetAbout().GetFileTitle() + " --1h -2h" call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 112: } #####: 113: ); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed call 18 never executed call 19 never executed call 20 never executed call 21 never executed call 22 never executed call 23 never executed call 24 never executed call 25 never executed call 26 never executed call 27 never executed call 28 never executed call 29 never executed call 30 never executed call 31 never executed call 32 never executed call 33 never executed call 34 never executed call 35 never executed call 36 never executed call 37 never executed call 38 never executed call 39 never executed call 40 never executed call 41 never executed call 42 never executed call 43 never executed call 44 never executed call 45 never executed call 46 never executed call 47 never executed call 48 never executed call 49 never executed call 50 never executed call 51 never executed call 52 never executed call 53 never executed call 54 never executed call 55 never executed call 56 never executed call 57 never executed call 58 never executed call 59 never executed call 60 never executed call 61 never executed call 62 never executed call 63 never executed call 64 never executed call 65 never executed call 66 never executed branch 67 never executed branch 68 never executed call 69 never executed call 70 never executed call 71 never executed call 72 never executed call 73 never executed call 74 never executed call 75 never executed call 76 never executed call 77 never executed call 78 never executed call 79 never executed call 80 never executed call 81 never executed call 82 never executed call 83 never executed call 84 never executed call 85 never executed call 86 never executed call 87 never executed call 88 never executed call 89 never executed call 90 never executed call 91 never executed call 92 never executed call 93 never executed call 94 never executed call 95 never executed call 96 never executed call 97 never executed call 98 never executed call 99 never executed call 100 never executed branch 101 never executed branch 102 never executed call 103 never executed call 104 never executed -: 114:} -: 115: function _ZNK4ribi9tictactoe19TicTacToeMenuDialog10GetVersionB5cxx11Ev called 0 returned 0% blocks executed 0% #####: 116:std::string ribi::tictactoe::TicTacToeMenuDialog::GetVersion() const noexcept -: 117:{ #####: 118: return "1.9"; call 0 never executed call 1 never executed call 2 never executed -: 119:} -: 120: function _ZNK4ribi9tictactoe19TicTacToeMenuDialog17GetVersionHistoryB5cxx11Ev called 0 returned 0% blocks executed 0% #####: 121:std::vector ribi::tictactoe::TicTacToeMenuDialog::GetVersionHistory() const noexcept -: 122:{ -: 123: return { -: 124: "2010-09-24: Version 1.0: initial version", -: 125: "2010-11-20: Version 1.1: fixed menu", -: 126: "2011-01-07: version 1.2: merge with Wt TicTacToe game", -: 127: "2011-01-07: version 1.3: seperated wtmain.cpp in multiple units", -: 128: "2011-04-15: version 1.4: major architectural changes", -: 129: "2011-04-16: version 1.5: added use of WtAutoConfig (for web application)" -: 130: "2014-02-10: version 1.6: added retro version", -: 131: "2014-06-05: version 1.7: first step in adding AI", -: 132: "2014-08-07: version 1.8: added silent flag in console version", -: 133: "2015-09-18: version 1.9: removed retro version" #####: 134: }; call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed call 18 never executed call 19 never executed call 20 never executed branch 21 never executed branch 22 never executed call 23 never executed call 24 never executed call 25 never executed call 26 never executed call 27 never executed call 28 never executed call 29 never executed call 30 never executed call 31 never executed call 32 never executed call 33 never executed function _GLOBAL__sub_I_tictactoemenudialog.cpp called 1 returned 100% blocks executed 100% function _Z41__static_initialization_and_destruction_0ii called 1 returned 100% blocks executed 100% 3: 135:} call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% branch 3 taken 100% (fallthrough) branch 4 taken 0% <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#xpressive#detail#utility#chset#basic_chset.hpp.gcov -: 0:Source:/usr/include/boost/xpressive/detail/utility/chset/basic_chset.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:/*============================================================================= -: 2: Copyright (c) 2001-2003 Joel de Guzman -: 3: Copyright (c) 2001-2003 Daniel Nuffer -: 4: http://spirit.sourceforge.net/ -: 5: -: 6: Use, modification and distribution is subject to the Boost Software -: 7: License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -: 8: http://www.boost.org/LICENSE_1_0.txt) -: 9:=============================================================================*/ -: 10:#ifndef BOOST_XPRESSIVE_SPIRIT_BASIC_CHSET_HPP_EAN_10_04_2005 -: 11:#define BOOST_XPRESSIVE_SPIRIT_BASIC_CHSET_HPP_EAN_10_04_2005 -: 12: -: 13://///////////////////////////////////////////////////////////////////////////// -: 14:#include -: 15:#include -: 16:#include -: 17: -: 18:namespace boost { namespace xpressive { namespace detail -: 19:{ -: 20: -: 21://///////////////////////////////////////////////////////////////////////// -: 22:// -: 23:// basic_chset: basic character set implementation using range_run -: 24:// -: 25://///////////////////////////////////////////////////////////////////////// -: 26:template -: 27:struct basic_chset -: 28:{ -: 29: basic_chset(); -: 30: basic_chset(basic_chset const &arg); -: 31: -: 32: bool empty() const; -: 33: void set(Char from, Char to); -: 34: template -: 35: void set(Char from, Char to, Traits const &tr); -: 36: void set(Char c); -: 37: template -: 38: void set(Char c, Traits const &tr); -: 39: -: 40: void clear(Char from, Char to); -: 41: template -: 42: void clear(Char from, Char to, Traits const &tr); -: 43: void clear(Char c); -: 44: template -: 45: void clear(Char c, Traits const &tr); -: 46: void clear(); -: 47: -: 48: template -: 49: bool test(Char v, Traits const &tr, mpl::false_) const; // case-sensitive -: 50: template -: 51: bool test(Char v, Traits const &tr, mpl::true_) const; // case-insensitive -: 52: -: 53: void inverse(); -: 54: void swap(basic_chset& x); -: 55: -: 56: basic_chset &operator |=(basic_chset const &x); -: 57: basic_chset &operator &=(basic_chset const &x); -: 58: basic_chset &operator -=(basic_chset const &x); -: 59: basic_chset &operator ^=(basic_chset const &x); -: 60: -: 61:private: -: 62: range_run rr_; -: 63:}; -: 64: -: 65:#if(CHAR_BIT == 8) -: 66: -: 67://///////////////////////////////////////////////////////////////////////// -: 68:// -: 69:// basic_chset: specializations for 8 bit chars using std::bitset -: 70:// -: 71://///////////////////////////////////////////////////////////////////////// -: 72:template -: 73:struct basic_chset_8bit -: 74:{ -: 75: basic_chset_8bit(); -: 76: basic_chset_8bit(basic_chset_8bit const &arg); -: 77: -: 78: bool empty() const; -: 79: -: 80: void set(Char from, Char to); -: 81: template -: 82: void set(Char from, Char to, Traits const &tr); -: 83: void set(Char c); -: 84: template -: 85: void set(Char c, Traits const &tr); -: 86: -: 87: void clear(Char from, Char to); -: 88: template -: 89: void clear(Char from, Char to, Traits const &tr); -: 90: void clear(Char c); -: 91: template -: 92: void clear(Char c, Traits const &tr); -: 93: void clear(); -: 94: -: 95: template -: 96: bool test(Char v, Traits const &tr, mpl::false_) const; // case-sensitive -: 97: template -: 98: bool test(Char v, Traits const &tr, mpl::true_) const; // case-insensitive -: 99: -: 100: void inverse(); -: 101: void swap(basic_chset_8bit& x); -: 102: -: 103: basic_chset_8bit &operator |=(basic_chset_8bit const &x); -: 104: basic_chset_8bit &operator &=(basic_chset_8bit const &x); -: 105: basic_chset_8bit &operator -=(basic_chset_8bit const &x); -: 106: basic_chset_8bit &operator ^=(basic_chset_8bit const &x); -: 107: -: 108: std::bitset<256> const &base() const; -: 109: -: 110:private: -: 111: std::bitset<256> bset_; // BUGBUG range-checking slows this down -: 112:}; -: 113: -: 114:///////////////////////////////// -: 115:template<> function _ZN5boost9xpressive6detail11basic_chsetIcEC2ERKS3_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail11basic_chsetIcEC2Ev called 0 returned 0% blocks executed 0% #####: 116:struct basic_chset call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 117: : basic_chset_8bit -: 118:{ -: 119:}; -: 120: -: 121:///////////////////////////////// -: 122:template<> -: 123:struct basic_chset -: 124: : basic_chset_8bit -: 125:{ -: 126:}; -: 127: -: 128:///////////////////////////////// -: 129:template<> -: 130:struct basic_chset -: 131: : basic_chset_8bit -: 132:{ -: 133:}; -: 134: -: 135:#endif -: 136: -: 137://///////////////////////////////////////////////////////////////////////////// -: 138:// is_narrow_char -: 139:template -: 140:struct is_narrow_char -: 141: : mpl::false_ -: 142:{}; -: 143: -: 144:template<> -: 145:struct is_narrow_char -: 146: : mpl::true_ -: 147:{}; -: 148: -: 149:template<> -: 150:struct is_narrow_char -: 151: : mpl::true_ -: 152:{}; -: 153: -: 154:template<> -: 155:struct is_narrow_char -: 156: : mpl::true_ -: 157:{}; -: 158: -: 159://///////////////////////////////////////////////////////////////////////////// -: 160:// helpers -: 161:template -: 162:void set_char(basic_chset &chset, Char ch, Traits const &tr, bool icase); -: 163: -: 164:template -: 165:void set_range(basic_chset &chset, Char from, Char to, Traits const &tr, bool icase); -: 166: -: 167:template -: 168:void set_class(basic_chset &chset, typename Traits::char_class_type char_class, bool no, Traits const &tr); -: 169: -: 170:}}} // namespace boost::xpressive::detail -: 171: -: 172:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/tictactoehelper.cpp.gcov -: 0:Source:tictactoehelper.cpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoehelper.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoehelper.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#include "tictactoehelper.h" -: 2: -: 3:#include -: 4:#include -: 5: function _ZNK4ribi9tictactoe6Helper14GetOtherPlayerENS0_6PlayerE called 8 returned 100% blocks executed 80% 8: 6:ribi::tictactoe::Player ribi::tictactoe::Helper::GetOtherPlayer( -: 7: const ribi::tictactoe::Player player -: 8:) const noexcept -: 9:{ 8: 10: switch (player) branch 0 taken 50% branch 1 taken 50% branch 2 taken 0% -: 11: { 4: 12: case Player::player1: return Player::player2; 4: 13: case Player::player2: return Player::player1; -: 14: } #####: 15: assert(!"Should not get here"); call 0 never executed -: 16: return Player::player2; -: 17:} -: 18: function _ZNK4ribi9tictactoe6Helper8IntPowerEii called 512191 returned 100% blocks executed 78% 512191: 19:int ribi::tictactoe::Helper::IntPower(const int base, const int exponent) const noexcept -: 20:{ 512191: 21: assert(exponent != 0 branch 0 taken 0% (fallthrough) branch 1 taken 100% call 2 never executed -: 22: && "When calculating IntPower(x,0) the result " -: 23: "might be zero or one, depending on the context"); 512191: 24: assert(exponent > 0); branch 0 taken 0% (fallthrough) branch 1 taken 100% call 2 never executed -: 25: 512191: 26: int result = base; 2482083: 27: for (int i=1; i!=exponent; ++i) branch 0 taken 79% (fallthrough) branch 1 taken 21% -: 28: { 1969892: 29: result*=base; -: 30: } 512191: 31: return result; -: 32:} -: 33: function _ZNK4ribi9tictactoe6Helper14PlayerToSquareENS0_6PlayerE called 331 returned 100% blocks executed 80% 331: 34:ribi::tictactoe::Square ribi::tictactoe::Helper::PlayerToSquare(const ribi::tictactoe::Player player) const noexcept -: 35:{ 331: 36: switch (player) branch 0 taken 53% branch 1 taken 47% branch 2 taken 0% -: 37: { 177: 38: case Player::player1: return Square::player1; 154: 39: case Player::player2: return Square::player2; -: 40: } #####: 41: assert(!"Should not get here"); call 0 never executed -: 42: return Square::player1; -: 43:} -: 44: function _ZNK4ribi9tictactoe6Helper14SquareToPlayerENS0_6SquareE called 0 returned 0% blocks executed 0% #####: 45:ribi::tictactoe::Player ribi::tictactoe::Helper::SquareToPlayer(const ribi::tictactoe::Square square) const -: 46:{ #####: 47: switch (square) branch 0 never executed branch 1 never executed branch 2 never executed branch 3 never executed -: 48: { #####: 49: case Square::empty : assert(!"Cannot convert empty square to player"); call 0 never executed #####: 50: case Square::player1: return Player::player1; #####: 51: case Square::player2: return Player::player2; -: 52: } #####: 53: assert(!"Should not get here"); call 0 never executed -: 54: throw std::logic_error("SquareToPlayer: unknown square"); -: 55:} -: 56: -: 57: function _ZNK4ribi9tictactoe6Helper14SquareToWinnerENS0_6SquareE called 4 returned 100% blocks executed 67% 4: 58:ribi::tictactoe::Winner ribi::tictactoe::Helper::SquareToWinner(const ribi::tictactoe::Square square) const -: 59:{ 4: 60: switch (square) branch 0 taken 0% branch 1 taken 50% branch 2 taken 50% branch 3 taken 0% -: 61: { #####: 62: case Square::empty : assert(!"Cannot convert empty square to winner"); call 0 never executed 2: 63: case Square::player1: return Winner::player1; 2: 64: case Square::player2: return Winner::player2; -: 65: } #####: 66: assert(!"Should not get here"); call 0 never executed -: 67: throw std::logic_error("SquareToWinner: unknown square"); function _GLOBAL__sub_I_tictactoehelper.cpp called 1 returned 100% blocks executed 100% function _Z41__static_initialization_and_destruction_0ii called 1 returned 100% blocks executed 100% 3: 68:} call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% branch 3 taken 100% (fallthrough) branch 4 taken 0% <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/debug#qrc_TicTacToe.cpp.gcov -: 0:Source:debug/qrc_TicTacToe.cpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/qrc_TicTacToe.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/qrc_TicTacToe.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:/**************************************************************************** -: 2:** Resource object code -: 3:** -: 4:** Created by: The Resource Compiler for Qt version 5.9.5 -: 5:** -: 6:** WARNING! All changes made in this file will be lost! -: 7:*****************************************************************************/ -: 8: -: 9:static const unsigned char qt_resource_data[] = { -: 10: // /home/travis/build/richelbilderbeek/TicTacToe/TicTacToeHuman.png -: 11: 0x0,0x0,0x2,0x0, -: 12: 0x89, -: 13: 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, -: 14: 0x0,0x0,0x32,0x0,0x0,0x0,0x32,0x8,0x6,0x0,0x0,0x0,0x1e,0x3f,0x88,0xb1, -: 15: 0x0,0x0,0x0,0x3,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0xdb,0xe1,0x4f,0xe0,0x0, -: 16: 0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,0x4, -: 17: 0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x9, -: 18: 0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b,0xe, -: 19: 0x1b,0x0,0x0,0x1,0x86,0x49,0x44,0x41,0x54,0x68,0x43,0xed,0x98,0x1,0x6e,0x83, -: 20: 0x30,0xc,0x45,0x61,0xf7,0xe2,0x6c,0x88,0xb3,0x71,0xb0,0x6d,0x7f,0xc3,0x52,0x66, -: 21: 0xa5,0x6e,0x7e,0x6c,0xd3,0xa8,0xcb,0x93,0x2a,0x5a,0x1a,0x9a,0xbc,0xd8,0x89,0xa1, -: 22: 0xeb,0xe7,0x37,0xcb,0x1b,0x90,0x2a,0xb2,0xae,0xeb,0xf5,0xee,0x2f,0x19,0x5d,0xa6, -: 23: 0x88,0x88,0xc0,0x79,0x9e,0x3f,0x47,0xcd,0xb6,0x6d,0xe1,0x32,0xa1,0x22,0xcf,0x4, -: 24: 0x4a,0x20,0x3,0xa2,0xba,0xf,0x13,0x81,0x44,0x8b,0x80,0x26,0x2a,0x3a,0x1f,0xd7, -: 25: 0xd1,0x45,0xaf,0x4,0xc0,0x75,0x8f,0xd6,0x12,0x83,0x5b,0xc4,0x23,0x21,0x44,0xc8, -: 26: 0x84,0x44,0x64,0x4,0x5c,0x22,0x11,0xd1,0x10,0xbc,0x51,0xe9,0x16,0x89,0x94,0x10, -: 27: 0x3c,0x32,0xff,0x3b,0xb5,0x32,0xa2,0x21,0xf4,0x46,0x65,0x2e,0xf6,0xd1,0xa0,0x45, -: 28: 0x32,0xd3,0x4a,0xe8,0x49,0xaf,0x99,0x5a,0xa3,0x31,0x45,0x46,0x83,0xba,0x8d,0xb7, -: 29: 0x16,0xba,0x3c,0x5f,0x8,0xcf,0x36,0x84,0x96,0xf6,0xcc,0x2d,0x7e,0x88,0x8,0x3a, -: 30: 0xdc,0xf7,0xfd,0xfa,0xf4,0xcb,0x71,0x1c,0xa6,0x74,0x4b,0x7b,0x46,0xc4,0x9d,0x5a, -: 31: 0xb5,0x41,0x1,0x9c,0xc3,0x77,0x1a,0xb6,0x7d,0x2b,0x6e,0x11,0xcc,0x22,0x66,0x53, -: 32: 0x53,0x3b,0x7,0xd8,0xf6,0xad,0xcc,0x35,0x72,0x7,0x8c,0xc8,0xac,0x23,0xa3,0x31, -: 33: 0x45,0x46,0x23,0x4c,0x4,0xb,0x53,0xef,0x44,0x77,0x42,0x89,0x60,0x7,0xb1,0x6, -: 34: 0x2b,0x45,0xad,0x7c,0xf5,0x82,0x6b,0x89,0xd,0x95,0xff,0xcb,0x94,0xb9,0x4d,0x1, -: 35: 0x65,0xa1,0x63,0xb6,0xee,0xe1,0x44,0x4a,0x74,0xf5,0xb6,0xc4,0x86,0x16,0xd1,0x88, -: 36: 0xd8,0xa3,0xdf,0x63,0x86,0xf6,0xd2,0x5d,0x8b,0x15,0xb7,0xa0,0x45,0x30,0x4b,0x98, -: 37: 0xad,0x4c,0xd8,0x68,0x80,0x59,0x47,0x46,0xa3,0x4b,0xa4,0x96,0x5e,0x58,0xb0,0xec, -: 38: 0x33,0x5,0xda,0xeb,0x85,0xde,0x93,0x56,0x60,0xa6,0x96,0x37,0x2a,0x91,0xd1,0x0, -: 39: 0x74,0x1d,0xd1,0xd4,0xea,0x8a,0x8,0x5a,0x95,0x3e,0x52,0x2,0xa4,0x88,0x8,0x3a, -: 40: 0x62,0xc0,0x6a,0xfb,0x52,0x11,0x60,0xc9,0xb4,0xe0,0x95,0x0,0x21,0x8b,0x1d,0x83, -: 41: 0xa8,0xcd,0x7e,0xb,0x11,0x12,0x20,0x24,0x22,0x2,0x22,0x3,0x5a,0xa2,0x23,0xe2, -: 42: 0x51,0xdd,0x87,0x8a,0x8,0x96,0x50,0xb4,0x80,0x90,0x22,0x22,0x88,0x50,0x49,0x56, -: 43: 0x77,0xa9,0x22,0x77,0xf2,0x26,0x95,0x7d,0x59,0xbe,0x0,0xb,0x8c,0x49,0x8f,0x10, -: 44: 0x39,0xa7,0xeb,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, -: 45: // /home/travis/build/richelbilderbeek/TicTacToe/TicTacToeComputer.png -: 46: 0x0,0x0,0x1,0x88, -: 47: 0x89, -: 48: 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, -: 49: 0x0,0x0,0x32,0x0,0x0,0x0,0x32,0x8,0x6,0x0,0x0,0x0,0x1e,0x3f,0x88,0xb1, -: 50: 0x0,0x0,0x0,0x3,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0xdb,0xe1,0x4f,0xe0,0x0, -: 51: 0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,0x4, -: 52: 0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x9, -: 53: 0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b,0xe, -: 54: 0x1b,0x0,0x0,0x1,0xe,0x49,0x44,0x41,0x54,0x68,0x43,0xed,0x99,0xe1,0xe,0x83, -: 55: 0x20,0xc,0x84,0x65,0x2f,0x4e,0x78,0x72,0xb6,0x26,0x76,0x51,0xd7,0xd6,0x2e,0xb8, -: 56: 0x71,0x60,0xbf,0xe4,0x32,0x7f,0xb1,0x5e,0xaf,0x68,0xc4,0x94,0x73,0xae,0xcb,0x4, -: 57: 0x3c,0xd6,0xdf,0xe1,0x51,0x13,0x29,0xa5,0xac,0x57,0x58,0xbc,0xea,0x5d,0xaf,0xf6, -: 58: 0x98,0x89,0xd4,0x5a,0xa1,0x64,0x71,0x3a,0x5a,0x29,0x25,0x8,0x9d,0x61,0x8e,0x16, -: 59: 0x75,0x81,0x16,0xd1,0xe2,0xfc,0x17,0x9e,0x5a,0xa6,0xd9,0xec,0x61,0x4,0x8d,0x30, -: 60: 0x82,0x46,0x18,0x41,0x23,0x8c,0xa0,0x11,0x46,0xd0,0x8,0x23,0x68,0x84,0x11,0x34, -: 61: 0xc2,0x8,0x1a,0xd3,0x18,0x71,0xbd,0xea,0x22,0xd0,0xfc,0xaa,0x4b,0xb,0x20,0xe8, -: 62: 0xc,0xf8,0xd1,0xf2,0x4e,0x4,0xbc,0x11,0x4f,0x1a,0x84,0x69,0x84,0xba,0x81,0x24, -: 63: 0x8b,0xcb,0xf,0xb1,0xf9,0x26,0xa1,0x41,0x5,0xfd,0xe2,0x9c,0x2c,0xce,0x7e,0x7b, -: 64: 0xc8,0x2,0x7e,0xb3,0x7b,0x71,0x19,0xf1,0x6c,0xb6,0x16,0x78,0x7d,0x4d,0x1e,0xee, -: 65: 0x95,0x88,0x67,0x46,0x5b,0xd8,0xee,0x3,0x49,0x1e,0xee,0x91,0x88,0x34,0xaf,0x3d, -: 66: 0x65,0xe1,0x7a,0x20,0xf6,0xf8,0xe8,0xf3,0xed,0x7f,0xce,0xfd,0x40,0xe4,0x6e,0x20, -: 67: 0x4a,0x6b,0xf0,0x34,0x7b,0xe4,0xc3,0x8,0xa7,0x41,0x1c,0xbb,0xd1,0x5b,0x5c,0x93, -: 68: 0x94,0x8a,0x9a,0x88,0xd4,0x11,0x4,0x69,0xec,0x8c,0x20,0xa7,0xc1,0xe2,0xda,0x8e, -: 69: 0xa9,0x88,0x89,0x48,0x9d,0x40,0x92,0xc4,0xdb,0xc8,0x8,0x69,0xb0,0xb8,0xc6,0x6d, -: 70: 0x2a,0xbb,0x44,0x24,0xf7,0xc8,0xda,0x72,0xf9,0xab,0x6e,0x2f,0xd4,0xbb,0xd6,0x58, -: 71: 0x2c,0xcb,0x13,0x23,0x2a,0x8b,0xfd,0xdc,0xff,0x9b,0xa8,0x0,0x0,0x0,0x0,0x49, -: 72: 0x45,0x4e,0x44,0xae,0x42,0x60,0x82, -: 73: // /home/travis/build/richelbilderbeek/TicTacToe/R.png -: 74: 0x0,0x0,0x0,0xb2, -: 75: 0x89, -: 76: 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, -: 77: 0x0,0x0,0x20,0x0,0x0,0x0,0x20,0x8,0x2,0x0,0x0,0x0,0xfc,0x18,0xed,0xa3, -: 78: 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4, -: 79: 0x1,0x95,0x2b,0xe,0x1b,0x0,0x0,0x0,0x64,0x49,0x44,0x41,0x54,0x48,0x89,0xed, -: 80: 0x96,0xc1,0xa,0x0,0x20,0x8,0x43,0x5b,0xf4,0xff,0xbf,0x6c,0x37,0xf1,0x20,0x18, -: 81: 0x86,0x94,0xe2,0x6e,0x41,0x38,0x7a,0x4e,0x9,0x44,0x34,0x22,0x35,0x43,0xab,0x97, -: 82: 0x30,0x58,0xf2,0x0,0xe0,0xa6,0x96,0xda,0xce,0x62,0x88,0x58,0xf2,0xb1,0xcc,0xcd, -: 83: 0xc,0xb4,0x7a,0x33,0x3f,0xa2,0x36,0x78,0x6f,0x0,0x35,0x91,0x3e,0x15,0x9d,0xe4, -: 84: 0x5f,0x57,0xc5,0xf9,0xfe,0xa8,0x8a,0xc8,0x14,0x93,0x91,0xc9,0xee,0x98,0xfa,0xe4, -: 85: 0xec,0x1,0xcb,0xcc,0x6e,0x7e,0x44,0xe8,0xbf,0xe9,0x73,0x83,0xd,0x6a,0x9b,0x2d, -: 86: 0x33,0xf3,0xe9,0xa7,0x5,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, -: 87: 0x82, -: 88: // /home/travis/build/richelbilderbeek/TicTacToe/TicTacToeModern.png -: 89: 0x0,0x0,0x12,0xce, -: 90: 0x89, -: 91: 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, -: 92: 0x0,0x0,0x66,0x0,0x0,0x0,0x66,0x8,0x6,0x0,0x0,0x0,0x39,0xdf,0xe4,0x62, -: 93: 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, -: 94: 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4, -: 95: 0x1,0x95,0x2b,0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66, -: 96: 0x74,0x77,0x61,0x72,0x65,0x0,0x67,0x6e,0x6f,0x6d,0x65,0x2d,0x73,0x63,0x72,0x65, -: 97: 0x65,0x6e,0x73,0x68,0x6f,0x74,0xef,0x3,0xbf,0x3e,0x0,0x0,0x12,0x4b,0x49,0x44, -: 98: 0x41,0x54,0x78,0x9c,0xed,0x9d,0x79,0x50,0x53,0xd7,0xdb,0xc7,0xbf,0x81,0x48,0x20, -: 99: 0x11,0xa,0x42,0x59,0xa4,0xb8,0xa1,0x22,0x52,0x5a,0x2b,0x30,0x32,0x2a,0x45,0xc0, -: 100: 0x5a,0x51,0x5b,0x54,0xca,0x52,0x70,0xa1,0xd6,0x25,0x16,0x64,0xec,0xd4,0x1d,0xc5, -: 101: 0xf2,0xc3,0x2a,0xce,0x58,0x5,0x1,0x47,0x8a,0x58,0x15,0x5c,0x51,0x51,0x2c,0x6a, -: 102: 0x2b,0x14,0x6b,0x15,0x51,0x6c,0x15,0xab,0x34,0x5a,0xa8,0xe0,0xc,0x2a,0x88,0xa2, -: 103: 0xc8,0xe,0xc9,0x79,0xff,0xf0,0x95,0x31,0xdc,0x25,0x37,0x21,0x9,0xb1,0xf0,0x99, -: 104: 0xb9,0x7f,0xe4,0x9c,0xe7,0x9c,0xe7,0xc9,0x7d,0xee,0xb9,0x67,0x3f,0x17,0x44,0x7, -: 105: 0x28,0x2f,0x2f,0x27,0xd1,0xd1,0xd1,0x4,0x0,0x11,0xa,0x85,0x24,0x33,0x33,0x93, -: 106: 0xb4,0xb5,0xb5,0x69,0x5c,0x6f,0x5b,0x5b,0x1b,0x9,0xc,0xc,0x24,0x0,0xc8,0xa8, -: 107: 0x51,0xa3,0xc8,0xa3,0x47,0x8f,0x34,0xae,0x93,0x2b,0xe8,0x6e,0x3,0x8,0x21,0x64, -: 108: 0xef,0xde,0xbd,0x4,0x80,0xdc,0xf5,0xe2,0xc5,0xb,0x8d,0xeb,0xdd,0xb9,0x73,0xa7, -: 109: 0x9c,0xce,0x39,0x73,0xe6,0x68,0x5c,0x27,0x57,0x74,0xc2,0x31,0x56,0x56,0x56,0x14, -: 110: 0xc7,0x2c,0x5e,0xbc,0x58,0xa3,0x3a,0xef,0xde,0xbd,0x4b,0x78,0x3c,0x1e,0x45,0xef, -: 111: 0xbe,0x7d,0xfb,0x34,0xaa,0x97,0x2b,0x7a,0xd0,0x1,0xa4,0x52,0x29,0xa7,0x30,0x75, -: 112: 0x43,0x8,0xe1,0x14,0xd6,0x1d,0xe8,0x84,0x63,0x7a,0xa1,0xd2,0xeb,0x18,0x1d,0x85, -: 113: 0xd1,0x31,0x6b,0xd6,0xac,0x81,0x48,0x24,0xc2,0xc8,0x91,0x23,0x91,0x9b,0x9b,0xab, -: 114: 0x52,0xe6,0xd5,0xd5,0xd5,0xd8,0xb1,0x63,0x7,0x44,0x22,0x11,0x44,0x22,0x11,0xfe, -: 115: 0xfa,0xeb,0x2f,0x95,0xd,0xed,0x71,0xd0,0x55,0x3c,0xd9,0xd9,0xd9,0xc4,0xc0,0xc0, -: 116: 0xa0,0xa3,0x42,0x14,0x8,0x4,0xe4,0xa7,0x9f,0x7e,0x52,0xba,0x2,0x9b,0x3d,0x7b, -: 117: 0xb6,0x5c,0xc5,0x3a,0x72,0xe4,0x48,0x52,0x53,0x53,0x43,0x91,0xb3,0xb0,0xb0,0xa0, -: 118: 0x54,0xc2,0xb,0x17,0x2e,0x54,0x5a,0x9f,0x32,0x3c,0x7b,0xf6,0x8c,0x4c,0x98,0x30, -: 119: 0x81,0xa2,0x77,0xca,0x94,0x29,0x1a,0xd5,0xcb,0x15,0x8a,0x63,0x1a,0x1b,0x1b,0x89, -: 120: 0x40,0x20,0xa0,0x18,0x2c,0x10,0x8,0x48,0x60,0x60,0x20,0x69,0x68,0x68,0x50,0x98, -: 121: 0x69,0x69,0x69,0x29,0xb1,0xb2,0xb2,0x22,0x7a,0x7a,0x7a,0x94,0x7c,0x42,0x43,0x43, -: 122: 0x29,0xf2,0xdd,0xe1,0x18,0x42,0x8,0x59,0xb4,0x68,0x11,0x45,0xaf,0x85,0x85,0x85, -: 123: 0xc6,0xf5,0x72,0x81,0xf2,0x2a,0x23,0x84,0xa0,0xa5,0xa5,0x85,0x52,0xb2,0x5a,0x5a, -: 124: 0x5a,0x70,0xe4,0xc8,0x11,0xcc,0x9b,0x37,0xf,0xa5,0xa5,0xa5,0x8c,0x25,0x30,0x3d, -: 125: 0x3d,0x1d,0x81,0x81,0x81,0xa8,0xaa,0xaa,0x82,0x4c,0x26,0xa3,0xc4,0x37,0x37,0x37, -: 126: 0xcb,0xfd,0x3e,0x73,0xe6,0xc,0xea,0xeb,0xeb,0x29,0x72,0x1,0x1,0x1,0x8c,0x3a, -: 127: 0x7a,0x2,0x14,0xc7,0xe8,0xe9,0xe9,0x61,0xc8,0x90,0x21,0x8c,0x9,0xe,0x1f,0x3e, -: 128: 0x8c,0xa0,0xa0,0x20,0x5c,0xbc,0x78,0x51,0x2e,0xbc,0xb6,0xb6,0x16,0xe9,0xe9,0xe9, -: 129: 0x98,0x3f,0x7f,0x3e,0xfe,0xfc,0xf3,0x4f,0xc6,0xf4,0xc3,0x86,0xd,0x93,0xfb,0x5d, -: 130: 0x5c,0x5c,0x4c,0x71,0x16,0x0,0xb8,0xbb,0xbb,0x2b,0x34,0xfe,0x3f,0xd,0x5d,0x31, -: 131: 0xba,0x76,0xed,0x1a,0x11,0xa,0x85,0x94,0x62,0xfe,0xfa,0x25,0x12,0x89,0x48,0x6e, -: 132: 0x6e,0x6e,0x47,0x9a,0xf0,0xf0,0x70,0x56,0x79,0x0,0xc4,0xcb,0xcb,0x8b,0xd4,0xd5, -: 133: 0xd5,0xc9,0xe9,0xda,0xb4,0x69,0x13,0xad,0xac,0x36,0x7a,0xfe,0x6f,0xd4,0xab,0xc, -: 134: 0x0,0x5c,0x5c,0x5c,0xb0,0x67,0xcf,0x1e,0x8,0x85,0x42,0x46,0x87,0x36,0x34,0x34, -: 135: 0xc0,0xcf,0xcf,0xf,0xf3,0xe7,0xcf,0xc7,0xb0,0x61,0xc3,0x90,0x92,0x92,0xc2,0xfa, -: 136: 0x0,0xc,0x1e,0x3c,0x18,0x59,0x59,0x59,0x30,0x36,0x36,0xe6,0xf6,0xc4,0xf4,0x70, -: 137: 0x18,0x9b,0xcb,0x1,0x1,0x1,0x48,0x4d,0x4d,0x85,0x83,0x83,0x3,0x63,0xe2,0x86, -: 138: 0x86,0x6,0xa4,0xa5,0xa5,0xa1,0xb4,0xb4,0x14,0xed,0xed,0xed,0x8c,0x72,0xb3,0x67, -: 139: 0xcf,0x46,0x66,0x66,0x26,0xde,0x7a,0xeb,0xad,0xae,0x59,0xdb,0x83,0xe0,0xb3,0x45, -: 140: 0x86,0x84,0x84,0x60,0xe4,0xc8,0x91,0x10,0x8b,0xc5,0xb8,0x72,0xe5,0x8a,0xd2,0x99, -: 141: 0x9b,0x99,0x99,0x61,0xca,0x94,0x29,0x48,0x49,0x49,0x81,0x91,0x91,0x91,0xca,0x46, -: 142: 0xf6,0x44,0x14,0xf6,0xfc,0x47,0x8d,0x1a,0x85,0xfc,0xfc,0x7c,0x4c,0x9c,0x38,0x51, -: 143: 0xe9,0xcc,0xe3,0xe2,0xe2,0x90,0x91,0x91,0xa1,0xb3,0x4e,0x99,0x3e,0x7d,0x3a,0x25, -: 144: 0xac,0xbe,0xbe,0x5e,0xe5,0xe,0xb5,0x3a,0xe1,0x34,0x24,0x63,0x64,0x64,0x84,0xa3, -: 145: 0x47,0x8f,0x22,0x36,0x36,0x96,0x73,0xc6,0x25,0x25,0x25,0xf8,0xe2,0x8b,0x2f,0x54, -: 146: 0x36,0x4c,0x1b,0x78,0x78,0x78,0x50,0xc2,0x9a,0x9b,0x9b,0x51,0x54,0x54,0xd4,0xd, -: 147: 0xd6,0xc8,0xc3,0x79,0xac,0xec,0xd2,0xa5,0x4b,0xc8,0xcf,0xcf,0xe7,0x9c,0x71,0x72, -: 148: 0x72,0x32,0x9e,0x3e,0x7d,0xaa,0x92,0x51,0xbd,0x28,0xa8,0x63,0x0,0xa0,0xb1,0xb1, -: 149: 0x11,0x85,0x85,0x85,0xf8,0xfc,0xf3,0xcf,0x51,0x57,0x57,0xc7,0x39,0xe3,0xe4,0xe4, -: 150: 0x64,0x94,0x97,0x97,0x23,0x2e,0x2e,0xe,0xef,0xbe,0xfb,0x6e,0x97,0x8c,0xec,0x89, -: 151: 0x28,0x2c,0x31,0x9,0x9,0x9,0xf0,0xf1,0xf1,0x51,0xca,0x29,0xaf,0xc8,0xc9,0xc9, -: 152: 0x81,0x8f,0x8f,0xf,0x6b,0x87,0xb3,0x17,0x7a,0x18,0x1d,0x53,0x53,0x53,0x3,0x4f, -: 153: 0x4f,0x4f,0x85,0xf5,0x8a,0xa5,0xa5,0x25,0xf8,0x7c,0xe6,0x82,0x57,0x5d,0x5d,0x8d, -: 154: 0xc9,0x93,0x27,0x23,0x3a,0x3a,0x9a,0x32,0x9,0x45,0x8,0x41,0x65,0x65,0xa5,0x92, -: 155: 0x26,0xf7,0x10,0x98,0x7a,0x9e,0xfe,0xfe,0xfe,0xa,0x7b,0xf2,0x53,0xa7,0x4e,0x25, -: 156: 0x79,0x79,0x79,0x24,0x21,0x21,0x81,0xf4,0xef,0xdf,0x5f,0xa1,0xfc,0x89,0x13,0x27, -: 157: 0xe4,0x74,0xb4,0xb4,0xb4,0xd0,0xca,0xf9,0xf8,0xf8,0x90,0x96,0x96,0x16,0xd,0xf7, -: 158: 0xad,0x9,0xa9,0xaf,0xaf,0xa7,0xd5,0xbf,0x71,0xe3,0x46,0x8d,0xeb,0x56,0x4,0xc5, -: 159: 0x31,0x52,0xa9,0x94,0xac,0x5b,0xb7,0x8e,0x76,0x64,0xf8,0xd5,0x25,0x14,0xa,0x89, -: 160: 0x97,0x97,0x17,0x79,0xfa,0xf4,0x69,0x47,0xba,0x9c,0x9c,0x1c,0xe2,0xe0,0xe0,0xc0, -: 161: 0xea,0x18,0x53,0x53,0x53,0x52,0x54,0x54,0xd4,0x91,0x86,0xc9,0x31,0x31,0x31,0x31, -: 162: 0x5a,0xf9,0xf3,0x6f,0x94,0x63,0x1a,0x1a,0x1a,0x14,0x3e,0xf9,0xeb,0xd7,0xaf,0xa7, -: 163: 0xcd,0xac,0xa6,0xa6,0x86,0xb8,0xba,0xba,0xb2,0xa6,0xf5,0xf7,0xf7,0xef,0x90,0xef, -: 164: 0x6e,0xc7,0xb4,0xb4,0xb4,0x10,0x6f,0x6f,0x6f,0xda,0x31,0x3d,0x6d,0x2c,0x9f,0x62, -: 165: 0x43,0xa9,0xa9,0xe5,0x7e,0xfd,0xfa,0x21,0x3f,0x3f,0x1f,0x2b,0x56,0xac,0xa0,0x8d, -: 166: 0x37,0x37,0x37,0x47,0x76,0x76,0x36,0x62,0x62,0x62,0xa0,0xa7,0xa7,0xfb,0xb3,0xd6, -: 167: 0x6,0x6,0x6,0xf0,0xf4,0xf4,0xa4,0x84,0xe7,0xe7,0xe7,0x6b,0x65,0x31,0x8,0x1b, -: 168: 0x94,0xbb,0xd7,0xa7,0x4f,0x1f,0x78,0x79,0x79,0x51,0x4,0xbd,0xbd,0xbd,0x91,0x9e, -: 169: 0x9e,0x8e,0x9,0x13,0x26,0xb0,0xe,0x6e,0xda,0xd8,0xd8,0x20,0x3a,0x3a,0x1a,0x1b, -: 170: 0x36,0x6c,0x80,0x85,0x85,0x5,0x25,0x7e,0xd2,0xa4,0x49,0x5d,0x34,0xb9,0x87,0x40, -: 171: 0x57,0x8c,0xaa,0xaa,0xaa,0x88,0xbd,0xbd,0x7d,0xc7,0xcc,0xa5,0xab,0xab,0x2b,0xa9, -: 172: 0xae,0xae,0x56,0xba,0x38,0x1e,0x3c,0x78,0x90,0xc,0x1a,0x34,0xa8,0xe3,0x15,0xb1, -: 173: 0x74,0xe9,0x52,0xb9,0x4a,0xbd,0xbb,0x5f,0x65,0x84,0x10,0x12,0x13,0x13,0x43,0x6b, -: 174: 0x43,0x73,0x73,0xb3,0xd6,0x6c,0xa0,0x83,0xb6,0x9d,0x6b,0x69,0x69,0x89,0xc3,0x87, -: 175: 0xf,0x23,0x2b,0x2b,0xb,0xd6,0xd6,0xd6,0x88,0x88,0x88,0x50,0xc9,0xe9,0xc1,0xc1, -: 176: 0xc1,0xf0,0xf4,0xf4,0x44,0x72,0x72,0x32,0x0,0x20,0x26,0x26,0x6,0xfa,0xfa,0xfa, -: 177: 0x2a,0xe5,0xf5,0x5f,0xe2,0x87,0x1f,0x7e,0x40,0x75,0x75,0x35,0x6d,0xdc,0x8c,0x19, -: 178: 0x33,0xe0,0xe4,0xe4,0xc4,0xdc,0xf3,0x77,0x71,0x71,0x81,0x8b,0x8b,0x4b,0x97,0x8d, -: 179: 0xb0,0xb1,0xb1,0xc1,0x86,0xd,0x1b,0xba,0x9c,0x8f,0xb6,0x29,0x2b,0x2b,0x43,0x9f, -: 180: 0x3e,0x7d,0x38,0xc9,0xce,0x9e,0x3d,0x9b,0x76,0x16,0x96,0x89,0x3b,0x77,0xee,0x30, -: 181: 0xca,0xa7,0xa6,0xa6,0x22,0x36,0x36,0x56,0xf1,0x90,0xcc,0x9b,0xce,0x83,0x7,0xf, -: 182: 0xb0,0x77,0xef,0x5e,0xc6,0xf8,0xdf,0x7f,0xff,0x9d,0x36,0xdc,0xc9,0xc9,0x49,0x53, -: 183: 0x26,0xb1,0x72,0xff,0xfe,0x7d,0x1c,0x3a,0x74,0x48,0x37,0x1d,0x53,0x5b,0x5b,0x8b, -: 184: 0x7f,0xff,0xfd,0x97,0x36,0xae,0xa0,0xa0,0x0,0xdb,0xb6,0x6d,0xe3,0x9c,0x57,0x63, -: 185: 0x63,0x23,0x24,0x12,0x89,0xba,0x4c,0xd3,0xa,0x67,0xce,0x9c,0x1,0x8f,0x10,0xf5, -: 186: 0x2e,0xd6,0x6d,0x6d,0x6d,0x45,0x7c,0x7c,0x3c,0x27,0x59,0xa9,0x54,0x8a,0x35,0x6b, -: 187: 0xd6,0xa8,0x53,0xfd,0x7f,0x6,0x3e,0xf0,0x72,0x8a,0xf8,0xc9,0x93,0x27,0xb4,0x2, -: 188: 0x15,0x15,0x15,0x58,0xb6,0x6c,0x19,0xe7,0xc,0xa5,0x52,0x29,0xfe,0xf8,0xe3,0xf, -: 189: 0xf5,0x58,0xd7,0x3,0xd1,0xd7,0xd7,0xc7,0xaa,0x55,0xab,0x80,0xa2,0xa2,0x22,0x32, -: 190: 0x6b,0xd6,0x2c,0x85,0xbd,0xfd,0xde,0x4b,0x3b,0x57,0x70,0x70,0xf0,0xcb,0xe6,0xf2, -: 191: 0xa9,0x53,0xa7,0x90,0x91,0x91,0xa1,0xc8,0x91,0xbd,0xb0,0x60,0x63,0x63,0x3,0x1e, -: 192: 0x8f,0xc7,0x59,0x7e,0xcb,0x96,0x2d,0x18,0x38,0x70,0x20,0x6d,0xdc,0xf0,0xe1,0xc3, -: 193: 0x1,0x0,0x3c,0xbc,0xf4,0x54,0x2f,0x9d,0x78,0xff,0xfd,0xf7,0x69,0x87,0x6b,0xe8, -: 194: 0xd8,0xbc,0x79,0x33,0xc,0xd,0xd,0xd5,0xaa,0x5f,0x27,0x5b,0x65,0x6c,0x8,0x4, -: 195: 0x2,0x98,0x9a,0x9a,0x72,0x96,0xb7,0xb7,0xb7,0x47,0x5c,0x5c,0x1c,0xab,0x8c,0xaf, -: 196: 0xaf,0x2f,0x1a,0x1a,0x1a,0xe4,0xc2,0x3c,0x3c,0x3c,0x90,0x90,0x90,0xa0,0x92,0x8d, -: 197: 0xea,0x80,0x3f,0x6e,0xdc,0x38,0x5c,0xba,0x74,0xa9,0xdb,0xc,0xe8,0x8c,0x81,0x81, -: 198: 0x1,0x16,0x2c,0x58,0xc0,0x18,0x3f,0x7a,0xf4,0x68,0xcc,0x9b,0x37,0x4f,0xad,0x3a, -: 199: 0xd9,0x26,0xfa,0xba,0xb,0x7e,0x48,0x48,0x8,0x8a,0x8b,0x8b,0x69,0x17,0x76,0x3, -: 200: 0x2f,0x5b,0x9,0xca,0x3c,0xa1,0x86,0x86,0x86,0x48,0x4f,0x4f,0xe7,0x24,0x9b,0x98, -: 201: 0x98,0x88,0xac,0xac,0x2c,0x4a,0xfa,0xa4,0xa4,0x24,0xce,0xfa,0xd4,0x81,0x48,0x24, -: 202: 0xc2,0xf3,0xe7,0xcf,0xe5,0xc2,0x9a,0x9a,0x9a,0x20,0x95,0x4a,0xbb,0x6d,0x8,0x89, -: 203: 0x47,0x8,0x21,0x45,0x45,0x45,0x48,0x4b,0x4b,0xa3,0x15,0xb0,0xb5,0xb5,0xc5,0xba, -: 204: 0x75,0xeb,0x34,0xa2,0x3c,0x32,0x32,0x12,0x89,0x89,0x89,0x72,0x61,0x26,0x26,0x26, -: 205: 0x94,0x9b,0xc4,0x44,0x7b,0x7b,0x3b,0x76,0xed,0xda,0x25,0x17,0x26,0x10,0x8,0x94, -: 206: 0x5e,0x36,0xb5,0x6b,0xd7,0x2e,0xda,0x52,0x7a,0xef,0xde,0x3d,0xc,0x1a,0x34,0x48, -: 207: 0x61,0xfa,0x92,0x92,0x12,0x5c,0xb8,0x70,0x41,0x2e,0xcc,0xd9,0xd9,0x19,0xe3,0xc6, -: 208: 0x8d,0x53,0xca,0x8e,0xd7,0xe1,0x3,0x80,0x9b,0x9b,0x1b,0xdc,0xdc,0xdc,0x54,0xce, -: 209: 0x44,0x9b,0xb4,0xb6,0xb6,0xe2,0xda,0xb5,0x6b,0x88,0x8e,0x8e,0x86,0x4c,0x26,0xa3, -: 210: 0x2c,0xa9,0xe2,0xf3,0xf9,0xd8,0xbf,0x7f,0x3f,0x0,0x20,0x29,0x29,0x9,0x43,0x87, -: 211: 0xe,0xd5,0xc8,0xab,0xaa,0xbe,0xbe,0x1e,0x49,0x49,0x49,0xc8,0xcd,0xcd,0x45,0x65, -: 212: 0x65,0x25,0x65,0x74,0xc1,0xce,0xce,0xe,0xc3,0x87,0xf,0xc7,0x88,0x11,0x23,0xf0, -: 213: 0xdd,0x77,0xdf,0x29,0xbf,0x3c,0xb8,0x1b,0x47,0xb6,0xc9,0x92,0x25,0x4b,0x28,0xed, -: 214: 0x78,0x13,0x13,0x13,0x46,0xf9,0x9b,0x37,0x6f,0x92,0x85,0xb,0x17,0x2a,0xd5,0x2f, -: 215: 0x58,0xbe,0x7c,0x39,0x29,0x2d,0x2d,0x65,0xb5,0x23,0x35,0x35,0x95,0x36,0xed,0xbd, -: 216: 0x7b,0xf7,0x68,0xe5,0x8f,0x1d,0x3b,0x46,0x9c,0x9d,0x9d,0x39,0xdb,0x60,0x6e,0x6e, -: 217: 0x4e,0xd2,0xd2,0xd2,0x94,0xba,0x37,0x6f,0x84,0x63,0xa4,0x52,0x29,0x49,0x4a,0x4a, -: 218: 0x52,0xb8,0xa6,0x80,0xe9,0x7a,0xef,0xbd,0xf7,0xc8,0x81,0x3,0x7,0x18,0xed,0xe0, -: 219: 0xea,0x98,0xe6,0xe6,0x66,0x12,0x10,0x10,0x40,0x8c,0x8d,0x8d,0x95,0xb6,0x81,0xc7, -: 220: 0xe3,0x91,0x49,0x93,0x26,0x91,0xaa,0xaa,0x2a,0x4e,0xf7,0xe6,0x8d,0x70,0xcc,0xc9, -: 221: 0x93,0x27,0xd5,0xd2,0xab,0xbe,0x7a,0xf5,0x2a,0xad,0x1d,0x5c,0x1c,0x23,0x95,0x4a, -: 222: 0xc9,0x67,0x9f,0x7d,0xd6,0x65,0x1b,0xc6,0x8e,0x1d,0x4b,0x9e,0x3c,0x79,0xa2,0xf0, -: 223: 0xde,0x74,0xdb,0xc4,0xbc,0x4c,0x26,0xa3,0xdd,0xba,0x61,0x60,0x60,0x20,0xf7,0xbb, -: 224: 0xa4,0xa4,0x4,0x8b,0x17,0x2f,0x56,0x8b,0xce,0xa0,0xa0,0x20,0x3c,0x7a,0xf4,0x48, -: 225: 0xe9,0x74,0x32,0x99,0xc,0x3b,0x76,0xec,0xc0,0xd1,0xa3,0x47,0xbb,0x6c,0x43,0x41, -: 226: 0x41,0x1,0xa2,0xa3,0xa3,0x15,0xaf,0x29,0x50,0xf9,0x71,0xef,0x22,0xf7,0xee,0xdd, -: 227: 0xa3,0x7d,0xa2,0x52,0x53,0x53,0x3b,0x64,0xee,0xdf,0xbf,0x4f,0x46,0x8c,0x18,0xa1, -: 228: 0x96,0xd2,0xf2,0xea,0x72,0x77,0x77,0xa7,0xec,0x9c,0x56,0x54,0x62,0x8e,0x1d,0x3b, -: 229: 0xa6,0x56,0x1b,0x0,0x90,0xd8,0xd8,0x58,0xd6,0xfb,0xa3,0x7b,0x3d,0xab,0xd7,0xb8, -: 230: 0x76,0xed,0x1a,0xed,0x5c,0xa,0x8f,0xc7,0x43,0x9f,0x3e,0x7d,0xf0,0xe5,0x97,0x5f, -: 231: 0x62,0xf2,0xe4,0xc9,0x94,0xf8,0x83,0x7,0xf,0xe2,0xf8,0xf1,0xe3,0x68,0x6d,0x6d, -: 232: 0xa5,0xc4,0x15,0x16,0x16,0xa2,0xb4,0xb4,0x14,0xe6,0xe6,0xe6,0x1d,0x61,0xfa,0xfa, -: 233: 0xfa,0xe0,0xf1,0x78,0x94,0x95,0xa2,0xed,0xed,0xed,0x90,0xc9,0x64,0x1d,0xad,0xbc, -: 234: 0xce,0xe8,0xeb,0xeb,0x43,0x5f,0x5f,0x1f,0xfb,0xf6,0xed,0xa3,0xdd,0x6a,0x22,0x16, -: 235: 0x8b,0xf1,0xf8,0xf1,0x63,0xda,0x37,0xc3,0x81,0x3,0x7,0xb0,0x7a,0xf5,0x6a,0xe6, -: 236: 0x7e,0x92,0xba,0x4b,0x2,0x57,0xb8,0x94,0x98,0x61,0xc3,0x86,0xd1,0xca,0x44,0x46, -: 237: 0x46,0x72,0xd2,0xc1,0x54,0x27,0x78,0x7a,0x7a,0x52,0x64,0x1d,0x1d,0x1d,0x29,0x72, -: 238: 0x33,0x67,0xce,0x24,0x5,0x5,0x5,0xb4,0x79,0x18,0x1b,0x1b,0x93,0xbc,0xbc,0x3c, -: 239: 0x85,0x36,0x48,0x24,0x12,0xf2,0xce,0x3b,0xef,0xd0,0xe6,0xb1,0x6b,0xd7,0x2e,0xc6, -: 240: 0x74,0x3a,0xeb,0x98,0xb3,0x67,0xcf,0x12,0x91,0x48,0x44,0x89,0x1f,0x3f,0x7e,0x3c, -: 241: 0xa7,0xca,0x93,0x10,0x42,0x2a,0x2b,0x2b,0x89,0x93,0x93,0x13,0x25,0xf,0xb,0xb, -: 242: 0xb,0x4a,0x43,0x80,0xc9,0x31,0x4c,0xcd,0xf3,0xb8,0xb8,0x38,0xce,0xff,0x35,0x3b, -: 243: 0x3b,0x9b,0xf6,0xa4,0xa7,0xf1,0xe3,0xc7,0x33,0xa6,0xd1,0xd9,0x55,0x79,0xe5,0xe5, -: 244: 0xe5,0x94,0x81,0x45,0xe0,0xe5,0x6b,0xaa,0x5f,0xbf,0x7e,0x9c,0xf2,0xe8,0xdf,0xbf, -: 245: 0x3f,0x76,0xef,0xde,0x4d,0x9,0xaf,0xa9,0xa9,0xc1,0xc3,0x87,0xf,0x39,0xe5,0x71, -: 246: 0xeb,0xd6,0x2d,0x4a,0x98,0xb7,0xb7,0x37,0x56,0xae,0x5c,0xc9,0x29,0x3d,0x0,0x7c, -: 247: 0xf2,0xc9,0x27,0xf8,0xea,0xab,0xaf,0x38,0xe5,0xfd,0xa,0x9d,0x75,0x4c,0x4f,0xe7, -: 248: 0x8d,0x73,0xcc,0xcd,0x9b,0x37,0x35,0x2a,0xcf,0x85,0xea,0xea,0x6a,0xce,0x25,0xe, -: 249: 0x78,0x39,0x75,0x5f,0x56,0x56,0xa6,0x94,0xe,0x9d,0x75,0x8c,0x8f,0x8f,0xf,0xac, -: 250: 0xad,0xad,0x29,0xe1,0x62,0xb1,0x98,0xf5,0xc8,0x94,0xd7,0x29,0x2a,0x2a,0xc2,0xea, -: 251: 0xd5,0xab,0x29,0xe1,0x8e,0x8e,0x8e,0x9c,0xd7,0xcc,0xcd,0x9a,0x35,0x8b,0x12,0x76, -: 252: 0xeb,0xd6,0x2d,0x7c,0xfd,0xf5,0xd7,0x9c,0xd2,0x3,0xc0,0xd6,0xad,0x5b,0x71,0xf6, -: 253: 0xec,0x59,0x4e,0x79,0x77,0xc0,0xb9,0x6,0x53,0x33,0x5c,0x5a,0x65,0x33,0x66,0xcc, -: 254: 0xa0,0x95,0x71,0x72,0x72,0x22,0x59,0x59,0x59,0xa4,0xac,0xac,0x8c,0x36,0xef,0xdb, -: 255: 0xb7,0x6f,0x93,0xac,0xac,0x2c,0x62,0x63,0x63,0x43,0x9b,0x3e,0x3c,0x3c,0x9c,0x92, -: 256: 0x86,0xa9,0xf2,0x97,0x48,0x24,0x8c,0x7b,0x7f,0xc2,0xc3,0xc3,0x49,0x56,0x56,0x16, -: 257: 0xe3,0xce,0x80,0xb3,0x67,0xcf,0x92,0x4d,0x9b,0x36,0xd1,0x56,0xfc,0xc6,0xc6,0xc6, -: 258: 0xe4,0xdc,0xb9,0x73,0x8c,0xf7,0x47,0xa7,0xfb,0x31,0x61,0x61,0x61,0x94,0xf9,0x1a, -: 259: 0x0,0xb8,0x7d,0xfb,0x36,0x66,0xcc,0x98,0x1,0x57,0x57,0xd7,0x8e,0x39,0xf2,0xd7, -: 260: 0x29,0x2e,0x2e,0xc6,0xed,0xdb,0xb7,0x59,0xf3,0xe5,0x8a,0x83,0x83,0x3,0xc6,0x8e, -: 261: 0x1d,0x4b,0xdb,0xeb,0x4f,0x4e,0x4e,0x46,0x72,0x72,0x32,0x2,0x3,0x3,0x69,0x47, -: 262: 0xb0,0x4f,0x9c,0x38,0x81,0xc6,0xc6,0x46,0xda,0x7c,0xed,0xec,0xec,0xd8,0xb7,0xe8, -: 263: 0x2b,0xf9,0xa0,0xab,0xd,0x2e,0x25,0xa6,0xbd,0xbd,0x9d,0x88,0xc5,0x62,0xb5,0xf6, -: 264: 0xb8,0xbf,0xfd,0xf6,0x5b,0x22,0x95,0x4a,0x29,0xf6,0x64,0x67,0x67,0x53,0x64,0xf5, -: 265: 0xf4,0xf4,0x48,0x41,0x41,0x1,0x79,0xf0,0xe0,0x1,0x19,0x3c,0x78,0xb0,0xda,0x6c, -: 266: 0xb0,0xb0,0xb0,0x20,0x85,0x85,0x85,0xac,0xf7,0x47,0xa7,0x1d,0x43,0xc8,0xcb,0xcd, -: 267: 0x50,0xee,0xee,0xee,0x6a,0xb9,0x21,0x93,0x27,0x4f,0x66,0x3c,0x6f,0xed,0xf4,0xe9, -: 268: 0xd3,0xb4,0x69,0x2e,0x5e,0xbc,0x48,0x8,0x21,0xe4,0xf2,0xe5,0xcb,0x6a,0x73,0xc, -: 269: 0x97,0x29,0x80,0x6e,0x73,0x4c,0x70,0x70,0x30,0xc5,0x60,0x7,0x7,0x7,0xd2,0xda, -: 270: 0xda,0x4a,0x91,0x7d,0xf8,0xf0,0x61,0x97,0x9f,0x58,0x47,0x47,0x47,0xd6,0x7d,0x9d, -: 271: 0x8a,0x1c,0x23,0x93,0xc9,0x48,0x46,0x46,0x86,0xdc,0xc9,0x87,0xaa,0x5c,0xb1,0xb1, -: 272: 0xb1,0xb4,0x25,0xb6,0x33,0xdd,0xd6,0x2a,0xa3,0x1b,0xc7,0x7a,0x35,0x6,0xd6,0x19, -: 273: 0x6b,0x6b,0x6b,0x1c,0x3a,0x74,0x8,0x41,0x41,0x41,0x2a,0xe9,0x5a,0xb4,0x68,0x11, -: 274: 0x8e,0x1c,0x39,0x42,0x19,0xb9,0x56,0x6,0x1e,0x8f,0x87,0xd0,0xd0,0x50,0xec,0xd9, -: 275: 0xb3,0x7,0x76,0x76,0x76,0x4a,0xa7,0xe7,0xf3,0xf9,0x48,0x4b,0x4b,0xc3,0xb2,0x65, -: 276: 0xcb,0xb8,0xed,0xb6,0x53,0xfd,0x99,0xef,0x1a,0x33,0x67,0xce,0xa4,0x3c,0x4d,0x23, -: 277: 0x46,0x8c,0x60,0x4d,0xd3,0xdc,0xdc,0x4c,0x4e,0x9f,0x3e,0x4d,0xdc,0xdc,0xdc,0x38, -: 278: 0x3d,0x9d,0xe3,0xc7,0x8f,0x27,0x85,0x85,0x85,0xb4,0xa5,0xb0,0x33,0x8a,0x4a,0xcc, -: 279: 0xeb,0xbc,0x78,0xf1,0x82,0xac,0x5c,0xb9,0x92,0xd8,0xda,0xda,0x2a,0xb4,0xc1,0xd4, -: 280: 0xd4,0x94,0x84,0x86,0x86,0x92,0xe7,0xcf,0x9f,0x2b,0x75,0x7f,0x74,0xba,0x55,0xd6, -: 281: 0x19,0x81,0x40,0x0,0x5f,0x5f,0x5f,0x7c,0xf0,0xc1,0x7,0x38,0x75,0xea,0x14,0xda, -: 282: 0xda,0xda,0x10,0x1e,0x1e,0x2e,0x27,0x23,0x14,0xa,0x3b,0x16,0xb5,0x7,0x5,0x5, -: 283: 0xc1,0xc4,0xc4,0x44,0xed,0x76,0xf4,0xed,0xdb,0x17,0x71,0x71,0x71,0x98,0x3a,0x75, -: 284: 0x2a,0x24,0x12,0x9,0x2e,0x5c,0xb8,0x40,0x59,0xcd,0xea,0xe3,0xe3,0x83,0xa0,0xa0, -: 285: 0x20,0x58,0x59,0x59,0xe1,0xd3,0x4f,0x3f,0x55,0x5a,0x7,0x1f,0x0,0xaa,0xaa,0xaa, -: 286: 0x68,0xc7,0x6d,0xc6,0x8c,0x19,0x83,0xbe,0x7d,0xfb,0xaa,0x68,0xbe,0xe6,0xb0,0xb6, -: 287: 0xb6,0xc6,0x82,0x5,0xb,0x40,0x8,0x41,0x70,0x70,0xb0,0x5c,0x1c,0x8f,0xc7,0x83, -: 288: 0x99,0x99,0x99,0x56,0xec,0xf0,0xf0,0xf0,0x80,0x87,0x87,0x7,0xe6,0xcc,0x99,0x43, -: 289: 0x59,0x1c,0x68,0x68,0x68,0xc8,0xba,0x57,0x55,0x11,0xfc,0xdc,0xdc,0x5c,0x6c,0xde, -: 290: 0xbc,0x99,0xf6,0x28,0xa8,0xc0,0xc0,0x40,0xc6,0x1,0x43,0x33,0x33,0x33,0x6c,0xdc, -: 291: 0xb8,0x51,0x65,0xc5,0xea,0x80,0xc7,0xe3,0x71,0x1e,0xd0,0xd4,0x24,0x2,0x81,0x0, -: 292: 0x2,0x81,0x40,0xad,0x79,0xf2,0x8f,0x1f,0x3f,0xce,0x78,0x3e,0xd7,0x91,0x23,0x47, -: 293: 0x18,0x13,0xea,0xe9,0xe9,0x21,0x35,0x35,0x95,0x35,0xf3,0xf8,0xf8,0x78,0xd8,0xda, -: 294: 0xda,0xd2,0xc6,0xd5,0xd4,0xd4,0x70,0xb7,0x52,0xb,0xf8,0xf8,0xf8,0xe0,0xc3,0xf, -: 295: 0x3f,0xa4,0xac,0xf,0x5b,0xbf,0x7e,0x7d,0xb7,0x9c,0x5f,0xa6,0x53,0x8b,0xca,0xcd, -: 296: 0xcc,0xcc,0x10,0x12,0x12,0xd2,0xf1,0x3b,0x3a,0x3a,0x1a,0x96,0x96,0x96,0x5a,0xd3, -: 297: 0xff,0xd1,0x47,0x1f,0x51,0x9c,0xe0,0xee,0xee,0x8e,0xcb,0x97,0x2f,0x6b,0xcd,0x86, -: 298: 0x57,0xe8,0x54,0xe5,0x5f,0x5b,0x5b,0xdb,0xb1,0xc3,0x19,0x78,0x79,0x94,0x30,0xdb, -: 299: 0x62,0x3d,0xa6,0xa9,0xe5,0x57,0xb8,0xb8,0xb8,0xe8,0xec,0xe9,0x82,0x8a,0xe0,0xf9, -: 300: 0xf9,0xf9,0x91,0x93,0x27,0x4f,0x76,0xb7,0x1d,0x1a,0x61,0xee,0xdc,0xb9,0xac,0x2b, -: 301: 0x20,0x3,0x3,0x3,0xe5,0x96,0xb1,0xea,0x52,0x89,0xe1,0xd5,0xd5,0xd5,0x91,0x89, -: 302: 0x13,0x27,0xe2,0xea,0xd5,0xab,0x5a,0x57,0xde,0xdd,0x98,0x9a,0x9a,0x42,0x24,0x12, -: 303: 0x75,0xfc,0xae,0xa9,0xa9,0xa1,0x9c,0xd2,0xee,0xe4,0xe4,0xc4,0x58,0x97,0xe,0x19, -: 304: 0x32,0x4,0x56,0x56,0x56,0x1a,0xb1,0x8d,0x47,0x8,0x21,0x12,0x89,0x4,0x39,0x39, -: 305: 0x39,0x72,0x11,0x57,0xaf,0x5e,0x65,0xad,0xfc,0x7b,0x79,0x59,0xc2,0x9c,0x9d,0x9d, -: 306: 0x19,0xe3,0xd7,0xae,0x5d,0xab,0x72,0xd3,0x9d,0x71,0xd7,0x72,0x7d,0x7d,0x3d,0xe3, -: 307: 0x86,0x59,0xe0,0xe5,0xd3,0xc5,0xb6,0x10,0xef,0xf1,0xe3,0xc7,0x28,0x2f,0x2f,0x57, -: 308: 0xc9,0xa8,0xff,0xa,0xb6,0xb6,0xb6,0xac,0xdb,0x38,0x16,0x2f,0x5e,0xc,0x6f,0x6f, -: 309: 0x6f,0xb9,0x30,0x7b,0x7b,0x7b,0x98,0x9b,0x9b,0xab,0x7f,0x3b,0xf9,0x2b,0x8a,0x8b, -: 310: 0x8b,0xf1,0xf3,0xcf,0x3f,0xd3,0xc6,0x55,0x54,0x54,0x60,0xc7,0x8e,0x1d,0x9a,0x50, -: 311: 0xfb,0xc6,0x33,0x6d,0xda,0x34,0x2c,0x5f,0xbe,0x5c,0x73,0x8e,0x61,0xa3,0xa0,0xa0, -: 312: 0x80,0x76,0xef,0x48,0x5a,0x5a,0x9a,0xdc,0xbe,0xc7,0xc8,0xc8,0x48,0xc6,0xb9,0xf5, -: 313: 0xd6,0xd6,0x56,0xd6,0xc9,0xb0,0x37,0x99,0xa5,0x4b,0x97,0xea,0x56,0x73,0xd9,0xda, -: 314: 0xda,0x1a,0xf6,0xf6,0xf6,0x1d,0xbf,0x3b,0xd7,0x7b,0xaf,0x53,0x5b,0x5b,0x8b,0x9d, -: 315: 0x3b,0x77,0xb2,0xe6,0xb7,0x65,0xcb,0x96,0x37,0xf2,0x88,0xe1,0xf8,0xf8,0x78,0x66, -: 316: 0xc7,0x24,0x26,0x26,0x22,0x31,0x31,0x11,0x3,0x6,0xc,0x40,0x7c,0x7c,0xbc,0x4a, -: 317: 0x47,0xf4,0xd6,0xd5,0xd5,0x21,0x3f,0x3f,0x1f,0xcb,0x97,0x2f,0x7,0x0,0xe4,0xe6, -: 318: 0xe6,0x62,0xc0,0x80,0x1,0xaa,0x5b,0xfc,0x1a,0x66,0x66,0x66,0xb4,0xb,0x2d,0x5e, -: 319: 0x27,0x38,0x38,0x18,0x6d,0x6d,0x6d,0xb4,0x71,0xf,0x1f,0x3e,0x44,0x64,0x64,0xa4, -: 320: 0x5c,0x58,0x73,0x73,0x33,0xee,0xde,0xbd,0xab,0x16,0xfb,0xba,0xa,0xed,0xab,0xec, -: 321: 0xfc,0xf9,0xf3,0xf0,0xf5,0xf5,0xed,0x38,0x21,0xc8,0xc8,0xc8,0x8,0x67,0xce,0x9c, -: 322: 0xe1,0xbc,0xbd,0xfa,0x15,0x4b,0x96,0x2c,0x91,0xdb,0x4f,0xe9,0xe6,0xe6,0x86,0x5f, -: 323: 0x7e,0xf9,0x5,0x25,0x25,0x25,0xb4,0xaf,0xb2,0x9c,0x9c,0x1c,0x4c,0x99,0x32,0x45, -: 324: 0xd9,0xff,0xa0,0x36,0x8a,0x8b,0x8b,0x31,0x6a,0xd4,0x28,0x4a,0x78,0x50,0x50,0x10, -: 325: 0xe5,0xd0,0x9f,0x9a,0x9a,0x1a,0x6c,0xdf,0xbe,0x5d,0x23,0x76,0x7c,0xfc,0xf1,0xc7, -: 326: 0xd4,0x12,0xd3,0xdc,0xdc,0x8c,0x80,0x80,0x0,0xb9,0x63,0x9b,0x9a,0x9a,0x9a,0x10, -: 327: 0x10,0x10,0x80,0xd0,0xd0,0x50,0x6c,0xde,0xbc,0x59,0xe1,0x84,0x53,0x75,0x75,0x35, -: 328: 0x7c,0x7d,0x7d,0x29,0x23,0xd6,0x45,0x45,0x45,0x88,0x8a,0x8a,0x42,0x68,0x68,0xa8, -: 329: 0x9a,0xfe,0x82,0x76,0xf0,0xf7,0xf7,0xa7,0x7c,0x1,0xaa,0xa5,0xa5,0x5,0x62,0xb1, -: 330: 0x98,0x35,0x9d,0x58,0x2c,0x66,0x6d,0xd9,0x56,0x56,0x56,0xe2,0xd9,0xb3,0x67,0x72, -: 331: 0x61,0xce,0xce,0xce,0xd8,0xbf,0x7f,0x3f,0xd5,0x31,0x32,0x99,0x8c,0x76,0x80,0xf1, -: 332: 0xf1,0xe3,0xc7,0x88,0x8f,0x8f,0x87,0x4c,0x26,0xc3,0x37,0xdf,0x7c,0xc3,0xf8,0x4a, -: 333: 0x3a,0x75,0xea,0x14,0xb6,0x6e,0xdd,0xca,0x78,0x8,0x76,0x55,0x55,0x15,0xeb,0x9f, -: 334: 0x79,0x53,0x10,0x8,0x4,0x70,0x74,0x74,0x64,0x95,0xf9,0xed,0xb7,0xdf,0x58,0xe3, -: 335: 0x4f,0x9e,0x3c,0x89,0xeb,0xd7,0xaf,0xcb,0x85,0xf9,0xfb,0xfb,0xc3,0xdc,0xdc,0x9c, -: 336: 0xea,0x18,0x1e,0x8f,0x7,0xb,0xb,0xb,0xc6,0xd1,0xdf,0xed,0xdb,0xb7,0x43,0x22, -: 337: 0x91,0x20,0x39,0x39,0x19,0x43,0x87,0xe,0xed,0x8,0x6f,0x68,0x68,0xc0,0x95,0x2b, -: 338: 0x57,0x30,0x77,0xee,0x5c,0xd4,0xd6,0xd6,0x32,0x1a,0xa3,0xcd,0x41,0x49,0x5d,0xc7, -: 339: 0xcf,0xcf,0xf,0x7e,0x7e,0x7e,0xf4,0x91,0x74,0xd3,0x9a,0xf9,0xf9,0xf9,0xc4,0xd0, -: 340: 0xd0,0x90,0x75,0xca,0xd4,0xc4,0xc4,0x44,0x6e,0x9,0xce,0x9a,0x35,0x6b,0x14,0x4e, -: 341: 0xb3,0xba,0xb9,0xb9,0x91,0xda,0xda,0x5a,0x72,0xe9,0xd2,0x25,0xda,0xf8,0x9c,0x9c, -: 342: 0x1c,0xa5,0xa6,0x5f,0xd5,0xcd,0x8d,0x1b,0x37,0x68,0xed,0xd2,0xc6,0x17,0x6,0x3b, -: 343: 0xc3,0x38,0xe7,0x9f,0x90,0x90,0xa0,0x70,0x45,0x48,0xff,0xfe,0xfd,0x49,0x74,0x74, -: 344: 0x34,0xf1,0xf4,0xf4,0x24,0x46,0x46,0x46,0xac,0xb2,0xe6,0xe6,0xe6,0xa4,0xa2,0xa2, -: 345: 0x82,0x10,0x42,0x74,0xd6,0x31,0x8d,0x8d,0x8d,0x64,0xda,0xb4,0x69,0x14,0xbb,0xec, -: 346: 0xec,0xec,0xb4,0x6e,0xb,0xeb,0x62,0x8c,0x6d,0xdb,0xb6,0xc9,0x9d,0x2,0xab,0xea, -: 347: 0x35,0x6d,0xda,0x34,0x72,0xfe,0xfc,0xf9,0x8e,0x7c,0xff,0xf7,0xbf,0xff,0x51,0x64, -: 348: 0x6,0xe,0x1c,0x48,0x24,0x12,0x89,0xc6,0xff,0xb0,0x22,0x3a,0x7f,0x54,0x55,0x27, -: 349: 0x1d,0x43,0x8,0x21,0xe7,0xce,0x9d,0x23,0x3,0x6,0xc,0x50,0xc9,0x21,0x46,0x46, -: 350: 0x46,0xc4,0xcb,0xcb,0x8b,0xb2,0xe7,0x91,0x6e,0x1,0x9f,0x8f,0x8f,0x8f,0xc6,0xfe, -: 351: 0xa4,0x32,0xe8,0x8a,0x63,0x14,0x2e,0x70,0x9a,0x38,0x71,0x22,0x4a,0x4a,0x4a,0x30, -: 352: 0x66,0xcc,0x18,0x45,0xa2,0x14,0x62,0x62,0x62,0xf0,0xeb,0xaf,0xbf,0xca,0xed,0x77, -: 353: 0xec,0x85,0x1b,0x9c,0x16,0xfc,0x89,0x44,0x22,0x64,0x66,0x66,0x2a,0x75,0x4,0x63, -: 354: 0x5e,0x5e,0x9e,0xca,0xe7,0x35,0xf7,0xa2,0xc4,0xfe,0x98,0x8a,0x8a,0xa,0xa5,0x36, -: 355: 0xdf,0x14,0x16,0x16,0xa2,0xa9,0xa9,0x49,0x25,0xa3,0x7a,0xe1,0x30,0xe7,0xdf,0xd6, -: 356: 0xd6,0x86,0xb2,0xb2,0x32,0x4,0x7,0x7,0x2b,0xf5,0x11,0x9e,0xa8,0xa8,0x28,0x94, -: 357: 0x95,0x95,0x61,0xd3,0xa6,0x4d,0xbd,0x7d,0x17,0x15,0x50,0x58,0x62,0x52,0x53,0x53, -: 358: 0xe1,0xe8,0xe8,0xa8,0xd2,0x97,0x91,0x76,0xef,0xde,0x8d,0xd1,0xa3,0x47,0xe3,0xef, -: 359: 0xbf,0xff,0x56,0xc9,0xb8,0xee,0x80,0xee,0x4b,0x7f,0x2f,0x5e,0xbc,0xc0,0x8d,0x1b, -: 360: 0x37,0xb4,0x6a,0x7,0xa3,0x63,0x9a,0x9a,0x9a,0x10,0x12,0x12,0x82,0xa8,0xa8,0x28, -: 361: 0xd6,0xc,0x84,0x42,0x21,0xeb,0x22,0xe9,0xca,0xca,0x4a,0x4c,0x9f,0x3e,0x1d,0x29, -: 362: 0x29,0x29,0x94,0x3,0xe,0x74,0x11,0xba,0x6f,0x63,0x3e,0x7b,0xf6,0x4c,0xe1,0xf0, -: 363: 0x8a,0xba,0x61,0xbc,0xa3,0x11,0x11,0x11,0x38,0x78,0xf0,0x20,0x65,0x90,0xed,0x75, -: 364: 0xc6,0x8d,0x1b,0x87,0x8c,0x8c,0xc,0xac,0x58,0xb1,0x82,0xf6,0x93,0x24,0xaf,0xb8, -: 365: 0x7b,0xf7,0x2e,0xc4,0x62,0xb1,0xd6,0xff,0xdc,0x1b,0x4d,0xe7,0xf6,0xb3,0x4c,0x26, -: 366: 0x23,0x3b,0x77,0xee,0x24,0x7c,0x3e,0x9f,0xb1,0x7f,0xc2,0xe7,0xf3,0xc9,0xf0,0xe1, -: 367: 0xc3,0xc9,0xfd,0xfb,0xf7,0x3b,0xd2,0xed,0xd9,0xb3,0x87,0x98,0x9a,0x9a,0xb2,0xf6, -: 368: 0x6b,0x6c,0x6d,0x6d,0x49,0x59,0x59,0x99,0x4e,0xf7,0x63,0xaa,0xab,0xab,0x69,0x6d, -: 369: 0x8f,0x8f,0x8f,0xd7,0xaa,0x1d,0x94,0x12,0xd3,0xd4,0xd4,0x4,0xb1,0x58,0xcc,0xfa, -: 370: 0x51,0xeb,0x88,0x88,0x8,0xdc,0xb9,0x73,0x47,0x6e,0x9f,0xc8,0xdc,0xb9,0x73,0x21, -: 371: 0x91,0x48,0x58,0x47,0x5c,0x2b,0x2b,0x2b,0x19,0xbf,0xd6,0xd4,0x8b,0x3c,0x4a,0x6d, -: 372: 0x5c,0x32,0x30,0x30,0xc0,0xfe,0xfd,0xfb,0xb1,0x7e,0xfd,0x7a,0xda,0x78,0x2b,0x2b, -: 373: 0x2b,0x1c,0x3b,0x76,0xc,0xb,0x17,0x2e,0x54,0x8b,0x71,0x3d,0x19,0x8a,0x63,0xf8, -: 374: 0x7c,0x3e,0xed,0x1e,0x78,0x57,0x57,0x57,0xfc,0xf8,0xe3,0x8f,0x8,0x9,0x9,0x61, -: 375: 0x3d,0x55,0xd6,0xd1,0xd1,0x11,0x29,0x29,0x29,0x88,0x88,0x88,0xa0,0x5d,0x5,0x69, -: 376: 0x69,0x69,0x49,0xfb,0x51,0x1b,0x55,0x46,0x16,0xfe,0xd3,0xd0,0xbd,0xdf,0x4a,0x4b, -: 377: 0x4b,0x89,0xb9,0xb9,0x39,0x1,0x5e,0xee,0xdc,0xb5,0xb1,0xb1,0x61,0xdc,0x53,0xcf, -: 378: 0x46,0x42,0x42,0x2,0x11,0xa,0x85,0x1d,0xef,0xe9,0xc0,0xc0,0x40,0xb2,0x6f,0xdf, -: 379: 0x3e,0xda,0x77,0xf8,0xf5,0xeb,0xd7,0xbb,0xfc,0x5e,0x56,0x7,0xba,0x52,0xc7,0x30, -: 380: 0xe,0x62,0x5e,0xb8,0x70,0x81,0x84,0x85,0x85,0x91,0xb5,0x6b,0xd7,0x76,0x49,0x41, -: 381: 0x45,0x45,0x5,0x9,0xb,0xb,0x23,0x61,0x61,0x61,0xa4,0xbd,0xbd,0x9d,0x64,0x66, -: 382: 0x66,0xea,0xb4,0x63,0xea,0xea,0xea,0x68,0xf,0x22,0xd,0xd,0xd,0xd5,0xaa,0x1d, -: 383: 0x5a,0xdf,0x83,0xa9,0xeb,0x8e,0x21,0x84,0x90,0x55,0xab,0x56,0x51,0xec,0xd3,0xd7, -: 384: 0xd7,0xd7,0xaa,0xd,0x3a,0x7b,0x96,0x4c,0x4f,0xa7,0xd7,0x31,0x3a,0x4a,0xaf,0x63, -: 385: 0x74,0x14,0xad,0x3b,0x86,0xee,0x3,0x38,0x3c,0x1e,0x4f,0xa9,0xf,0xe3,0x68,0x1a, -: 386: 0x3a,0x5b,0xb4,0xfe,0x89,0x62,0xad,0xd6,0x68,0xff,0x4f,0xe7,0x21,0x99,0xef,0xbf, -: 387: 0xff,0xbe,0x3b,0xcc,0x60,0xe5,0xf5,0x43,0x1e,0x84,0x42,0x21,0x39,0x7d,0xfa,0xb4, -: 388: 0x56,0xf5,0x77,0x8b,0x63,0xf2,0xf2,0xf2,0xc8,0x98,0x31,0x63,0x8,0x0,0x32,0x7d, -: 389: 0xfa,0xf4,0x6e,0xff,0x7c,0x2e,0x1d,0xff,0xfc,0xf3,0xf,0x79,0xfb,0xed,0xb7,0x9, -: 390: 0x0,0x12,0x15,0x15,0xa5,0x75,0xfd,0xff,0x7,0xd0,0xf,0xb3,0x81,0x30,0xb6,0x98, -: 391: 0xff,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, -: 392: // /home/travis/build/richelbilderbeek/TicTacToe/TicTacToeX.png -: 393: 0x0,0x0,0x2,0xb4, -: 394: 0x89, -: 395: 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, -: 396: 0x0,0x0,0x32,0x0,0x0,0x0,0x32,0x8,0x6,0x0,0x0,0x0,0x1e,0x3f,0x88,0xb1, -: 397: 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, -: 398: 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, -: 399: 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b, -: 400: 0xe,0x1b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff, -: 401: 0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xdb,0x1,0x1a, -: 402: 0xc,0xd,0x34,0x2b,0xe9,0xab,0x9b,0x0,0x0,0x2,0x24,0x49,0x44,0x41,0x54,0x68, -: 403: 0x43,0xdd,0x9a,0xed,0x6d,0xc2,0x30,0x10,0x86,0x93,0x2e,0xc0,0x24,0x6c,0xc1,0x42, -: 404: 0x4c,0x80,0x98,0x80,0x85,0xf8,0xc7,0x8,0x2c,0x2,0x13,0x50,0xbf,0x51,0x2e,0xf5, -: 405: 0x67,0xe2,0xf3,0xdd,0xb9,0x6d,0x1e,0xe9,0x24,0xc7,0xca,0x7d,0x3c,0x32,0x29,0x42, -: 406: 0xcd,0xf8,0x71,0xc,0x3b,0x20,0x11,0x79,0xbf,0xdf,0xf3,0x2a,0xe4,0x70,0x38,0xcc, -: 407: 0xab,0xbe,0xd4,0xce,0x13,0x88,0x20,0xe9,0xf9,0x7c,0xe,0xf7,0xfb,0x7d,0xde,0xf9, -: 408: 0xe1,0x7c,0x3e,0x77,0x97,0xc1,0x3c,0xb7,0xdb,0x6d,0xbe,0xfa,0xe1,0x74,0x3a,0xd, -: 409: 0xc7,0xe3,0x31,0x9c,0x7,0x22,0xe0,0xf5,0x7a,0x7d,0x1e,0x8f,0xc7,0xe7,0x72,0xb9, -: 410: 0x40,0x2c,0x9,0xec,0xe3,0x9e,0x5e,0xa0,0xd7,0xda,0x2c,0x98,0xd5,0x9f,0x67,0x12, -: 411: 0x89,0x25,0xc6,0x71,0x5c,0x92,0xb0,0xa6,0xeb,0x5e,0x32,0xbe,0x84,0xdf,0x9f,0xae, -: 412: 0x69,0x16,0x5f,0x66,0x11,0xc9,0x49,0xf8,0xd1,0x4b,0xa6,0x75,0x96,0x2f,0xb7,0x11, -: 413: 0xe0,0xf6,0xe6,0x55,0x8,0xf6,0x5d,0x81,0xe1,0x7a,0xbd,0x4e,0x9f,0xdb,0xd2,0x43, -: 414: 0x28,0x81,0x9e,0x9,0xf4,0x0,0x6b,0xb3,0xc4,0x24,0x22,0x6b,0x58,0xca,0xc4,0x12, -: 415: 0xe8,0xc3,0x21,0x11,0xd9,0x2a,0x60,0x21,0x93,0x93,0x28,0x9d,0x6,0xc8,0xcd,0xc8, -: 416: 0x3a,0x11,0x42,0x53,0x86,0x2b,0x51,0xc4,0x25,0x4d,0xd4,0x3c,0x64,0x71,0xd0,0x7d, -: 417: 0xad,0x7f,0x0,0xfc,0x9e,0x7e,0xbd,0xb5,0x28,0xf5,0x5c,0x44,0x80,0x66,0xe1,0x2d, -: 418: 0xb4,0x7b,0x5,0x22,0xa0,0x87,0x8c,0x45,0x8f,0x44,0x4,0x58,0xca,0x58,0xd5,0xce, -: 419: 0x8a,0x0,0x8b,0x86,0x56,0x12,0xa0,0x28,0x2,0x34,0x1b,0x5b,0x4a,0x80,0x55,0x11, -: 420: 0xa0,0x31,0x80,0xb5,0x4,0xd8,0x14,0x1,0x2d,0x83,0x50,0x20,0xcf,0xcf,0xad,0x9, -: 421: 0xae,0x4,0xa8,0x12,0x1,0x12,0x19,0x4e,0xb4,0x48,0x80,0x6a,0x11,0x60,0x2d,0xd3, -: 422: 0x2a,0x1,0x58,0x22,0xc0,0x4a,0x46,0x22,0x1,0xd8,0x22,0x20,0x96,0x91,0x86,0x54, -: 423: 0x2,0x34,0x89,0x0,0x6d,0x19,0x89,0x4,0x68,0x16,0x1,0x5a,0x32,0x52,0x9,0x20, -: 424: 0x12,0x1,0x52,0x19,0xd,0x9,0xd0,0xf4,0x7b,0xe4,0x4f,0x32,0xb,0x35,0xb1,0x8b, -: 425: 0x8f,0x96,0x96,0x4,0x85,0x54,0xa6,0x49,0xc4,0x97,0xd0,0xfc,0x52,0x94,0xc8,0xb0, -: 426: 0x45,0x2c,0x24,0xfc,0x3a,0xad,0x32,0x2c,0x11,0xab,0x93,0x40,0x48,0x65,0xaa,0x45, -: 427: 0x2c,0x25,0x28,0x24,0x32,0x55,0x22,0x12,0x9,0xe4,0x51,0x6e,0x4d,0xb4,0xca,0x6c, -: 428: 0x8a,0x70,0x25,0x72,0x83,0x68,0xd4,0xd8,0x62,0x55,0x44,0x73,0x0,0x6b,0x99,0xa2, -: 429: 0x88,0x45,0x63,0x4b,0x99,0xac,0x88,0x65,0x43,0xab,0xda,0x89,0x88,0xa5,0x4,0x61, -: 430: 0xd1,0x23,0x10,0xe9,0x21,0x41,0x68,0xf7,0x5a,0x44,0x7a,0x4a,0x10,0xdc,0x9e,0x8, -: 431: 0xba,0x2f,0xee,0x39,0x89,0xfc,0x86,0x4,0xa1,0x25,0xc3,0xfe,0x3d,0xe2,0x8a,0x40, -: 432: 0x7e,0x5a,0xbb,0x42,0xe2,0x7f,0x5b,0x23,0x17,0x35,0x50,0xb,0x75,0x51,0xbf,0x85, -: 433: 0x44,0x84,0x86,0xcc,0xa1,0x2d,0x41,0x70,0x65,0x72,0x33,0xb2,0x4e,0xc4,0x42,0x82, -: 434: 0x90,0x9e,0x4c,0x22,0x52,0x2a,0x40,0xfb,0x16,0x12,0x44,0xad,0x4c,0x76,0xdf,0x25, -: 435: 0x4c,0xf,0xcc,0x2e,0x5e,0x18,0x0,0xb1,0x4c,0x1c,0xbd,0x24,0x8,0x5f,0x26,0x37, -: 436: 0x8b,0x2f,0x1,0x76,0xf3,0x52,0xcd,0x3e,0x5f,0x73,0xfa,0xbf,0xc,0xc3,0x37,0xcd, -: 437: 0x45,0x31,0xed,0x43,0x72,0x58,0x9c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae, -: 438: 0x42,0x60,0x82, -: 439: // /home/travis/build/richelbilderbeek/TicTacToe/TicTacToeO.png -: 440: 0x0,0x0,0x2,0xac, -: 441: 0x89, -: 442: 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, -: 443: 0x0,0x0,0x32,0x0,0x0,0x0,0x32,0x8,0x6,0x0,0x0,0x0,0x1e,0x3f,0x88,0xb1, -: 444: 0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0, -: 445: 0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0, -: 446: 0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b, -: 447: 0xe,0x1b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff, -: 448: 0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xdb,0x1,0x1a, -: 449: 0xc,0x3,0x2d,0xd1,0x1,0x2e,0xd5,0x0,0x0,0x2,0x1c,0x49,0x44,0x41,0x54,0x68, -: 450: 0x43,0xed,0x99,0x4d,0x6e,0xc2,0x30,0x10,0x85,0xd3,0xc2,0x39,0x58,0x70,0xe,0x96, -: 451: 0xdc,0x8b,0x72,0x2f,0x36,0x88,0x9c,0x83,0x5,0x17,0xa1,0x79,0x91,0x1f,0x9d,0x86, -: 452: 0xd8,0x99,0x19,0xe7,0x17,0xe5,0x93,0x22,0xac,0x6,0xd9,0xf3,0x69,0x9e,0xa3,0xe0, -: 453: 0x7e,0x3d,0x2b,0x8a,0xf,0xa0,0x57,0x91,0xb2,0x2c,0xc3,0x48,0xcf,0xe1,0x70,0x8, -: 454: 0xa3,0x3c,0xb2,0x44,0x9a,0x85,0x5f,0x2e,0x97,0x30,0xd2,0x73,0x3c,0x1e,0xc3,0x28, -: 455: 0x4f,0xca,0x2d,0x2,0x89,0x66,0xe1,0xe7,0xf3,0x39,0x8c,0xf4,0x9c,0x4e,0xa7,0x30, -: 456: 0xfa,0x93,0xf2,0x8,0x99,0x45,0xd8,0x5,0x48,0x78,0xa,0x4f,0x41,0x29,0x8,0x59, -: 457: 0x65,0xd4,0x22,0x52,0x0,0xf4,0x2d,0x21,0x81,0x90,0xb5,0x3b,0x2a,0x11,0x19,0xa3, -: 458: 0x21,0x5,0x24,0xe6,0xee,0x40,0x24,0xc5,0xed,0x76,0x7b,0x56,0x93,0x42,0x76,0x92, -: 459: 0xb,0x6b,0xa3,0x86,0x2e,0x92,0x22,0x53,0x4b,0xf0,0xd2,0xc8,0x44,0xa3,0xc5,0x38, -: 460: 0x59,0xa3,0xc4,0x48,0x74,0xe1,0x99,0x37,0x15,0xb3,0x56,0x11,0xab,0x84,0x2c,0x9e, -: 461: 0x9b,0xb4,0xb,0xee,0x39,0x60,0x59,0x27,0x26,0x93,0x2d,0xc2,0xc9,0x89,0xf6,0x29, -: 462: 0xc3,0xa7,0x20,0xb0,0xae,0xa5,0x12,0xd1,0x4a,0xb0,0xb,0xa9,0x76,0x6b,0xe1,0x9a, -: 463: 0x40,0xb3,0x6e,0xdb,0x9a,0x9b,0x9f,0x8a,0x30,0xae,0x79,0x3c,0x1e,0xc5,0xfd,0x7e, -: 464: 0x2f,0xae,0xd7,0x6b,0xf8,0xcb,0x3b,0x9c,0x6c,0xbf,0xdf,0x67,0x4b,0x80,0xdd,0x6e, -: 465: 0x57,0x6c,0xb7,0xdb,0x7a,0x3e,0x8c,0x53,0x6b,0xe3,0x1e,0xbf,0x8f,0xcf,0x17,0xe8, -: 466: 0x8,0xd1,0x3c,0xa5,0x70,0x5f,0xf3,0x38,0xf4,0xe2,0xad,0xe1,0xbb,0xba,0x51,0x63, -: 467: 0xdd,0xe0,0x53,0x82,0x1a,0x51,0xab,0xdc,0x67,0x2f,0x11,0xd,0x8c,0x54,0x1f,0x71, -: 468: 0x8a,0x81,0xb9,0xb1,0x6,0xd6,0xb2,0xa0,0x16,0x19,0x43,0x82,0x78,0x64,0x4c,0x1d, -: 469: 0x99,0x13,0xcd,0x78,0xd5,0x22,0x4b,0xda,0x1f,0x31,0x54,0x1d,0x19,0x33,0x56,0xc4, -: 470: 0x1a,0xaf,0xc5,0x46,0xab,0xc9,0x2a,0x32,0x37,0x56,0x91,0xb9,0xb1,0x8a,0xcc,0x8d, -: 471: 0x55,0x64,0x6e,0xa8,0x44,0xda,0x5e,0x9b,0x87,0xc6,0xfa,0xda,0xf4,0x59,0x1d,0xf1, -: 472: 0xfe,0x6,0x98,0x92,0xe6,0xfb,0x9f,0xba,0x23,0x63,0xc6,0xcb,0xf3,0x36,0x6e,0x8a, -: 473: 0xd6,0x18,0x32,0x1e,0x9,0xf0,0x12,0x59,0x52,0xbc,0xda,0x7e,0x56,0x98,0x37,0xbb, -: 474: 0xec,0x4a,0x9f,0x9d,0xe1,0x7c,0x9e,0x6e,0x80,0x7f,0xe7,0x5a,0xf2,0xbc,0x48,0x73, -: 475: 0xb6,0x84,0xf3,0xaf,0xb7,0xf3,0x25,0x7,0x14,0xc0,0x7c,0x5d,0x12,0x6d,0xdd,0x0, -: 476: 0x8b,0x3a,0x32,0x5,0x83,0x89,0x0,0xb9,0xaf,0xa4,0x54,0xa,0xcc,0x4f,0x72,0x25, -: 477: 0x40,0xab,0x8,0xf0,0xe6,0x55,0x4a,0xa5,0xf0,0xcc,0x1b,0x93,0xa8,0x81,0x48,0xc, -: 478: 0xcd,0xf1,0xe5,0x18,0x17,0x6a,0xe8,0x3a,0xa6,0xfd,0x98,0x7f,0xbd,0x45,0xa3,0x25, -: 479: 0x61,0xcc,0x80,0x35,0x12,0x39,0x74,0xc6,0x49,0xa0,0x12,0x1,0x7c,0xca,0x78,0xf6, -: 480: 0x8d,0x15,0x8,0x0,0xad,0x4,0x50,0x8b,0x90,0x21,0xbb,0x23,0x5,0x80,0x56,0x2, -: 481: 0x98,0x45,0x80,0xec,0xe,0xf1,0x4a,0xb1,0x78,0xe0,0x11,0x20,0x2e,0x11,0x42,0x21, -: 482: 0x20,0xa5,0x2c,0xb0,0x78,0xe0,0x11,0x20,0x59,0x22,0x12,0x29,0x65,0x21,0xa7,0x78, -: 483: 0x49,0x6f,0x22,0xd3,0x52,0x14,0xbf,0xf3,0xe7,0xdb,0x91,0x4,0xbf,0xbf,0x6e,0x0, -: 484: 0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, -: 485: // /home/travis/build/richelbilderbeek/TicTacToe/TicTacToeRetro.png -: 486: 0x0,0x0,0x5,0x90, -: 487: 0x89, -: 488: 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, -: 489: 0x0,0x0,0x66,0x0,0x0,0x0,0x66,0x8,0x6,0x0,0x0,0x0,0x39,0xdf,0xe4,0x62, -: 490: 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, -: 491: 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4, -: 492: 0x1,0x95,0x2b,0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66, -: 493: 0x74,0x77,0x61,0x72,0x65,0x0,0x67,0x6e,0x6f,0x6d,0x65,0x2d,0x73,0x63,0x72,0x65, -: 494: 0x65,0x6e,0x73,0x68,0x6f,0x74,0xef,0x3,0xbf,0x3e,0x0,0x0,0x5,0xd,0x49,0x44, -: 495: 0x41,0x54,0x78,0x9c,0xed,0x9d,0x3b,0x48,0x2b,0x5d,0x10,0xc7,0x27,0x89,0xcf,0x68, -: 496: 0xc4,0x47,0x82,0x8f,0xf8,0xa8,0xaf,0x16,0x16,0x22,0x22,0x88,0x82,0x45,0xd0,0x2e, -: 497: 0x45,0x4,0xc1,0xde,0xce,0x42,0x4b,0xed,0x4,0x2d,0xad,0x14,0xb4,0x16,0x15,0x13, -: 498: 0x88,0xda,0x8,0x49,0x23,0x88,0x16,0x46,0x41,0x4,0x5f,0x28,0x88,0xf8,0x42,0xe3, -: 499: 0x23,0x28,0xc9,0x92,0xd5,0x6c,0xf2,0x55,0xdf,0x87,0xb9,0x73,0xbe,0x6b,0xe2,0x26, -: 500: 0xbb,0x23,0x77,0x7e,0x70,0xa,0xff,0x8c,0xb3,0xe3,0xf9,0x93,0xd9,0x93,0x3d,0x27, -: 501: 0xd1,0x0,0x0,0x9,0x60,0xc8,0x61,0xd4,0xbb,0x0,0x46,0xc,0x1b,0x43,0x94,0x2f, -: 502: 0x8d,0xb1,0xd9,0x6c,0x90,0x48,0x24,0x54,0xd,0xb7,0xdb,0xad,0xba,0x50,0x2a,0x75, -: 503: 0x68,0x5,0xbf,0x62,0x88,0xc2,0xc6,0x10,0x25,0xe7,0xf3,0xf,0x15,0x15,0x15,0x28, -: 504: 0xa0,0xac,0xac,0xc,0x9e,0x9e,0x9e,0x54,0x5d,0x44,0x96,0x65,0x61,0xee,0x68,0x34, -: 505: 0xa,0x91,0x48,0x4,0xe9,0x54,0xea,0xd0,0x9b,0xc4,0xbf,0x43,0xc4,0xc3,0xc3,0x43, -: 506: 0xe2,0x73,0xcc,0x77,0x86,0xcb,0xe5,0x12,0xe6,0x9e,0x9e,0x9e,0x16,0xc6,0xc7,0xe3, -: 507: 0x71,0x12,0x75,0xe8,0x39,0xb8,0x95,0x11,0x85,0x8d,0x21,0xa,0x1b,0x43,0x14,0x36, -: 508: 0x86,0x28,0x6c,0xc,0x51,0xd8,0x18,0xa2,0xb0,0x31,0x44,0x61,0x63,0x88,0xc2,0xc6, -: 509: 0x10,0x85,0x8d,0x21,0xa,0x1b,0x43,0x14,0x36,0x86,0x28,0x6c,0xc,0x51,0xd8,0x18, -: 510: 0xa2,0xb0,0x31,0x44,0x61,0x63,0x88,0xc2,0xc6,0x10,0xc5,0x0,0x9f,0xe,0xfc,0x4d, -: 511: 0x4d,0x4d,0xa1,0x80,0x78,0x3c,0xe,0x37,0x37,0x37,0xaa,0x2e,0x62,0x36,0x9b,0xc1, -: 512: 0x6a,0xb5,0x22,0x7d,0x6b,0x6b,0xb,0xbc,0x5e,0x2f,0xd2,0xa9,0xd4,0xa1,0x37,0x7f, -: 513: 0xdc,0xe2,0xb4,0xd9,0x6c,0xc2,0xed,0xd8,0x74,0x70,0xbb,0xdd,0xaa,0xb7,0x5a,0xa9, -: 514: 0xd4,0xa1,0xd5,0xe0,0x56,0x46,0x14,0x36,0x86,0x28,0x39,0x5f,0x5,0x44,0x22,0x11, -: 515: 0x18,0x1b,0x1b,0x53,0x75,0x91,0x93,0x93,0x13,0x55,0xbf,0x4f,0xa9,0xe,0xad,0x48, -: 516: 0xba,0xf9,0x33,0x74,0xe0,0x56,0x46,0x14,0x36,0x86,0x28,0x6c,0xc,0x51,0xd8,0x18, -: 517: 0xa2,0xb0,0x31,0x44,0xf9,0x72,0xb9,0xac,0x7,0xbf,0x7e,0xfd,0x42,0x5a,0x2c,0x16, -: 518: 0x83,0xf3,0xf3,0x73,0x55,0x79,0x2d,0x16,0xb,0xd4,0xd6,0xd6,0x22,0x3d,0x14,0xa, -: 519: 0xc1,0xfd,0xfd,0xbd,0xaa,0xdc,0xd9,0x40,0xf7,0xc7,0xf,0xbf,0xf,0x3e,0xed,0xcf, -: 520: 0x8f,0x64,0xc8,0xc2,0xc6,0x10,0x85,0x8d,0x21,0xa,0x1b,0x43,0x14,0x36,0x86,0x28, -: 521: 0x6c,0xc,0x51,0x48,0xbe,0x8f,0x59,0x5d,0x5d,0x45,0x5a,0x34,0x1a,0x5,0xa7,0xd3, -: 522: 0x89,0xf4,0x40,0x20,0x0,0x77,0x77,0x77,0x48,0xef,0xe8,0xe8,0x40,0xdb,0xc8,0x76, -: 523: 0xbb,0x1d,0x56,0x56,0x56,0x50,0xec,0xc1,0xc1,0x81,0x8a,0x6a,0xb3,0x87,0xee,0x6b, -: 524: 0xf6,0x54,0xc6,0xff,0x6d,0x2d,0xf7,0xf5,0xf5,0x9,0xe3,0x37,0x36,0x36,0x78,0x6b, -: 525: 0x99,0xc9,0x3c,0x6c,0xc,0x51,0x7e,0xcc,0xe,0xa6,0xd1,0x68,0x4,0xbb,0xdd,0x8e, -: 526: 0xf4,0xf1,0xf1,0x71,0xe8,0xee,0xee,0x46,0xfa,0xd0,0xd0,0x10,0xec,0xef,0xef,0x27, -: 527: 0x69,0x92,0x24,0xc1,0xf3,0xf3,0x73,0xd6,0x6a,0xcc,0x24,0x24,0x6f,0xfe,0x22,0xe2, -: 528: 0xf1,0x38,0x5c,0x5f,0x5f,0x23,0xdd,0x6c,0x36,0x43,0x7d,0x7d,0x3d,0xd2,0x5f,0x5f, -: 529: 0x5f,0x85,0xf1,0x3f,0x5,0x6e,0x65,0x44,0x61,0x63,0x8,0xa3,0xfb,0xd2,0x30,0x95, -: 530: 0x61,0xb5,0x5a,0x13,0xe1,0x70,0x18,0x8d,0xfe,0xfe,0xfe,0x84,0xd9,0x6c,0x46,0xc3, -: 531: 0xef,0xf7,0xa3,0xd8,0xf9,0xf9,0x79,0xdd,0xff,0x8e,0x54,0xc7,0x8f,0xb9,0xc7,0x18, -: 532: 0xc,0x6,0x28,0x2a,0x2a,0x42,0xba,0xa2,0x28,0x20,0x49,0x12,0xd2,0x73,0x73,0x73, -: 533: 0x51,0x7c,0x7e,0x7e,0x7e,0xd6,0xea,0xcb,0x34,0xdc,0xca,0x88,0xf2,0xed,0x57,0x4c, -: 534: 0x5e,0x5e,0x1e,0x98,0x4c,0xa6,0x94,0x62,0x15,0x45,0x81,0xf7,0xf7,0xf7,0x94,0x73, -: 535: 0x17,0x16,0x16,0x22,0xad,0xa0,0xa0,0x40,0xf8,0xca,0x50,0x14,0x45,0x98,0x43,0x96, -: 536: 0x65,0x14,0xaf,0x28,0x8a,0x30,0x77,0x2c,0x16,0x83,0x8f,0x8f,0x8f,0x94,0xeb,0x13, -: 537: 0x91,0x8d,0xf9,0xf8,0x56,0xf,0x5c,0x5e,0x5e,0xce,0xda,0x29,0xfb,0x9f,0xb8,0xb5, -: 538: 0x9c,0xe9,0xf9,0xe0,0x56,0x46,0x14,0x36,0x86,0x28,0x6c,0xc,0x51,0xd8,0x18,0xa2, -: 539: 0xb0,0x31,0x44,0x61,0x63,0x88,0xf2,0xed,0xc7,0xfe,0xad,0xad,0xad,0xc2,0xe3,0xa6, -: 540: 0x22,0x6e,0x6f,0x6f,0x21,0x10,0x8,0xa4,0x9c,0xdb,0xe9,0x74,0x82,0xc1,0x60,0x48, -: 541: 0xd2,0x64,0x59,0x86,0xf5,0xf5,0xf5,0xb4,0x6a,0xfc,0x9d,0x9a,0x9a,0x1a,0x68,0x6b, -: 542: 0x6b,0x43,0xfa,0xc5,0xc5,0x85,0xea,0xed,0xe5,0x4c,0xcf,0xc7,0x8f,0xd9,0x8f,0xf9, -: 543: 0xdb,0xe0,0x56,0x46,0x14,0x36,0x86,0x28,0x6c,0xc,0x51,0xd8,0x18,0xa2,0xb0,0x31, -: 544: 0x44,0x61,0x63,0x88,0x92,0xb4,0x1f,0x73,0x78,0x78,0x88,0x2,0x5e,0x5e,0x5e,0xa0, -: 545: 0xb3,0xb3,0x53,0xd5,0x45,0x1c,0xe,0x87,0xf0,0x1b,0x95,0x96,0x96,0x96,0x60,0x62, -: 546: 0x62,0x22,0xa5,0x1c,0xe5,0xe5,0xe5,0xb0,0xb9,0xb9,0xa9,0xaa,0xe,0xbf,0xdf,0xf, -: 547: 0x23,0x23,0x23,0x29,0xc7,0xeb,0x39,0x1f,0x49,0xc6,0x34,0x35,0x35,0xa1,0xe0,0x60, -: 548: 0x30,0xa8,0xaa,0x8,0x0,0x80,0x92,0x92,0x12,0x61,0xee,0xea,0xea,0xea,0x94,0x73, -: 549: 0x98,0x4c,0x26,0x61,0x8e,0x74,0x38,0x3e,0x3e,0x4e,0x2b,0xbe,0xb1,0xb1,0x11,0xbd, -: 550: 0xd1,0xd5,0x6a,0x3e,0xb8,0x95,0x11,0x85,0xe4,0x61,0x8c,0xc1,0xc1,0x41,0xa4,0xe5, -: 551: 0xe4,0xe4,0xc0,0xdc,0xdc,0x9c,0xaa,0xbc,0xa1,0x50,0x48,0x98,0xfb,0xe8,0xe8,0x8, -: 552: 0xb6,0xb7,0xb7,0x55,0xe5,0xce,0x34,0x24,0x8d,0x99,0x9d,0x9d,0x15,0xb6,0x90,0xca, -: 553: 0xca,0x4a,0x55,0x79,0x5d,0x2e,0x17,0x78,0x3c,0x1e,0xa4,0xcf,0xcc,0xcc,0x90,0x33, -: 554: 0x86,0x5b,0x19,0x51,0xd8,0x18,0xa2,0x24,0xb5,0x32,0xd1,0xd2,0x35,0x91,0x48,0xc0, -: 555: 0xe8,0xe8,0x28,0xd2,0xbd,0x5e,0x2f,0x9c,0x9e,0x9e,0x22,0x7d,0x60,0x60,0x0,0x1a, -: 556: 0x1a,0x1a,0x92,0x34,0x93,0xc9,0x24,0xcc,0xbd,0xb3,0xb3,0x93,0x76,0xc1,0x5a,0x32, -: 557: 0x39,0x39,0x89,0x34,0x2d,0xe7,0xe3,0x8f,0xc7,0x68,0xf4,0xf8,0x24,0x17,0xe5,0xe3, -: 558: 0x4b,0x5a,0xcd,0x7,0xb7,0x32,0xa2,0xb0,0x31,0x44,0xf9,0x72,0xb9,0x1c,0xe,0x87, -: 559: 0x61,0x78,0x78,0x18,0xe9,0xcd,0xcd,0xcd,0xd0,0xde,0xde,0x8e,0x74,0x9f,0xcf,0x7, -: 560: 0x6b,0x6b,0x6b,0x49,0x9a,0xda,0x6f,0x4d,0xa2,0x84,0x96,0xf3,0x91,0xd1,0x23,0xa1, -: 561: 0x5d,0x5d,0x5d,0xaa,0xef,0x5,0x94,0xef,0x31,0x5a,0xcd,0x7,0xb7,0x32,0xa2,0x7c, -: 562: 0xd9,0xca,0x8c,0x46,0x23,0xd4,0xd5,0xd5,0x21,0x5d,0x92,0x24,0xb8,0xbc,0xbc,0x44, -: 563: 0x7a,0x69,0x69,0x29,0x5a,0x1e,0x4a,0x92,0x4,0x8f,0x8f,0x8f,0xdf,0xaf,0x92,0x10, -: 564: 0x5a,0xce,0x7,0x89,0xe5,0xe1,0xe7,0x41,0xb9,0x95,0xf1,0x72,0xf9,0x2f,0x87,0x8d, -: 565: 0x21,0x4a,0xd2,0x3d,0xa6,0xa5,0xa5,0x5,0x5,0x58,0x2c,0x16,0xd8,0xdb,0xdb,0x43, -: 566: 0x7a,0x28,0x14,0x12,0x26,0x3c,0x3b,0x3b,0x83,0xe2,0xe2,0x62,0x14,0x2b,0xca,0x1d, -: 567: 0xc,0x6,0x49,0x7f,0x16,0x5f,0xef,0xf9,0xf8,0xaf,0xaf,0x89,0xd0,0xa3,0xb7,0x53, -: 568: 0xb9,0xc7,0xe8,0x59,0x7,0xb7,0x32,0xa2,0xb0,0x31,0x44,0x21,0xb9,0x83,0xe9,0xf3, -: 569: 0xf9,0xd0,0xe,0xa6,0x24,0x49,0xe0,0x70,0x38,0x54,0xe5,0xad,0xaa,0xaa,0x2,0x9f, -: 570: 0xcf,0x87,0x74,0x8a,0xff,0x57,0x86,0xa4,0x31,0xbd,0xbd,0xbd,0x48,0xb3,0xd9,0x6c, -: 571: 0xaa,0x4f,0xa8,0x78,0x3c,0x1e,0xe8,0xe9,0xe9,0x51,0x95,0x43,0x2b,0xb8,0x95,0x11, -: 572: 0x85,0x8d,0x21,0x4a,0x52,0x2b,0x5b,0x58,0x58,0x40,0x1,0x6f,0x6f,0x6f,0xaa,0x2f, -: 573: 0x72,0x75,0x75,0x25,0xcc,0xbd,0xbb,0xbb,0x9b,0x72,0xe,0x59,0x96,0x85,0x39,0xd2, -: 574: 0x21,0xdd,0xad,0xec,0xc5,0xc5,0x45,0xa4,0x69,0x35,0x1f,0xfc,0x89,0x32,0xa2,0x70, -: 575: 0x2b,0x23,0xa,0x1b,0x43,0x14,0x36,0x86,0x28,0xff,0x0,0xaf,0x31,0xe8,0x2b,0xd7, -: 576: 0xe6,0x96,0x49,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, -: 577: -: 578:}; -: 579: -: 580:static const unsigned char qt_resource_name[] = { -: 581: // images -: 582: 0x0,0x6, -: 583: 0x7,0x3,0x7d,0xc3, -: 584: 0x0,0x69, -: 585: 0x0,0x6d,0x0,0x61,0x0,0x67,0x0,0x65,0x0,0x73, -: 586: // TicTacToeHuman.png -: 587: 0x0,0x12, -: 588: 0x4,0xd4,0x41,0x87, -: 589: 0x0,0x54, -: 590: 0x0,0x69,0x0,0x63,0x0,0x54,0x0,0x61,0x0,0x63,0x0,0x54,0x0,0x6f,0x0,0x65,0x0,0x48,0x0,0x75,0x0,0x6d,0x0,0x61,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e, -: 591: 0x0,0x67, -: 592: // TicTacToeComputer.png -: 593: 0x0,0x15, -: 594: 0xb,0x1d,0x22,0x67, -: 595: 0x0,0x54, -: 596: 0x0,0x69,0x0,0x63,0x0,0x54,0x0,0x61,0x0,0x63,0x0,0x54,0x0,0x6f,0x0,0x65,0x0,0x43,0x0,0x6f,0x0,0x6d,0x0,0x70,0x0,0x75,0x0,0x74,0x0,0x65,0x0,0x72, -: 597: 0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, -: 598: // R.png -: 599: 0x0,0x5, -: 600: 0x0,0x55,0x57,0x47, -: 601: 0x0,0x52, -: 602: 0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, -: 603: // TicTacToeModern.png -: 604: 0x0,0x13, -: 605: 0x1,0xc6,0x40,0xe7, -: 606: 0x0,0x54, -: 607: 0x0,0x69,0x0,0x63,0x0,0x54,0x0,0x61,0x0,0x63,0x0,0x54,0x0,0x6f,0x0,0x65,0x0,0x4d,0x0,0x6f,0x0,0x64,0x0,0x65,0x0,0x72,0x0,0x6e,0x0,0x2e,0x0,0x70, -: 608: 0x0,0x6e,0x0,0x67, -: 609: // TicTacToeX.png -: 610: 0x0,0xe, -: 611: 0xa,0xbf,0xb0,0x87, -: 612: 0x0,0x54, -: 613: 0x0,0x69,0x0,0x63,0x0,0x54,0x0,0x61,0x0,0x63,0x0,0x54,0x0,0x6f,0x0,0x65,0x0,0x58,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, -: 614: // TicTacToeO.png -: 615: 0x0,0xe, -: 616: 0xa,0xb6,0xb0,0x87, -: 617: 0x0,0x54, -: 618: 0x0,0x69,0x0,0x63,0x0,0x54,0x0,0x61,0x0,0x63,0x0,0x54,0x0,0x6f,0x0,0x65,0x0,0x4f,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, -: 619: // TicTacToeRetro.png -: 620: 0x0,0x12, -: 621: 0xc,0x47,0x2f,0x7, -: 622: 0x0,0x54, -: 623: 0x0,0x69,0x0,0x63,0x0,0x54,0x0,0x61,0x0,0x63,0x0,0x54,0x0,0x6f,0x0,0x65,0x0,0x52,0x0,0x65,0x0,0x74,0x0,0x72,0x0,0x6f,0x0,0x2e,0x0,0x70,0x0,0x6e, -: 624: 0x0,0x67, -: 625: -: 626:}; -: 627: -: 628:static const unsigned char qt_resource_struct[] = { -: 629: // : -: 630: 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, -: 631:0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -: 632: // :/images -: 633: 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x2, -: 634:0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, -: 635: // :/images/R.png -: 636: 0x0,0x0,0x0,0x6c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x3,0x90, -: 637:0x0,0x0,0x1,0x76,0xcf,0xa,0x43,0xdd, -: 638: // :/images/TicTacToeModern.png -: 639: 0x0,0x0,0x0,0x7c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x4,0x46, -: 640:0x0,0x0,0x1,0x76,0xcf,0xa,0x43,0xdd, -: 641: // :/images/TicTacToeHuman.png -: 642: 0x0,0x0,0x0,0x12,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, -: 643:0x0,0x0,0x1,0x76,0xcf,0xa,0x43,0xdd, -: 644: // :/images/TicTacToeO.png -: 645: 0x0,0x0,0x0,0xca,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x19,0xd0, -: 646:0x0,0x0,0x1,0x76,0xcf,0xa,0x43,0xdd, -: 647: // :/images/TicTacToeX.png -: 648: 0x0,0x0,0x0,0xa8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x17,0x18, -: 649:0x0,0x0,0x1,0x76,0xcf,0xa,0x43,0xdd, -: 650: // :/images/TicTacToeComputer.png -: 651: 0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x4, -: 652:0x0,0x0,0x1,0x76,0xcf,0xa,0x43,0xdd, -: 653: // :/images/TicTacToeRetro.png -: 654: 0x0,0x0,0x0,0xec,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1c,0x80, -: 655:0x0,0x0,0x1,0x76,0xcf,0xa,0x43,0xdd, -: 656: -: 657:}; -: 658: -: 659:#ifdef QT_NAMESPACE -: 660:# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name -: 661:# define QT_RCC_MANGLE_NAMESPACE0(x) x -: 662:# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b -: 663:# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b) -: 664:# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \ -: 665: QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE)) -: 666:#else -: 667:# define QT_RCC_PREPEND_NAMESPACE(name) name -: 668:# define QT_RCC_MANGLE_NAMESPACE(name) name -: 669:#endif -: 670: -: 671:#ifdef QT_NAMESPACE -: 672:namespace QT_NAMESPACE { -: 673:#endif -: 674: -: 675:bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); -: 676: -: 677:bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); -: 678: -: 679:#ifdef QT_NAMESPACE -: 680:} -: 681:#endif -: 682: -: 683:int QT_RCC_MANGLE_NAMESPACE(qInitResources_TicTacToe)(); function _Z24qInitResources_TicTacToev called 1 returned 100% blocks executed 100% 1: 684:int QT_RCC_MANGLE_NAMESPACE(qInitResources_TicTacToe)() -: 685:{ -: 686: QT_RCC_PREPEND_NAMESPACE(qRegisterResourceData) 1: 687: (0x2, qt_resource_struct, qt_resource_name, qt_resource_data); call 0 returned 100% 1: 688: return 1; -: 689:} -: 690: -: 691:int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_TicTacToe)(); function _Z27qCleanupResources_TicTacToev called 1 returned 100% blocks executed 100% 1: 692:int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_TicTacToe)() -: 693:{ -: 694: QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData) 1: 695: (0x2, qt_resource_struct, qt_resource_name, qt_resource_data); call 0 returned 100% 1: 696: return 1; -: 697:} -: 698: -: 699:namespace { -: 700: struct initializer { function _ZN12_GLOBAL__N_111initializerC2Ev called 1 returned 100% blocks executed 100% 1: 701: initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_TicTacToe)(); } call 0 returned 100% function _ZN12_GLOBAL__N_111initializerD2Ev called 1 returned 100% blocks executed 100% 1: 702: ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_TicTacToe)(); } call 0 returned 100% 1: 703: } dummy; call 0 returned 100% call 1 returned 100% function _GLOBAL__sub_I_qrc_TicTacToe.cpp called 1 returned 100% blocks executed 100% function _Z41__static_initialization_and_destruction_0ii called 1 returned 100% blocks executed 100% 3: 704:} call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% branch 3 taken 100% (fallthrough) branch 4 taken 0% <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#multi_array#storage_order.hpp.gcov -: 0:Source:/usr/include/boost/multi_array/storage_order.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Copyright 2002 The Trustees of Indiana University. -: 2: -: 3:// Use, modification and distribution is subject to the Boost Software -: 4:// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at -: 5:// http://www.boost.org/LICENSE_1_0.txt) -: 6: -: 7:// Boost.MultiArray Library -: 8:// Authors: Ronald Garcia -: 9:// Jeremy Siek -: 10:// Andrew Lumsdaine -: 11:// See http://www.boost.org/libs/multi_array for documentation. -: 12: -: 13:#ifndef BOOST_STORAGE_ORDER_RG071801_HPP -: 14:#define BOOST_STORAGE_ORDER_RG071801_HPP -: 15: -: 16:#include "boost/multi_array/types.hpp" -: 17:#include "boost/array.hpp" -: 18:#include "boost/multi_array/algorithm.hpp" -: 19:#include -: 20:#include -: 21:#include -: 22:#include -: 23:#include -: 24: -: 25:namespace boost { -: 26: -: 27: // RG - This is to make things work with VC++. So sad, so sad. -: 28: class c_storage_order; -: 29: class fortran_storage_order; -: 30: -: 31: template -: 32: class general_storage_order -: 33: { -: 34: public: -: 35: typedef detail::multi_array::size_type size_type; -: 36: template -: 37: general_storage_order(OrderingIter ordering, -: 38: AscendingIter ascending) { -: 39: boost::detail::multi_array::copy_n(ordering,NumDims,ordering_.begin()); -: 40: boost::detail::multi_array::copy_n(ascending,NumDims,ascending_.begin()); -: 41: } -: 42: -: 43: // RG - ideally these would not be necessary, but some compilers -: 44: // don't like template conversion operators. I suspect that not -: 45: // too many folk will feel the need to use customized -: 46: // storage_order objects, I sacrifice that feature for compiler support. function _ZN5boost21general_storage_orderILm2EEC2ERKNS_15c_storage_orderE called 19742 returned 100% blocks executed 100% 19742: 47: general_storage_order(const c_storage_order&) { call 0 returned 100% 59226: 48: for (size_type i=0; i != NumDims; ++i) { branch 0 taken 67% (fallthrough) branch 1 taken 33% 39484: 49: ordering_[i] = NumDims - 1 - i; call 0 returned 100% call 1 returned 100% call 2 returned 100% -: 50: } 19742: 51: ascending_.assign(true); call 0 returned 100% call 1 returned 100% branch 2 taken 100% (fallthrough) branch 3 taken 0% (throw) 19742: 52: } -: 53: -: 54: general_storage_order(const fortran_storage_order&) { -: 55: for (size_type i=0; i != NumDims; ++i) { -: 56: ordering_[i] = i; -: 57: } -: 58: ascending_.assign(true); -: 59: } -: 60: function _ZNK5boost21general_storage_orderILm2EE8orderingEm called 118452 returned 100% blocks executed 100% 118452: 61: size_type ordering(size_type dim) const { return ordering_[dim]; } call 0 returned 100% call 1 returned 100% call 2 returned 100% function _ZNK5boost21general_storage_orderILm2EE9ascendingEm called 39484 returned 100% blocks executed 86% 39484: 62: bool ascending(size_type dim) const { return ascending_[dim]; } call 0 returned 100% call 1 returned 100% call 2 returned 100% branch 3 taken 0% (fallthrough) branch 4 taken 100% -: 63: function _ZNK5boost21general_storage_orderILm2EE18all_dims_ascendingEv called 39484 returned 100% blocks executed 100% 39484: 64: bool all_dims_ascending() const { 39484: 65: return std::accumulate(ascending_.begin(),ascending_.end(),true, call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% 39484: 66: std::logical_and()); call 0 returned 100% -: 67: } -: 68: -: 69: bool operator==(general_storage_order const& rhs) const { -: 70: return (ordering_ == rhs.ordering_) && -: 71: (ascending_ == rhs.ascending_); -: 72: } -: 73: -: 74: protected: -: 75: boost::array ordering_; -: 76: boost::array ascending_; -: 77: }; -: 78: -: 79: class c_storage_order -: 80: { -: 81: typedef detail::multi_array::size_type size_type; -: 82: public: -: 83: // This is the idiom for creating your own custom storage orders. -: 84: // Not supported by all compilers though! -: 85:#ifndef __MWERKS__ // Metrowerks screams "ambiguity!" -: 86: template -: 87: operator general_storage_order() const { -: 88: boost::array ordering; -: 89: boost::array ascending; -: 90: -: 91: for (size_type i=0; i != NumDims; ++i) { -: 92: ordering[i] = NumDims - 1 - i; -: 93: ascending[i] = true; -: 94: } -: 95: return general_storage_order(ordering.begin(), -: 96: ascending.begin()); -: 97: } -: 98:#endif -: 99: }; -: 100: -: 101: class fortran_storage_order -: 102: { -: 103: typedef detail::multi_array::size_type size_type; -: 104: public: -: 105: // This is the idiom for creating your own custom storage orders. -: 106: // Not supported by all compilers though! -: 107:#ifndef __MWERKS__ // Metrowerks screams "ambiguity!" -: 108: template -: 109: operator general_storage_order() const { -: 110: boost::array ordering; -: 111: boost::array ascending; -: 112: -: 113: for (size_type i=0; i != NumDims; ++i) { -: 114: ordering[i] = i; -: 115: ascending[i] = true; -: 116: } -: 117: return general_storage_order(ordering.begin(), -: 118: ascending.begin()); -: 119: } -: 120:#endif -: 121: }; -: 122: -: 123:} // namespace boost -: 124: -: 125:#endif // BOOST_ARRAY_STORAGE_RG071801_HPP <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#xpressive#detail#core#matcher#optional_matcher.hpp.gcov -: 0:Source:/usr/include/boost/xpressive/detail/core/matcher/optional_matcher.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1://///////////////////////////////////////////////////////////////////////////// -: 2:// optional_matcher.hpp -: 3:// -: 4:// Copyright 2008 Eric Niebler. Distributed under the Boost -: 5:// Software License, Version 1.0. (See accompanying file -: 6:// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -: 7: -: 8:#ifndef BOOST_XPRESSIVE_DETAIL_CORE_MATCHER_OPTIONAL_MATCHER_HPP_EAN_10_04_2005 -: 9:#define BOOST_XPRESSIVE_DETAIL_CORE_MATCHER_OPTIONAL_MATCHER_HPP_EAN_10_04_2005 -: 10: -: 11:// MS compatible compilers support #pragma once -: 12:#if defined(_MSC_VER) -: 13:# pragma once -: 14:#endif -: 15: -: 16:#include -: 17:#include -: 18:#include -: 19:#include -: 20: -: 21:namespace boost { namespace xpressive { namespace detail -: 22:{ -: 23: -: 24: /////////////////////////////////////////////////////////////////////////////// -: 25: // optional_matcher -: 26: template function _ZN5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEEC2ERKSJ_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEEC2ERKSJ_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEED2Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEED2Ev called 0 returned 0% blocks executed 0% #####: 27: struct optional_matcher call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed -: 28: : quant_style -: 29: { -: 30: Xpr xpr_; -: 31: function _ZN5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEEC2ERKSF_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEEC2ERKSF_ called 0 returned 0% blocks executed 0% #####: 32: explicit optional_matcher(Xpr const &xpr) call 0 never executed call 1 never executed #####: 33: : xpr_(xpr) call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 34: { #####: 35: } -: 36: -: 37: template function _ZNK5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEE5matchISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_ called 0 returned 0% blocks executed 0% function _ZNK5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEE5matchISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_ called 0 returned 0% blocks executed 0% #####: 38: bool match(match_state &state, Next const &next) const -: 39: { #####: 40: return this->match_(state, next, Greedy()); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed -: 41: } -: 42: -: 43: private: -: 44: template function _ZNK5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEE6match_ISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_SI_ called 0 returned 0% blocks executed 0% #####: 45: bool match_(match_state &state, Next const &next, mpl::true_) const // Greedy -: 46: { -: 47: return this->xpr_.BOOST_NESTED_TEMPLATE push_match(state) #####: 48: || next.match(state); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed branch 10 never executed branch 11 never executed -: 49: } -: 50: -: 51: template function _ZNK5boost9xpressive6detail16optional_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEE6match_ISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_SI_ called 0 returned 0% blocks executed 0% #####: 52: bool match_(match_state &state, Next const &next, mpl::false_) const // Non-greedy -: 53: { -: 54: return next.match(state) #####: 55: || this->xpr_.BOOST_NESTED_TEMPLATE push_match(state); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed call 8 never executed call 9 never executed branch 10 never executed branch 11 never executed -: 56: } -: 57: -: 58: optional_matcher &operator =(optional_matcher const &); -: 59: }; -: 60: -: 61: /////////////////////////////////////////////////////////////////////////////// -: 62: // optional_mark_matcher -: 63: template function _ZN5boost9xpressive6detail10match_nextIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_12matchable_exISD_EEEEbRNS1_11match_stateIT_EERKT0_i called 0 returned 0% blocks executed 0% #####: 64: inline bool match_next(match_state &state, Next const &next, int mark_number) -: 65: { #####: 66: sub_match_impl &br = state.sub_match(mark_number); call 0 never executed call 1 never executed call 2 never executed -: 67: #####: 68: bool old_matched = br.matched; call 0 never executed branch 1 never executed branch 2 never executed #####: 69: br.matched = false; call 0 never executed -: 70: #####: 71: if(next.match(state)) call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed -: 72: { #####: 73: return true; -: 74: } -: 75: #####: 76: br.matched = old_matched; call 0 never executed #####: 77: return false; -: 78: } -: 79: -: 80: /////////////////////////////////////////////////////////////////////////////// -: 81: // optional_mark_matcher -: 82: template function _ZN5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEEC2ERKSJ_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEEC2ERKSJ_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEED2Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEED2Ev called 0 returned 0% blocks executed 0% #####: 83: struct optional_mark_matcher call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed -: 84: : quant_style -: 85: { -: 86: Xpr xpr_; -: 87: int mark_number_; -: 88: function _ZN5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEEC2ERKSF_i called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEEC2ERKSF_i called 0 returned 0% blocks executed 0% #####: 89: explicit optional_mark_matcher(Xpr const &xpr, int mark_number) call 0 never executed call 1 never executed -: 90: : xpr_(xpr) #####: 91: , mark_number_(mark_number) call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 92: { #####: 93: } -: 94: -: 95: template function _ZNK5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEE5matchISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_ called 0 returned 0% blocks executed 0% function _ZNK5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEE5matchISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_ called 0 returned 0% blocks executed 0% #####: 96: bool match(match_state &state, Next const &next) const -: 97: { #####: 98: return this->match_(state, next, Greedy()); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed -: 99: } -: 100: -: 101: private: -: 102: template function _ZNK5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb1EEEE6match_ISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_SI_ called 0 returned 0% blocks executed 0% #####: 103: bool match_(match_state &state, Next const &next, mpl::true_) const // Greedy -: 104: { -: 105: return this->xpr_.BOOST_NESTED_TEMPLATE push_match(state) #####: 106: || match_next(state, next, this->mark_number_); call 0 never executed call 1 never executed branch 2 never executed branch 3 never executed call 4 never executed call 5 never executed branch 6 never executed branch 7 never executed -: 107: } -: 108: -: 109: template function _ZNK5boost9xpressive6detail21optional_mark_matcherINS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEEN4mpl_5bool_ILb0EEEE6match_ISE_NS1_12matchable_exISE_EEEEbRNS1_11match_stateIT_EERKT0_SI_ called 0 returned 0% blocks executed 0% #####: 110: bool match_(match_state &state, Next const &next, mpl::false_) const // Non-greedy -: 111: { #####: 112: return match_next(state, next, this->mark_number_) call 0 never executed call 1 never executed #####: 113: || this->xpr_.BOOST_NESTED_TEMPLATE push_match(state); branch 0 never executed branch 1 never executed call 2 never executed call 3 never executed branch 4 never executed branch 5 never executed -: 114: } -: 115: -: 116: optional_mark_matcher &operator =(optional_mark_matcher const &); -: 117: }; -: 118: -: 119:}}} -: 120: -: 121:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/^#RibiClasses#CppCanvas#canvas.h.gcov -: 0:Source:../RibiClasses/CppCanvas/canvas.h -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/textcanvas.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/textcanvas.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#ifndef RIBI_CANVAS_H -: 2:#define RIBI_CANVAS_H -: 3: -: 4:#include -: 5:#include -: 6:#include -: 7: -: 8: -: 9: -: 10: -: 11:#include "canvascolorsystem.h" -: 12:#include "canvascoordinatsystem.h" -: 13: -: 14: -: 15:struct QRegExp; -: 16: -: 17:namespace ribi { -: 18: -: 19:///A Canvas is an ASCII art class for drawing (DrawCanvas), -: 20:///displaying images (ImageCanvas) and displaying text (TextCanvas) -: 21:struct Canvas -: 22:{ -: 23: Canvas(); function _ZN4ribi6CanvasD0Ev called 0 returned 0% blocks executed 0% function _ZN4ribi6CanvasD2Ev called 0 returned 0% blocks executed 0% #####: 24: virtual ~Canvas() noexcept {} call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 25: -: 26: //From http://www.richelbilderbeek.nl/CppGetAsciiArtGradient.htm -: 27: static std::vector GetAsciiArtGradient() noexcept; -: 28: -: 29: ///Obtain the height of the canvas is characters -: 30: virtual int GetHeight() const noexcept = 0; -: 31: -: 32: ///Obtain the version of this class -: 33: static std::string GetVersion() noexcept; -: 34: -: 35: ///Obtain the version history of this class -: 36: static std::vector GetVersionHistory() noexcept; -: 37: -: 38: ///Obtain the width of the canvas is characters -: 39: virtual int GetWidth() const noexcept = 0; -: 40: -: 41: ///Load a Canvas from std::strings -: 42: ///DON'T: make it a constructor instead -: 43: ///virtual void Load(const std::vector& v) = 0; -: 44: -: 45: ///Convert the Canvas to std::strings -: 46: virtual std::vector ToStrings() const noexcept = 0; -: 47: -: 48: private: -: 49: -: 50: ///Check if a coordinat is in the range of the Canvas -: 51: bool IsInRange(const int x, const int y) const; -: 52: -: 53: //Obtains the minimum element of a 2D container -: 54: //From http://www.richelbilderbeek.nl/CppMinElement.htm -: 55: template -: 56: static typename Container::value_type::value_type MinElement(const Container& v); -: 57: -: 58: //Obtains the maximal element of a 2D container -: 59: //From http://www.richelbilderbeek.nl/CppMaxElement.htm -: 60: template -: 61: static typename Container::value_type::value_type MaxElement(const Container& v); -: 62:}; -: 63: -: 64:} //~namespace ribi -: 65: -: 66:#endif // RIBI_CANVAS_H <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/tictactoeboard_test.cpp.gcov -: 0:Source:tictactoeboard_test.cpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard_test.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard_test.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#include "tictactoeboard.h" -: 2:#include "tictactoehelper.h" -: 3: -: 4:#include -: 5: -: 6:using namespace ribi::tictactoe; -: 7: function _ZN15tictactoe_board11test_methodEv called 1 returned 100% blocks executed 78% function _ZL23tictactoe_board_invokerv called 1 returned 100% blocks executed 74% 3: 8:BOOST_AUTO_TEST_CASE(tictactoe_board) call 0 returned 100% call 1 returned 100% call 2 returned 100% branch 3 taken 100% (fallthrough) branch 4 taken 0% (throw) call 5 returned 100% branch 6 taken 100% (fallthrough) branch 7 taken 0% (throw) call 8 returned 100% call 9 returned 100% branch 10 taken 100% (fallthrough) branch 11 taken 0% (throw) call 12 returned 100% branch 13 taken 100% (fallthrough) branch 14 taken 0% (throw) call 15 returned 100% call 16 returned 100% call 17 never executed call 18 never executed call 19 returned 100% call 20 returned 100% call 21 returned 100% call 22 returned 100% branch 23 taken 100% (fallthrough) branch 24 taken 0% (throw) call 25 returned 100% call 26 returned 100% call 27 returned 100% branch 28 taken 100% (fallthrough) branch 29 taken 0% (throw) call 30 returned 100% branch 31 taken 100% (fallthrough) branch 32 taken 0% (throw) call 33 returned 100% branch 34 taken 100% (fallthrough) branch 35 taken 0% (throw) call 36 returned 100% call 37 returned 100% branch 38 taken 100% (fallthrough) branch 39 taken 0% (throw) call 40 returned 100% call 41 returned 100% call 42 returned 100% call 43 returned 100% branch 44 taken 100% (fallthrough) branch 45 taken 0% (throw) call 46 returned 100% call 47 returned 100% call 48 returned 100% call 49 returned 100% call 50 returned 100% branch 51 taken 100% (fallthrough) branch 52 taken 0% (throw) call 53 returned 100% call 54 returned 100% call 55 returned 100% branch 56 taken 100% (fallthrough) branch 57 taken 0% (throw) call 58 returned 100% branch 59 taken 100% (fallthrough) branch 60 taken 0% (throw) call 61 returned 100% branch 62 taken 100% (fallthrough) branch 63 taken 0% (throw) call 64 returned 100% call 65 returned 100% branch 66 taken 100% (fallthrough) branch 67 taken 0% (throw) call 68 returned 100% call 69 returned 100% call 70 returned 100% call 71 returned 100% branch 72 taken 100% (fallthrough) branch 73 taken 0% (throw) call 74 returned 100% call 75 returned 100% branch 76 taken 100% (fallthrough) branch 77 taken 0% (throw) call 78 returned 100% call 79 returned 100% call 80 returned 100% call 81 returned 100% branch 82 taken 100% (fallthrough) branch 83 taken 0% (throw) call 84 returned 100% call 85 returned 100% call 86 returned 100% branch 87 taken 100% (fallthrough) branch 88 taken 0% (throw) call 89 returned 100% branch 90 taken 100% (fallthrough) branch 91 taken 0% (throw) call 92 returned 100% branch 93 taken 100% (fallthrough) branch 94 taken 0% (throw) call 95 returned 100% call 96 returned 100% branch 97 taken 100% (fallthrough) branch 98 taken 0% (throw) call 99 returned 100% call 100 returned 100% call 101 returned 100% call 102 returned 100% branch 103 taken 100% (fallthrough) branch 104 taken 0% (throw) call 105 returned 100% call 106 returned 100% branch 107 taken 100% (fallthrough) branch 108 taken 0% (throw) call 109 returned 100% call 110 returned 100% call 111 returned 100% call 112 returned 100% branch 113 taken 100% (fallthrough) branch 114 taken 0% (throw) call 115 returned 100% call 116 returned 100% call 117 returned 100% branch 118 taken 100% (fallthrough) branch 119 taken 0% (throw) call 120 returned 100% branch 121 taken 100% (fallthrough) branch 122 taken 0% (throw) call 123 returned 100% branch 124 taken 100% (fallthrough) branch 125 taken 0% (throw) call 126 returned 100% call 127 returned 100% branch 128 taken 100% (fallthrough) branch 129 taken 0% (throw) call 130 returned 100% call 131 returned 100% call 132 returned 100% call 133 returned 100% branch 134 taken 100% (fallthrough) branch 135 taken 0% (throw) call 136 returned 100% call 137 returned 100% branch 138 taken 100% (fallthrough) branch 139 taken 0% (throw) call 140 returned 100% call 141 returned 100% call 142 returned 100% call 143 returned 100% branch 144 taken 100% (fallthrough) branch 145 taken 0% (throw) call 146 returned 100% call 147 returned 100% call 148 returned 100% branch 149 taken 100% (fallthrough) branch 150 taken 0% (throw) call 151 returned 100% branch 152 taken 100% (fallthrough) branch 153 taken 0% (throw) call 154 returned 100% branch 155 taken 100% (fallthrough) branch 156 taken 0% (throw) call 157 returned 100% call 158 returned 100% branch 159 taken 100% (fallthrough) branch 160 taken 0% (throw) call 161 returned 100% call 162 returned 100% call 163 returned 100% call 164 returned 100% branch 165 taken 100% (fallthrough) branch 166 taken 0% (throw) call 167 returned 100% call 168 never executed call 169 never executed call 170 never executed call 171 never executed call 172 never executed -: 9:{ -: 10: { -: 11: //Check empty board state -: 12: { 2: 13: Board t; call 0 returned 100% call 1 returned 100% call 2 never executed call 3 never executed 1: 14: const int s = t.GetSummarizedState(); call 0 returned 100% 2: 15: Board u(s); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% (throw) call 3 returned 100% 1: 16: assert(u == t); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 17: } -: 18: //Check one-move states 10: 19: for (int i=0; i!=9; ++i) branch 0 taken 90% (fallthrough) branch 1 taken 10% -: 20: { 18: 21: Board t; call 0 returned 100% call 1 returned 100% call 2 never executed call 3 never executed 9: 22: t.DoMove(i/3,i%3,Player::player1); call 0 returned 100% 9: 23: const int s = t.GetSummarizedState(); call 0 returned 100% 18: 24: Board u(s); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% (throw) call 3 returned 100% 9: 25: assert(u == t); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 26: } -: 27: //Check two-move states 9: 28: for (int i=0; i!=8; ++i) branch 0 taken 89% (fallthrough) branch 1 taken 11% -: 29: { 16: 30: Board t; call 0 returned 100% call 1 returned 100% call 2 never executed call 3 never executed branch 4 never executed branch 5 never executed call 6 never executed 8: 31: t.DoMove(i/3,i%3,Player::player1); call 0 returned 100% 8: 32: t.DoMove(i/3,(i+1)%3,Player::player2); call 0 returned 100% 8: 33: const int s = t.GetSummarizedState(); call 0 returned 100% 16: 34: Board u(s); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% (throw) call 3 returned 100% 8: 35: assert(u == t); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 36: } -: 37: //Check draw detection -: 38: { 2: 39: Board t; call 0 returned 100% call 1 returned 100% 1: 40: t.DoMove(1,1,Player::player1); call 0 returned 100% 1: 41: t.DoMove(0,0,Player::player2); call 0 returned 100% 1: 42: t.DoMove(1,2,Player::player1); call 0 returned 100% 1: 43: t.DoMove(1,0,Player::player2); call 0 returned 100% 1: 44: t.DoMove(2,0,Player::player1); call 0 returned 100% 1: 45: t.DoMove(0,2,Player::player2); call 0 returned 100% 1: 46: t.DoMove(0,1,Player::player1); call 0 returned 100% 1: 47: t.DoMove(2,1,Player::player2); call 0 returned 100% 1: 48: t.DoMove(2,2,Player::player1); call 0 returned 100% 1: 49: assert(t.GetWinner() == Winner::draw); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 50: } -: 51: //Check player1 wins horizontally detection -: 52: { 2: 53: Board t; call 0 returned 100% call 1 returned 100% 1: 54: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 55: t.DoMove(0,0,Player::player1); call 0 returned 100% 1: 56: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 57: t.DoMove(1,0,Player::player2); call 0 returned 100% 1: 58: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 59: t.DoMove(0,1,Player::player1); call 0 returned 100% 1: 60: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 61: t.DoMove(1,1,Player::player2); call 0 returned 100% 1: 62: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 63: t.DoMove(0,2,Player::player1); call 0 returned 100% 1: 64: assert(t.GetWinner() == Winner::player1); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 65: } -: 66: //Check player2 wins vertically detection -: 67: { 2: 68: Board t; call 0 returned 100% call 1 returned 100% 1: 69: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 70: t.DoMove(0,0,Player::player1); call 0 returned 100% 1: 71: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 72: t.DoMove(1,0,Player::player2); call 0 returned 100% 1: 73: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 74: t.DoMove(0,1,Player::player1); call 0 returned 100% 1: 75: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 76: t.DoMove(1,1,Player::player2); call 0 returned 100% 1: 77: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 78: t.DoMove(2,2,Player::player1); call 0 returned 100% 1: 79: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 80: t.DoMove(1,2,Player::player2); call 0 returned 100% 1: 81: assert(t.GetWinner() == Winner::player2); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 82: } -: 83: //Check player1 wins diagonally detection -: 84: { 2: 85: Board t; call 0 returned 100% call 1 returned 100% 1: 86: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 87: t.DoMove(0,0,Player::player1); call 0 returned 100% 1: 88: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 89: t.DoMove(1,0,Player::player2); call 0 returned 100% 1: 90: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 91: t.DoMove(1,1,Player::player1); call 0 returned 100% 1: 92: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 93: t.DoMove(1,2,Player::player2); call 0 returned 100% 1: 94: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed 1: 95: t.DoMove(2,2,Player::player1); call 0 returned 100% 1: 96: assert(t.GetWinner() == Winner::player1); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 97: } -: 98: //Check no-winner detection -: 99: { 2: 100: Board t; call 0 returned 100% call 1 returned 100% 1: 101: t.DoMove(1,1,Player::player1); call 0 returned 100% 1: 102: t.DoMove(0,0,Player::player2); call 0 returned 100% 1: 103: t.DoMove(1,2,Player::player1); call 0 returned 100% 1: 104: t.DoMove(1,0,Player::player2); call 0 returned 100% 1: 105: t.DoMove(2,0,Player::player1); call 0 returned 100% 1: 106: t.DoMove(0,2,Player::player2); call 0 returned 100% 1: 107: t.DoMove(0,1,Player::player1); call 0 returned 100% 1: 108: t.DoMove(2,1,Player::player2); call 0 returned 100% -: 109: //t.DoMove(2,2); //Final move to make a draw 1: 110: assert(t.GetWinner() == Winner::no_winner); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 111: } -: 112: //Check CanDoMove 10: 113: for (int i=0; i!=9; ++i) branch 0 taken 90% (fallthrough) branch 1 taken 10% -: 114: { 18: 115: Board t; call 0 returned 100% call 1 returned 100% 9: 116: t.DoMove(i/3,i%3,Player::player1); call 0 returned 100% 9: 117: assert(!t.CanDoMove(i/3,i%3)); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 118: } -: 119: //Check all states 19684: 120: for (int i=0; i!=Helper().IntPower(3,9); ++i) call 0 returned 100% call 1 returned 100% branch 2 taken 99% (fallthrough) branch 3 taken 1% -: 121: { -: 122: try -: 123: { 39366: 124: Board t(i); call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% (throw) call 3 returned 100% 19683: 125: assert(t.GetSummarizedState() == i); call 0 returned 100% branch 1 taken 0% (fallthrough) branch 2 taken 100% call 3 never executed -: 126: } =====: 127: catch (std::exception&) call 0 never executed call 1 never executed -: 128: { -: 129: //No problem -: 130: } -: 131: } -: 132: } function _GLOBAL__sub_I_tictactoeboard_test.cpp called 1 returned 100% blocks executed 100% function _Z41__static_initialization_and_destruction_0ii called 1 returned 100% blocks executed 81% 4: 133:} call 0 returned 100% branch 1 taken 100% (fallthrough) branch 2 taken 0% branch 3 taken 100% (fallthrough) branch 4 taken 0% -: 134: <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#type_index#stl_type_index.hpp.gcov -: 0:Source:/usr/include/boost/type_index/stl_type_index.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard_test.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard_test.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// -: 2:// Copyright (c) Antony Polukhin, 2013-2017. -: 3:// -: 4:// -: 5:// Distributed under the Boost Software License, Version 1.0. (See accompanying -: 6:// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -: 7:// -: 8: -: 9:#ifndef BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP -: 10:#define BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP -: 11: -: 12:/// \file stl_type_index.hpp -: 13:/// \brief Contains boost::typeindex::stl_type_index class. -: 14:/// -: 15:/// boost::typeindex::stl_type_index class can be used as a drop-in replacement -: 16:/// for std::type_index. -: 17:/// -: 18:/// It is used in situations when RTTI is enabled or typeid() method is available. -: 19:/// When typeid() is disabled or BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY macro -: 20:/// is defined boost::typeindex::ctti is usually used instead of boost::typeindex::stl_type_index. -: 21: -: 22:#include -: 23: -: 24:// MSVC is capable of calling typeid(T) even when RTTI is off -: 25:#if defined(BOOST_NO_RTTI) && !defined(BOOST_MSVC) -: 26:#error "File boost/type_index/stl_type_index.ipp is not usable when typeid() is not available." -: 27:#endif -: 28: -: 29:#include -: 30:#include // std::strcmp, std::strlen, std::strstr -: 31:#include -: 32:#include -: 33:#include -: 34:#include -: 35:#include -: 36:#include -: 37:#include -: 38:#include -: 39:#include -: 40:#include -: 41:#include -: 42: -: 43:#if !((defined(_MSC_VER) && _MSC_VER > 1600) \ -: 44: || (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ > 5 && defined(__GXX_EXPERIMENTAL_CXX0X__)) \ -: 45: || (defined(__GNUC__) && __GNUC__ > 4 && __cplusplus >= 201103 )) -: 46:# include -: 47:#endif -: 48: -: 49:#if (defined(__EDG_VERSION__) && __EDG_VERSION__ < 245) \ -: 50: || (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 744) -: 51:# include -: 52:# include -: 53:# include -: 54:#endif -: 55: -: 56:#ifdef BOOST_HAS_PRAGMA_ONCE -: 57:# pragma once -: 58:#endif -: 59: -: 60:namespace boost { namespace typeindex { -: 61: -: 62:/// \class stl_type_index -: 63:/// This class is a wrapper around std::type_info, that workarounds issues and provides -: 64:/// much more rich interface. \b For \b description \b of \b functions \b see type_index_facade. -: 65:/// -: 66:/// This class requires typeid() to work. For cases when RTTI is disabled see ctti_type_index. -: 67:class stl_type_index -: 68: : public type_index_facade< -: 69: stl_type_index, -: 70: #ifdef BOOST_NO_STD_TYPEINFO -: 71: type_info -: 72: #else -: 73: std::type_info -: 74: #endif -: 75: > -: 76:{ -: 77:public: -: 78:#ifdef BOOST_NO_STD_TYPEINFO -: 79: typedef type_info type_info_t; -: 80:#else -: 81: typedef std::type_info type_info_t; -: 82:#endif -: 83: -: 84:private: -: 85: const type_info_t* data_; -: 86: -: 87:public: -: 88: inline stl_type_index() BOOST_NOEXCEPT -: 89: : data_(&typeid(void)) -: 90: {} -: 91: function _ZN5boost9typeindex14stl_type_indexC2ERKSt9type_info called 0 returned 0% blocks executed 0% #####: 92: inline stl_type_index(const type_info_t& data) BOOST_NOEXCEPT #####: 93: : data_(&data) call 0 never executed call 1 never executed #####: 94: {} -: 95: -: 96: inline const type_info_t& type_info() const BOOST_NOEXCEPT; -: 97: -: 98: inline const char* raw_name() const BOOST_NOEXCEPT; -: 99: inline const char* name() const BOOST_NOEXCEPT; -: 100: inline std::string pretty_name() const; -: 101: -: 102: inline std::size_t hash_code() const BOOST_NOEXCEPT; -: 103: inline bool equal(const stl_type_index& rhs) const BOOST_NOEXCEPT; -: 104: inline bool before(const stl_type_index& rhs) const BOOST_NOEXCEPT; -: 105: -: 106: template -: 107: inline static stl_type_index type_id() BOOST_NOEXCEPT; -: 108: -: 109: template -: 110: inline static stl_type_index type_id_with_cvr() BOOST_NOEXCEPT; -: 111: -: 112: template -: 113: inline static stl_type_index type_id_runtime(const T& value) BOOST_NOEXCEPT; -: 114:}; -: 115: function _ZNK5boost9typeindex14stl_type_index9type_infoEv called 0 returned 0% blocks executed 0% #####: 116:inline const stl_type_index::type_info_t& stl_type_index::type_info() const BOOST_NOEXCEPT { #####: 117: return *data_; call 0 never executed call 1 never executed call 2 never executed -: 118:} -: 119: -: 120: -: 121:inline const char* stl_type_index::raw_name() const BOOST_NOEXCEPT { -: 122:#ifdef _MSC_VER -: 123: return data_->raw_name(); -: 124:#else -: 125: return data_->name(); -: 126:#endif -: 127:} -: 128: -: 129:inline const char* stl_type_index::name() const BOOST_NOEXCEPT { -: 130: return data_->name(); -: 131:} -: 132: -: 133:inline std::string stl_type_index::pretty_name() const { -: 134: static const char cvr_saver_name[] = "boost::typeindex::detail::cvr_saver<"; -: 135: static BOOST_CONSTEXPR_OR_CONST std::string::size_type cvr_saver_name_len = sizeof(cvr_saver_name) - 1; -: 136: -: 137: // In case of MSVC demangle() is a no-op, and name() already returns demangled name. -: 138: // In case of GCC and Clang (on non-Windows systems) name() returns mangled name and demangle() undecorates it. -: 139: const boost::core::scoped_demangled_name demangled_name(data_->name()); -: 140: -: 141: const char* begin = demangled_name.get(); -: 142: if (!begin) { -: 143: boost::throw_exception(std::runtime_error("Type name demangling failed")); -: 144: } -: 145: -: 146: const std::string::size_type len = std::strlen(begin); -: 147: const char* end = begin + len; -: 148: -: 149: if (len > cvr_saver_name_len) { -: 150: const char* b = std::strstr(begin, cvr_saver_name); -: 151: if (b) { -: 152: b += cvr_saver_name_len; -: 153: -: 154: // Trim leading spaces -: 155: while (*b == ' ') { // the string is zero terminated, we won't exceed the buffer size -: 156: ++ b; -: 157: } -: 158: -: 159: // Skip the closing angle bracket -: 160: const char* e = end - 1; -: 161: while (e > b && *e != '>') { -: 162: -- e; -: 163: } -: 164: -: 165: // Trim trailing spaces -: 166: while (e > b && *(e - 1) == ' ') { -: 167: -- e; -: 168: } -: 169: -: 170: if (b < e) { -: 171: // Parsing seems to have succeeded, the type name is not empty -: 172: begin = b; -: 173: end = e; -: 174: } -: 175: } -: 176: } -: 177: -: 178: return std::string(begin, end); -: 179:} -: 180: -: 181: -: 182:inline std::size_t stl_type_index::hash_code() const BOOST_NOEXCEPT { -: 183:#if (defined(_MSC_VER) && _MSC_VER > 1600) \ -: 184: || (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ > 5 && defined(__GXX_EXPERIMENTAL_CXX0X__)) \ -: 185: || (defined(__GNUC__) && __GNUC__ > 4 && __cplusplus >= 201103) -: 186: return data_->hash_code(); -: 187:#else -: 188: return boost::hash_range(raw_name(), raw_name() + std::strlen(raw_name())); -: 189:#endif -: 190:} -: 191: -: 192: -: 193:/// @cond -: 194: -: 195:// for this compiler at least, cross-shared-library type_info -: 196:// comparisons don't work, so we are using typeid(x).name() instead. -: 197:# if (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5))) \ -: 198: || defined(_AIX) \ -: 199: || (defined(__sgi) && defined(__host_mips)) \ -: 200: || (defined(__hpux) && defined(__HP_aCC)) \ -: 201: || (defined(linux) && defined(__INTEL_COMPILER) && defined(__ICC)) -: 202:# define BOOST_CLASSINFO_COMPARE_BY_NAMES -: 203:# endif -: 204: -: 205:/// @endcond -: 206: function _ZNK5boost9typeindex14stl_type_index5equalERKS1_ called 0 returned 0% blocks executed 0% #####: 207:inline bool stl_type_index::equal(const stl_type_index& rhs) const BOOST_NOEXCEPT { -: 208:#ifdef BOOST_CLASSINFO_COMPARE_BY_NAMES -: 209: return raw_name() == rhs.raw_name() || !std::strcmp(raw_name(), rhs.raw_name()); -: 210:#else #####: 211: return !!(*data_ == *rhs.data_); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed -: 212:#endif -: 213:} -: 214: -: 215:inline bool stl_type_index::before(const stl_type_index& rhs) const BOOST_NOEXCEPT { -: 216:#ifdef BOOST_CLASSINFO_COMPARE_BY_NAMES -: 217: return raw_name() != rhs.raw_name() && std::strcmp(raw_name(), rhs.raw_name()) < 0; -: 218:#else -: 219: return !!data_->before(*rhs.data_); -: 220:#endif -: 221:} -: 222: -: 223:#ifdef BOOST_CLASSINFO_COMPARE_BY_NAMES -: 224:#undef BOOST_CLASSINFO_COMPARE_BY_NAMES -: 225:#endif -: 226: -: 227: -: 228: -: 229:template function _ZN5boost9typeindex14stl_type_index7type_idIPFvvEEES1_v called 0 returned 0% blocks executed 0% #####: 230:inline stl_type_index stl_type_index::type_id() BOOST_NOEXCEPT { -: 231: typedef BOOST_DEDUCED_TYPENAME boost::remove_reference::type no_ref_t; -: 232: typedef BOOST_DEDUCED_TYPENAME boost::remove_cv::type no_cvr_prefinal_t; -: 233: -: 234: # if (defined(__EDG_VERSION__) && __EDG_VERSION__ < 245) \ -: 235: || (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 744) -: 236: -: 237: // Old EDG-based compilers seem to mistakenly distinguish 'integral' from 'signed integral' -: 238: // in typeid() expressions. Full template specialization for 'integral' fixes that issue: -: 239: typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_< -: 240: boost::is_signed, -: 241: boost::make_signed, -: 242: boost::mpl::identity -: 243: >::type no_cvr_prefinal_lazy_t; -: 244: -: 245: typedef BOOST_DEDUCED_TYPENAME no_cvr_prefinal_t::type no_cvr_t; -: 246: #else -: 247: typedef no_cvr_prefinal_t no_cvr_t; -: 248: #endif -: 249: #####: 250: return typeid(no_cvr_t); call 0 never executed -: 251:} -: 252: -: 253:namespace detail { -: 254: template class cvr_saver{}; -: 255:} -: 256: -: 257:template -: 258:inline stl_type_index stl_type_index::type_id_with_cvr() BOOST_NOEXCEPT { -: 259: typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_< -: 260: boost::mpl::or_, boost::is_const, boost::is_volatile >, -: 261: detail::cvr_saver, -: 262: T -: 263: >::type type; -: 264: -: 265: return typeid(type); -: 266:} -: 267: -: 268: -: 269:template -: 270:inline stl_type_index stl_type_index::type_id_runtime(const T& value) BOOST_NOEXCEPT { -: 271:#ifdef BOOST_NO_RTTI -: 272: return value.boost_type_index_type_id_runtime_(); -: 273:#else -: 274: return typeid(value); -: 275:#endif -: 276:} -: 277: -: 278:}} // namespace boost::typeindex -: 279: -: 280:#endif // BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/^#DotMatrix#dotmatrixstring.h.gcov -: 0:Source:../DotMatrix/dotmatrixstring.h -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixtext.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixtext.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#ifndef RIBI_DOTMATRIXSTRING_H -: 2:#define RIBI_DOTMATRIXSTRING_H -: 3: -: 4:#include -: 5:#include -: 6: -: 7: -: 8: -: 9: -: 10: -: 11:#include -: 12: -: 13: -: 14:struct QImage; -: 15: -: 16:namespace ribi { -: 17: -: 18:struct DotMatrixChar; -: 19: -: 20:///DotMatrixString creates a dot matrix 2D array of a string function _ZN4ribi15DotMatrixStringD2Ev called 0 returned 0% blocks executed 0% #####: 21:struct DotMatrixString call 0 never executed call 1 never executed call 2 never executed -: 22:{ -: 23: ///Give it a std::string and a spacing (number of pixels) between the characters -: 24: DotMatrixString(const std::string& s = "", const int spacing = 0); -: 25: -: 26: boost::shared_ptr CreateImage() const noexcept; -: 27: -: 28: ///Read back the string -: 29: std::string GetString() const noexcept; -: 30: -: 31: ///Read if the coordinat is black/high or white/low -: 32: bool GetMatrix(const int x, const int y) const noexcept; -: 33: -: 34: ///Get the matrix height -: 35: int GetMatrixHeight() const noexcept; -: 36: -: 37: ///Get the matrix width -: 38: int GetMatrixWidth() const noexcept; -: 39: -: 40: static std::string GetVersion() noexcept; -: 41: static std::vector GetVersionHistory() noexcept; -: 42: -: 43: private: -: 44: const int m_spacing; -: 45: const std::vector> m_v; -: 46: -: 47: static std::vector> -: 48: CreateDotMatrixChars(const std::string& s) noexcept; -: 49: -: 50:}; -: 51: -: 52:void TestDotMatrixString() noexcept; -: 53: -: 54:std::ostream& operator<<(std::ostream& os, const DotMatrixString& m) noexcept; -: 55: -: 56:} //~namespace ribi -: 57: -: 58:#endif // RIBI_DOTMATRIXSTRING_H <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#bimap#container_adaptor#ordered_associative_container_adaptor.hpp.gcov -: 0:Source:/usr/include/boost/bimap/container_adaptor/ordered_associative_container_adaptor.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/canvascolorsystems.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// Boost.Bimap -: 2:// -: 3:// Copyright (c) 2006-2007 Matias Capeletto -: 4:// -: 5:// Distributed under the Boost Software License, Version 1.0. -: 6:// (See accompanying file LICENSE_1_0.txt or copy at -: 7:// http://www.boost.org/LICENSE_1_0.txt) -: 8: -: 9:/// \file container_adaptor/ordered_associative_container_adaptor.hpp -: 10:/// \brief Container adaptor to build a type that is compliant to the concept of an ordered associative container. -: 11: -: 12:#ifndef BOOST_BIMAP_CONTAINER_ADAPTOR_ORDERED_ASSOCIATIVE_CONTAINER_ADAPTOR_HPP -: 13:#define BOOST_BIMAP_CONTAINER_ADAPTOR_ORDERED_ASSOCIATIVE_CONTAINER_ADAPTOR_HPP -: 14: -: 15:#if defined(_MSC_VER) -: 16:#pragma once -: 17:#endif -: 18: -: 19:#include -: 20: -: 21:#include -: 22:#include -: 23:#include -: 24:#include -: 25:#include -: 26:#include -: 27:#include -: 28:#include -: 29: -: 30:namespace boost { -: 31:namespace bimaps { -: 32:namespace container_adaptor { -: 33: -: 34:#ifndef BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES -: 35: -: 36:template -: 37:< -: 38: class Base, class Iterator, class ConstIterator, -: 39: class ReverseIterator, class ConstReverseIterator, class KeyType, -: 40: class IteratorToBaseConverter, class IteratorFromBaseConverter, -: 41: class ReverseIteratorFromBaseConverter, -: 42: class ValueToBaseConverter, class ValueFromBaseConverter, -: 43: class KeyToBaseConverter, -: 44: class FunctorsFromDerivedClasses -: 45:> -: 46:struct ordered_associative_container_adaptor_base -: 47:{ -: 48: typedef associative_container_adaptor< -: 49: Base, Iterator, ConstIterator, KeyType, -: 50: IteratorToBaseConverter, IteratorFromBaseConverter, -: 51: ValueToBaseConverter, ValueFromBaseConverter, KeyToBaseConverter, -: 52: -: 53: BOOST_DEDUCED_TYPENAME mpl::push_front< -: 54: -: 55: FunctorsFromDerivedClasses, -: 56: -: 57: BOOST_DEDUCED_TYPENAME mpl::if_< -: 58: ::boost::mpl::is_na, -: 59: // { -: 60: detail::iterator_from_base_identity -: 61: < -: 62: BOOST_DEDUCED_TYPENAME Base::reverse_iterator, -: 63: ReverseIterator, -: 64: BOOST_DEDUCED_TYPENAME Base::const_reverse_iterator, -: 65: ConstReverseIterator -: 66: >, -: 67: // } -: 68: // else -: 69: // { -: 70: ReverseIteratorFromBaseConverter -: 71: // } -: 72: -: 73: >::type -: 74: -: 75: >::type -: 76: -: 77: > type; -: 78:}; -: 79: -: 80:#endif // BOOST_BIMAP_DOXYGEN_WILL_NOT_PROCESS_THE_FOLLOWING_LINES -: 81: -: 82:/// \brief Container adaptor to build a type that is compliant to the concept of an ordered associative container. -: 83: -: 84:template -: 85:< -: 86: class Base, -: 87: -: 88: class Iterator, -: 89: class ConstIterator, -: 90: class ReverseIterator, -: 91: class ConstReverseIterator, -: 92: -: 93: class KeyType, -: 94: -: 95: class IteratorToBaseConverter = ::boost::mpl::na, -: 96: class IteratorFromBaseConverter = ::boost::mpl::na, -: 97: class ReverseIteratorFromBaseConverter = ::boost::mpl::na, -: 98: class ValueToBaseConverter = ::boost::mpl::na, -: 99: class ValueFromBaseConverter = ::boost::mpl::na, -: 100: class KeyToBaseConverter = ::boost::mpl::na, -: 101: -: 102: class FunctorsFromDerivedClasses = mpl::vector<> -: 103:> -: 104:class ordered_associative_container_adaptor : -: 105: -: 106: public ordered_associative_container_adaptor_base -: 107: < -: 108: Base, Iterator, ConstIterator, -: 109: ReverseIterator, ConstReverseIterator, KeyType, -: 110: IteratorToBaseConverter, IteratorFromBaseConverter, -: 111: ReverseIteratorFromBaseConverter, -: 112: ValueToBaseConverter, ValueFromBaseConverter, KeyToBaseConverter, -: 113: FunctorsFromDerivedClasses -: 114: -: 115: >::type, -: 116: -: 117: ::boost::totally_ordered -: 118: < -: 119: ordered_associative_container_adaptor -: 120: < -: 121: Base, Iterator, ConstIterator, -: 122: ReverseIterator, ConstReverseIterator, -: 123: KeyType, IteratorToBaseConverter, IteratorFromBaseConverter, -: 124: ReverseIteratorFromBaseConverter, -: 125: ValueToBaseConverter, ValueFromBaseConverter, -: 126: KeyToBaseConverter, FunctorsFromDerivedClasses -: 127: > -: 128: > -: 129:{ -: 130: // MetaData ------------------------------------------------------------- -: 131: -: 132: typedef BOOST_DEDUCED_TYPENAME ordered_associative_container_adaptor_base -: 133: < -: 134: Base, Iterator, ConstIterator, -: 135: ReverseIterator, ConstReverseIterator, KeyType, -: 136: IteratorToBaseConverter, IteratorFromBaseConverter, -: 137: ReverseIteratorFromBaseConverter, -: 138: ValueToBaseConverter, ValueFromBaseConverter, KeyToBaseConverter, -: 139: FunctorsFromDerivedClasses -: 140: -: 141: >::type base_; -: 142: -: 143: public: -: 144: -: 145: typedef detail::compatible_comparison_adaptor -: 146: < -: 147: BOOST_DEDUCED_TYPENAME Base::key_compare, -: 148: BOOST_DEDUCED_TYPENAME base_::key_type, -: 149: BOOST_DEDUCED_TYPENAME base_::key_to_base -: 150: -: 151: > key_compare; -: 152: -: 153: typedef detail::comparison_adaptor -: 154: < -: 155: BOOST_DEDUCED_TYPENAME Base::value_compare, -: 156: BOOST_DEDUCED_TYPENAME base_::value_type, -: 157: BOOST_DEDUCED_TYPENAME base_::value_to_base -: 158: -: 159: > value_compare; -: 160: -: 161: typedef ReverseIterator reverse_iterator; -: 162: typedef ConstReverseIterator const_reverse_iterator; -: 163: -: 164: protected: -: 165: -: 166: typedef BOOST_DEDUCED_TYPENAME mpl::if_< -: 167: ::boost::mpl::is_na, -: 168: // { -: 169: detail::iterator_from_base_identity -: 170: < -: 171: BOOST_DEDUCED_TYPENAME Base::reverse_iterator, -: 172: reverse_iterator, -: 173: BOOST_DEDUCED_TYPENAME Base::const_reverse_iterator, -: 174: const_reverse_iterator -: 175: >, -: 176: // } -: 177: // else -: 178: // { -: 179: ReverseIteratorFromBaseConverter -: 180: // } -: 181: -: 182: >::type reverse_iterator_from_base; -: 183: -: 184: // Access ----------------------------------------------------------------- -: 185: -: 186: public: -: 187: function _ZN5boost6bimaps17container_adaptor37ordered_associative_container_adaptorINS_11multi_index6detail13ordered_indexINS3_6memberINS0_8relation6detail16relation_storageINS0_4tags6taggedIKN4ribi17CanvasColorSystemENS7_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEELb1EEESN_XadL_ZNSR_5rightEEEEESt4lessISN_ENS4_9nth_layerILi1ENS7_15mutant_relationISH_SQ_N4mpl_2naELb1EEENS0_6detail10bimap_coreISD_SN_SY_SY_SY_E12core_indicesESaISZ_EEENS_3mpl6v_itemISP_NS16_7vector0ISY_EELi0EEENS4_18ordered_unique_tagENS4_19null_augment_policyEEENS10_17map_view_iteratorISP_S12_EENS10_23const_map_view_iteratorISP_S12_EENS10_25reverse_map_view_iteratorISP_S12_EENS10_31const_reverse_map_view_iteratorISP_S12_EESO_NS1_7support23iterator_facade_to_baseIS1F_S1H_EESY_SY_NS8_24pair_to_relation_functorISP_SZ_EENS7_7support16get_pair_functorISP_SZ_EESY_NS16_6vectorISY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_EEEC2ERS1D_ called 1 returned 100% blocks executed 100% function _ZN5boost6bimaps17container_adaptor37ordered_associative_container_adaptorINS_11multi_index6detail13ordered_indexINS3_6memberINS0_8relation6detail16relation_storageINS0_4tags6taggedIKN4ribi17CanvasColorSystemENS7_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEELb1EEESD_XadL_ZNSR_4leftEEEEESt4lessISD_ENS4_9nth_layerILi2ENS7_15mutant_relationISH_SQ_N4mpl_2naELb1EEENS0_6detail10bimap_coreISD_SN_SY_SY_SY_E12core_indicesESaISZ_EEENS_3mpl6v_itemISG_NS16_7vector0ISY_EELi0EEENS4_18ordered_unique_tagENS4_19null_augment_policyEEENS10_17map_view_iteratorISG_S12_EENS10_23const_map_view_iteratorISG_S12_EENS10_25reverse_map_view_iteratorISG_S12_EENS10_31const_reverse_map_view_iteratorISG_S12_EESE_NS1_7support23iterator_facade_to_baseIS1F_S1H_EESY_SY_NS8_24pair_to_relation_functorISG_SZ_EENS7_7support16get_pair_functorISG_SZ_EESY_NS16_6vectorISY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_EEEC2ERS1D_ called 1 returned 100% blocks executed 100% function _ZN5boost6bimaps17container_adaptor37ordered_associative_container_adaptorINS_11multi_index6detail13ordered_indexINS3_6memberINS0_8relation6detail16relation_storageINS0_4tags6taggedIKN4ribi17CanvasColorSystemENS7_9member_at4leftEEENSB_IKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENSF_5rightEEELb1EEESD_XadL_ZNSR_4leftEEEEESt4lessISD_ENS4_9nth_layerILi2ENS7_15mutant_relationISH_SQ_N4mpl_2naELb1EEENS0_6detail10bimap_coreISD_SN_SY_SY_SY_E12core_indicesESaISZ_EEENS_3mpl6v_itemISG_NS16_7vector0ISY_EELi0EEENS4_18ordered_unique_tagENS4_19null_augment_policyEEENS10_17set_view_iteratorINS4_19bidir_node_iteratorINS4_18ordered_index_nodeIS1C_NS4_15index_node_baseISZ_S14_EEEEEEEENS10_23const_set_view_iteratorIS1K_EENS1E_INS_9iterators16reverse_iteratorIS1K_EEEENS1M_IS1Q_EENSW_ISH_SQ_SY_Lb0EEENS1_7support23iterator_facade_to_baseIS1L_S1N_EESY_SY_NS8_28get_mutable_relation_functorISZ_EENS7_7support22get_above_view_functorISZ_EENS10_20set_view_key_to_baseISD_SZ_SS_EENS16_6vectorISY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_SY_EEEC2ERS1D_ called 1 returned 100% blocks executed 100% 3: 188: explicit ordered_associative_container_adaptor(Base & c) call 0 returned 100% call 1 returned 100% call 2 returned 100% 3: 189: : base_(c) {} call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% call 5 returned 100% -: 190: -: 191: protected: -: 192: -: 193: typedef ordered_associative_container_adaptor -: 194: ordered_associative_container_adaptor_; -: 195: -: 196: // Interface -------------------------------------------------------------- -: 197: -: 198: public: -: 199: -: 200: reverse_iterator rbegin() -: 201: { -: 202: return this->template functor< -: 203: reverse_iterator_from_base -: 204: >() ( this->base().rbegin() ); -: 205: -: 206: } -: 207: -: 208: reverse_iterator rend() -: 209: { -: 210: return this->template functor< -: 211: reverse_iterator_from_base -: 212: >() ( this->base().rend() ); -: 213: } -: 214: -: 215: const_reverse_iterator rbegin() const -: 216: { -: 217: return this->template functor< -: 218: reverse_iterator_from_base -: 219: >() ( this->base().rbegin() ); -: 220: } -: 221: -: 222: const_reverse_iterator rend() const -: 223: { -: 224: return this->template functor< -: 225: reverse_iterator_from_base -: 226: >() ( this->base().rend() ); -: 227: } -: 228: -: 229: key_compare key_comp() const -: 230: { -: 231: typedef BOOST_DEDUCED_TYPENAME base_::key_to_base key_to_base_; -: 232: -: 233: return key_compare( -: 234: this->base().key_comp(), -: 235: this->template functor() -: 236: ); -: 237: } -: 238: -: 239: value_compare value_comp() const -: 240: { -: 241: typedef BOOST_DEDUCED_TYPENAME base_::value_to_base value_to_base_; -: 242: -: 243: return value_compare( -: 244: this->base().value_comp(), -: 245: this->template functor() -: 246: ); -: 247: } -: 248: -: 249: template< class CompatibleKey > -: 250: BOOST_DEDUCED_TYPENAME base_::iterator lower_bound(const CompatibleKey & k) -: 251: { -: 252: return this->template functor< -: 253: BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()( -: 254: this->base().lower_bound( -: 255: this->template functor()(k) -: 256: ) -: 257: ); -: 258: } -: 259: -: 260: template< class CompatibleKey > -: 261: BOOST_DEDUCED_TYPENAME base_::const_iterator lower_bound(const CompatibleKey & k) const -: 262: { -: 263: return this->template functor< -: 264: BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()( -: 265: this->base().lower_bound( -: 266: this->template functor()(k) -: 267: ) -: 268: ); -: 269: } -: 270: -: 271: template< class CompatibleKey > -: 272: BOOST_DEDUCED_TYPENAME base_::iterator upper_bound(const CompatibleKey & k) -: 273: { -: 274: return this->template functor< -: 275: BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()( -: 276: this->base().upper_bound( -: 277: this->template functor()(k) -: 278: ) -: 279: ); -: 280: } -: 281: -: 282: template< class CompatibleKey > -: 283: BOOST_DEDUCED_TYPENAME base_::const_iterator upper_bound(const CompatibleKey & k) const -: 284: { -: 285: return this->template functor< -: 286: BOOST_DEDUCED_TYPENAME base_::iterator_from_base>()( -: 287: this->base().upper_bound( -: 288: this->template functor()(k) -: 289: ) -: 290: ); -: 291: } -: 292: -: 293: // Totally ordered implementation -: 294: -: 295: bool operator==(const ordered_associative_container_adaptor & c) const -: 296: { -: 297: return ( this->base() == c.base() ); -: 298: } -: 299: -: 300: bool operator<(const ordered_associative_container_adaptor & c) const -: 301: { -: 302: return ( this->base() < c.base() ); -: 303: } -: 304:}; -: 305: -: 306: -: 307:} // namespace container_adaptor -: 308:} // namespace bimaps -: 309:} // namespace boost -: 310: -: 311: -: 312:#endif // BOOST_BIMAP_CONTAINER_ADAPTOR_ORDERED_ASSOCIATIVE_CONTAINER_ADAPTOR_HPP <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#xpressive#detail#dynamic#matchable.hpp.gcov -: 0:Source:/usr/include/boost/xpressive/detail/dynamic/matchable.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/fileio.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1://///////////////////////////////////////////////////////////////////////////// -: 2:// matchable.hpp -: 3:// -: 4:// Copyright 2008 Eric Niebler. Distributed under the Boost -: 5:// Software License, Version 1.0. (See accompanying file -: 6:// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -: 7: -: 8:#ifndef BOOST_XPRESSIVE_DETAIL_DYNAMIC_MATCHABLE_HPP_EAN_10_04_2005 -: 9:#define BOOST_XPRESSIVE_DETAIL_DYNAMIC_MATCHABLE_HPP_EAN_10_04_2005 -: 10: -: 11:// MS compatible compilers support #pragma once -: 12:#if defined(_MSC_VER) -: 13:# pragma once -: 14:#endif -: 15: -: 16:#include -: 17:#include -: 18:#include -: 19:#include -: 20:#include -: 21:#include -: 22:#include -: 23:#include -: 24:#include -: 25:#include -: 26: -: 27:namespace boost { namespace xpressive { namespace detail -: 28:{ -: 29: -: 30:////////////////////////////////////////////////////////////////////////// -: 31:// quant_spec -: 32:struct quant_spec -: 33:{ -: 34: unsigned int min_; -: 35: unsigned int max_; -: 36: bool greedy_; -: 37: std::size_t *hidden_mark_count_; -: 38:}; -: 39: -: 40://///////////////////////////////////////////////////////////////////////////// -: 41:// matchable -: 42:template function _ZN5boost9xpressive6detail9matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2Ev called 0 returned 0% blocks executed 0% #####: 43:struct matchable call 0 never executed -: 44:{ -: 45: typedef BidiIter iterator_type; -: 46: typedef typename iterator_value::type char_type; function _ZN5boost9xpressive6detail9matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED0Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail9matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev called 0 returned 0% blocks executed 0% #####: 47: virtual ~matchable() {} call 0 never executed call 1 never executed call 2 never executed call 3 never executed -: 48: virtual bool match(match_state &state) const = 0; -: 49:}; -: 50: -: 51://///////////////////////////////////////////////////////////////////////////// -: 52:// matchable_ex -: 53:template function _ZN5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED0Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2Ev called 0 returned 0% blocks executed 0% #####: 54:struct matchable_ex call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed -: 55: : matchable -: 56: , counted_base > -: 57:{ -: 58: typedef BidiIter iterator_type; -: 59: typedef typename iterator_value::type char_type; -: 60: function _ZNK5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE4linkERNS1_16xpression_linkerIcEE called 0 returned 0% blocks executed 0% #####: 61: virtual void link(xpression_linker &) const -: 62: { #####: 63: } -: 64: function _ZNK5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE4peekERNS1_16xpression_peekerIcEE called 0 returned 0% blocks executed 0% #####: 65: virtual void peek(xpression_peeker &peeker) const -: 66: { #####: 67: peeker.fail(); call 0 never executed call 1 never executed #####: 68: } -: 69: function _ZNK5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE6repeatERKNS1_10quant_specERNS1_8sequenceISD_EE called 0 returned 0% blocks executed 0% #####: 70: virtual void repeat(quant_spec const &, sequence &) const -: 71: { #####: 72: BOOST_THROW_EXCEPTION( call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed -: 73: regex_error(regex_constants::error_badrepeat, "expression cannot be quantified") -: 74: ); -: 75: } -: 76: -: 77: /////////////////////////////////////////////////////////////////////////////////////////////// -: 78: // The following 4 functions (push_match, top_match, pop_match and skip_match) are -: 79: // used to implement looping and branching across the matchers. Call push_match to record -: 80: // a position. Then, another matcher further down the xpression chain has the -: 81: // option to call either top_match, pop_match or skip_match. top_match and pop_match will -: 82: // jump back to the place recorded by push_match, whereas skip_match will skip the jump and -: 83: // pass execution down the xpression chain. top_match will leave the xpression on top of the -: 84: // stack, whereas pop_match will remove it. Each function comes in 2 flavors: one for -: 85: // statically bound xpressions and one for dynamically bound xpressions. -: 86: // -: 87: -: 88: template function _ZNK5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE10push_matchISE_EEbRNS1_11match_stateISD_EE called 0 returned 0% blocks executed 0% #####: 89: bool push_match(match_state &state) const -: 90: { -: 91: BOOST_MPL_ASSERT((is_same >)); #####: 92: return this->match(state); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 93: } -: 94: function _ZN5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE9top_matchERNS1_11match_stateISD_EEPKv called 0 returned 0% blocks executed 0% #####: 95: static bool top_match(match_state &state, void const *top) -: 96: { #####: 97: return static_cast const *>(top)->match(state); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 98: } -: 99: function _ZN5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE9pop_matchERNS1_11match_stateISD_EEPKv called 0 returned 0% blocks executed 0% #####: 100: static bool pop_match(match_state &state, void const *top) -: 101: { #####: 102: return static_cast const *>(top)->match(state); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 103: } -: 104: function _ZNK5boost9xpressive6detail12matchable_exIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE10skip_matchERNS1_11match_stateISD_EE called 0 returned 0% blocks executed 0% #####: 105: bool skip_match(match_state &state) const -: 106: { #####: 107: return this->match(state); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed -: 108: } -: 109:}; -: 110: -: 111://///////////////////////////////////////////////////////////////////////////// -: 112:// shared_matchable -: 113:template function _ZN5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKSE_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEaSERKSE_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2EOSE_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEaSEOSE_ called 0 returned 0% blocks executed 0% function _ZN5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEED2Ev called 0 returned 0% blocks executed 0% #####: 114:struct shared_matchable call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed call 9 never executed call 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed call 18 never executed -: 115:{ -: 116: typedef BidiIter iterator_type; -: 117: typedef typename iterator_value::type char_type; -: 118: typedef intrusive_ptr const> matchable_ptr; -: 119: -: 120: BOOST_STATIC_CONSTANT(std::size_t, width = unknown_width::value); -: 121: BOOST_STATIC_CONSTANT(bool, pure = false); -: 122: function _ZN5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEC2ERKNS_13intrusive_ptrIKNS1_12matchable_exISD_EEEE called 0 returned 0% blocks executed 0% #####: 123: shared_matchable(matchable_ptr const &xpr = matchable_ptr()) call 0 never executed #####: 124: : xpr_(xpr) call 0 never executed call 1 never executed call 2 never executed -: 125: { #####: 126: } -: 127: function _ZNK5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEntEv called 0 returned 0% blocks executed 0% #####: 128: bool operator !() const -: 129: { #####: 130: return !this->xpr_; call 0 never executed call 1 never executed -: 131: } -: 132: function _ZN5boost9xpressive6detaileqERKNS1_16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEESG_ called 0 returned 0% blocks executed 0% #####: 133: friend bool operator ==(shared_matchable const &left, shared_matchable const &right) -: 134: { #####: 135: return left.xpr_ == right.xpr_; call 0 never executed call 1 never executed call 2 never executed -: 136: } -: 137: -: 138: friend bool operator !=(shared_matchable const &left, shared_matchable const &right) -: 139: { -: 140: return left.xpr_ != right.xpr_; -: 141: } -: 142: function _ZNK5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE9matchableEv called 0 returned 0% blocks executed 0% #####: 143: matchable_ptr const &matchable() const -: 144: { #####: 145: return this->xpr_; call 0 never executed -: 146: } -: 147: function _ZNK5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE5matchERNS1_11match_stateISD_EE called 0 returned 0% blocks executed 0% #####: 148: bool match(match_state &state) const -: 149: { #####: 150: return this->xpr_->match(state); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed -: 151: } -: 152: function _ZNK5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE4linkERNS1_16xpression_linkerIcEE called 0 returned 0% blocks executed 0% #####: 153: void link(xpression_linker &linker) const -: 154: { #####: 155: this->xpr_->link(linker); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed #####: 156: } -: 157: function _ZNK5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE4peekERNS1_16xpression_peekerIcEE called 0 returned 0% blocks executed 0% #####: 158: void peek(xpression_peeker &peeker) const -: 159: { #####: 160: this->xpr_->peek(peeker); call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed #####: 161: } -: 162: -: 163: // BUGBUG yuk! -: 164: template function _ZNK5boost9xpressive6detail16shared_matchableIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEE10push_matchINS1_12matchable_exISD_EEEEbRNS1_11match_stateISD_EE called 0 returned 0% blocks executed 0% #####: 165: bool push_match(match_state &state) const -: 166: { -: 167: BOOST_MPL_ASSERT((is_same >)); #####: 168: return this->match(state); call 0 never executed call 1 never executed -: 169: } -: 170: -: 171:private: -: 172: matchable_ptr xpr_; -: 173:}; -: 174: -: 175:}}} // namespace boost::xpressive::detail -: 176: -: 177:#endif <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#none.hpp.gcov -: 0:Source:/usr/include/boost/none.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/qttictactoemenudialog.gcno -: 0:Data:- -: 0:Runs:0 -: 0:Programs:0 -: 1:// Copyright (C) 2003, Fernando Luis Cacciola Carballal. -: 2:// Copyright (C) 2014, 2015 Andrzej Krzemienski. -: 3:// -: 4:// Distributed under the Boost Software License, Version 1.0. -: 5:// (See accompanying file LICENSE_1_0.txt or copy at -: 6:// http://www.boost.org/LICENSE_1_0.txt) -: 7:// -: 8:// See http://www.boost.org/libs/optional for documentation. -: 9:// -: 10:// You are welcome to contact the author at: -: 11:// fernando_cacciola@hotmail.com -: 12:// -: 13:#ifndef BOOST_NONE_17SEP2003_HPP -: 14:#define BOOST_NONE_17SEP2003_HPP -: 15: -: 16:#include "boost/none_t.hpp" -: 17: -: 18:// NOTE: Borland users have to include this header outside any precompiled headers -: 19:// (bcc<=5.64 cannot include instance data in a precompiled header) -: 20:// -- * To be verified, now that there's no unnamed namespace -: 21: -: 22:namespace boost { -: 23: -: 24:#ifdef BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE -: 25: -: 26:none_t const none = (static_cast(0)) ; -: 27: -: 28:#elif defined BOOST_OPTIONAL_USE_SINGLETON_DEFINITION_OF_NONE -: 29: -: 30:namespace detail { namespace optional_detail { -: 31: -: 32: // the trick here is to make boost::none defined once as a global but in a header file -: 33: template -: 34: struct none_instance -: 35: { -: 36: static const T instance; -: 37: }; -: 38: -: 39: template -: 40: const T none_instance::instance = T(); // global, but because 'tis a template, no cpp file required -: 41: -: 42:} } // namespace detail::optional_detail -: 43: -: 44: -: 45:namespace { -: 46: // TU-local -: 47: const none_t& none = detail::optional_detail::none_instance::instance; -: 48:} -: 49: -: 50:#else -: 51: #####: 52:const none_t none ((none_t::init_tag())); call 0 never executed -: 53: -: 54:#endif // older definitions -: 55: -: 56:} // namespace boost -: 57: -: 58:#endif // header guard -: 59: <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#test#utils#basic_cstring#basic_cstring.hpp.gcov -: 0:Source:/usr/include/boost/test/utils/basic_cstring/basic_cstring.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard_test.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoeboard_test.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:// (C) Copyright Gennadiy Rozental 2001. -: 2:// Distributed under the Boost Software License, Version 1.0. -: 3:// (See accompanying file LICENSE_1_0.txt or copy at -: 4:// http://www.boost.org/LICENSE_1_0.txt) -: 5: -: 6:// See http://www.boost.org/libs/test for the library home page. -: 7:// -: 8:// File : $RCSfile$ -: 9:// -: 10:// Version : $Revision$ -: 11:// -: 12:// Description : class basic_cstring wraps C string and provide std_string like -: 13:// interface -: 14:// *************************************************************************** -: 15: -: 16:#ifndef BOOST_TEST_UTILS_BASIC_CSTRING_HPP -: 17:#define BOOST_TEST_UTILS_BASIC_CSTRING_HPP -: 18: -: 19:// Boost.Test -: 20:#include -: 21:#include -: 22: -: 23:// Boost -: 24:#include -: 25: -: 26:// STL -: 27:#include -: 28: -: 29:#include -: 30: -: 31://____________________________________________________________________________// -: 32: -: 33:namespace boost { -: 34: -: 35:namespace unit_test { -: 36: -: 37:// ************************************************************************** // -: 38:// ************** basic_cstring ************** // -: 39:// ************************************************************************** // -: 40: -: 41:template -: 42:class basic_cstring { -: 43: typedef basic_cstring self_type; -: 44:public: -: 45: // Subtypes -: 46: typedef ut_detail::bcs_char_traits traits_type; -: 47: typedef typename traits_type::std_string std_string; -: 48: -: 49: typedef CharT value_type; -: 50: typedef typename remove_cv::type value_ret_type; -: 51: typedef value_type* pointer; -: 52: typedef value_type const* const_pointer; -: 53: typedef value_type& reference; -: 54: typedef const value_type& const_reference; -: 55: typedef std::size_t size_type; -: 56: typedef std::ptrdiff_t difference_type; -: 57: -: 58: typedef value_type const* const_iterator; -: 59: typedef value_type* iterator; -: 60: -: 61: // !! should also present reverse_iterator, const_reverse_iterator -: 62: -: 63:#if !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) -: 64: enum npos_type { npos = static_cast(-1) }; -: 65:#else -: 66: // IBM/VisualAge version 6 is not able to handle enums larger than 4 bytes. -: 67: // But size_type is 8 bytes in 64bit mode. -: 68: static const size_type npos = -1 ; -: 69:#endif -: 70: -: 71: static pointer null_str(); -: 72: -: 73: // Constructors; default copy constructor is generated by compiler -: 74: basic_cstring(); -: 75: basic_cstring( basic_cstring const & ); -: 76: basic_cstring( std_string const& s ); -: 77: basic_cstring( pointer s ); -: 78: template function _ZN5boost9unit_test13basic_cstringIKcEC2ImEEPS2_T_ called 13 returned 100% blocks executed 100% 13: 79: basic_cstring( pointer s, LenType len ) : m_begin( s ), m_end( m_begin + len ) {} call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% -: 80: basic_cstring( pointer first, pointer last ); -: 81: -: 82: // data access methods -: 83: value_ret_type operator[]( size_type index ) const; -: 84: value_ret_type at( size_type index ) const; -: 85: -: 86: // size operators -: 87: size_type size() const; -: 88: bool is_empty() const; -: 89: void clear(); -: 90: void resize( size_type new_len ); -: 91: -: 92: // !! only for STL container conformance use is_empty instead -: 93: bool empty() const; -: 94: -: 95: // Trimming -: 96: self_type& trim_right( size_type trim_size ); -: 97: self_type& trim_left( size_type trim_size ); -: 98: self_type& trim_right( iterator it ); -: 99: self_type& trim_left( iterator it ); -: 100:#if !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(800)) -: 101: self_type& trim_left( self_type exclusions = self_type() ) ; -: 102: self_type& trim_right( self_type exclusions = self_type() ) ; -: 103: self_type& trim( self_type exclusions = self_type() ) ; -: 104:#else -: 105: // VA C++/XL C++ v6 and v8 has in this case a problem with the default arguments. -: 106: self_type& trim_left( self_type exclusions ); -: 107: self_type& trim_right( self_type exclusions ); -: 108: self_type& trim( self_type exclusions ); -: 109: self_type& trim_left() { return trim_left( self_type() ); } -: 110: self_type& trim_right() { return trim_right( self_type() ); } -: 111: self_type& trim() { return trim( self_type() ); } -: 112:#endif -: 113: -: 114: // Assignment operators -: 115: basic_cstring& operator=( self_type const& s ); -: 116: basic_cstring& operator=( std_string const& s ); -: 117: basic_cstring& operator=( pointer s ); -: 118: -: 119: template -: 120: basic_cstring& assign( basic_cstring const& s ) -: 121: { -: 122: return *this = basic_cstring( s.begin(), s.end() ); -: 123: } -: 124: template -: 125: basic_cstring& assign( self_type const& s, PosType pos, LenType len ) -: 126: { -: 127: return *this = self_type( s.m_begin + pos, len ); -: 128: } -: 129: -: 130: basic_cstring& assign( std_string const& s ); -: 131: template -: 132: basic_cstring& assign( std_string const& s, PosType pos, LenType len ) -: 133: { -: 134: return *this = self_type( s.c_str() + pos, len ); -: 135: } -: 136: basic_cstring& assign( pointer s ); -: 137: template -: 138: basic_cstring& assign( pointer s, LenType len ) -: 139: { -: 140: return *this = self_type( s, len ); -: 141: } -: 142: basic_cstring& assign( pointer f, pointer l ); -: 143: -: 144: // swapping -: 145: void swap( self_type& s ); -: 146: -: 147: // Iterators -: 148: iterator begin(); -: 149: const_iterator begin() const; -: 150: iterator end(); -: 151: const_iterator end() const; -: 152: -: 153: // !! should have rbegin, rend -: 154: -: 155: // substring search operation -: 156: size_type find( basic_cstring ) const; -: 157: size_type rfind( basic_cstring ) const; -: 158: self_type substr( size_type beg_index, size_type end_index = npos ) const; -: 159: -: 160:private: -: 161: static self_type default_trim_ex(); -: 162: -: 163: // Data members -: 164: iterator m_begin; -: 165: iterator m_end; -: 166:}; -: 167: -: 168://____________________________________________________________________________// -: 169: -: 170:template -: 171:inline typename basic_cstring::pointer function _ZN5boost9unit_test13basic_cstringIKcE8null_strEv called 1 returned 100% blocks executed 100% 1: 172:basic_cstring::null_str() -: 173:{ -: 174: static CharT null = 0; 1: 175: return &null; -: 176:} -: 177: -: 178://____________________________________________________________________________// -: 179: -: 180:template -: 181:inline -: 182:basic_cstring::basic_cstring() -: 183:: m_begin( null_str() ) -: 184:, m_end( m_begin ) -: 185:{ -: 186:} -: 187: -: 188://____________________________________________________________________________// -: 189: -: 190:template -: 191:inline function _ZN5boost9unit_test13basic_cstringIKcEC2ERKS3_ called 7 returned 100% blocks executed 100% 7: 192:basic_cstring::basic_cstring(basic_cstring const & s) call 0 returned 100% 7: 193:: m_begin( s.m_begin ) call 0 returned 100% 7: 194:, m_end( s.m_end ) call 0 returned 100% call 1 returned 100% call 2 returned 100% -: 195:{ 7: 196:} -: 197: -: 198://____________________________________________________________________________// -: 199: -: 200:template -: 201:inline function _ZN5boost9unit_test13basic_cstringIKcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE called 12 returned 100% blocks executed 100% 12: 202:basic_cstring::basic_cstring( std_string const& s ) call 0 returned 100% -: 203:: m_begin( s.c_str() ) 12: 204:, m_end( m_begin + s.size() ) call 0 returned 100% call 1 returned 100% call 2 returned 100% call 3 returned 100% call 4 returned 100% call 5 returned 100% call 6 returned 100% -: 205:{ 12: 206:} -: 207: -: 208://____________________________________________________________________________// -: 209: -: 210:template -: 211:inline function _ZN5boost9unit_test13basic_cstringIKcEC2EPS2_ called 5 returned 100% blocks executed 83% 5: 212:basic_cstring::basic_cstring( pointer s ) call 0 returned 100% 5: 213:: m_begin( s ? s : null_str() ) branch 0 taken 0% (fallthrough) branch 1 taken 100% call 2 never executed 5: 214:, m_end ( m_begin + (s ? traits_type::length( s ) : 0 ) ) call 0 returned 100% call 1 returned 100% branch 2 taken 100% (fallthrough) branch 3 taken 0% call 4 returned 100% call 5 returned 100% -: 215:{ 5: 216:} -: 217: -: 218://____________________________________________________________________________// -: 219: -: 220:template -: 221:inline -: 222:basic_cstring::basic_cstring( pointer first, pointer last ) -: 223:: m_begin( first ) -: 224:, m_end( last ) -: 225:{ -: 226:} -: 227: -: 228://____________________________________________________________________________// -: 229: -: 230:template -: 231:inline typename basic_cstring::value_ret_type -: 232:basic_cstring::operator[]( size_type index ) const -: 233:{ -: 234: return m_begin[index]; -: 235:} -: 236: -: 237://____________________________________________________________________________// -: 238: -: 239:template -: 240:inline typename basic_cstring::value_ret_type -: 241:basic_cstring::at( size_type index ) const -: 242:{ -: 243: if( m_begin + index >= m_end ) -: 244: return static_cast(0); -: 245: -: 246: return m_begin[index]; -: 247:} -: 248: -: 249://____________________________________________________________________________// -: 250: -: 251:template -: 252:inline typename basic_cstring::size_type -: 253:basic_cstring::size() const -: 254:{ -: 255: return static_cast(m_end - m_begin); -: 256:} -: 257: -: 258://____________________________________________________________________________// -: 259: -: 260:template -: 261:inline bool -: 262:basic_cstring::is_empty() const -: 263:{ -: 264: return m_end == m_begin; -: 265:} -: 266: -: 267://____________________________________________________________________________// -: 268: -: 269:template -: 270:inline bool -: 271:basic_cstring::empty() const -: 272:{ -: 273: return is_empty(); -: 274:} -: 275: -: 276://____________________________________________________________________________// -: 277: -: 278:template -: 279:inline void -: 280:basic_cstring::clear() -: 281:{ -: 282: m_begin = m_end; -: 283:} -: 284: -: 285://____________________________________________________________________________// -: 286: -: 287:template -: 288:inline void -: 289:basic_cstring::resize( size_type new_len ) -: 290:{ -: 291: if( m_begin + new_len < m_end ) -: 292: m_end = m_begin + new_len; -: 293:} -: 294: -: 295://____________________________________________________________________________// -: 296: -: 297:template -: 298:inline basic_cstring& -: 299:basic_cstring::trim_left( size_type trim_size ) -: 300:{ -: 301: m_begin += trim_size; -: 302: if( m_end <= m_begin ) -: 303: clear(); -: 304: -: 305: return *this; -: 306:} -: 307: -: 308://____________________________________________________________________________// -: 309: -: 310:template -: 311:inline basic_cstring& -: 312:basic_cstring::trim_left( iterator it ) -: 313:{ -: 314: m_begin = it; -: 315: if( m_end <= m_begin ) -: 316: clear(); -: 317: -: 318: return *this; -: 319:} -: 320: -: 321://____________________________________________________________________________// -: 322: -: 323:template -: 324:inline basic_cstring& -: 325:basic_cstring::trim_left( basic_cstring exclusions ) -: 326:{ -: 327: if( exclusions.is_empty() ) -: 328: exclusions = default_trim_ex(); -: 329: -: 330: iterator it; -: 331: for( it = begin(); it != end(); ++it ) { -: 332: if( traits_type::find( exclusions.begin(), exclusions.size(), *it ) == reinterpret_cast(0) ) -: 333: break; -: 334: } -: 335: -: 336: return trim_left( it ); -: 337:} -: 338: -: 339://____________________________________________________________________________// -: 340: -: 341:template -: 342:inline basic_cstring& -: 343:basic_cstring::trim_right( size_type trim_size ) -: 344:{ -: 345: m_end -= trim_size; -: 346: if( m_end <= m_begin ) -: 347: clear(); -: 348: -: 349: return *this; -: 350:} -: 351: -: 352://____________________________________________________________________________// -: 353: -: 354:template -: 355:inline basic_cstring& -: 356:basic_cstring::trim_right( iterator it ) -: 357:{ -: 358: m_end = it; -: 359: if( m_end <= m_begin ) -: 360: clear(); -: 361: -: 362: return *this; -: 363:} -: 364: -: 365://____________________________________________________________________________// -: 366: -: 367:template -: 368:inline basic_cstring& -: 369:basic_cstring::trim_right( basic_cstring exclusions ) -: 370:{ -: 371: if( exclusions.is_empty() ) -: 372: exclusions = default_trim_ex(); -: 373: -: 374: iterator it; -: 375: -: 376: for( it = end()-1; it != begin()-1; --it ) { -: 377: if( self_type::traits_type::find( exclusions.begin(), exclusions.size(), *it ) == reinterpret_cast(0) ) -: 378: break; -: 379: } -: 380: -: 381: return trim_right( it+1 ); -: 382:} -: 383: -: 384://____________________________________________________________________________// -: 385: -: 386:template -: 387:inline basic_cstring& -: 388:basic_cstring::trim( basic_cstring exclusions ) -: 389:{ -: 390: trim_left( exclusions ); -: 391: trim_right( exclusions ); -: 392: -: 393: return *this; -: 394:} -: 395: -: 396://____________________________________________________________________________// -: 397: -: 398:template -: 399:inline basic_cstring& -: 400:basic_cstring::operator=( basic_cstring const& s ) -: 401:{ -: 402: m_begin = s.m_begin; -: 403: m_end = s.m_end; -: 404: -: 405: return *this; -: 406:} -: 407: -: 408://____________________________________________________________________________// -: 409: -: 410:template -: 411:inline basic_cstring& -: 412:basic_cstring::operator=( std_string const& s ) -: 413:{ -: 414: return *this = self_type( s ); -: 415:} -: 416: -: 417://____________________________________________________________________________// -: 418: -: 419:template -: 420:inline basic_cstring& -: 421:basic_cstring::operator=( pointer s ) -: 422:{ -: 423: return *this = self_type( s ); -: 424:} -: 425: -: 426://____________________________________________________________________________// -: 427: -: 428:template -: 429:inline basic_cstring& -: 430:basic_cstring::assign( std_string const& s ) -: 431:{ -: 432: return *this = self_type( s ); -: 433:} -: 434: -: 435://____________________________________________________________________________// -: 436: -: 437:template -: 438:inline basic_cstring& -: 439:basic_cstring::assign( pointer s ) -: 440:{ -: 441: return *this = self_type( s ); -: 442:} -: 443: -: 444://____________________________________________________________________________// -: 445: -: 446:template -: 447:inline basic_cstring& -: 448:basic_cstring::assign( pointer f, pointer l ) -: 449:{ -: 450: return *this = self_type( f, l ); -: 451:} -: 452: -: 453://____________________________________________________________________________// -: 454: -: 455:template -: 456:inline void -: 457:basic_cstring::swap( basic_cstring& s ) -: 458:{ -: 459: // do not want to include alogrithm -: 460: pointer tmp1 = m_begin; -: 461: pointer tmp2 = m_end; -: 462: -: 463: m_begin = s.m_begin; -: 464: m_end = s.m_end; -: 465: -: 466: s.m_begin = tmp1; -: 467: s.m_end = tmp2; -: 468:} -: 469: -: 470://____________________________________________________________________________// -: 471: -: 472:template -: 473:inline typename basic_cstring::iterator -: 474:basic_cstring::begin() -: 475:{ -: 476: return m_begin; -: 477:} -: 478: -: 479://____________________________________________________________________________// -: 480: -: 481:template -: 482:inline typename basic_cstring::const_iterator -: 483:basic_cstring::begin() const -: 484:{ -: 485: return m_begin; -: 486:} -: 487: -: 488://____________________________________________________________________________// -: 489: -: 490:template -: 491:inline typename basic_cstring::iterator -: 492:basic_cstring::end() -: 493:{ -: 494: return m_end; -: 495:} -: 496: -: 497://____________________________________________________________________________// -: 498: -: 499:template -: 500:inline typename basic_cstring::const_iterator -: 501:basic_cstring::end() const -: 502:{ -: 503: return m_end; -: 504:} -: 505: -: 506://____________________________________________________________________________// -: 507: -: 508:template -: 509:inline typename basic_cstring::size_type -: 510:basic_cstring::find( basic_cstring str ) const -: 511:{ -: 512: if( str.is_empty() || str.size() > size() ) -: 513: return static_cast(npos); -: 514: -: 515: const_iterator it = begin(); -: 516: const_iterator last = end() - str.size() + 1; -: 517: -: 518: while( it != last ) { -: 519: if( traits_type::compare( it, str.begin(), str.size() ) == 0 ) -: 520: break; -: 521: -: 522: ++it; -: 523: } -: 524: -: 525: return it == last ? npos : static_cast(it - begin()); -: 526:} -: 527: -: 528://____________________________________________________________________________// -: 529: -: 530:template -: 531:inline typename basic_cstring::size_type -: 532:basic_cstring::rfind( basic_cstring str ) const -: 533:{ -: 534: if( str.is_empty() || str.size() > size() ) -: 535: return static_cast(npos); -: 536: -: 537: const_iterator it = end() - str.size(); -: 538: const_iterator last = begin()-1; -: 539: -: 540: while( it != last ) { -: 541: if( traits_type::compare( it, str.begin(), str.size() ) == 0 ) -: 542: break; -: 543: -: 544: --it; -: 545: } -: 546: -: 547: return it == last ? static_cast(npos) : static_cast(it - begin()); -: 548:} -: 549: -: 550://____________________________________________________________________________// -: 551: -: 552:template -: 553:inline basic_cstring -: 554:basic_cstring::substr( size_type beg_index, size_type end_index ) const -: 555:{ -: 556: return beg_index > size() -: 557: ? self_type() -: 558: : end_index > size() -: 559: ? self_type( m_begin + beg_index, m_end ) -: 560: : self_type( m_begin + beg_index, m_begin + end_index ); -: 561:} -: 562: -: 563://____________________________________________________________________________// -: 564: -: 565:template -: 566:inline basic_cstring -: 567:basic_cstring::default_trim_ex() -: 568:{ -: 569: static CharT ws[3] = { CharT(' '), CharT('\t'), CharT('\n') }; // !! wide case -: 570: -: 571: return self_type( ws, 3 ); -: 572:} -: 573: -: 574://____________________________________________________________________________// -: 575: -: 576:// ************************************************************************** // -: 577:// ************** comparison operators ************** // -: 578:// ************************************************************************** // -: 579: -: 580:template -: 581:inline bool -: 582:operator==( basic_cstring const& s1, basic_cstring const& s2 ) -: 583:{ -: 584: typedef typename basic_cstring::traits_type traits_type; -: 585: return s1.size() == s2.size() && -: 586: traits_type::compare( s1.begin(), s2.begin(), s1.size() ) == 0; -: 587:} -: 588: -: 589://____________________________________________________________________________// -: 590: -: 591:template -: 592:inline bool -: 593:operator==( basic_cstring const& s1, CharT2* s2 ) -: 594:{ -: 595:#if !defined(__DMC__) -: 596: return s1 == basic_cstring( s2 ); -: 597:#else -: 598: return s1 == basic_cstring( s2 ); -: 599:#endif -: 600:} -: 601: -: 602://____________________________________________________________________________// -: 603: -: 604:template -: 605:inline bool -: 606:operator==( basic_cstring const& s1, typename basic_cstring::std_string const& s2 ) -: 607:{ -: 608: return s1 == basic_cstring( s2 ); -: 609:} -: 610: -: 611://____________________________________________________________________________// -: 612: -: 613:template -: 614:inline bool -: 615:operator==( CharT1* s2, basic_cstring const& s1 ) -: 616:{ -: 617: return s1 == s2; -: 618:} -: 619: -: 620://____________________________________________________________________________// -: 621: -: 622:template -: 623:inline bool -: 624:operator==( typename basic_cstring::std_string const& s2, basic_cstring const& s1 ) -: 625:{ -: 626: return s1 == s2; -: 627:} -: 628: -: 629://____________________________________________________________________________// -: 630: -: 631:template -: 632:inline bool -: 633:operator!=( basic_cstring const& s1, CharT* s2 ) -: 634:{ -: 635: return !(s1 == s2); -: 636:} -: 637: -: 638://____________________________________________________________________________// -: 639: -: 640:template -: 641:inline bool -: 642:operator!=( CharT* s2, basic_cstring const& s1 ) -: 643:{ -: 644: return !(s1 == s2); -: 645:} -: 646: -: 647://____________________________________________________________________________// -: 648: -: 649:template -: 650:inline bool -: 651:operator!=( basic_cstring const& s1, basic_cstring const& s2 ) -: 652:{ -: 653: return !(s1 == s2); -: 654:} -: 655: -: 656://____________________________________________________________________________// -: 657: -: 658:template -: 659:inline bool -: 660:operator!=( basic_cstring const& s1, typename basic_cstring::std_string const& s2 ) -: 661:{ -: 662: return !(s1 == s2); -: 663:} -: 664: -: 665://____________________________________________________________________________// -: 666: -: 667:template -: 668:inline bool -: 669:operator!=( typename basic_cstring::std_string const& s2, basic_cstring const& s1 ) -: 670:{ -: 671: return !(s1 == s2); -: 672:} -: 673: -: 674://____________________________________________________________________________// -: 675: -: 676:// ************************************************************************** // -: 677:// ************** first_char ************** // -: 678:// ************************************************************************** // -: 679: -: 680:template -: 681:inline typename basic_cstring::value_ret_type -: 682:first_char( basic_cstring source ) -: 683:{ -: 684: typedef typename basic_cstring::value_ret_type res_type; -: 685: -: 686: return source.is_empty() ? static_cast(0) : *source.begin(); -: 687:} -: 688: -: 689://____________________________________________________________________________// -: 690: -: 691:// ************************************************************************** // -: 692:// ************** last_char ************** // -: 693:// ************************************************************************** // -: 694: -: 695:template -: 696:inline typename basic_cstring::value_ret_type -: 697:last_char( basic_cstring source ) -: 698:{ -: 699: typedef typename basic_cstring::value_ret_type res_type; -: 700: -: 701: return source.is_empty() ? static_cast(0) : *(source.end()-1); -: 702:} -: 703: -: 704://____________________________________________________________________________// -: 705: -: 706:// ************************************************************************** // -: 707:// ************** assign_op ************** // -: 708:// ************************************************************************** // -: 709: -: 710:template -: 711:inline void -: 712:assign_op( std::basic_string& target, basic_cstring src, int ) -: 713:{ -: 714: target.assign( src.begin(), src.size() ); -: 715:} -: 716: -: 717://____________________________________________________________________________// -: 718: -: 719:template -: 720:inline std::basic_string& -: 721:operator+=( std::basic_string& target, basic_cstring const& str ) -: 722:{ -: 723: target.append( str.begin(), str.end() ); -: 724: return target; -: 725:} -: 726: -: 727://____________________________________________________________________________// -: 728: -: 729:template -: 730:inline std::basic_string -: 731:operator+( std::basic_string const& lhs, basic_cstring const& rhs ) -: 732:{ -: 733: std::basic_string res( lhs ); -: 734: -: 735: res.append( rhs.begin(), rhs.end() ); -: 736: return res; -: 737:} -: 738: -: 739://____________________________________________________________________________// -: 740: -: 741:} // namespace unit_test -: 742: -: 743:} // namespace boost -: 744: -: 745://____________________________________________________________________________// -: 746: -: 747:#include -: 748: -: 749:#endif // BOOST_TEST_UTILS_BASIC_CSTRING_HPP <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/#usr#include#boost#core#checked_delete.hpp.gcov -: 0:Source:/usr/include/boost/core/checked_delete.hpp -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixchar.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/dotmatrixchar.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#ifndef BOOST_CORE_CHECKED_DELETE_HPP -: 2:#define BOOST_CORE_CHECKED_DELETE_HPP -: 3: -: 4:// MS compatible compilers support #pragma once -: 5: -: 6:#if defined(_MSC_VER) && (_MSC_VER >= 1020) -: 7:# pragma once -: 8:#endif -: 9: -: 10:// -: 11:// boost/checked_delete.hpp -: 12:// -: 13:// Copyright (c) 2002, 2003 Peter Dimov -: 14:// Copyright (c) 2003 Daniel Frey -: 15:// Copyright (c) 2003 Howard Hinnant -: 16:// -: 17:// Distributed under the Boost Software License, Version 1.0. (See -: 18:// accompanying file LICENSE_1_0.txt or copy at -: 19:// http://www.boost.org/LICENSE_1_0.txt) -: 20:// -: 21:// See http://www.boost.org/libs/core/doc/html/core/checked_delete.html for documentation. -: 22:// -: 23: -: 24:namespace boost -: 25:{ -: 26: -: 27:// verify that types are complete for increased safety -: 28: function _ZN5boost14checked_deleteI6QImageEEvPT_ called 0 returned 0% blocks executed 0% #####: 29:template inline void checked_delete(T * x) -: 30:{ -: 31: // intentionally complex - simplification causes regressions -: 32: typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; -: 33: (void) sizeof(type_must_be_complete); #####: 34: delete x; branch 0 never executed branch 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed #####: 35:} -: 36: -: 37:template inline void checked_array_delete(T * x) -: 38:{ -: 39: typedef char type_must_be_complete[ sizeof(T)? 1: -1 ]; -: 40: (void) sizeof(type_must_be_complete); -: 41: delete [] x; -: 42:} -: 43: -: 44:template struct checked_deleter -: 45:{ -: 46: typedef void result_type; -: 47: typedef T * argument_type; -: 48: -: 49: void operator()(T * x) const -: 50: { -: 51: // boost:: disables ADL -: 52: boost::checked_delete(x); -: 53: } -: 54:}; -: 55: -: 56:template struct checked_array_deleter -: 57:{ -: 58: typedef void result_type; -: 59: typedef T * argument_type; -: 60: -: 61: void operator()(T * x) const -: 62: { -: 63: boost::checked_array_delete(x); -: 64: } -: 65:}; -: 66: -: 67:} // namespace boost -: 68: -: 69:#endif // #ifndef BOOST_CORE_CHECKED_DELETE_HPP <<<<<< EOF # path=/home/travis/build/richelbilderbeek/TicTacToe/^#RibiClasses#CppHelp#help.h.gcov -: 0:Source:../RibiClasses/CppHelp/help.h -: 0:Graph:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoemenudialog.gcno -: 0:Data:/home/travis/build/richelbilderbeek/TicTacToe/debug/tictactoemenudialog.gcda -: 0:Runs:1 -: 0:Programs:1 -: 1:#ifndef RIBI_HELP_H -: 2:#define RIBI_HELP_H -: 3: -: 4:#include -: 5:#include -: 6:#include -: 7: -: 8:namespace ribi { -: 9: -: 10:///Help is used to manage a help screen its info -: 11:///Help always has some default options, as used by each MenuDialog -: 12:struct Help -: 13:{ -: 14: //Help options function _ZN4ribi4Help6OptionC2ERKS1_ called 0 returned 0% blocks executed 0% function _ZN4ribi4Help6OptionD2Ev called 0 returned 0% blocks executed 0% #####: 15: struct Option call 0 never executed call 1 never executed call 2 never executed call 3 never executed call 4 never executed call 5 never executed call 6 never executed call 7 never executed call 8 never executed branch 9 never executed branch 10 never executed call 11 never executed call 12 never executed call 13 never executed call 14 never executed call 15 never executed call 16 never executed call 17 never executed -: 16: { -: 17: explicit Option( -: 18: const char option_short, -: 19: const std::string& option_long, -: 20: const std::string& option_description -: 21: ); -: 22: char m_short; // a -: 23: std::string m_long; // about -: 24: std::string m_description; // displays the about information -: 25: }; -: 26: explicit Help( -: 27: const std::string& program_name, -: 28: const std::string& program_description, -: 29: const std::vector