Introduce CSSAssertSetFailFunc and CSSAsserFail to throw managed exception

Summary:
- Define CSS_ASSERT_FAIL_ENABLED for P/Invoke (Visual Studio project already has it)
- Pass managed delegate pointer to unmanaged side via P/Invoke.
- CSSAssertFail will call the managed delegate when assert failed.
- The delegate will throw managed exception.

Reviewed By: emilsjolander

Differential Revision: D3982084

fbshipit-source-id: 058a87c10ca89238362be4d8759cc00dd0c9b376
This commit is contained in:
Kazuki Sakamoto
2016-10-07 12:31:06 -07:00
committed by Facebook Github Bot
parent 90844d62c5
commit 56f6efdecf
8 changed files with 92 additions and 9 deletions

View File

@@ -33,8 +33,16 @@
#define CSS_ABORT()
#endif
#define CSS_ASSERT(X, message) \
if (!(X)) { \
fprintf(stderr, "%s\n", message); \
CSS_ABORT(); \
#if CSS_ASSERT_FAIL_ENABLED
#define CSS_ERROR_FUNC(message) CSSAssertFail(message)
#else
#define CSS_ERROR_FUNC(message) fprintf(stderr, "%s", message)
#endif
#ifndef CSS_ASSERT
#define CSS_ASSERT(X, message) \
if (!(X)) { \
CSS_ERROR_FUNC(message); \
CSS_ABORT(); \
}
#endif