Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
roccom_exception.C File Reference
#include "roccom_exception.h"
#include <iostream>
#include <cstdio>
Include dependency graph for roccom_exception.C:

Go to the source code of this file.

Functions

COM_BEGIN_NAME_SPACE void printStackBacktrace ()
 Print the stack backtrace. More...
 
std::ostream & operator<< (std::ostream &os, const COM_exception &ex)
 Print out a given exception. More...
 
std::string append_frame_info (const std::string &s, const char *frame, const char *file, int line)
 Append the information about the given frame to the string s. More...
 

Function Documentation

std::string append_frame_info ( const std::string &  s,
const char *  frame,
const char *  file,
int  line 
)

Append the information about the given frame to the string s.

Definition at line 190 of file roccom_exception.C.

191  {
192  char buf[1000];
193 
194  std::sprintf( buf, "\nRoccom: In %s of file %s at line %d",
195  frame, file, line);
196  return s+buf;
197 }
double s
Definition: blastest.C:80
std::ostream& operator<< ( std::ostream &  os,
const COM_exception ex 
)

Print out a given exception.

Definition at line 56 of file roccom_exception.C.

References COM_ERR_ALLOC_STRUCTURED, COM_ERR_APPEND_ARRAY, COM_ERR_ATTRIBUTE_ALLOCATED, COM_ERR_ATTRIBUTE_CONST, COM_ERR_ATTRIBUTE_INITIALIZED, COM_ERR_ATTRIBUTE_NOT_ALLOCATED, COM_ERR_ATTRIBUTE_NOTEXIST, COM_ERR_CHANGE_INHERITED, COM_ERR_COULD_FINDSYM, COM_ERR_COULD_OPENLIB, COM_ERR_F90FUNC, COM_ERR_FUNCTION_NOTEXIST, COM_ERR_GHOST_ELEMS, COM_ERR_GHOST_LAYERS, COM_ERR_GHOST_NODES, COM_ERR_IMMUTABLE, COM_ERR_INCOMPATIBLE_ATTRS, COM_ERR_INCOMPATIBLE_TYPES, COM_ERR_INDEX_OUT_OF_BOUNDS, COM_ERR_INHERIT_MESH_LATE, COM_ERR_INHERIT_ST_NG, COM_ERR_INIT_DONE_PANEMAP, COM_ERR_INVALID_ADDR, COM_ERR_INVALID_ATTRIBUTE_HANDLE, COM_ERR_INVALID_ATTRIBUTE_NAME, COM_ERR_INVALID_CAPACITY, COM_ERR_INVALID_DIMENSION, COM_ERR_INVALID_FUNCTION_HANDLE, COM_ERR_INVALID_SIZE, COM_ERR_INVALID_STRIDE, COM_ERR_INVALID_WINDOW_HANDLE, COM_ERR_MIXED_GHOST, COM_ERR_MODULE_NOTLOADED, COM_ERR_NOT_A_POINTER, COM_ERR_NOT_A_WINDOW_ATTRIBUTE, COM_ERR_NULL_POINTER, COM_ERR_OUT_OF_MEMORY, COM_ERR_PANE_NOTEXIST, COM_ERR_PARENT_SMALLER, COM_ERR_RESIZE, COM_ERR_TOO_FEW_ARGS, COM_ERR_TOO_MANY_ARGS, COM_ERR_UNKNOWN_DATATYPE, COM_ERR_UNKNOWN_INTENT, COM_ERR_UNKNOWN_KEYWORD, COM_ERR_WAS_INITIALIZED, COM_ERR_WASNOT_INITIALIZED, COM_ERR_WINDOW_NOTEXIST, COM_UNKNOWN_ERROR, COM_WARN_DUP_ATTRIBUTE, COM_WARN_DUP_FUNC, COM_WARN_DUP_FUNCTION, COM_WARN_DUP_WINDOW, COM_WARN_EMPTY_MESH, COM_WARN_MODULE_LOADED, COM_exception::ierr, and COM_exception::msg.

