Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
roccom_exception.h File Reference
#include "roccom_basic.h"
#include <string>
Include dependency graph for roccom_exception.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  COM_exception
 Encapsulates the states of an exception. More...
 

Macros

#define append_frame(s, frame)   append_frame_info( s, #frame, __FILE__, __LINE__)
 Macro for appending the information about the given frame to the string s. More...
 
#define CATCHEXP_APPEND(frame)
 Macro for catching an exception and append the information to the current frame. More...
 
#define CATCHBADALLOC_APPEND(frame)
 Macro for catching an deallocation exception and append the information to the current frame. More...
 
#define CATCHREST_APPEND(frame)
 Macro for catching an unknown exception and append the information to the current frame. More...
 

Enumerations

enum  Error_code {
  COM_WARN_DUP_WINDOW = 100, COM_WARN_DUP_ATTRIBUTE, COM_WARN_DUP_FUNCTION, COM_WARN_DUP_FUNC,
  COM_WARN_EMPTY_MESH, COM_WARN_MODULE_LOADED, COM_ERR_MODULE_NOTLOADED =1000, COM_ERR_COULD_OPENLIB,
  COM_ERR_COULD_FINDSYM, COM_ERR_WAS_INITIALIZED, COM_ERR_WASNOT_INITIALIZED, COM_ERR_WINDOW_NOTEXIST,
  COM_ERR_PANE_NOTEXIST, COM_ERR_ATTRIBUTE_NOTEXIST, COM_ERR_FUNCTION_NOTEXIST, COM_ERR_UNKNOWN_KEYWORD,
  COM_ERR_UNKNOWN_DATATYPE, COM_ERR_INVALID_ATTRIBUTE_NAME, COM_ERR_ATTRIBUTE_INITIALIZED, COM_ERR_ATTRIBUTE_ALLOCATED,
  COM_ERR_ATTRIBUTE_NOT_ALLOCATED, COM_ERR_ATTRIBUTE_CONST, COM_ERR_ALLOC_STRUCTURED, COM_ERR_INVALID_DIMENSION,
  COM_ERR_INVALID_SIZE, COM_ERR_INVALID_CAPACITY, COM_ERR_INVALID_STRIDE, COM_ERR_INVALID_ADDR,
  COM_ERR_F90FUNC, COM_ERR_UNKNOWN_INTENT, COM_ERR_TOO_MANY_ARGS, COM_ERR_TOO_FEW_ARGS,
  COM_ERR_INVALID_FUNCTION_HANDLE, COM_ERR_INVALID_ATTRIBUTE_HANDLE, COM_ERR_INVALID_WINDOW_HANDLE, COM_ERR_INIT_DONE_PANEMAP,
  COM_ERR_INCOMPATIBLE_ATTRS, COM_ERR_INCOMPATIBLE_TYPES, COM_ERR_NOT_A_WINDOW_ATTRIBUTE, COM_ERR_NOT_A_POINTER,
  COM_ERR_IMMUTABLE, COM_ERR_NULL_POINTER, COM_ERR_OUT_OF_MEMORY, COM_ERR_INDEX_OUT_OF_BOUNDS,
  COM_ERR_PARENT_SMALLER, COM_ERR_CHANGE_INHERITED, COM_ERR_RESIZE, COM_ERR_INHERIT_MESH_LATE,
  COM_ERR_INHERIT_ST_NG, COM_ERR_MIXED_GHOST, COM_ERR_GHOST_NODES, COM_ERR_GHOST_ELEMS,
  COM_ERR_GHOST_LAYERS, COM_ERR_APPEND_ARRAY, COM_UNKNOWN_ERROR
}
 Error codes. More...
 

Functions

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...
 

Macro Definition Documentation

