Merge remote-tracking branch 'origin/feature/determine_compiler_versions' into development

# Conflicts:
#	examples/ArmTimerCallbacks - C++/ArmTimerCallbacks.uvprojx
#	examples/ArmTimerCallbacks - C++/main.cpp
#	include/etl/algorithm.h
#	include/etl/platform.h
#	include/etl/stl/alternate/limits.h
#	include/etl/version.h
#	library.json
#	library.properties
#	support/Release notes.txt
#	test/codeblocks/ETL.cbp
#	test/etl_profile.h
#	test/vs2017/etl.vcxproj
#	test/vs2017/etl.vcxproj.filters
This commit is contained in:
John Wellbelove 2019-12-27 12:57:34 +00:00
parent b04e886d48
commit d6f8b69326
26 changed files with 545 additions and 241 deletions

View File

@ -140,7 +140,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>ST-LINKIII-KEIL_SWO</Key>
<Name>-U066CFF485550707267024134 -O207 -SF4000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F401RETx$CMSIS\Flash\STM32F4xx_512.FLM)</Name>
<Name>-U066CFF485550707267024134 -O207 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P2 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F401RETx$CMSIS\Flash\STM32F4xx_512.FLM)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>

View File

@ -10,8 +10,8 @@
<TargetName>Target 1</TargetName>
<ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
<uAC6>0</uAC6>
<pCCUsed>6130001::V6.13.1::.\ARMCLANG</pCCUsed>
<uAC6>1</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STM32F401RETx</Device>
@ -312,7 +312,7 @@
</ArmAdsMisc>
<Cads>
<interw>1</interw>
<Optim>1</Optim>
<Optim>7</Optim>
<oTime>0</oTime>
<SplitLS>0</SplitLS>
<OneElfS>1</OneElfS>
@ -321,7 +321,7 @@
<PlainCh>1</PlainCh>
<Ropi>0</Ropi>
<Rwpi>0</Rwpi>
<wLevel>2</wLevel>
<wLevel>3</wLevel>
<uThumb>0</uThumb>
<uSurpInc>0</uSurpInc>
<uC99>1</uC99>
@ -336,7 +336,7 @@
<v6Rtti>0</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Define>ETL_NO_STL __STDC_LIMIT_MACROS</Define>
<Undefine></Undefine>
<IncludePath>..\..\include;..\ArmTimerCallbacks - C++</IncludePath>
</VariousControls>

View File

@ -8,22 +8,8 @@
#define ETL_IVECTOR_REPAIR_ENABLE
#define ETL_IDEQUE_REPAIR_ENABLE
#define ETL_CALLBACK_TIMER_USE_ATOMIC_LOCK
#define ETL_NO_STL
//#define ETL_NO_STL
#if (__CC_ARM == 1)
// ARM5 compiler
#if defined(ETL_NO_STL)
#include "etl/profiles/armv5_no_stl.h"
#else
#include "etl/profiles/armv5.h"
#endif
#else
// ARM6 compiler
#if defined(ETL_NO_STL)
#include "etl/profiles/armv6_no_stl.h"
#else
#include "etl/profiles/armv6.h"
#endif
#endif
#include "etl/profiles/auto.h"
#endif

View File

@ -18,8 +18,6 @@ extern "C"
#include "etl/vector.h"
#include "etl/iterator.h"
static bool b = etl::is_input_iterator<int*>::value;
struct FP
{
void (*function)();
@ -33,7 +31,6 @@ void register_poweroff_callback(void (*function)())
power_callbacks.push_back(fp);
}
const int N_TIMERS = 4;
etl::callback_timer<N_TIMERS> callback_timer;
@ -130,12 +127,6 @@ int main()
LED_Initialize();
Buttons_Initialize();
long int v = __cplusplus;
char16_t c16;
int* p = nullptr;
// The LEDs will start flashing fast after 2 seconds.
// After another 5 seconds they will start flashing slower.

View File

@ -46,6 +46,7 @@ SOFTWARE.
#include "platform.h"
#include "iterator.h"
#include "type_traits.h"
#include "container.h"
namespace etl
{
@ -1180,7 +1181,7 @@ namespace etl
{
for (TIterator itr = first; itr != last; ++itr)
{
ETL_STD::rotate(ETL_STD::upper_bound(first, itr, *itr, compare), itr, ETL_STD::next(itr));
ETL_STD::rotate(ETL_STD::upper_bound(first, itr, *itr, compare), itr, etl::next(itr));
}
}

View File

@ -180,11 +180,15 @@ namespace etl
return reinterpret_cast<const T*>(data);
}
#if ETL_CPP11_SUPPORTED
alignas(ALIGNMENT) char data[LENGTH];
#else
union
{
char data[LENGTH];
typename etl::type_with_alignment<ALIGNMENT>::type etl_alignment_type; // A POD type that has the same alignment as ALIGNMENT.
};
#endif
};
};

View File

@ -446,38 +446,38 @@ namespace etl
return id;
}
//*******************************************
/// Register a timer.
//*******************************************
//*******************************************
/// Register a timer.
//*******************************************
#if ETL_CPP11_SUPPORTED
etl::timer::id::type register_timer(etl::delegate<void()>& callback_,
uint32_t period_,
bool repeating_)
{
etl::timer::id::type id = etl::timer::id::NO_TIMER;
etl::timer::id::type register_timer(etl::delegate<void()>& callback_,
uint32_t period_,
bool repeating_)
{
etl::timer::id::type id = etl::timer::id::NO_TIMER;
bool is_space = (registered_timers < MAX_TIMERS);
bool is_space = (registered_timers < MAX_TIMERS);
if (is_space)
{
// Search for the free space.
for (uint_least8_t i = 0; i < MAX_TIMERS; ++i)
{
etl::callback_timer_data& timer = timer_array[i];
if (is_space)
{
// Search for the free space.
for (uint_least8_t i = 0; i < MAX_TIMERS; ++i)
{
etl::callback_timer_data& timer = timer_array[i];
if (timer.id == etl::timer::id::NO_TIMER)
{
// Create in-place.
new (&timer) callback_timer_data(i, callback_, period_, repeating_);
++registered_timers;
id = i;
break;
}
}
}
if (timer.id == etl::timer::id::NO_TIMER)
{
// Create in-place.
new (&timer) callback_timer_data(i, callback_, period_, repeating_);
++registered_timers;
id = i;
break;
}
}
}
return id;
}
return id;
}
#endif
//*******************************************