56  {
57  os << "Roccom: " << (ex.ierr<1000?"WARNING ":"ERROR ")
58  << ex.ierr << ": ";
59  std::string msg;
60  switch (ex.ierr) {
61  case COM_WARN_DUP_WINDOW:
62  msg = "Duplicated window"; break;
64  msg = "Duplicated attribute"; break;
66  msg = "Duplicated function"; break;
67  case COM_WARN_DUP_FUNC:
68  msg = "Duplicated function"; break;
69  case COM_WARN_EMPTY_MESH:
70  msg = "Empty mesh"; break;
72  msg = "Module has already been loaded"; break;
73 
75  msg = "Module was never loaded"; break;
77  msg = "Could not open library"; break;
79  msg = "Could not find symbol"; break;
80 
82  msg = "Roccom was already initialized"; break;
84  msg = "Roccom was not initialized"; break;
85 
87  msg = "Pane map has changed but input argument claims not"; break;
89  msg = "Window does not exist"; break;
91  msg = "Pane does not exist"; break;
93  msg = "Attribute does not exist"; break;
95  msg = "Function does not exist"; break;
97  msg = "Unknown keyword"; break;
99  msg = "Got an unknown data type"; break;
101  msg = "Invalid attribute name"; break;
102 
104  msg = "Attribute was already intialized"; break;
106  msg = "Attribute was not allocated by Roccom"; break;
108  msg = "A const array cannot be modified, and a non-const reference to it\n\
109  cannot be obtained."; break;
111  msg = "Attribute has already been allocated by Roccom"; break;
113  msg = "Connectivity for structured meshes cannot be Allocated"; break;
115  msg = "Invalid number of components or dimensions"; break;
117  msg = "Invalid size. Cannot be negative or larger than capacity, \n\
118  and the number of ghosts cannot be greater than the total number of items."; break;
120  msg = "Invalid capacity. Cannot be smaller than the registered \n\
121  size or be zero when setting a nonnull array"; break;
123  msg = "Invalid stride. Must be either 1 or >= the number of components"; break;
124  case COM_ERR_INVALID_ADDR:
125  msg = "Invalid address. Probably is trying to register a local/stack variable."; break;
126 
127  case COM_ERR_F90FUNC:
128  msg = "Only F90 functions can accept F90 pointers"; break;
130  msg = "Unknown intention of argument"; break;
131  case COM_ERR_TOO_MANY_ARGS:
132  msg = "Too many arguments"; break;
133  case COM_ERR_TOO_FEW_ARGS:
134  msg = "Too few argument"; break;
136  msg = "Received an invalid function handle"; break;
138  msg = "Received an invalid attribute handle"; break;
140  msg = "Received an invalid window handle"; break;
142  msg = "Incompatible attributes"; break;
144  msg = "Incompatible data types"; break;
145 
147  msg = "Not a window attribute"; break;
149  msg = "Trying to nullify an attribute that is not a pointer"; break;
150  case COM_ERR_IMMUTABLE:
151  msg = "Immutable attributes cannot be passed to mutable arguments"; break;
153  msg = "Unexpected null pointer"; break;
154  case COM_ERR_OUT_OF_MEMORY:
155  msg = "Out of memory"; break;
157  msg = "Index out of bounds"; break;
158 
160  msg = "Parent window does not have all the panes in child window"; break;
162  msg = "Trying to change the meta-data of an inherited attribute"; break;
163  case COM_ERR_RESIZE:
164  msg = "Trying to resize an inherited or user-allocated attribute"; break;
166  msg = "Mesh must be used/cloned before creating any attribute"; break;
168  msg = "Inheritance w/o ghost is not supported for structured meshes"; break;
169  case COM_ERR_MIXED_GHOST:
170  msg = "Ghost elements of unstructured mesh must be at the end"; break;
171  case COM_ERR_GHOST_NODES:
172  msg = "The number of ghost nodes must be <= the total number of nodes"; break;
173  case COM_ERR_GHOST_ELEMS:
174  msg = "The number of ghost elements must be <= the total number of elements"; break;
176  msg = "The number of ghost layers must be <= half of each dimension"; break;
178  msg = "Appending array is supported only for window and pane attributes without ghosts"; break;
179  case COM_UNKNOWN_ERROR:
180  default:
181  msg = "Unknow error";
182  }
183 
184  os << msg << "\nRoccom: Error encountered when processing "
185  << ex.msg << std::endl << "Roccom: ";
186  return os;
187 }
Error_code ierr
Error code.
std::string msg
Error message.
COM_BEGIN_NAME_SPACE void printStackBacktrace ( )

Print the stack backtrace.

Definition at line 40 of file roccom_exception.C.

References i.

Referenced by assertion_fail(), Roccom_base::init(), postcondition_fail(), precondition_fail(), Roccom_base::proc_exception(), and warning_fail().

40  {
41 #if !defined( __CHARMC__) && defined(TRACEBACK)
42  const int max_stack=64;
43  void *stackPtrs[max_stack];
44 
45  int levels=backtrace(stackPtrs,max_stack);
46  char **symbols=backtrace_symbols(stackPtrs, levels);
47 
48  const int nSkip=2;
49  std::printf( "\nStack Backtrace:\n");
50  for ( int i=nSkip; i<levels; i++) {
51  std::printf( " [%d] %s\n", i-nSkip, symbols[i]);
52  }
53 #endif
54 }
blockLoc i
Definition: read.cpp:79

Here is the caller graph for this function: