Skip to content

Commit

Permalink
✨ Specify the API interface properly
Browse files Browse the repository at this point in the history
— 🛠 Fix bug in unreachable.h specification
  • Loading branch information
ThePhD committed Aug 14, 2022
1 parent 77621ab commit 2c50d70
Show file tree
Hide file tree
Showing 13 changed files with 254 additions and 215 deletions.
8 changes: 2 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,9 @@ target_link_libraries(ztd.idk
)
target_compile_definitions(ztd.idk
PRIVATE
$<$<STREQUAL:$<TARGET_PROPERTY:ztd.idk,TYPE>,SHARED_LIBRARY>:ZTD_DLL=1>
ZTD_IDK_BUILD=1
PUBLIC
ZTD_BUILD=1
ZTD_HEADER_ONLY=0 # TODO: the build is not header-only anymore
ZTD_INLINE_BUILD=0 # TODO: the settings for inline

# build have not been implemented yet
$<$<STREQUAL:$<TARGET_PROPERTY:ztd.idk,TYPE>,SHARED_LIBRARY>:ZTD_IDK_DLL=1>
)

if(ZTD_IDK_IS_TOP_LEVEL_PROJECT)
Expand Down
92 changes: 92 additions & 0 deletions include/ztd/idk/detail/api.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
// =============================================================================
//
// ztd.idk
// Copyright © 2022 JeanHeyd "ThePhD" Meneide and Shepherd's Oasis, LLC
// Contact: opensource@soasis.org
//
// Commercial License Usage
// Licensees holding valid commercial ztd.idk licenses may use this file in
// accordance with the commercial license agreement provided with the
// Software or, alternatively, in accordance with the terms contained in
// a written agreement between you and Shepherd's Oasis, LLC.
// For licensing terms and conditions see your agreement. For
// further information contact opensource@soasis.org.
//
// Apache License Version 2 Usage
// Alternatively, this file may be used under the terms of Apache License
// Version 2.0 (the "License") for non-commercial use; you may not use this
// file except in compliance with the License. You may obtain a copy of the
// License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// ============================================================================ //

#pragma once

#ifndef ZTD_IDK_DETAIL_API_H
#define ZTD_IDK_DETAIL_API_H

#include <ztd/idk/version.h>

// clang-format off

#if defined(ZTD_IDK_BUILD)
#if (ZTD_IDK_BUILD != 0)
#define ZTD_IDK_BUILD_I_ ZTD_ON
#else
#define ZTD_IDK_BUILD_I_ ZTD_OFF
#endif
#else
#define ZTD_IDK_BUILD_I_ ZTD_DEFAULT_OFF
#endif // Building or not

#if defined(ZTD_IDK_DLL)
#if (ZTD_IDK_DLL != 0)
#define ZTD_IDK_DLL_I_ ZTD_ON
#else
#define ZTD_IDK_DLL_I_ ZTD_ON
#endif
#else
#define ZTD_IDK_DLL_I_ ZTD_OFF
#endif // Building or not

#if defined(ZTD_IDK_API_LINKAGE)
#define ZTD_IDK_API_LINKAGE_I_ ZTD_IDK_API_LINKAGE
#else
#if ZTD_IS_ON(ZTD_IDK_DLL)
#if ZTD_IS_ON(ZTD_COMPILER_VCXX) || ZTD_IS_ON(ZTD_IDK_WINDOWS) || ZTD_IS_ON(ZTD_IDK_CYGWIN)
// MSVC Compiler; or, Windows, or Cygwin platforms
#if ZTD_IS_ON(ZTD_IDK_BUILD)
// Building the library
#if ZTD_IS_ON(ZTD_COMPILER_GCC)
// Using GCC
#define ZTD_IDK_API_LINKAGE_I_ __attribute__((dllexport))
#else
// Using Clang, MSVC, etc...
#define ZTD_IDK_API_LINKAGE_I_ __declspec(dllexport)
#endif
#else
#if ZTD_IS_ON(ZTD_COMPILER_GCC)
#define ZTD_IDK_API_LINKAGE_I_ __attribute__((dllimport))
#else
#define ZTD_IDK_API_LINKAGE_I_ __declspec(dllimport)
#endif
#endif
#else
#define ZTD_IDK_API_LINKAGE_I_
#endif
#else
#define ZTD_IDK_API_LINKAGE_I_
#endif // DLL or not
#endif // Build definitions