#define append_frame (   s,
  frame 
)    append_frame_info( s, #frame, __FILE__, __LINE__)

Macro for appending the information about the given frame to the string s.

Definition at line 81 of file roccom_exception.h.

Referenced by Window::alloc_array(), Attribute::allocate(), Roccom_base::allocate_array(), Window::append_array(), Roccom_base::append_array(), Attribute::append_array(), Attribute::Attribute(), Window::attribute(), Roccom_base::call_function(), Roccom_base::clone_attribute(), Pane::connectivity(), Roccom_base::copy_array(), Window::copy_array(), Attribute::copy_array(), copy_array_common(), Roccom_base::copy_attribute(), Window::dealloc_array(), Roccom_base::deallocate_array(), Roccom_base::delete_attribute(), Window::delete_attribute(), Roccom_base::delete_pane(), Roccom_base::delete_window(), Attribute::get_addr(), Connectivity::get_addr(), Roccom_base::get_array(), Window::get_array(), get_array_common(), Roccom_base::get_attribute(), Window::get_attribute(), Roccom_base::get_attribute_handle(), Roccom_base::get_attribute_handle_const(), Roccom_base::get_attributes(), Roccom_base::get_communicator(), Roccom_base::get_connectivities(), Roccom_base::get_f90pointer(), Roccom_base::get_function(), Roccom_base::get_function_handle(), Roccom_base::get_modules(), Roccom_base::get_num_arguments(), Roccom_base::get_panes(), Window::get_parent(), Roccom_base::get_parent(), Roccom_base::get_size(), Window::get_size(), get_size_common(), Window::get_status(), Roccom_base::get_status(), Roccom_base::get_window(), Roccom_base::get_window_handle(), Roccom_base::get_window_object(), Roccom_base::get_windows(), Window::inherit(), Pane::inherit(), Pane::init_done(), Window::init_done(), Roccom_base::new_attribute(), Window::new_attribute(), Pane::new_attribute(), Roccom_base::new_window(), Window::pane(), Pane::refresh_connectivity(), Pane::reinit_attr(), Pane::reinit_conn(), Window::resize_array(), Roccom_base::resize_array(), Roccom_base::set_array(), Window::set_array(), Roccom_base::set_f90pointer(), Window::set_function(), Roccom_base::set_function(), Roccom_base::set_member_function_helper(), Attribute::set_pointer(), Roccom_base::set_profiling_barrier(), Roccom_base::set_size(), Window::set_size(), Connectivity::set_size(), Attribute::set_size(), Pane::set_size(), Roccom_base::split_name(), Roccom_base::use_attribute(), and Roccom_base::window_init_done().

#define CATCHBADALLOC_APPEND (   frame)
Value:
catch ( std::bad_alloc xa) \
Encapsulates the states of an exception.
#define append_frame(s, frame)
Macro for appending the information about the given frame to the string s.

Macro for catching an deallocation exception and append the information to the current frame.

Definition at line 92 of file roccom_exception.h.

Referenced by Attribute::allocate(), Attribute::inherit(), and Pane::inherit().

#define CATCHEXP_APPEND (   frame)
Value:
catch ( COM_exception e) \
{ throw COM_exception( e.ierr, append_frame( e.msg, frame)); }
Error_code ierr
Error code.
Encapsulates the states of an exception.
std::string msg
Error message.
#define append_frame(s, frame)
Macro for appending the information about the given frame to the string s.

Macro for catching an exception and append the information to the current frame.

Definition at line 86 of file roccom_exception.h.

Referenced by Attribute::allocate(), Attribute::deallocate(), Attribute::inherit(), and Pane::inherit().

#define CATCHREST_APPEND (   frame)
Value:
catch (...) \
{ throw COM_exception( COM_UNKNOWN_ERROR, append_frame( "", frame)); }
Encapsulates the states of an exception.
#define append_frame(s, frame)
Macro for appending the information about the given frame to the string s.

Macro for catching an unknown exception and append the information to the current frame.

Definition at line 98 of file roccom_exception.h.

Enumeration Type Documentation

enum Error_code

Error codes.

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

Definition at line 34 of file roccom_exception.h.

34  {

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.