Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:20

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /*
0004  * Copyright (C) 2020 Chris Johns (http://contemporary.software)
0005  *
0006  * Redistribution and use in source and binary forms, with or without
0007  * modification, are permitted provided that the following conditions
0008  * are met:
0009  * 1. Redistributions of source code must retain the above copyright
0010  *    notice, this list of conditions and the following disclaimer.
0011  * 2. Redistributions in binary form must reproduce the above copyright
0012  *    notice, this list of conditions and the following disclaimer in the
0013  *    documentation and/or other materials provided with the distribution.
0014  *
0015  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0016  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0017  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0018  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0019  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0020  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0021  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0022  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0023  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0024  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0025  * POSSIBILITY OF SUCH DAMAGE.
0026  */
0027 
0028 #include <rtems/error.hpp>
0029 
0030 namespace rtems
0031 {
0032   runtime_error::runtime_error(const rtems_status_code sc)
0033     : std::runtime_error(::rtems_status_text(sc)),
0034       sc(sc)
0035   {
0036   }
0037 
0038   runtime_error::runtime_error(const rtems_status_code sc,
0039                                const std::string&      what)
0040     : std::runtime_error(what + ": " + ::rtems_status_text(sc)),
0041       sc(sc)
0042   {
0043   }
0044 
0045   runtime_error::runtime_error(const rtems_status_code sc,
0046                                const char*             what)
0047     : std::runtime_error(std::string(what) + ": " + ::rtems_status_text(sc)),
0048       sc(sc)
0049   {
0050   }
0051 
0052   runtime_error::~runtime_error()
0053   {
0054   }
0055 
0056   void
0057   runtime_error_check(const rtems_status_code sc)
0058   {
0059     if (sc != RTEMS_SUCCESSFUL) {
0060       throw runtime_error(sc);
0061     }
0062   }
0063 
0064   void
0065   runtime_error_check(const rtems_status_code sc, const std::string& what)
0066   {
0067     if (sc != RTEMS_SUCCESSFUL) {
0068       throw runtime_error(sc, what);
0069     }
0070   }
0071 
0072   void
0073   runtime_error_check(const rtems_status_code sc, const char* what)
0074   {
0075     if (sc != RTEMS_SUCCESSFUL) {
0076       throw runtime_error(sc, what);
0077     }
0078   }
0079 };