1 // Copyright (c) 2020, Parallax Software, Inc.
2 //
3 // This program is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
15 
16 %{
17 %}
18 
19 %exception {
20   try { $function }
catch(std::bad_alloc &)21   catch (std::bad_alloc &) {
22     fprintf(stderr, "Error: out of memory.");
23     exit(0);
24   }
25   // This catches std::runtime_eror (utl::error) and sta::Exception.
catch(std::exception & excp)26   catch (std::exception &excp) {
27     Tcl_ResetResult(interp);
28     Tcl_AppendResult(interp, excp.what(), nullptr);
29     return TCL_ERROR;
30   }
31 }
32