Integer8 and Integer8Comparer class implementation
[platform/framework/native/appfw.git] / inc / FBaseLog.h
index 6426fa4..b2e251b 100644 (file)
@@ -1,5 +1,4 @@
 //
-// Open Service Platform
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
 // Licensed under the Apache License, Version 2.0 (the License);
@@ -71,13 +70,13 @@ extern "C" {
        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 {;}
@@ -188,7 +187,7 @@ extern "C" {
  * @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
  *
@@ -220,7 +219,7 @@ extern "C" {
  * @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.
  *
@@ -244,7 +243,7 @@ extern "C" {
  * @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.
  *
@@ -268,7 +267,7 @@ extern "C" {
  * @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.
  *
@@ -390,7 +389,7 @@ extern "C" {
  *
  * @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]  ...                             The message to display
  *
  * The following example demonstrates how to use the Try macro.
  *
@@ -419,7 +418,7 @@ extern "C" {
  * @hideinitializer
  */
 #define TryCatch(condition, expr, ...) \
-       if (!(condition)) { \
+       if (!(condition)) {     \
                AppLogException(__VA_ARGS__); \
                expr; \
                goto CATCH;     \
@@ -434,8 +433,8 @@ extern "C" {
  *
  * @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]  r                               The last result to set
+ * @param[in]  ...                             The message to display
  * @hideinitializer
  */
 #define TryCatchResult(condition, expr, r, ...) \
@@ -456,8 +455,8 @@ extern "C" {
 * @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]    r                              The last result to set
+* @param[in]    ...                            The message to display
 * @hideinitializer
 */
 #define TryCatchLabelResult(condition, expr, catchLabel, r, ...) \
@@ -476,7 +475,7 @@ extern "C" {
  *
  * @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, ...) \
@@ -510,7 +509,7 @@ extern "C" {
  *
  * @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
@@ -529,7 +528,7 @@ extern "C" {
  * @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, ...) \
@@ -545,7 +544,7 @@ extern "C" {
  * @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, ...) \
@@ -561,7 +560,7 @@ extern "C" {
 *
 * @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, ...) \
@@ -579,10 +578,10 @@ extern "C" {
  *
  * @since 2.0
  *
- * @param[in]  tag                     Used to identify the source of a log message
+ * @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]  expr                    Expressions that are evaluated before going to CATCH label
- * @param[in]  ...                     The message to display
+ * @param[in]  ...                             The message to display
  * @hideinitializer
  */
 #define TryCatchTag(tag, condition, expr, ...) \
@@ -599,11 +598,11 @@ extern "C" {
  *
  * @since 2.0
  *
- * @param[in]  tag                     Used to identify the source of a log message
+ * @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]  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]  r                               The last result to set
+ * @param[in]  ...                             The message to display
  * @hideinitializer
  */
 #define TryCatchResultTag(tag, condition, expr, r, ...) \
@@ -621,12 +620,12 @@ extern "C" {
 *
 * @since 2.1
 *
-* @param[in]    tag                    Used to identify the source of a log message
+* @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]    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]    r                              The last result to set
+* @param[in]    ...                            The message to display
 * @hideinitializer
 */
 #define TryCatchLabelResultTag(tag, condition, expr, catchLabel, r, ...) \
@@ -643,10 +642,10 @@ extern "C" {
  *
  * @since 2.0
  *
- * @param[in]  tag                     Used to identify the source of a log message
+ * @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]  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, ...) \
@@ -661,11 +660,11 @@ extern "C" {
  *
  * @since 2.0
  *
- * @param[in]  tag                     Used to identify the source of a log message
+ * @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]  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, ...)        \
@@ -681,10 +680,10 @@ extern "C" {
  *
  * @since 2.0
  *
- * @param[in]  tag                     Used to identify the source of a log message
+ * @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]  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, ...) \
@@ -700,9 +699,9 @@ extern "C" {
  *
  * @since 2.0
  *
- * @param[in]  tag                     Used to identify the source of a log message
+ * @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]  ...                     The message to display
+ * @param[in]  ...                             The message to display
  * @hideinitializer
  */
 #define TryReturnVoidTag(tag, condition, ...) \
@@ -718,7 +717,7 @@ extern "C" {
  * @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]  condition       The condition that is expected to be true
  * @param[in]  ...                     The message to display
  * @hideinitializer
  */
@@ -733,10 +732,10 @@ extern "C" {
 *
 * @since 2.1
 *
-* @param[in]    tag                    Used to identify the source of a log message
+* @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]    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, ...) \
@@ -755,121 +754,582 @@ extern "C" {
  *
  * @{
  */
+
 #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 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
+ */
 #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 to protect debug 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 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 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
+ */
 #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 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
+ */
 #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 to protect debug 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 AppSecureLogDebugTag macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           AppSecureLogDebugTag("MyTag", "User ID : 'JoneDoe' mismatch.");
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
+#define AppSecureLogDebugTag(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
+ */
 #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 display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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 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 display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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 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 label.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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 catchLabel
+ * @param[in]    catchLabel            The label for 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, the message is printed and a value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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, the message is printed, sets the last result and a value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality  will be 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, the message is printed, sets the last result and no value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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, the message is printed and no value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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, the message is printed.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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, the informative log message is printed and a value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be 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 display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]  expr                    Expressions that are evaluated before going to 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 display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]  expr                    Expressions that are evaluated before going to 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 label.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]    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
+ * @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, the message is printed with a tag and a value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]  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, the message is printed with a tag, sets the last result and a value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]  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, the message is printed with a tag, sets the last result and no value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]  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, the message is printed with a tag and no value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]  ...                             The message to display
+ * @hideinitializer
+ */
+#define SecureTryReturnVoidTag(tag, condition, ...) \
+       if (!(condition)) { \
+               AppSecureLogExceptionTag(tag, __VA_ARGS__); \
+               return; \
+       } \
+       else {;}
+
+/**
+ * If the condition is @c false, the message is printed with a tag.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]  ...                             The message to display
+ * @hideinitializer
+ */
+#define SecureTryLogTag(tag, condition, ...)   \
+       if (!(condition)) {     \
+               AppSecureLogTag(tag, __VA_ARGS__); \
+       } \
+       else {;}
+
+/**
+ * If the condition is @c false, the informative log message is printed with a tag and a value is returned.
+ * It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
+ * Otherwise, log printing functionality will be removed in the compile time.
+ *
+ * @since 2.1
+ *
+ * @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]    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, ...);
@@ -882,7 +1342,6 @@ _OSP_EXPORT_ void AppLogTagInternal(const char* pTag, const char* pFunction, int
 _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