View File

@ -38,8 +38,10 @@ SOFTWARE.
#define ETL_8BIT_SUPPORT (CHAR_BIT == 8)
// Define a debug macro
#if defined(_DEBUG) || defined(DEBUG)
#define ETL_DEBUG
#if !defined(ETL_DEBUG)
#if defined(_DEBUG) || defined(DEBUG)
#define ETL_DEBUG
#endif
#endif
// Undefine all of the macros.
@ -62,25 +64,23 @@ SOFTWARE.
#include "etl_profile.h"
// The macros below are dependent on the profile.
#if defined(ETL_COMPILER_GCC)
#define ETL_COMPILER_VERSION __GNUC__
#define ETL_COMPILER_FULL_VERSION ((__GNUC__ * 10000) + (__GNUC_MINOR__ * 100) + __GNUC_PATCHLEVEL__)
#elif defined(ETL_COMPILER_MICROSOFT)
#define ETL_COMPILER_VERSION _MSC_VER
#define ETL_COMPILER_FULL_VERSION _MSC_FULL_VER
#if defined(ETL_AUTO_DETERMINE_COMPILER_INFO)
// Figure out things about the compiler.
#include "profiles/determine_compiler.h"
#include "profiles/determine_compiler_version.h"
#include "profiles/determine_compiler_language_support.h"
#endif
// The macros below are dependent on the profile.
#if ETL_CPP11_SUPPORTED
#define ETL_CONSTEXPR constexpr
#define ETL_CONST constexpr
#define ETL_CONST_OR_CONSTEXPR constexpr
#define ETL_DELETE = delete
#define ETL_NOEXCEPT noexcept
#define ETL_NOEXCEPT_EXPR(expression) noexcept(expression)
#else
#define ETL_CONSTEXPR
#define ETL_CONST const
#define ETL_CONST_OR_CONSTEXPR const
#define ETL_DELETE
#define ETL_NOEXCEPT
#define ETL_NOEXCEPT_EXPR(expression)

View File

