1// future -*- C++ -*- 2 3// Copyright (C) 2009 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// <http://www.gnu.org/licenses/>. 24 25#include <future> 26 27namespace 28{ 29 struct future_error_category : public std::error_category 30 { 31 virtual const char* 32 name() const 33 { return "future"; } 34 35 virtual std::string message(int __ec) const 36 { 37 std::string __msg; 38 switch (std::future_errc(__ec)) 39 { 40 case std::future_errc::broken_promise: 41 __msg = "Broken promise"; 42 break; 43 case std::future_errc::future_already_retrieved: 44 __msg = "Future already retrieved"; 45 break; 46 case std::future_errc::promise_already_satisfied: 47 __msg = "Promise already satisfied"; 48 break; 49 default: 50 __msg = "Unknown error"; 51 break; 52 } 53 return __msg; 54 } 55 }; 56 57 const future_error_category& 58 __future_category_instance() 59 { 60 static const future_error_category __fec; 61 return __fec; 62 } 63} 64 65namespace std 66{ 67 const error_category* const future_category = &__future_category_instance(); 68 69 future_error::~future_error() throw() { } 70 71 const char* 72 future_error::what() const throw() { return _M_code.message().c_str(); } 73} 74