//
-// Open Service Platform
// Copyright (c) 2012 Samsung Electronics Co., Ltd.
//
// Licensed under the Apache License, Version 2.0 (the License);
/**
* @defgroup GroupMacros Debugging Macros
*
- * This page describes Tizen debugging macros.
+ * This page describes the Tizen debugging macros.
*
* @since 2.0
*/
else {;}
#define AppAssert(condition) \
- if (!(condition)) { \
+ if (!(condition)) { \
AppassertInternal(__PRETTY_FUNCTION__, __LINE__); \
} \
else {;}
#define AppAssertf(condition, ...) \
- if (!(condition)) { \
+ if (!(condition)) { \
AppassertfInternal(# condition, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__); \
} \
else {;}
* @{
*/
/**
- * This macro allows display of arbitrary messages for future examination.
+ * This macro allows the display of arbitrary messages for future examination.
*
* @since 2.0
*
* @since 2.0
*
* @param[in] condition The condition that is expected to be true
- * @param[in] ... The message to print, if the assertion fails
+ * @param[in] ... The message to print, if the assertion fails
*
* @image html debugging_appassert.png
*
* @since 2.0
*
* @param[in] expression The expression to evaluate
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
*
* The following example demonstrates how to use the AppLogIf macro.
*
* @since 2.0
*
* @param[in] expression The expression to evaluate
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
*
* The following example demonstrates how to use the AppLogDebugIf macro.
*
* @since 2.0
*
* @param[in] expression The expression to evaluate
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
*
* The following example demonstrates how to use the AppLogExceptionIf macro.
*
* @since 2.0
*
* @param[in] condition The condition that is expected to be true
- * @param[in] expr Expressions that are evaluated before going to CATCH label
- * @param[in] ... The message to display
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] ... The message to display
*
* The following example demonstrates how to use the Try macro.
*
* @hideinitializer
*/
#define TryCatch(condition, expr, ...) \
- if (!(condition)) { \
+ if (!(condition)) { \
AppLogException(__VA_ARGS__); \
expr; \
goto CATCH; \
* @since 2.0
*
* @param[in] condition The condition that is expected to be true
- * @param[in] expr Expressions that are evaluated before going to CATCH label
- * @param[in] r The last result to set
- * @param[in] ... The message to display
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryCatchResult(condition, expr, r, ...) \
/**
* If the condition is @c false, it prints a message, sets the last result, evaluates a cleanup expression
-* and goes to label.
+* and goes to the catch label.
*
* @since 2.1
*
* @param[in] condition The condition that is expected to be true
-* @param[in] expr Expressions that are evaluated before going to catchLabel
-* @param[in] catchLabel The label for goto operation
-* @param[in] r The last result to set
-* @param[in] ... The message to display
+* @param[in] expr Expressions that are evaluated before going to the CATCH label
+* @param[in] catchLabel The label for the goto operation
+* @param[in] r The last result to set
+* @param[in] ... The message to display
* @hideinitializer
*/
#define TryCatchLabelResult(condition, expr, catchLabel, r, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed and a value is returned.
+ * If the condition is @c false, a message is printed and a value is returned.
*
* @since 2.0
*
* @param[in] condition The condition that is expected to be true
* @param[in] returnValue The value to return when the condition is @c false
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryReturn(condition, returnValue, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed, sets the last result and a value is returned.
+ * If the condition is @c false, a message is printed, the last result is set and a value is returned.
*
* @since 2.0
*
* @param[in] condition The condition that is expected to be true
* @param[in] returnValue The value to return when the condition is @c false
- * @param[in] r The last result to set
- * @param[in] ... The message to display
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryReturnResult(condition, returnValue, r, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed, sets the last result and no value is returned.
+ * If the condition is @c false, a message is printed, the last result is set and no value is returned.
*
* @since 2.0
*
- * @param[in] condition The condition that is expected to be true
+ * @param[in] condition The condition that is expected to be true
* @param[in] r The last result to set
* @param[in] ... The message to display
* @hideinitializer
else {;}
/**
- * If the condition is @c false, the message is printed and no value is returned.
+ * If the condition is @c false, a message is printed and no value is returned.
*
* @since 2.0
*
* @param[in] condition The condition that is expected to be true
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryReturnVoid(condition, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed.
+ * If the condition is @c false, a message is printed.
*
* @since 2.0
*
* @param[in] condition The condition that is expected to be true
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryLog(condition, ...) \
else {;}
/**
-* If the condition is @c false, the informative log message is printed and a value is returned.
+* If the condition is @c false, an informative log message is printed and a value is returned.
*
* @since 2.1
*
* @param[in] condition The condition that is expected to be true
* @param[in] returnValue The value to return when the condition is @c false
-* @param[in] ... The message to display
+* @param[in] ... The message to display
* @hideinitializer
*/
#define TryLogReturn(condition, returnValue, ...) \
*
* @since 2.0
*
- * @param[in] tag Used to identify the source of a log message
+ * @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
- * @param[in] expr Expressions that are evaluated before going to CATCH label
- * @param[in] ... The message to display
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryCatchTag(tag, condition, expr, ...) \
*
* @since 2.0
*
- * @param[in] tag Used to identify the source of a log message
+ * @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
- * @param[in] expr Expressions that are evaluated before going to CATCH label
- * @param[in] r The last result to set
- * @param[in] ... The message to display
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryCatchResultTag(tag, condition, expr, r, ...) \
/**
* If the condition is @c false, it prints a message with a tag, sets the last result, evaluates a cleanup expression
-* and goes to label.
+* and goes to the catch label.
*
* @since 2.1
*
-* @param[in] tag Used to identify the source of a log message
+* @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
-* @param[in] expr Expressions that are evaluated before going to catchLabel
-* @param[in] catchLabel The label for goto operation
-* @param[in] r The last result to set
-* @param[in] ... The message to display
+* @param[in] expr Expressions that are evaluated before going to the CATCH label
+* @param[in] catchLabel The label for the goto operation
+* @param[in] r The last result to set
+* @param[in] ... The message to display
* @hideinitializer
*/
#define TryCatchLabelResultTag(tag, condition, expr, catchLabel, r, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed with a tag and a value is returned.
+ * If the condition is @c false, a message is printed with a tag and a value is returned.
*
* @since 2.0
*
- * @param[in] tag Used to identify the source of a log message
+ * @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
* @param[in] returnValue The value to return when the condition is @c false
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryReturnTag(tag, condition, returnValue, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed with a tag, sets the last result and a value is returned.
+ * If the condition is @c false, it prints a message with a tag, sets the last result and returns a value.
*
* @since 2.0
*
- * @param[in] tag Used to identify the source of a log message
+ * @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
* @param[in] returnValue The value to return when the condition is @c false
- * @param[in] r The last result to set
- * @param[in] ... The message to display
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryReturnResultTag(tag, condition, returnValue, r, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed with a tag, sets the last result and no value is returned.
+ * If the condition is @c false, it prints a message with a tag, sets the last result and does not return any value.
*
* @since 2.0
*
- * @param[in] tag Used to identify the source of a log message
+ * @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
- * @param[in] r The last result to set
- * @param[in] ... The message to display
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryReturnVoidResultTag(tag, condition, r, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed with a tag and no value is returned.
+ * If the condition is @c false, a message is printed with a tag and no value is returned.
*
* @since 2.0
*
- * @param[in] tag Used to identify the source of a log message
+ * @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
- * @param[in] ... The message to display
+ * @param[in] ... The message to display
* @hideinitializer
*/
#define TryReturnVoidTag(tag, condition, ...) \
else {;}
/**
- * If the condition is @c false, the message is printed with a tag.
+ * If the condition is @c false, a message is printed with a tag.
*
* @since 2.0
*
- * @param[in] tag Used to identify the source of a log message
- * @param[in] condition The condition that is expected to be true
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
* @param[in] ... The message to display
* @hideinitializer
*/
else {;}
/**
-* If the condition is @c false, the informative log message is printed with a tag and a value is returned.
+* If the condition is @c false, an informative log message is printed with a tag and a value is returned.
*
* @since 2.1
*
-* @param[in] tag Used to identify the source of a log message
+* @param[in] tag Used to identify the source of the log message
* @param[in] condition The condition that is expected to be true
* @param[in] returnValue The value to return when the condition is @c false
-* @param[in] ... The message to display
+* @param[in] ... The message to display
* @hideinitializer
*/
#define TryLogReturnTag(tag, condition, returnValue, ...) \
*
* @{
*/
+
#if (defined(_APP_LOG) || defined(_OSP_DEBUG_) || defined(_DEBUG)) && defined(_SECURE_LOG)
-#define AppSecureLog(...) AppLogInternal(__PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+#define AppSecureLog(...) AppLogInternal(__PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+#define AppSecureLogDebug(...) AppLogDebugInternal(__PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
#define AppSecureLogException(...) AppLogExceptionInternal(__PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
-#define AppSecureLogTag(tag, ...) AppLogTagInternal(tag, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+#define AppSecureLogTag(tag, ...) AppLogTagInternal(tag, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+#define AppSecureLogDebugTag(tag, ...) AppLogDebugTagInternal(tag, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
#define AppSecureLogExceptionTag(tag, ...) AppLogExceptionTagInternal(tag, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
#else
/**
-* This macro is to protect informative log messages which needs to keep security.
-* It allows display of informative log messages if compiled with "_SECURE_LOG" definition.
-* Otherwise, it will be removed in the compile time.
-*
-* @since 2.1
-*
-* @param[in] ... The message to display
-*
-* The following example demonstrates how to use the AppSecureLog macro.
-*
-* @code
-* bool
-* MyEngine::Init(int value)
-* {
-* AppSecureLog("User ID : 'JoneDoe'");
-*
-* return true;
-* }
-* @endcode
-* @hideinitializer
-*/
+ * This macro is used to protect informative log messages which need security.
+ * It allows the display of informative log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] ... The message to display
+ *
+ * The following example demonstrates how to use the AppSecureLog macro.
+ *
+ * @code
+ * bool
+ * MyEngine::Init(int value)
+ * {
+ * AppSecureLog("User ID : 'JoneDoe'");
+ *
+ * return true;
+ * }
+ * @endcode
+ * @hideinitializer
+ */
#define AppSecureLog(...)
/**
-* This macro is to protect exception log messages which needs to keep security.
-* It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
-* Otherwise, it will be removed in the compile time.
-*
-* @since 2.1
-*
-* @param[in] ... The message to display
-*
-* The following example demonstrates how to use the AppSecureLogException macro.
-*
-* @code
-* bool
-* MyEngine::Init(int value)
-* {
-* //...
-* if (something_wrong)
-* {
-* AppSecureLogException("User ID : 'JoneDoe' mismatch.");
-*
-* return false;
-* }
-* //...
-*
-* return true;
-* }
-* @endcode
-* @hideinitializer
-*/
+ * This macro is used to protect debug log messages which need security.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] ... The message to display
+ *
+ * The following example demonstrates how to use the AppSecureLogDebug macro.
+ *
+ * @code
+ * bool
+ * MyEngine::Init(int value)
+ * {
+ * //...
+ * if (something_wrong)
+ * {
+ * AppSecureLogDebug("User ID : 'JoneDoe' mismatch.");
+ *
+ * return false;
+ * }
+ * //...
+ *
+ * return true;
+ * }
+ * @endcode
+ * @hideinitializer
+ */
+#define AppSecureLogDebug(...)
+
+/**
+ * This macro is used to protect exception log messages which need security.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] ... The message to display
+ *
+ * The following example demonstrates how to use the AppSecureLogException macro.
+ *
+ * @code
+ * bool
+ * MyEngine::Init(int value)
+ * {
+ * //...
+ * if (something_wrong)
+ * {
+ * AppSecureLogException("User ID : 'JoneDoe' mismatch.");
+ *
+ * return false;
+ * }
+ * //...
+ *
+ * return true;
+ * }
+ * @endcode
+ * @hideinitializer
+ */
#define AppSecureLogException(...)
/**
-* This macro is to protect informative log messages which needs to keep security, with a tag.
-* It allows display of informative log messages if compiled with "_SECURE_LOG" definition.
-* Otherwise, it will be removed in the compile time.
-*
-* @since 2.1
-*
-* @param[in] tag The user defined tag
-* @param[in] ... The message to display
-*
-* The following example demonstrates how to use the AppSecureLogTag macro.
-*
-* @code
-* bool
-* MyEngine::Init(int value)
-* {
-* AppSecureLogTag("MyTag", "User ID : 'JoneDoe'");
-*
-* return true;
-* }
-* @endcode
-* @hideinitializer
-*/
+ * This macro is used to protect informative log messages which need security, with a tag.
+ * It allows the display of informative log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag The user defined tag
+ * @param[in] ... The message to display
+ *
+ * The following example demonstrates how to use the AppSecureLogTag macro.
+ *
+ * @code
+ * bool
+ * MyEngine::Init(int value)
+ * {
+ * AppSecureLogTag("MyTag", "User ID : 'JoneDoe'");
+ *
+ * return true;
+ * }
+ * @endcode
+ * @hideinitializer
+ */
#define AppSecureLogTag(tag, ...)
/**
-* This macro is to protect exception log messages which needs to keep security, with a tag.
-* It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
-* Otherwise, it will be removed in the compile time.
-*
-* @since 2.1
-*
-* @param[in] tag The user defined tag
-* @param[in] ... The message to display
-*
-* The following example demonstrates how to use the AppSecureLogExceptionTag macro.
-*
-* @code
-* bool
-* MyEngine::Init(int value)
-* {
-* AppSecureLogExceptionTag("MyTag", "User ID : 'JoneDoe' mismatch.");
-*
-* return true;
-* }
-* @endcode
-* @hideinitializer
-*/
+ * This macro is used to protect debug log messages which need security, with a tag.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag The user defined tag
+ * @param[in] ... The message to display
+ *
+ * The following example demonstrates how to use the AppSecureLogDebugTag macro.
+ *
+ * @code
+ * bool
+ * MyEngine::Init(int value)
+ * {
+ * AppSecureLogDebugTag("MyTag", "User ID : 'JoneDoe' mismatch.");
+ *
+ * return true;
+ * }
+ * @endcode
+ * @hideinitializer
+ */
+#define AppSecureLogDebugTag(tag, ...)
+
+/**
+ * This macro is used to protect exception log messages which need security, with a tag.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag The user defined tag
+ * @param[in] ... The message to display
+ *
+ * The following example demonstrates how to use the AppSecureLogExceptionTag macro.
+ *
+ * @code
+ * bool
+ * MyEngine::Init(int value)
+ * {
+ * AppSecureLogExceptionTag("MyTag", "User ID : 'JoneDoe' mismatch.");
+ *
+ * return true;
+ * }
+ * @endcode
+ * @hideinitializer
+ */
#define AppSecureLogExceptionTag(tag, ...)
#endif
+
+/**
+ * If the condition is @c false, it prints a message, evaluates a cleanup expression,
+ * and goes to <tt>CATCH</tt>.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] ... The message to display
+ *
+ * The following example demonstrates how to use the SecureTry macro.
+ *
+ * @code
+ * result
+ * MyClass::DoSomething(const String* passwd)
+ * {
+ * result r = E_SUCCESS;
+ *
+ * // Do something...
+ *
+ * // If password is wrong, print "[E_INVALID_ARG] The password '1234' is wrong." to the console
+ * // execute the expression "r = E_INVALID_ARG", and move to CATCH
+ * SecureTryCatch(*passwd != refPasswd, r = E_INVALID_ARG, "[E_INVALID_ARG] The password '%ls' is wrong.", passwd->GetPointer());
+ *
+ * SetLastResult(E_SUCCESS);
+ *
+ * return E_SUCCESS;// execute the expression "r = E_INVALID_ARG", and move to CATCH
+ *
+ * CATCH:
+ * SetLastResult(r);
+ * // Do something
+ *
+ * return r;
+ * }
+ * @endcode
+ * @hideinitializer
+ */
+#define SecureTryCatch(condition, expr, ...) \
+ if (!(condition)) { \
+ AppSecureLogException(__VA_ARGS__); \
+ expr; \
+ goto CATCH; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, it prints a message, sets the last result, evaluates a cleanup expression
+ * and goes to <tt>CATCH</tt>.
+ * It allows the display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryCatchResult(condition, expr, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogException(__VA_ARGS__); \
+ expr; \
+ goto CATCH; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, it prints a message, sets the last result, evaluates a cleanup expression
+ * and goes to the catch label.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] catchLabel The label for the goto operation
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryCatchLabelResult(condition, expr, catchLabel, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogException(__VA_ARGS__); \
+ expr; \
+ goto catchLabel; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed and a value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] returnValue The value to return when the condition is @c false
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturn(condition, returnValue, ...) \
+ if (!(condition)) { \
+ AppSecureLogException(__VA_ARGS__); \
+ return returnValue; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, it prints a message, sets the last result and returns a value.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] returnValue The value to return when the condition is @c false
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnResult(condition, returnValue, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogException(__VA_ARGS__); \
+ return returnValue; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed, the last result is set and no value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnVoidResult(condition, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogException(__VA_ARGS__); \
+ return; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed and no value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnVoid(condition, ...) \
+ if (!(condition)) { \
+ AppSecureLogException(__VA_ARGS__); \
+ return; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryLog(condition, ...) \
+ if (!(condition)) { \
+ AppSecureLog(__VA_ARGS__); \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, an informative log message is printed and a value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] returnValue The value to return when the condition is @c false
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryLogReturn(condition, returnValue, ...) \
+ if (!(condition)) { \
+ AppSecureLog(__VA_ARGS__); \
+ return returnValue; \
+ } \
+ else {;}
+
+// SecureTryTag Macros
+
+/**
+ * If the condition is @c false, it prints a message with a tag, evaluates a cleanup expression
+ * and goes to <tt>CATCH</tt>.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryCatchTag(tag, condition, expr, ...) \
+ if (!(condition)) { \
+ AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+ expr; \
+ goto CATCH; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, it prints a message with a tag, sets the last result, evaluates a cleanup expression,
+ * and goes to <tt>CATCH</tt>.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryCatchResultTag(tag, condition, expr, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+ expr; \
+ goto CATCH; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, it prints a message with a tag, sets the last result, evaluates a cleanup expression
+ * and goes to the catch label.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] expr Expressions that are evaluated before going to the CATCH label
+ * @param[in] catchLabel The label for the goto operation
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryCatchLabelResultTag(tag, condition, expr, catchLabel, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+ expr; \
+ goto catchLabel; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed with a tag and a value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] returnValue The value to return when the condition is @c false
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnTag(tag, condition, returnValue, ...) \
+ if (!(condition)) { \
+ AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+ return returnValue; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed with a tag, the last result is set and a value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] returnValue The value to return when the condition is @c false
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnResultTag(tag, condition, returnValue, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+ return returnValue; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed with a tag, the last result is set and no value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] r The last result to set
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnVoidResultTag(tag, condition, r, ...) \
+ if (!(condition)) { \
+ SetLastResult(r); \
+ AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+ return; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed with a tag and no value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnVoidTag(tag, condition, ...) \
+ if (!(condition)) { \
+ AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+ return; \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, a message is printed with a tag.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryLogTag(tag, condition, ...) \
+ if (!(condition)) { \
+ AppSecureLogTag(tag, __VA_ARGS__); \
+ } \
+ else {;}
+
+/**
+ * If the condition is @c false, an informative log message is printed with a tag and a value is returned.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @param[in] tag Used to identify the source of the log message
+ * @param[in] condition The condition that is expected to be true
+ * @param[in] returnValue The value to return when the condition is @c false
+ * @param[in] ... The message to display
+ * @hideinitializer
+ */
+#define SecureTryLogReturnTag(tag, condition, returnValue, ...) \
+ if (!(condition)) { \
+ AppSecureLogTag(tag, __VA_ARGS__); \
+ return returnValue; \
+ } \
+ else {;}
+
/** @} */
_OSP_EXPORT_ void AppLogInternal(const char* pFunction, int lineNumber, const char* pFormat, ...);
_OSP_EXPORT_ void AppLogDebugTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...);
_OSP_EXPORT_ void AppLogExceptionTagInternal(const char* pTag, const char* pFunction, int lineNumber, const char* pFormat, ...);
-
#ifdef __cplusplus
}
#endif