AMCAX Kernel
Geometry kernel for CAD/CAE/CAM
AMCAX Kernel 1.0.0.0
Exception.hpp File Reference

Exception handling in AMCAX Meshing lib. More...

#include <utilities/Logger.hpp>
#include <cassert>
#include <iostream>
#include <stdexcept>
Include dependency graph for Exception.hpp:
This graph shows which files directly or indirectly include this file:

Classes

class  AMCAX::Meshing::MeshBaseError
 

Namespaces

namespace  AMCAX
 Namespace of all interface in the AMCAX kernel.
 
namespace  AMCAX::Meshing
 Namespace of all interface in the AMCAX Meshing module.
 

Macros

#define DEFINE_ERROR_TYPE(err, base)
 
#define AMCAXMeshing_Throw(exception, message, ...)
 
#define AMCAXMeshing_Throw_if(condition, exception, message, ...)
 
#define AMCAXMeshing_Throw_Logic_Error(err_code, message, ...)    AMCAXMeshing_Throw(MeshLogicError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Construction_Error(err_code, message, ...)    AMCAXMeshing_Throw(MeshConstructionError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Dimension_Error(err_code, message, ...)    AMCAXMeshing_Throw(MeshDimensionError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Dimension_Mismatch(err_code, message, ...)    AMCAXMeshing_Throw(MeshDimensionMismatch, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Divided_by_Zero(err_code, message, ...)    AMCAXMeshing_Throw(MeshDividedByZero, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Domain_Error(err_code, message, ...)    AMCAXMeshing_Throw(MeshDomainError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Infinite_Solutions(err_code, message, ...)    AMCAXMeshing_Throw(MeshInfiniteSolutions, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Negative_Value(err_code, message, ...)    AMCAXMeshing_Throw(MeshNegativeValue, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_No_Such_Object(err_code, message, ...)    AMCAXMeshing_Throw(MeshNoSuchObject, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Deleted_Object(err_code, message, ...)    AMCAXMeshing_Throw(MeshDeletedObject, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Not_Done_Error(err_code, message, ...)    AMCAXMeshing_Throw(MeshNotDoneError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Null_Object(err_code, message, ...)    AMCAXMeshing_Throw(MeshNullObject, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Null_Value(err_code, message, ...)    AMCAXMeshing_Throw(MeshNullValue, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Out_of_Range(err_code, message, ...)    AMCAXMeshing_Throw(MeshOutOfRange, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Type_Mismatch(err_code, message, ...)    AMCAXMeshing_Throw(MeshTypeMismatch, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Invalid_Argument(err_code, message, ...)    AMCAXMeshing_Throw(MeshTypeMismatch, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Size_Mismatch(err_code, message, ...)    AMCAXMeshing_Throw(MeshSizeMismatch, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Logic_Error_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshLogicError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Construction_Error_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshConstructionError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Dimension_Error_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshDimensionError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Dimension_Mismatch_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshDimensionMismatch, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Divided_by_Zero_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshDividedByZero, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Domain_Error_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshDomainError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Infinite_Solutions_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshInfiniteSolutions, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Negative_Value_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshNegativeValue, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_No_Such_Object_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshNoSuchObject, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Deleted_Object_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshDeletedObject, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Not_Done_Error_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshNotDoneError, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Null_Object_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshNullObject, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Null_Value_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshNullValue, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Out_of_Range_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshOutOfRange, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Type_Mismatch_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshTypeMismatch, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Invalid_Argument_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshInvalidArgument, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Size_Mismatch_if(cond, err_code, message, ...)    AMCAXMeshing_Throw_if(cond, MeshSizeMismatch, err_code, message, ##__VA_ARGS__)
 
#define AMCAXMeshing_Throw_Not_Implemented()
 
#define AMCAXMeshing_Throw_Not_Implemented_Checked()
 
#define AMCAXMeshing_AssertAuxCodes(code)
 behavior when Assertion fails: exit program of throw exception.
 
#define AMCAXMeshing_Exit(message, ...)
 
#define AMCAXMeshing_Assert(condition, message, ...)
 
#define AMCAXMeshing_ExpensiveAssertAuxCodes(code)
 
#define AMCAXMeshing_ExpensiveAssert(condition, message, ...)
 

Enumerations

enum class  ErrorCode {
  NoError = 0 , LogicError , InvalidArgument , DomainError ,
  RuntimeError , FilePathError , FileFormatError , MeshHasNonManifold ,
  MeshHasSelfInter , MeshHasNonManifoldOrSelfInter , NumericError , NotImplemented ,
  Underflow , Overflow , OutOfRange
}
 

Functions

 AMCAX::Meshing::DEFINE_ERROR_TYPE (MeshOutOfMemory, MeshProgramError) DEFINE_ERROR_TYPE(MeshNotImplemented
 
MeshProgramError AMCAX::Meshing::DEFINE_ERROR_TYPE (MeshNoMoreObject, MeshProgramError) DEFINE_ERROR_TYPE(MeshNoSuchObject
 
MeshProgramError MeshProgramError AMCAX::Meshing::DEFINE_ERROR_TYPE (MeshDeletedObject, MeshProgramError) DEFINE_ERROR_TYPE(MeshNullObject
 
MeshProgramError MeshProgramError MeshProgramError AMCAX::Meshing::DEFINE_ERROR_TYPE (MeshNullValue, MeshProgramError) DEFINE_ERROR_TYPE(MeshImmutableObject
 

Detailed Description

Exception handling in AMCAX Meshing lib.

This file is part of AMCAX kernel.

Macro Definition Documentation

◆ AMCAXMeshing_Throw_Not_Implemented

#define AMCAXMeshing_Throw_Not_Implemented ( )
Value:
throw AMCAX::Meshing::MeshNotImplemented( \
AMCAX::Meshing::ErrorCode::NotImplemented, std::string(__func__), true);

◆ AMCAXMeshing_Throw_Not_Implemented_Checked

#define AMCAXMeshing_Throw_Not_Implemented_Checked ( )
Value:
throw AMCAX::Meshing::MeshNotImplemented( \
AMCAX::Meshing::ErrorCode::NotImplemented, std::string(__func__), true);

◆ DEFINE_ERROR_TYPE

#define DEFINE_ERROR_TYPE (   err,
  base 
)
Value:
class err : public base \
{ \
public: \
explicit err(ErrorCode err_code, bool hasTime = false) \
: base(err_code, \
hasTime ? std::string("[" + getLocalTime() + "] ").append(#err) \
: std::string()) \
{ \
} \
explicit err(ErrorCode err_code, const std::string &message, \
bool hasTime = false) \
: base(err_code, hasTime ? std::string("[" + getLocalTime() + "] ") \
.append(#err) \
.append(": ") \
.append(message) \
: message) \
{ \
} \
};