Few warnings removed (MSVC).
[platform/core/uifw/dali-core.git] / dali / public-api / common / dali-common.h
old mode 100644 (file)
new mode 100755 (executable)
index a76ff30..5b668f5
@@ -1,8 +1,8 @@
-#ifndef __DALI_COMMON_H__
-#define __DALI_COMMON_H__
+#ifndef DALI_COMMON_H
+#define DALI_COMMON_H
 
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,9 +23,9 @@
 /*
  * Definitions for shared library support.
  *
- * If a library is configured with --enable-exportall or --enable-debug
+ * If a library is built with -DENABLE_EXPORTALL=ON or -DENABLE_DEBUG=ON
  * then HIDE_DALI_INTERNALS is not defined, and nothing is hidden.
- * If it is configured without these options (the default), then HIDE_INTERNALS
+ * If it is built without these options (the default), then HIDE_INTERNALS
  * is defined when building the library, visibility is automatically hidden, and the explicit
  * defines below come into use.
  * When building a library that uses DALI, HIDE_DALI_INTERNALS.
 #  ifndef HIDE_DALI_INTERNALS
 #    define DALI_EXPORT_API
 #    define DALI_IMPORT_API
+#    define DALI_CORE_API
 #    define DALI_INTERNAL
 #  else
 #    define DALI_EXPORT_API __attribute__ ((visibility ("default")))
 #    define DALI_IMPORT_API __attribute__ ((visibility ("default")))
+#    define DALI_CORE_API   __attribute__ ((visibility ("default")))
 #    define DALI_INTERNAL   __attribute__ ((visibility ("hidden")))
 #  endif
 #else
-/** Visibility attribute to show method definitions */
+#ifdef WIN32
+ /** Visibility attribute to show declarations */
+#  define DALI_EXPORT_API __declspec(dllexport)
+
+#ifdef BUILDING_DALI_CORE
+ /** Visibility attribute to hide declarations */
+#  define DALI_CORE_API __declspec(dllexport)
+#else
+/** Visibility attribute to hide declarations */
+#  define DALI_CORE_API __declspec(dllimport)
+#endif
+
+#else
+ /** Visibility attribute to show declarations */
 #  define DALI_EXPORT_API
 /** Visibility attribute to show declarations */
 #  define DALI_IMPORT_API
+/** Visibility attribute to show declarations */
+#  define DALI_CORE_API
+#endif
 /** Visibility attribute to hide declarations */
 #  define DALI_INTERNAL
 #endif
  * DALI_UNLIKELY should be used when a branch is almost never taken.
  * @SINCE_1_0.0
  */
+#ifdef __GNUC
 #define DALI_LIKELY(expression)   __builtin_expect( !!(expression), 1 )
 #define DALI_UNLIKELY(expression) __builtin_expect( !!(expression), 0 )
+#else
+#define DALI_LIKELY(expression)   !!(expression)
+#define DALI_UNLIKELY(expression) !!(expression)
+#endif
 
 /**
  * @brief The DALi namespace.
@@ -90,13 +113,13 @@ namespace Dali
  * @param[in] location Where the assertion occurred
  * @param[in] condition The assertion condition
  */
-DALI_IMPORT_API void DaliAssertMessage( const char* location, const char* condition );
+DALI_CORE_API void DaliAssertMessage( const char* location, const char* condition );
 
 /**
  * @brief Exception class for Dali Core library - Raised by assertions in codebase.
  * @SINCE_1_0.0
  */
-class DALI_IMPORT_API DaliException
+class DALI_CORE_API DaliException
 {
 public:
   /**
@@ -146,7 +169,11 @@ public:
  * @SINCE_1_0.0
  */
 #if defined(DEBUG_ENABLED)
+#if defined(WIN32)
+#define ASSERT_LOCATION __FUNCSIG__
+#else
 #define ASSERT_LOCATION __PRETTY_FUNCTION__
+#endif
 #else
 #define ASSERT_LOCATION NULL
 #endif
@@ -176,4 +203,13 @@ public:
 #define DALI_ASSERT_DEBUG(cond)
 #endif
 
-#endif // __DALI_COMMON_H__
+/// Use DALI_FALLTHROUGH in switch statements where one case is supposed to fall through into another case
+#define DALI_FALLTHROUGH
+#if __GNUC__
+#if __has_cpp_attribute(fallthrough)
+#undef DALI_FALLTHROUGH
+#define DALI_FALLTHROUGH [[fallthrough]]
+#endif
+#endif
+
+#endif // DALI_COMMON_H