Applied reviewed header(DateTime to Uuid)
[platform/framework/native/appfw.git] / inc / FBaseSysLog.h
index 17e74e8..1a4db0c 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);
@@ -19,7 +18,7 @@
  * @file               FBaseSysLog.h
  * @brief              This is the header file for the %Log macros.
  *
- * This header file defines the %Log macros.
+ * This header file defines the Log macros.
  */
 
 #ifndef _FBASE_SYS_LOG_H_
@@ -44,14 +43,14 @@ extern "C" {
 /** 
  * @mainpage Tizen Platform API Reference
  *
- * The Tizen platform API Reference provides descriptions of APIs for the platform developers.
+ * The Tizen platform API Reference provides the description of APIs for the platform developers.
  */
 
 /**
  * @defgroup GroupMacros Debugging Macros
  *
- * This page describes Tizen debugging macros used by the Tizen modules.
- * These debugging macros should use specific NID ( Namespace ID ) to distinguish each Tizen modules.
+ * This page describes the Tizen debugging macros used by the Tizen modules.
+ * These debugging macros should use specific NIDs ( Namespace ID ) to distinguish each Tizen module.
  *
  * @since 2.0
  */
@@ -64,15 +63,15 @@ extern "C" {
  */
 
 /**
- * This macro allows display of informative log messages.
+ * This macro allows the display of informative log messages.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  ...                     The message to display
+ * @param[in]  ...         The message to display
  *
- * The following example demonstrates how to use the SysLog macro.
+ * The following example demonstrates how to use the %SysLog macro.
  *
  * @code
  *     bool
@@ -88,7 +87,7 @@ extern "C" {
 #define SysLog(NID, ...)               SysLogInternal(NID, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
 
 /**
- * This macro allows display of exception log messages with a tag and sets the last result.
+ * This macro allows the display of exception log messages with a tag and sets the last result.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -120,14 +119,14 @@ extern "C" {
 #define SysLogException(NID, r, ...)               SysLogExceptionInternal(NID, r, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
 
 /**
- * This macro allows display of informative log messages with a tag.
+ * This macro allows the display of informative log messages with a tag.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
  * @param[in]  tag                     The user defined tag
- * @param[in]  ...                     The message to display
+ * @param[in]  ...         The message to display
  *
  * The following example demonstrates how to use the SysLogTag macro.
  *
@@ -145,7 +144,7 @@ extern "C" {
 #define SysLogTag(NID, tag, ...)       SysLogTagInternal(NID, tag, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
 
 /**
- * This macro allows display of exception log messages with a tag and sets the last result.
+ * This macro allows the display of exception log messages with a tag and sets the last result.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -153,7 +152,7 @@ extern "C" {
  * @param[in]  NID                     The Tizen namespace
  * @param[in]  tag                     The user defined tag
  * @param[in]  r                       The last result to set
- * @param[in]  ...                     The message to display
+ * @param[in]  ...         The message to display
  *
  * The following example demonstrates how to use the SysLogTagException macro.
  *
@@ -173,19 +172,19 @@ extern "C" {
 
 
 /**
- * This macro allows display of informative log message with a tag, when the condition is @c false.
+ * This macro allows the display of informative log messages with a tag, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @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
  *
  * The following example demonstrates how to use the SysTryLog macro.
  *
  * @code
- *     bool
+ *     void
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -206,15 +205,15 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of informative log message, when the condition is @c false.
- * Executes statements and goes to label.
+ * This macro allows the display of informative log messages, when the condition is @c false.
+ * Executes statements and goes to the catch label.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @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]  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 SysTryLogCatch macro.
@@ -245,15 +244,15 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of informative log message and returns returnValue, when the condition is @c false.
+ * This macro allows the display of informative log messages and returns @c returnValue, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
- * @param[in]  NID                     The Tizen namespace
+ * @param[in]  NID                             The Tizen namespace
  * @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]  returnValue     The value to return when the condition is @c false
+ * @param[in]   ...                            The message to display
  *
  * The following example demonstrates how to use the SysTryLogReturn macro.
  *
@@ -282,14 +281,14 @@ extern "C" {
 
 
 /**
- * This macro allows display of exception log message with a tag and sets the last result, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @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]  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
  *
@@ -319,14 +318,14 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag and sets the last result, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
  * This is a shorthand macro for SysTryReturn(NID, condition, r, r, "[" # r "] " ...).
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @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
  *
@@ -334,7 +333,7 @@ extern "C" {
  *
  * @code
  * #define E_UNKNOWN_ERROR 1
- *     bool
+ *     result
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -342,7 +341,7 @@ extern "C" {
  *        SysTryReturnResult(NID, condition, E_UNKNOWN_ERROR, "An unexpected error has occurred.");
  *
  *        //...
- *        return true;
+ *        return E_SUCCESS;
  *     }
  * @endcode
  * @hideinitializer
@@ -357,20 +356,20 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag and sets the last result, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @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
  *
  * The following example demonstrates how to use the SysTryReturnVoidResult macro.
  *
  * @code
- *     bool
+ *     void
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -378,7 +377,7 @@ extern "C" {
  *        SysTryReturnVoidResult(NID, condition,  E_INVALID_ARG, "An unexpected error has occurred.");
  *
  *        //...
- *        return true;
+ *        return;
  *     }
  * @endcode
  * @hideinitializer
@@ -393,15 +392,15 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag, when the condition is @c false.
- * Executes statements, sets the last result and goes to label.
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result and goes to the catch label.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @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]  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
  *
@@ -433,16 +432,16 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag, when the condition is @c false.
- * Executes statements, sets the last result and goes to label.
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result and goes to the catch label.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
- * @param[in]  expr                    Expressions that are evaluated before going to catchLabel label
- * @param[in]  catchLabel              The label for goto operation
+ * @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
  *
@@ -475,7 +474,7 @@ extern "C" {
 
 
 /**
- * This macro allows display of exception log message and the program will expire, when the condition is @c false.
+ * This macro allows the display of exception log messages and the program expires, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -506,12 +505,12 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag and the program will expire, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and the program expires, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @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]          ...                     The message to display
  *
  * The following example demonstrates how to use the SysAssertf macro.
@@ -539,7 +538,7 @@ extern "C" {
 
 
 /**
- * This macro generates an error message during compile time, when the condition is @c false.
+ * This macro generates an error message during the compile time, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -569,7 +568,7 @@ case condition: \
 
 
 /**
- * This macro allows display of exception log messages.
+ * This macro allows the display of exception log messages.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -606,123 +605,343 @@ case condition: \
 #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.
-* This system log macro is for the platform modules.
-*
-* @since 2.1
-*
-* @param[in]   NID                     The Tizen namespace ID
-* @param[in]   ...                     The message to display
-*
-* The following example demonstrates how to use the SysSecureLog macro.
-*
-* @code
-*        bool
-*        MyEngine::Init(int value)
-*        {
-*           SysSecureLog(NID, "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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLog macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           SysSecureLog(NID, "User ID : 'JoneDoe'");
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
 #define SysSecureLog(NID, ...)
 
 /**
-* This macro is to protect exception log messages which needs to keep security, and sets the last result.
-* It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
-* Otherwise, it will be removed in the compile time.
-* This system log macro is for the platform modules.
-*
-* @since 2.1
-*
-* @param[in]   NID                     The Tizen namespace ID
-* @param[in]   r                       The last result to set
-* @param[in]   ...                     The message to display
-*
-* The following example demonstrates how to use the SysSecureLogException macro.
-*
-* @code
-*        bool
-*        MyEngine::Init(int value)
-*        {
-*           //...
-*           if (something_wrong)
-*           {
-*              SysSecureLogException(NID,  E_INVALID_ARG, "User ID : 'JoneDoe' mismatch.");
-*
-*              return false;
-*           }
-*   //...
-*
-*           return true;
-*        }
-* @endcode
-* @hideinitializer
-*/
-#define SysSecureLogException(NID, r,...)
-
-/**
-* 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.
-* This system log macro is for the platform modules.
-*
-* @since 2.1
-*
-* @param[in]   NID                     The Tizen namespace ID
-* @param[in]   tag                     The user defined tag
-* @param[in]   ...                     The message to display
-*
-* The following example demonstrates how to use the SysSecureLogTag macro.
-*
-* @code
-*        bool
-*        MyEngine::Init(int value)
-*        {
-*           SysSecureLogTag(NID, "MyTag", "User ID : 'JoneDoe'");
-*
-*           return true;
-*        }
-* @endcode
-* @hideinitializer
-*/
+ * This macro is used to protect exception log messages which needs security, and sets the last result.
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  r                       The last result to set
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLogException macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           //...
+ *           if (something_wrong)
+ *           {
+ *              SysSecureLogException(NID,  E_INVALID_ARG, "User ID : 'JoneDoe' mismatch.");
+ *
+ *              return false;
+ *           }
+ *   //...
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureLogException(NID, r,...)                      SetLastResult(r);
+
+/**
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  tag                     The user defined tag
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLogTag macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           SysSecureLogTag(NID, "MyTag", "User ID : 'JoneDoe'");
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
 #define SysSecureLogTag(NID, tag, ...)
 
 /**
-* This macro is to protect exception log messages which needs to keep security, with a tag and sets the last result.
-* It allows display of exception log messages if compiled with "_SECURE_LOG" definition.
-* Otherwise, it will be removed in the compile time.
-* This system log macro is for the platform modules.
-*
-* @since 2.1
-*
-* @param[in]   NID                     The Tizen namespace ID
-* @param[in]   tag                     The user defined tag
-* @param[in]   r                       The last result to set
-* @param[in]   ...                     The message to display
-*
-* The following example demonstrates how to use the SysSecureLogExceptionTag macro.
-*
-* @code
-*        bool
-*        MyEngine::Init(int value)
-*        {
-*           SysSecureLogExceptionTag(NID, "MyTag", E_INVALID_ARG, "User ID : 'JoneDoe' mismatch.");
-*
-*           return true;
-*        }
-* @endcode
-* @hideinitializer
-*/
-#define SysSecureLogExceptionTag(NID, tag, r, ...)
+ * This macro is used to protect exception log messages which need security, with a tag and sets the last result.
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  tag                     The user defined tag
+ * @param[in]  r                       The last result to set
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLogExceptionTag macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           SysSecureLogExceptionTag(NID, "MyTag", E_INVALID_ARG, "User ID : 'JoneDoe' mismatch.");
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureLogExceptionTag(NID, tag, r, ...)             SetLastResult(r);
 
 #endif
 
 /**
+ * This macro allows the display of informative log messages with a tag, when the condition is @c false.
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]          ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureTry macro.
+ *
+ * @code
+ *     bool
+ *     MyEngine::Init(int value)
+ *     {
+ *        //...
+ *
+ *        SysSecureTryLog(NID, condition, "Password mismatch : %s", password );
+ *
+ *        //...
+ *     }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureTryLog(NID, condition, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLog(NID, __VA_ARGS__); \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of informative log messages, when the condition is @c false.
+ * Executes statements 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @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 SysSecureTryLogCatch(NID, condition, expr, ...)        \
+       do \
+       { \
+               if (unlikely(!(condition))) { \
+                       SysSecureLog(NID, __VA_ARGS__); \
+                       expr; \
+                       goto CATCH;     \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of informative log messages and returns @c returnValue, when the condition is @c false.
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @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 SysSecureTryLogReturn(NID, condition, returnValue, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) { \
+                       SysSecureLog(NID, __VA_ARGS__); \
+                       return returnValue;     \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @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 SysSecureTryReturn(NID, condition, returnValue, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       return returnValue;     \
+               } \
+       } while (0);
+
+#if defined(_SECURE_LOG)
+/**
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
+ * This is a shorthand macro for SysSecureTryReturn(NID, condition, r, r, "[" # r "] " ...).
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @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 SysSecureTryReturnResult(NID, condition, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysTryReturnResultInternal(NID, r, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__); \
+                       return r;       \
+               } \
+       } while (0);
+
+#else
+#define SysSecureTryReturnResult(NID, condition, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SetLastResult(r); \
+                       return r;       \
+               } \
+       } while (0);
+#endif
+
+/**
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
+ * 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @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 SysSecureTryReturnVoidResult(NID, condition, r, ...)   \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       return; \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @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 SysSecureTryCatch(NID, condition, expr, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       expr; \
+                       goto CATCH;     \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result 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.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @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 SysSecureTryCatchLabel(NID, condition, expr, catchLabel, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       expr; \
+                       goto catchLabel; \
+               } \
+       } while (0);
+
+
+/**
  * Defines the log ID.
  */
 enum LogID