@ -1,3 +1,5 @@
///\file
/******************************************************************************
The MIT License(MIT)
@ -5,7 +7,7 @@ Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com
Copyright(c) 2017 jwellbelove
Copyright(c) 2019 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
@ -26,23 +28,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#ifndef ECL_USER_INCLUDED
#define ECL_USER_INCLUDED
#ifndef ETL_AUTO_PROFILE_INCLUDED
#define ETL_AUTO_PROFILE_INCLUDED
#include <stdint.h>
extern uint32_t timer_semaphore;
#if defined(_MSC_VER)
#include <Windows.h>
#define ECL_TIMER_DISABLE_PROCESSING InterlockedIncrement((volatile long*)&timer_semaphore)
#define ECL_TIMER_ENABLE_PROCESSING InterlockedDecrement((volatile long*)&timer_semaphore)
#define ECL_TIMER_PROCESSING_ENABLED (InterlockedAdd((volatile long*)&timer_semaphore, 0) == 0)
#else
#define ECL_TIMER_DISABLE_PROCESSING __sync_fetch_and_add(&timer_semaphore, 1)
#define ECL_TIMER_ENABLE_PROCESSING __sync_fetch_and_sub(&timer_semaphore, 1)
#define ECL_TIMER_PROCESSING_ENABLED (__sync_fetch_and_add(&timer_semaphore, 0) == 0)
#endif
#define ETL_AUTO_DETERMINE_COMPILER_INFO
#endif

View File

@ -0,0 +1,37 @@
///\file
/******************************************************************************
The MIT License(MIT)
Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com
Copyright(c) 2019 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#ifndef ETL_AUTO_NO_STL_INCLUDED
#define ETL_AUTO_NO_STL_INCLUDED
#define ETL_AUTO_DETERMINE_COMPILER_INFO
#define ETL_NO_STL
#endif

View File

@ -0,0 +1,121 @@
///\file
/******************************************************************************
The MIT License(MIT)
Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com
Copyright(c) 2019 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#ifndef ETL_DETERMINE_COMPILER_H_INCLUDED
#define ETL_DETERMINE_COMPILER_H_INCLUDED
#if !defined(ETL_COMPILER_GCC) && \
!defined(ETL_COMPILER_MICROSOFT) && \
!defined(ETL_COMPILER_ARM5) && \
!defined(ETL_COMPILER_ARM6) && \
!defined(ETL_COMPILER_ARM7) && \
!defined(ETL_COMPILER_CLANG) && \
!defined(ETL_COMPILER_GREEN_HILLS) && \
!defined(ETL_COMPILER_IAR) && \
!defined(ETL_COMPILER_INTEL) && \
!defined(ETL_COMPILER_TEXAS_INSTRUMENTS) && \
!defined(ETL_COMPILER_GENERIC)
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_ARM5)
#if defined(__CC_ARM)
#define ETL_COMPILER_ARM5
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_ARM6)
#if defined(__ARMCOMPILER_VERSION) && (__ARMCOMPILER_VERSION >= 6000000L) && (__ARMCOMPILER_VERSION < 7000000L)
#define ETL_COMPILER_ARM6
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_ARM7)
#if defined(__ARMCOMPILER_VERSION) && (__ARMCOMPILER_VERSION >= 7000000L) && (__ARMCOMPILER_VERSION < 8000000L)
#define ETL_COMPILER_ARM7
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_GCC)
#if defined(__GNUC__)
#define ETL_COMPILER_GCC
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_CLANG)
#if defined(__clang__) || defined(__llvm__)
#define ETL_COMPILER_CLANG
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_GREEN_HILLS)
#if defined(__ghs__)
#define ETL_COMPILER_GREEN_HILLS
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_IAR)
#if defined(__IAR_SYSTEMS_ICC__)
#define ETL_COMPILER_IAR
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_INTEL)
#if defined(__INTEL_COMPILER)
#define ETL_COMPILER_INTEL
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_TEXAS_INSTRUMENTS)
#if defined(__TI_COMPILER_VERSION__)
#define ETL_COMPILER_TEXAS_INSTRUMENTS
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED) && !defined(ETL_COMPILER_MICROSOFT)
#if defined(_MSC_VER)
#define ETL_COMPILER_MICROSOFT
#define ETL_COMPILER_TYPE_DETECTED
#endif
#endif
#if !defined(ETL_COMPILER_TYPE_DETECTED)
#define ETL_COMPILER_GENERIC
#endif
#endif
#endif

View File

@ -0,0 +1,58 @@
///\file
/******************************************************************************
The MIT License(MIT)
Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com
Copyright(c) 2019 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#ifndef ETL_DETERMINE_COMPILER_LANGUAGE_SUPPORT_H_INCLUDED
#define ETL_DETERMINE_COMPILER_LANGUAGE_SUPPORT_H_INCLUDED
#ifdef __cplusplus
#if defined(ETL_COMPILER_MICROSOFT)
#define ETL_CPP11_SUPPORTED (_MSC_VER >= 1600)
#define ETL_CPP14_SUPPORTED (_MSC_VER >= 1900)
#define ETL_CPP17_SUPPORTED (_MSC_VER >= 1914)
#elif defined(ETL_COMPILER_ARM5)
#define ETL_CPP11_SUPPORTED 0
#define ETL_CPP14_SUPPORTED 0
#define ETL_CPP17_SUPPORTED 0
#else
#define ETL_CPP11_SUPPORTED (__cplusplus >= 201103L)
#define ETL_CPP14_SUPPORTED (__cplusplus >= 201402L)
#define ETL_CPP17_SUPPORTED (__cplusplus >= 201703L)
#endif
#else
#define ETL_CPP11_SUPPORTED 0
#define ETL_CPP14_SUPPORTED 0
#define ETL_CPP17_SUPPORTED 0
#endif
#define ETL_NO_NULLPTR_SUPPORT !ETL_CPP11_SUPPORTED
#define ETL_NO_LARGE_CHAR_SUPPORT !ETL_CPP11_SUPPORTED
#define ETL_CPP11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED ETL_CPP14_SUPPORTED
#endif

View File

@ -0,0 +1,71 @@
///\file
/******************************************************************************
The MIT License(MIT)
Embedded Template Library.
https://github.com/ETLCPP/etl
https://www.etlcpp.com
Copyright(c) 2019 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#ifndef ETL_DETERMINE_COMPILER_VERSION_H_INCLUDED
#define ETL_DETERMINE_COMPILER_VERSION_H_INCLUDED
#if !defined(ETL_COMPILER_VERSION) && !defined(ETL_COMPILER_FULL_VERSION)
#if defined(ETL_COMPILER_GCC)
#define ETL_COMPILER_VERSION __GNUC__
#define ETL_COMPILER_FULL_VERSION ((__GNUC__ * 10000) + (__GNUC_MINOR__ * 100) + __GNUC_PATCHLEVEL__)
#elif defined(ETL_COMPILER_MICROSOFT)
#define ETL_COMPILER_VERSION _MSC_VER
#define ETL_COMPILER_FULL_VERSION _MSC_FULL_VER
#elif defined(ETL_COMPILER_ARM5)
#define ETL_COMPILER_VERSION __ARMCC_VERSION
#define ETL_COMPILER_FULL_VERSION __ARMCC_VERSION
#elif defined(ETL_COMPILER_ARM6)
#define ETL_COMPILER_VERSION __ARMCOMPILER_VERSION
#define ETL_COMPILER_FULL_VERSION __ARMCOMPILER_VERSION
#elif defined(ETL_COMPILER_ARM7)
#define ETL_COMPILER_VERSION __ARMCOMPILER_VERSION
#define ETL_COMPILER_FULL_VERSION __ARMCOMPILER_VERSION
#elif defined(ETL_COMPILER_CLANG)
#define ETL_COMPILER_VERSION __clang_version__
#define ETL_COMPILER_FULL_VERSION ((__clang_major__ * 10000) + (__clang_minor__ * 100) + __clang_patchlevel__)
#elif defined(ETL_COMPILER_GREEN_HILLS)
#define ETL_COMPILER_VERSION __GHS_VERSION_NUMBER__
#define ETL_COMPILER_FULL_VERSION __GHS_VERSION_NUMBER__
#elif defined(ETL_COMPILER_IAR)
#define ETL_COMPILER_VERSION __VER__
#define ETL_COMPILER_FULL_VERSION __VER__
#elif defined(ETL_COMPILER_INTEL)
#define ETL_COMPILER_VERSION __INTEL_COMPILER
#define ETL_COMPILER_FULL_VERSION __INTEL_COMPILER
#elif defined(ETL_COMPILER_TEXAS_INSTRUMENTS)
#define ETL_COMPILER_VERSION __TI_COMPILER_VERSION__
#define ETL_COMPILER_FULL_VERSION __TI_COMPILER_VERSION__
#else
#define ETL_COMPILER_VERSION 0
#define ETL_COMPILER_FULL_VERSION 0
#endif
#endif
#endif

View File

@ -114,7 +114,7 @@ namespace etlstd
difference_t count = (se - sb);
return TIterator2(memcpy(db, sb, sizeof(value_t) * count)) + count;
return TIterator2(memmove(db, sb, sizeof(value_t) * count)) + count;
}
// Other iterator
@ -156,7 +156,7 @@ namespace etlstd
{
typedef typename etlstd::iterator_traits<TIterator1>::value_type value_t;
return TIterator2(memcpy(db, sb, sizeof(value_t) * count)) + count;
return TIterator2(memmove(db, sb, sizeof(value_t) * count)) + count;
}
// Other iterator

View File

@ -71,45 +71,45 @@ namespace etlstd
class etl_integral_type
{
public:
static ETL_CONST bool is_specialized = true;
static ETL_CONST_OR_CONSTEXPR bool is_specialized = true;
static ETL_CONST int max_digits10 = 0;
static ETL_CONST_OR_CONSTEXPR int max_digits10 = 0;
static ETL_CONST bool is_integer = true;
static ETL_CONST bool is_exact = true;
static ETL_CONST_OR_CONSTEXPR bool is_integer = true;
static ETL_CONST_OR_CONSTEXPR bool is_exact = true;
static ETL_CONST int radix = 2;
static ETL_CONST_OR_CONSTEXPR int radix = 2;
static ETL_CONSTEXPR T epsilon() { return 0; }
static ETL_CONSTEXPR T round_error() { return 0; }
static ETL_CONST int digits = (CHAR_BIT * sizeof(T)) - (etl::is_signed<T>::value ? 1 : 0);
static ETL_CONST int digits10 = ETL_LOG2(digits);
static ETL_CONST_OR_CONSTEXPR int digits = (CHAR_BIT * sizeof(T)) - (etl::is_signed<T>::value ? 1 : 0);
static ETL_CONST_OR_CONSTEXPR int digits10 = ETL_LOG2(digits);
static ETL_CONST bool is_signed = etl::is_signed<T>::value;
static ETL_CONST_OR_CONSTEXPR bool is_signed = etl::is_signed<T>::value;
static ETL_CONST int min_exponent = 0;
static ETL_CONST int min_exponent10 = 0;
static ETL_CONST int max_exponent = 0;
static ETL_CONST int max_exponent10 = 0;
static ETL_CONST_OR_CONSTEXPR int min_exponent = 0;
static ETL_CONST_OR_CONSTEXPR int min_exponent10 = 0;
static ETL_CONST_OR_CONSTEXPR int max_exponent = 0;
static ETL_CONST_OR_CONSTEXPR int max_exponent10 = 0;
static ETL_CONST bool has_infinity = false;
static ETL_CONST bool has_quiet_NaN = false;
static ETL_CONST bool has_signaling_NaN = false;
static ETL_CONST float_denorm_style has_denorm = denorm_absent;
static ETL_CONST bool has_denorm_loss = false;
static ETL_CONST_OR_CONSTEXPR bool has_infinity = false;
static ETL_CONST_OR_CONSTEXPR bool has_quiet_NaN = false;
static ETL_CONST_OR_CONSTEXPR bool has_signaling_NaN = false;
static ETL_CONST_OR_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
static ETL_CONST_OR_CONSTEXPR bool has_denorm_loss = false;
static ETL_CONSTEXPR T infinity() { return 0; }
static ETL_CONSTEXPR T quiet_NaN() { return 0; }
static ETL_CONSTEXPR T signaling_NaN() { return 0; }
static ETL_CONSTEXPR T denorm_min() { return 0; }
static ETL_CONST bool is_iec559 = false;
static ETL_CONST bool is_bounded = true;
static ETL_CONST bool is_modulo = etl::is_unsigned<T>::value;
static ETL_CONST_OR_CONSTEXPR bool is_iec559 = false;
static ETL_CONST_OR_CONSTEXPR bool is_bounded = true;
static ETL_CONST_OR_CONSTEXPR bool is_modulo = etl::is_unsigned<T>::value;
static ETL_CONST bool traps = false;
static ETL_CONST bool tinyness_before = false;
static ETL_CONST float_round_style round_style = round_toward_zero;
static ETL_CONST_OR_CONSTEXPR bool traps = false;
static ETL_CONST_OR_CONSTEXPR bool tinyness_before = false;
static ETL_CONST_OR_CONSTEXPR float_round_style round_style = round_toward_zero;
};
//***************************************************************************
@ -118,39 +118,48 @@ namespace etlstd
class etl_floating_point_type
{
public:
static ETL_CONST bool is_specialized = true;
static ETL_CONST_OR_CONSTEXPR bool is_specialized = true;
static ETL_CONST bool is_signed = true;
static ETL_CONST bool is_integer = false;
static ETL_CONST bool is_exact = false;
static ETL_CONST_OR_CONSTEXPR bool is_signed = true;
static ETL_CONST_OR_CONSTEXPR bool is_integer = false;
static ETL_CONST_OR_CONSTEXPR bool is_exact = false;
static ETL_CONST int radix = 2;
static ETL_CONST_OR_CONSTEXPR int radix = 2;
static ETL_CONST bool has_infinity = false;
static ETL_CONST bool has_quiet_NaN = false;
static ETL_CONST bool has_signaling_NaN = false;
static ETL_CONST float_denorm_style has_denorm = denorm_present;
static ETL_CONST bool has_denorm_loss = true;
static ETL_CONST_OR_CONSTEXPR bool has_infinity = false;
static ETL_CONST_OR_CONSTEXPR bool has_quiet_NaN = false;
static ETL_CONST_OR_CONSTEXPR bool has_signaling_NaN = false;
static ETL_CONST_OR_CONSTEXPR float_denorm_style has_denorm = denorm_present;
static ETL_CONST_OR_CONSTEXPR bool has_denorm_loss = true;
static ETL_CONST bool is_iec559 = true;
static ETL_CONST bool is_bounded = true;
static ETL_CONST bool is_modulo = false;
static ETL_CONST_OR_CONSTEXPR bool is_iec559 = true;
static ETL_CONST_OR_CONSTEXPR bool is_bounded = true;
static ETL_CONST_OR_CONSTEXPR bool is_modulo = false;
static ETL_CONSTEXPR T round_error() { return T(0.5); }
static ETL_CONSTEXPR T infinity() { return 0; }
static ETL_CONSTEXPR T quiet_NaN() { return 0; }
static ETL_CONSTEXPR T signaling_NaN() { return 0; }
static ETL_CONST bool traps = false;
static ETL_CONST bool tinyness_before = true;
static ETL_CONST float_round_style round_style = round_to_nearest;
static ETL_CONST_OR_CONSTEXPR bool traps = false;
static ETL_CONST_OR_CONSTEXPR bool tinyness_before = true;
static ETL_CONST_OR_CONSTEXPR float_round_style round_style = round_to_nearest;
};
//***************************************************************************
// Default
template<class T>
template <typename T>
class numeric_limits;
template <typename T>
class numeric_limits<const T> : public numeric_limits<T> { };
template <typename T>
class numeric_limits<volatile T> : public numeric_limits<T> { };
template <typename T>
class numeric_limits<const volatile T> : public numeric_limits<T> { };
//***************************************************************************
// bool
template<>
@ -158,47 +167,47 @@ namespace etlstd
{
public:
static ETL_CONST bool is_specialized = true;
static ETL_CONST_OR_CONSTEXPR bool is_specialized = true;
static ETL_CONSTEXPR bool min() { return false; }
static ETL_CONSTEXPR bool max() { return true; }
static ETL_CONSTEXPR bool lowest() { return false; }
static ETL_CONST int digits = 1;
static ETL_CONST int digits10 = 0;
static ETL_CONST int max_digits10 = 0;
static ETL_CONST_OR_CONSTEXPR int digits = 1;
static ETL_CONST_OR_CONSTEXPR int digits10 = 0;
static ETL_CONST_OR_CONSTEXPR int max_digits10 = 0;
static ETL_CONST bool is_signed = false;
static ETL_CONST bool is_integer = true;
static ETL_CONST bool is_exact = true;
static ETL_CONST_OR_CONSTEXPR bool is_signed = false;
static ETL_CONST_OR_CONSTEXPR bool is_integer = true;
static ETL_CONST_OR_CONSTEXPR bool is_exact = true;
static ETL_CONST int radix = 2;
static ETL_CONST bool epsilon() { return 0; }
static ETL_CONST bool round_error() { return 0; }
static ETL_CONST_OR_CONSTEXPR int radix = 2;
static ETL_CONST_OR_CONSTEXPR bool epsilon() { return false; }
static ETL_CONST_OR_CONSTEXPR bool round_error() { return false; }
static ETL_CONST int min_exponent = 0;
static ETL_CONST int min_exponent10 = 0;
static ETL_CONST int max_exponent = 0;
static ETL_CONST int max_exponent10 = 0;
static ETL_CONST_OR_CONSTEXPR int min_exponent = 0;
static ETL_CONST_OR_CONSTEXPR int min_exponent10 = 0;
static ETL_CONST_OR_CONSTEXPR int max_exponent = 0;
static ETL_CONST_OR_CONSTEXPR int max_exponent10 = 0;
static ETL_CONST bool has_infinity = false;
static ETL_CONST bool has_quiet_NaN = false;
static ETL_CONST bool has_signaling_NaN = false;
static ETL_CONST float_denorm_style has_denorm = denorm_absent;
static ETL_CONST bool has_denorm_loss = false;
static ETL_CONST_OR_CONSTEXPR bool has_infinity = false;
static ETL_CONST_OR_CONSTEXPR bool has_quiet_NaN = false;
static ETL_CONST_OR_CONSTEXPR bool has_signaling_NaN = false;
static ETL_CONST_OR_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
static ETL_CONST_OR_CONSTEXPR bool has_denorm_loss = false;
static ETL_CONSTEXPR bool infinity() { return 0; }
static ETL_CONSTEXPR bool quiet_NaN() { return 0; }
static ETL_CONSTEXPR bool signaling_NaN() { return 0; }
static ETL_CONSTEXPR bool denorm_min() { return 0; }
static ETL_CONSTEXPR bool infinity() { return false; }
static ETL_CONSTEXPR bool quiet_NaN() { return false; }
static ETL_CONSTEXPR bool signaling_NaN() { return false; }
static ETL_CONSTEXPR bool denorm_min() { return false; }
static ETL_CONST bool is_iec559 = false;
static ETL_CONST bool is_bounded = true;
static ETL_CONST bool is_modulo = false;
static ETL_CONST_OR_CONSTEXPR bool is_iec559 = false;
static ETL_CONST_OR_CONSTEXPR bool is_bounded = true;
static ETL_CONST_OR_CONSTEXPR bool is_modulo = false;
static ETL_CONST bool traps = false;
static ETL_CONST bool tinyness_before = false;
static ETL_CONST float_round_style round_style = round_toward_zero;
static ETL_CONST_OR_CONSTEXPR bool traps = false;
static ETL_CONST_OR_CONSTEXPR bool tinyness_before = false;
static ETL_CONST_OR_CONSTEXPR float_round_style round_style = round_toward_zero;
};
//***************************************************************************
@ -384,14 +393,14 @@ namespace etlstd
static ETL_CONSTEXPR float epsilon() { return FLT_EPSILON; }
static ETL_CONSTEXPR float denorm_min() { return FLT_MIN; }
static ETL_CONST int digits = FLT_MANT_DIG;
static ETL_CONST int digits10 = FLT_DIG;
static ETL_CONST int max_digits10 = ETL_LOG2(FLT_MANT_DIG) + 2;
static ETL_CONST_OR_CONSTEXPR int digits = FLT_MANT_DIG;
static ETL_CONST_OR_CONSTEXPR int digits10 = FLT_DIG;
static ETL_CONST_OR_CONSTEXPR int max_digits10 = ETL_LOG2(FLT_MANT_DIG) + 2;
static ETL_CONST int min_exponent = FLT_MIN_EXP;
static ETL_CONST int min_exponent10 = FLT_MIN_10_EXP;
static ETL_CONST int max_exponent = FLT_MAX_EXP;
static ETL_CONST int max_exponent10 = FLT_MAX_10_EXP;
static ETL_CONST_OR_CONSTEXPR int min_exponent = FLT_MIN_EXP;
static ETL_CONST_OR_CONSTEXPR int min_exponent10 = FLT_MIN_10_EXP;
static ETL_CONST_OR_CONSTEXPR int max_exponent = FLT_MAX_EXP;
static ETL_CONST_OR_CONSTEXPR int max_exponent10 = FLT_MAX_10_EXP;
};
//***************************************************************************
@ -407,14 +416,14 @@ namespace etlstd
static ETL_CONSTEXPR double epsilon() { return DBL_EPSILON; }
static ETL_CONSTEXPR double denorm_min() { return DBL_MIN; }
static ETL_CONST int digits = DBL_MANT_DIG;
static ETL_CONST int digits10 = DBL_DIG;
static ETL_CONST int max_digits10 = ETL_LOG2(DBL_MANT_DIG) + 2;
static ETL_CONST_OR_CONSTEXPR int digits = DBL_MANT_DIG;
static ETL_CONST_OR_CONSTEXPR int digits10 = DBL_DIG;
static ETL_CONST_OR_CONSTEXPR int max_digits10 = ETL_LOG2(DBL_MANT_DIG) + 2;
static ETL_CONST int min_exponent = DBL_MIN_EXP;
static ETL_CONST int min_exponent10 = DBL_MIN_10_EXP;
static ETL_CONST int max_exponent = DBL_MAX_EXP;
static ETL_CONST int max_exponent10 = DBL_MAX_10_EXP;
static ETL_CONST_OR_CONSTEXPR int min_exponent = DBL_MIN_EXP;
static ETL_CONST_OR_CONSTEXPR int min_exponent10 = DBL_MIN_10_EXP;
static ETL_CONST_OR_CONSTEXPR int max_exponent = DBL_MAX_EXP;
static ETL_CONST_OR_CONSTEXPR int max_exponent10 = DBL_MAX_10_EXP;
};
//***************************************************************************
@ -430,14 +439,14 @@ namespace etlstd
static ETL_CONSTEXPR long double epsilon() { return LDBL_EPSILON; }
static ETL_CONSTEXPR long double denorm_min() { return LDBL_MIN; }
static ETL_CONST int digits = LDBL_MANT_DIG;
static ETL_CONST int digits10 = LDBL_DIG;
static ETL_CONST int max_digits10 = ETL_LOG2(LDBL_MANT_DIG) + 2;
static ETL_CONST_OR_CONSTEXPR int digits = LDBL_MANT_DIG;
static ETL_CONST_OR_CONSTEXPR int digits10 = LDBL_DIG;
static ETL_CONST_OR_CONSTEXPR int max_digits10 = ETL_LOG2(LDBL_MANT_DIG) + 2;
static ETL_CONST int min_exponent = LDBL_MIN_EXP;
static ETL_CONST int min_exponent10 = LDBL_MIN_10_EXP;
static ETL_CONST int max_exponent = LDBL_MAX_EXP;
static ETL_CONST int max_exponent10 = LDBL_MAX_10_EXP;
static ETL_CONST_OR_CONSTEXPR int min_exponent = LDBL_MIN_EXP;
static ETL_CONST_OR_CONSTEXPR int min_exponent10 = LDBL_MIN_10_EXP;
static ETL_CONST_OR_CONSTEXPR int max_exponent = LDBL_MAX_EXP;
static ETL_CONST_OR_CONSTEXPR int max_exponent10 = LDBL_MAX_10_EXP;
};
}

View File

@ -482,15 +482,16 @@ namespace etl
/// Alignment templates.
/// These require compiler specific intrinsics.
///\ingroup type_traits
#ifdef ETL_COMPILER_MICROSOFT
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof(T))> {};
#elif defined(ETL_COMPILER_IAR) || defined(ETL_COMPILER_TI)
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__ALIGNOF__(T))> {};
#if ETL_CPP11_SUPPORTED
template <typename T> struct alignment_of : integral_constant<size_t, size_t(alignof(T))> {};
#else
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof__(T))> {};
#ifdef ETL_COMPILER_MICROSOFT
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof(T))> {};
#elif defined(ETL_COMPILER_IAR) || defined(ETL_COMPILER_TI)
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__ALIGNOF__(T))> {};
#else
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof__(T))> {};
#endif
#endif
/// Specialisation of 'alignment_of' for 'void'.
@ -523,14 +524,14 @@ namespace etl
///\ingroup types
//***************************************************************************
template <typename T,
typename T1, typename T2 = void, typename T3 = void, typename T4 = void,
typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void,
typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void,
typename T13 = void, typename T14 = void, typename T15 = void, typename T16 = void,
typename T1, typename T2 = void, typename T3 = void, typename T4 = void,
typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void,
typename T9 = void, typename T10 = void, typename T11 = void, typename T12 = void,
typename T13 = void, typename T14 = void, typename T15 = void, typename T16 = void,
typename T17 = void>
struct is_one_of
{
static const bool value =
static const bool value =
etl::is_same<T, T1>::value ||
etl::is_same<T, T2>::value ||
etl::is_same<T, T3>::value ||

View File

@ -494,15 +494,16 @@ namespace etl
/// Alignment templates.
/// These require compiler specific intrinsics.
///\ingroup type_traits
#ifdef ETL_COMPILER_MICROSOFT
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof(T))> {};
#elif defined(ETL_COMPILER_IAR) || defined(ETL_COMPILER_TI)
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__ALIGNOF__(T))> {};
#if ETL_CPP11_SUPPORTED
template <typename T> struct alignment_of : integral_constant<size_t, size_t(alignof(T))> {};
#else
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof__(T))> {};
#ifdef ETL_COMPILER_MICROSOFT
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof(T))> {};
#elif defined(ETL_COMPILER_IAR) || defined(ETL_COMPILER_TI)
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__ALIGNOF__(T))> {};
#else
template <typename T> struct alignment_of : integral_constant<size_t, size_t(__alignof__(T))> {};
#endif
#endif
/// Specialisation of 'alignment_of' for 'void'.

View File

@ -38,8 +38,8 @@ SOFTWARE.
///\ingroup utilities
#define ETL_VERSION_MAJOR 15
#define ETL_VERSION_MINOR 4
#define ETL_VERSION_PATCH 2
#define ETL_VERSION_MINOR 5
#define ETL_VERSION_PATCH 0
#define ETL_VERSION ETL_STRINGIFY(ETL_VERSION_MAJOR) "." ETL_STRINGIFY(ETL_VERSION_MINOR) "." ETL_STRINGIFY(ETL_VERSION_PATCH)
#define ETL_VERSION_W ETL_STRINGIFY(ETL_VERSION_MAJOR) L"." ETL_STRINGIFY(ETL_VERSION_MINOR) L"." ETL_STRINGIFY(ETL_VERSION_PATCH)

View File

@ -1,6 +1,6 @@
{
"name": "Embedded Template Library",
"version": "15.4.2",
"version": "15.5.0",
"authors": {
"name": "John Wellbelove",
"email": "<john.wellbelove@etlcpp.com>"

View File

@ -1,5 +1,5 @@
name=Embedded Template Library
version=15.4.2
version=15.5.0
author= John Wellbelove <john.wellbelove@etlcpp.com>
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
license=MIT

View File

@ -1,3 +1,10 @@
===============================================================================
15.5.0
Added the ability to self determine the compiler type, version and language support
by defining ETL_AUTO_DETERMINE_COMPILER_INFO or including the 'auto.h' profile.
Added support for C++11's 'alignas' and 'alignof'
Changed 'memcpy' to 'memmove' in alternate STL algorithms.
===============================================================================
15.4.2
Fix visitor overridden test virtual visit function parameters

View File

@ -28,18 +28,35 @@
</ExtraCommands>
</Target>
<Target title="Windows No STL">
<Option output="bin/Debug No STL/ETL" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-std=c++1z" />
<Add option="-m32" />
<Add option="-g" />
<Add option="-D_DEBUG" />
<Add option="-DETL_NO_STL" />
<Add directory="../../src" />
</Compiler>
<Linker>
<Add option="-m32" />
</Linker>
<ExtraCommands>
<Add after="${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}" />
</ExtraCommands>
</Target>
<Target title="Linux">
<Option output="bin/Debug/ETL" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-std=c++14" />
<Add option="-std=c++17" />
<Add option="-std=c++11" />
<Add option="-m32" />
<Add option="-g" />
<Add option="-D_DEBUG" />
<Add option="-DETL_NO_STL" />
<Add directory="../../src" />
</Compiler>
<Linker>
@ -55,7 +72,6 @@
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-std=c++11" />
<Add option="-m64" />
<Add option="-g" />
<Add option="-D_DEBUG" />
@ -68,32 +84,13 @@
<Add after="${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}" />
</ExtraCommands>
</Target>
<Target title="Linux">
<Option output="bin/Debug/ETL" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-std=c++14" />
<Add option="-std=c++17" />
<Add option="-std=c++11" />
<Add option="-g" />
<Add option="-D_DEBUG" />
</Compiler>
<ExtraCommands>
<Add after="${TARGET_OUTPUT_DIR}${TARGET_OUTPUT_BASENAME}" />
<Mode after="always" />
</ExtraCommands>
</Target>
<Target title="Linux No STL">
<Option output="bin/Debug/ETL" prefix_auto="1" extension_auto="1" />
<Option object_output="obj/Debug/" />
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-std=c++14" />
<Add option="-std=c++17" />
<Add option="-std=c++11" />
<Add option="-g" />
<Add option="-D_DEBUG" />
<Add option="-DETL_NO_STL" />
@ -105,14 +102,12 @@
</Target>
</Build>
<Compiler>
<Add option="-Wunused-parameter" />
<Add option="-Wstrict-aliasing" />
<Add option="-Wshadow" />
<Add option="-Wundef" />
<Add option="-Wall" />
<Add option="-std=c++14" />
<Add option="-Wunused-parameter" />
<Add option="-Wstrict-aliasing" />
<Add option="-std=c++17" />
<Add option="-std=c++11" />
<Add option="-fexceptions" />
<Add directory="../../../unittest-cpp/UnitTest++/" />
<Add directory="../../src" />
@ -300,10 +295,21 @@
<Unit filename="../../include/etl/pool.h" />
<Unit filename="../../include/etl/power.h" />
<Unit filename="../../include/etl/priority_queue.h" />
<Unit filename="../../include/etl/private/choose_namespace.h" />
<Unit filename="../../include/etl/private/choose_pair_types.h" />
<Unit filename="../../include/etl/private/choose_tag_types.h" />
<Unit filename="../../include/etl/private/crc16_poly_0x1021_.h" />
<Unit filename="../../include/etl/private/crc16_poly_0x8005.h" />
<Unit filename="../../include/etl/private/crc32_poly_0x04c11db7.h" />
<Unit filename="../../include/etl/private/crc32_poly_0x1edc6f41.h" />
<Unit filename="../../include/etl/private/crc64_poly_0x42f0e1eba9ea3693.h" />
<Unit filename="../../include/etl/private/crc8_poly_0x07.h" />
<Unit filename="../../include/etl/private/delegate_base.h" />
<Unit filename="../../include/etl/private/delegate_base_cpp03.h" />
<Unit filename="../../include/etl/private/delegate_cpp03.h" />
<Unit filename="../../include/etl/private/ivectorpointer.h" />
<Unit filename="../../include/etl/private/minmax_pop.h" />
<Unit filename="../../include/etl/private/minmax_push.h" />
<Unit filename="../../include/etl/private/pvoidvector.h" />
<Unit filename="../../include/etl/private/to_string_helper.h" />
<Unit filename="../../include/etl/private/vector_base.h" />
@ -321,6 +327,8 @@
<Unit filename="../../include/etl/profiles/cpp14_no_stl.h" />
<Unit filename="../../include/etl/profiles/cpp17.h" />
<Unit filename="../../include/etl/profiles/cpp17_no_stl.h" />
<Unit filename="../../include/etl/profiles/determine_compiler.h" />
<Unit filename="../../include/etl/profiles/determine_compiler_version.h" />
<Unit filename="../../include/etl/profiles/etl_profile.h" />
<Unit filename="../../include/etl/profiles/gcc_generic.h" />
<Unit filename="../../include/etl/profiles/gcc_linux_x86.h" />

View File

@ -95,10 +95,14 @@ SOFTWARE.
#define ETL_TIMER_SEMAPHORE_TYPE uint32_t
#endif
#ifdef _MSC_VER
#include "etl/profiles/msvc_x86.h"
#else
#include "etl/profiles/gcc_windows_x86.h"
#if defined(WIN32) || defined(WIN64) || defined(_WIN32) || defined(_WIN64)
#define ETL_TARGET_OS_WINDOWS
#endif
#if defined(linux)
#define ETL_TARGET_OS_LINUX
#endif
#include "etl/profiles/auto.h"
#endif

View File

@ -30,6 +30,7 @@ SOFTWARE.
#include <cstdint>
#include <type_traits>
#include <limits>
#include "etl/binary.h"
#include "etl/bitset.h"

View File

@ -342,7 +342,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;__clang__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>../../../unittest-cpp/UnitTest++/;../../include;../../include/etl/c;../../test</AdditionalIncludeDirectories>
<UndefinePreprocessorDefinitions>
</UndefinePreprocessorDefinitions>
@ -350,7 +350,7 @@
<LanguageStandard>stdcpp17</LanguageStandard>
<SupportJustMyCode>false</SupportJustMyCode>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>-Wno-self-assign %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>-Wno-self-assign /Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@ -366,7 +366,7 @@
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_NO_STL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_NO_STL;__clang__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>../../../unittest-cpp/UnitTest++/;../../include;../../include/etl/c;../../test</AdditionalIncludeDirectories>
<UndefinePreprocessorDefinitions>
</UndefinePreprocessorDefinitions>
@ -374,7 +374,7 @@
<LanguageStandard>stdcpp17</LanguageStandard>
<SupportJustMyCode>false</SupportJustMyCode>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalOptions>-Wno-self-assign %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>-Wno-self-assign /Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@ -747,9 +747,13 @@
<ClInclude Include="..\..\include\etl\private\to_string_helper.h" />
<ClInclude Include="..\..\include\etl\profiles\armv7.h" />
<ClInclude Include="..\..\include\etl\profiles\armv7_no_stl.h" />
<ClInclude Include="..\..\include\etl\profiles\auto.h" />
<ClInclude Include="..\..\include\etl\profiles\clang_generic.h" />
<ClInclude Include="..\..\include\etl\profiles\cpp17.h" />
<ClInclude Include="..\..\include\etl\profiles\cpp17_no_stl.h" />
<ClInclude Include="..\..\include\etl\profiles\determine_compiler.h" />
<ClInclude Include="..\..\include\etl\profiles\determine_compiler_language_support.h" />
<ClInclude Include="..\..\include\etl\profiles\determine_compiler_version.h" />
<ClInclude Include="..\..\include\etl\queue_spsc_locked.h" />
<ClInclude Include="..\..\include\etl\scaled_rounding.h" />
<ClInclude Include="..\..\include\etl\state_chart.h" />

View File

@ -846,6 +846,18 @@
<ClInclude Include="..\..\include\etl\crc32_posix.h">
<Filter>ETL\Maths</Filter>
</ClInclude>
<ClInclude Include="..\..\include\etl\profiles\determine_compiler_version.h">
<Filter>ETL\Profiles</Filter>
</ClInclude>
<ClInclude Include="..\..\include\etl\profiles\determine_compiler.h">
<Filter>ETL\Profiles</Filter>
</ClInclude>
<ClInclude Include="..\..\include\etl\profiles\auto.h">
<Filter>ETL\Profiles</Filter>
</ClInclude>
<ClInclude Include="..\..\include\etl\profiles\determine_compiler_language_support.h">
<Filter>ETL\Profiles</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\main.cpp">