Add new JSON_INTERNAL_CATCH macro function
This commit is contained in:
parent
7bfc406ded
commit
d0e60de433
4 changed files with 20 additions and 4 deletions
|
@ -42,10 +42,12 @@
|
||||||
#define JSON_THROW(exception) throw exception
|
#define JSON_THROW(exception) throw exception
|
||||||
#define JSON_TRY try
|
#define JSON_TRY try
|
||||||
#define JSON_CATCH(exception) catch(exception)
|
#define JSON_CATCH(exception) catch(exception)
|
||||||
|
#define JSON_INTERNAL_CATCH(exception) catch(exception)
|
||||||
#else
|
#else
|
||||||
#define JSON_THROW(exception) std::abort()
|
#define JSON_THROW(exception) std::abort()
|
||||||
#define JSON_TRY if(true)
|
#define JSON_TRY if(true)
|
||||||
#define JSON_CATCH(exception) if(false)
|
#define JSON_CATCH(exception) if(false)
|
||||||
|
#define JSON_INTERNAL_CATCH(exception) if(false)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// override exception macros
|
// override exception macros
|
||||||
|
@ -60,6 +62,11 @@
|
||||||
#if defined(JSON_CATCH_USER)
|
#if defined(JSON_CATCH_USER)
|
||||||
#undef JSON_CATCH
|
#undef JSON_CATCH
|
||||||
#define JSON_CATCH JSON_CATCH_USER
|
#define JSON_CATCH JSON_CATCH_USER
|
||||||
|
#define JSON_INTERNAL_CATCH JSON_CATCH_USER
|
||||||
|
#endif
|
||||||
|
#if defined(JSON_INTERNAL_CATCH_USER)
|
||||||
|
#undef JSON_INTERNAL_CATCH
|
||||||
|
#define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// manual branch prediction
|
// manual branch prediction
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
|
#undef JSON_INTERNAL_CATCH
|
||||||
#undef JSON_CATCH
|
#undef JSON_CATCH
|
||||||
#undef JSON_THROW
|
#undef JSON_THROW
|
||||||
#undef JSON_TRY
|
#undef JSON_TRY
|
||||||
|
|
|
@ -3437,7 +3437,7 @@ class basic_json
|
||||||
{
|
{
|
||||||
return ptr.get_checked(this);
|
return ptr.get_checked(this);
|
||||||
}
|
}
|
||||||
JSON_CATCH (out_of_range&)
|
JSON_INTERNAL_CATCH (out_of_range&)
|
||||||
{
|
{
|
||||||
return default_value;
|
return default_value;
|
||||||
}
|
}
|
||||||
|
@ -7359,7 +7359,7 @@ class basic_json
|
||||||
// the "path" location must exist - use at()
|
// the "path" location must exist - use at()
|
||||||
success = (result.at(ptr) == get_value("test", "value", false));
|
success = (result.at(ptr) == get_value("test", "value", false));
|
||||||
}
|
}
|
||||||
JSON_CATCH (out_of_range&)
|
JSON_INTERNAL_CATCH (out_of_range&)
|
||||||
{
|
{
|
||||||
// ignore out of range errors: success remains false
|
// ignore out of range errors: success remains false
|
||||||
}
|
}
|
||||||
|
|
|
@ -157,10 +157,12 @@ using json = basic_json<>;
|
||||||
#define JSON_THROW(exception) throw exception
|
#define JSON_THROW(exception) throw exception
|
||||||
#define JSON_TRY try
|
#define JSON_TRY try
|
||||||
#define JSON_CATCH(exception) catch(exception)
|
#define JSON_CATCH(exception) catch(exception)
|
||||||
|
#define JSON_INTERNAL_CATCH(exception) catch(exception)
|
||||||
#else
|
#else
|
||||||
#define JSON_THROW(exception) std::abort()
|
#define JSON_THROW(exception) std::abort()
|
||||||
#define JSON_TRY if(true)
|
#define JSON_TRY if(true)
|
||||||
#define JSON_CATCH(exception) if(false)
|
#define JSON_CATCH(exception) if(false)
|
||||||
|
#define JSON_INTERNAL_CATCH(exception) if(false)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// override exception macros
|
// override exception macros
|
||||||
|
@ -175,6 +177,11 @@ using json = basic_json<>;
|
||||||
#if defined(JSON_CATCH_USER)
|
#if defined(JSON_CATCH_USER)
|
||||||
#undef JSON_CATCH
|
#undef JSON_CATCH
|
||||||
#define JSON_CATCH JSON_CATCH_USER
|
#define JSON_CATCH JSON_CATCH_USER
|
||||||
|
#define JSON_INTERNAL_CATCH JSON_CATCH_USER
|
||||||
|
#endif
|
||||||
|
#if defined(JSON_INTERNAL_CATCH_USER)
|
||||||
|
#undef JSON_INTERNAL_CATCH
|
||||||
|
#define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// manual branch prediction
|
// manual branch prediction
|
||||||
|
@ -14272,7 +14279,7 @@ class basic_json
|
||||||
{
|
{
|
||||||
return ptr.get_checked(this);
|
return ptr.get_checked(this);
|
||||||
}
|
}
|
||||||
JSON_CATCH (out_of_range&)
|
JSON_INTERNAL_CATCH (out_of_range&)
|
||||||
{
|
{
|
||||||
return default_value;
|
return default_value;
|
||||||
}
|
}
|
||||||
|
@ -18194,7 +18201,7 @@ class basic_json
|
||||||
// the "path" location must exist - use at()
|
// the "path" location must exist - use at()
|
||||||
success = (result.at(ptr) == get_value("test", "value", false));
|
success = (result.at(ptr) == get_value("test", "value", false));
|
||||||
}
|
}
|
||||||
JSON_CATCH (out_of_range&)
|
JSON_INTERNAL_CATCH (out_of_range&)
|
||||||
{
|
{
|
||||||
// ignore out of range errors: success remains false
|
// ignore out of range errors: success remains false
|
||||||
}
|
}
|
||||||
|
@ -18565,6 +18572,7 @@ inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// clean up
|
// clean up
|
||||||
|
#undef JSON_INTERNAL_CATCH
|
||||||
#undef JSON_CATCH
|
#undef JSON_CATCH
|
||||||
#undef JSON_THROW
|
#undef JSON_THROW
|
||||||
#undef JSON_TRY
|
#undef JSON_TRY
|
||||||
|
|
Loading…
Reference in a new issue