// clang-format on

#endif // ZTD_IDK_DETAIL_API_H
190 changes: 82 additions & 108 deletions include/ztd/idk/detail/bit.intrinsic.h

Large diffs are not rendered by default.

32 changes: 16 additions & 16 deletions include/ztd/idk/detail/bit.load_store.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,38 +51,38 @@
ZTD_EXTERN_C_OPEN_I_

#define ZTDC_GENERATE_LOAD8_STORE8_DECLARATIONS(_N) \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_leu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_leu##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_beu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_beu##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_aligned_leu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_aligned_leu##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_aligned_beu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint_least##_N##_t ztdc_load8_aligned_beu##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_les##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_les##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_bes##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_bes##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_aligned_les##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_aligned_les##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_aligned_bes##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ int_least##_N##_t ztdc_load8_aligned_bes##_N( \
const unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
\
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_leu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_leu##_N( \
const uint_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_beu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_beu##_N( \
const uint_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_leu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_leu##_N( \
const uint_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_beu##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_beu##_N( \
const uint_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_les##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_les##_N( \
const int_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_bes##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_bes##_N( \
const int_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_les##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_les##_N( \
const int_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_bes##_N( \
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_store8_aligned_bes##_N( \
const int_least##_N##_t __value, unsigned char __ptr[ZTD_PTR_EXTENT(_N / CHAR_BIT)]) ZTD_CXX_NOEXCEPT_I_; \
ztd_static_assert(((_N % 8) == 0), "👍")

Expand Down
18 changes: 9 additions & 9 deletions include/ztd/idk/detail/bit.memreverse.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,31 +51,31 @@
ZTD_EXTERN_C_OPEN_I_

#if (CHAR_BIT % 8 == 0)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_memreverse8(
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ void ztdc_memreverse8(
size_t __n, unsigned char __ptr[ZTD_PTR_EXTENT(__n)]) ZTD_CXX_NOEXCEPT_I_;
#if defined(UINT8_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint8_t ztdc_memreverse8u8(uint8_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint8_t ztdc_memreverse8u8(uint8_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 8 bits
#if defined(UINT16_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint16_t ztdc_memreverse8u16(uint16_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint16_t ztdc_memreverse8u16(uint16_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 16 bits
#if defined(UINT24_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint24_t ztdc_memreverse824(uint24_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint24_t ztdc_memreverse824(uint24_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 24 bits
#if defined(UINT32_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint32_t ztdc_memreverse8u32(uint32_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint32_t ztdc_memreverse8u32(uint32_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 32 bits
#if defined(UINT40_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint40_t ztdc_memreverse8u40(uint40_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint40_t ztdc_memreverse8u40(uint40_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 40 bits
#if defined(UINT48_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint48_t ztdc_memreverse8u48(uint48_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint48_t ztdc_memreverse8u48(uint48_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 48 bits
#if defined(UINT56_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint56_t ztdc_memreverse8u56(uint56_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint56_t ztdc_memreverse8u56(uint56_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 48 bits
#if defined(UINT64_MAX)
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint64_t ztdc_memreverse8u64(uint64_t __value) ZTD_CXX_NOEXCEPT_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ uint64_t ztdc_memreverse8u64(uint64_t __value) ZTD_CXX_NOEXCEPT_I_;
#endif // 64 bits
#endif

