//
-// Open Service Platform
// Copyright (c) 2012 Samsung Electronics Co., Ltd.
//
// Licensed under the Apache License, Version 2.0 (the License);
* @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_
/**
* @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
*/
*/
/**
- * 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
#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
#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.
*
#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
* @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.
*
/**
- * 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)
* {
* //...
} 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.
} 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.
*
/**
- * 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
*
} 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
*
*
* @code
* #define E_UNKNOWN_ERROR 1
- * bool
+ * result
* MyEngine::Init(int value)
* {
* //...
* SysTryReturnResult(NID, condition, E_UNKNOWN_ERROR, "An unexpected error has occurred.");
*
* //...
- * return true;
+ * return E_SUCCESS;
* }
* @endcode
* @hideinitializer
} 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)
* {
* //...
* SysTryReturnVoidResult(NID, condition, E_INVALID_ARG, "An unexpected error has occurred.");
*
* //...
- * return true;
+ * return;
* }
* @endcode
* @hideinitializer
} 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
*
} 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
*
/**
- * 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
} 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.
/**
- * 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
/**
- * 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
#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