Expand Down
24 changes: 10 additions & 14 deletions include/ztd/idk/encoding_detection.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,24 +38,20 @@
#include <stdbool.h>
#endif // C++

ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_execution_encoding_utf8(void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_execution_encoding_unicode(
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_execution_encoding_utf8(void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_execution_encoding_unicode(void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_unicode(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_unicode(
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_utf8(void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_utf16(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_utf8(
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_utf32(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_utf16(
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_literal_encoding_name(void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_wide_literal_encoding_name(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztdc_is_wide_execution_encoding_utf32(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_literal_encoding_name(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_wide_literal_encoding_name(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_execution_encoding_name(
void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_wide_execution_encoding_name(
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_execution_encoding_name(void) ZTD_NOEXCEPT_IF_CXX_I_;
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ const char* ztdc_wide_execution_encoding_name(
void) ZTD_NOEXCEPT_IF_CXX_I_;

#endif // ZTD_IDK_ENCODING_DETECTION_H
2 changes: 1 addition & 1 deletion include/ztd/idk/unreachable.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@

#if ZTD_HAS_BUILTIN_I_(__builtin_unreachable)
#define ZTD_UNREACHABLE() __builtin_unreachable();
#elif ZTD_IS_ON(ZTD_COMPILER_MSVC)
#elif ZTD_IS_ON(ZTD_COMPILER_VCXX)
#define ZTD_UNREACHABLE() __assume(false);
#else
#define ZTD_UNREACHABLE() __builtin_unreachable();
Expand Down
2 changes: 1 addition & 1 deletion include/ztd/idk/utf8_locale.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@
#include <stdbool.h>
#endif

ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztd_idk_attempt_utf8_locale(void);
ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_API_LINKAGE_I_ bool ztd_idk_attempt_utf8_locale(void);

#endif // ZTD_IDK_UTF8_LOCALE_H
20 changes: 2 additions & 18 deletions include/ztd/idk/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,28 +35,12 @@

#include <ztd/version.h>

#if defined(ZTD_IDK_API_LINKAGE)
#define ZTD_IDK_API_LINKAGE_I_ ZTD_IDK_API_LINKAGE
#else
#define ZTD_IDK_API_LINKAGE_I_ ZTD_API_LINKAGE_I_
#endif

#if defined(ZTD_IDK_C_LANGUAGE_LINKAGE)
#define ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_IDK_C_LANGUAGE_LINKAGE
#else
#define ZTD_IDK_C_LANGUAGE_LINKAGE_I_ ZTD_C_LANGUAGE_LINKAGE_I_
#endif

#if defined(ZTD_IDK_CXX_LANGUAGE_LINKAGE)
#define ZTD_IDK_CXX_LANGUAGE_LINKAGE_I_ ZTD_IDK_CXX_LANGUAGE_LINKAGE
#else
#define ZTD_IDK_CXX_LANGUAGE_LINKAGE_I_ ZTD_CXX_LANGUAGE_LINKAGE_I_
#endif

#define ZTD_IDK_VERSION_MAJOR 0
#define ZTD_IDK_VERSION_MINOR 0
#define ZTD_IDK_VERSION_PATCH 0
#define ZTD_IDK_VERSION_STRING "0.0.0"
#define ZTD_IDK_VERSION ((ZTD_IDK_VERSION_MAJOR * 100000) + (ZTD_IDK_VERSION_MINOR * 100) + (ZTD_IDK_VERSION_PATCH))

#include <ztd/idk/detail/api.h>

#endif // ZTD_IDK_VERSION_H
40 changes: 12 additions & 28 deletions include/ztd/version/detail/api.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,24 +38,24 @@

// clang-format off

#if defined(ZTD_BUILD)
#if (ZTD_BUILD != 0)
#define ZTD_BUILD_I_ ZTD_ON
#if defined(ZTD_IDK_BUILD)
#if (ZTD_IDK_BUILD != 0)
#define ZTD_IDK_BUILD_I_ ZTD_ON
#else
#define ZTD_BUILD_I_ ZTD_OFF
#define ZTD_IDK_BUILD_I_ ZTD_OFF
#endif
#else
#define ZTD_BUILD_I_ ZTD_DEFAULT_OFF
#define ZTD_IDK_BUILD_I_ ZTD_DEFAULT_OFF
#endif // Building or not

#if defined(ZTD_DLL)
#if (ZTD_DLL != 0)
#define ZTD_DLL_I_ ZTD_ON
#if defined(ZTD_IDK_DLL)
#if (ZTD_IDK_DLL != 0)
#define ZTD_IDK_DLL_I_ ZTD_ON
#else
#define ZTD_DLL_I_ ZTD_ON
#define ZTD_IDK_DLL_I_ ZTD_ON
#endif
#else
#define ZTD_DLL_I_ ZTD_OFF
#define ZTD_IDK_DLL_I_ ZTD_OFF
#endif // Building or not

#if defined(ZTD_HEADER_ONLY)
Expand Down Expand Up @@ -143,10 +143,10 @@
#if defined(ZTD_API_LINKAGE)
#define ZTD_API_LINKAGE_I_ ZTD_API_LINKAGE
#else
#if ZTD_IS_ON(ZTD_DLL)
#if ZTD_IS_ON(ZTD_IDK_DLL)
#if ZTD_IS_ON(ZTD_COMPILER_VCXX) || ZTD_IS_ON(ZTD_PLATFORM_WINDOWS) || ZTD_IS_ON(ZTD_PLATFORM_CYGWIN)
// MSVC Compiler; or, Windows, or Cygwin platforms
#if ZTD_IS_ON(ZTD_BUILD)
#if ZTD_IS_ON(ZTD_IDK_BUILD)
// Building the library
#if ZTD_IS_ON(ZTD_COMPILER_GCC)
// Using GCC
Expand Down Expand Up @@ -179,22 +179,6 @@
#endif // DLL or not
#endif // Build definitions

#if defined(ZTD_C_LANGUAGE_LINKAGE)
#define ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_C_LANGUAGE_LINKAGE
#else
#if ZTD_IS_ON(ZTD_CXX)
#define ZTD_C_LANGUAGE_LINKAGE_I_ extern "C"
#else
#define ZTD_C_LANGUAGE_LINKAGE_I_ extern
#endif
#endif // C language linkage

#if defined(ZTD_CXX_LANGUAGE_LINKAGE)
#define ZTD_CXX_LANGUAGE_LINKAGE_I_ ZTD_CXX_LANGUAGE_LINKAGE
#else
#define ZTD_CXX_LANGUAGE_LINKAGE_I_ extern
#endif // C++ language linkage


// clang-format on

Expand Down
16 changes: 16 additions & 0 deletions include/ztd/version/detail/version.c.h
Original file line number Diff line number Diff line change
Expand Up @@ -919,6 +919,22 @@
#define ZTD_CXX_NOEXCEPT_IF_I_(...)
#endif

#if defined(ZTD_C_LANGUAGE_LINKAGE)
#define ZTD_C_LANGUAGE_LINKAGE_I_ ZTD_C_LANGUAGE_LINKAGE
#else
#if ZTD_IS_ON(ZTD_CXX)
#define ZTD_C_LANGUAGE_LINKAGE_I_ extern "C"
#else
#define ZTD_C_LANGUAGE_LINKAGE_I_ extern
#endif
#endif // C language linkage

#if defined(ZTD_CXX_LANGUAGE_LINKAGE)
#define ZTD_CXX_LANGUAGE_LINKAGE_I_ ZTD_CXX_LANGUAGE_LINKAGE
#else
#define ZTD_CXX_LANGUAGE_LINKAGE_I_ extern
#endif // C++ language linkage


// clang-format on

Expand Down

0 comments on commit 2c50d70

Please sign in to comment.