diff --git a/include/etl/callback_timer.h b/include/etl/callback_timer.h index 7771e880..389da98a 100644 --- a/include/etl/callback_timer.h +++ b/include/etl/callback_timer.h @@ -30,7 +30,8 @@ SOFTWARE. #define ETL_CALLBACK_TIMER_INCLUDED #include -#include + +#include "private/new.h" #include "platform.h" #include "algorithm.h" diff --git a/include/etl/deque.h b/include/etl/deque.h index 75f8d4af..d68f84e7 100644 --- a/include/etl/deque.h +++ b/include/etl/deque.h @@ -34,7 +34,8 @@ SOFTWARE. #include #include -#include +#include "private/new.h" + #include "platform.h" diff --git a/include/etl/experimental/variant_new.h b/include/etl/experimental/variant_new.h index 503aa98d..160969ac 100644 --- a/include/etl/experimental/variant_new.h +++ b/include/etl/experimental/variant_new.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" #include "utility.h" diff --git a/include/etl/flat_map.h b/include/etl/flat_map.h index b5960133..2e69675f 100644 --- a/include/etl/flat_map.h +++ b/include/etl/flat_map.h @@ -31,7 +31,7 @@ SOFTWARE. #ifndef ETL_FLAT_MAP_INCLUDED #define ETL_FLAT_MAP_INCLUDED -#include +#include "private/new.h" #include "platform.h" #include "reference_flat_map.h" diff --git a/include/etl/flat_multimap.h b/include/etl/flat_multimap.h index e163ec67..0f97f66c 100644 --- a/include/etl/flat_multimap.h +++ b/include/etl/flat_multimap.h @@ -31,7 +31,7 @@ SOFTWARE. #ifndef ETL_FLAT_MULTMAP_INCLUDED #define ETL_FLAT_MULTMAP_INCLUDED -#include +#include "private/new.h" #include "platform.h" #include "reference_flat_multimap.h" diff --git a/include/etl/flat_set.h b/include/etl/flat_set.h index baa19791..baa26301 100644 --- a/include/etl/flat_set.h +++ b/include/etl/flat_set.h @@ -31,7 +31,7 @@ SOFTWARE. #ifndef ETL_FLAT_SET_INCLUDED #define ETL_FLAT_SET_INCLUDED -#include +#include "private/new.h" #include "platform.h" #include "reference_flat_set.h" diff --git a/include/etl/forward_list.h b/include/etl/forward_list.h index f1f25eb4..d5754ab3 100644 --- a/include/etl/forward_list.h +++ b/include/etl/forward_list.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" diff --git a/include/etl/generators/message_router_generator.h b/include/etl/generators/message_router_generator.h index 23eac2b2..93d68119 100644 --- a/include/etl/generators/message_router_generator.h +++ b/include/etl/generators/message_router_generator.h @@ -64,7 +64,7 @@ cog.outl("//******************************************************************** #define ETL_MESSAGE_ROUTER_INCLUDED #include -#include +#include "private/new.h" #include "platform.h" #include "message.h" diff --git a/include/etl/list.h b/include/etl/list.h index d8cb152e..12a9436d 100644 --- a/include/etl/list.h +++ b/include/etl/list.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" diff --git a/include/etl/map.h b/include/etl/map.h index 0efc2ef6..5cdb6b4d 100755 --- a/include/etl/map.h +++ b/include/etl/map.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" diff --git a/include/etl/memory.h b/include/etl/memory.h index 3c9f576c..3b5755c0 100644 --- a/include/etl/memory.h +++ b/include/etl/memory.h @@ -38,13 +38,11 @@ SOFTWARE. #include "utility.h" #include "nullptr.h" #include "alignment.h" +#include "private/new.h" #include - #include -#include - #if ETL_USING_STL #include #endif diff --git a/include/etl/message_router.h b/include/etl/message_router.h index 1f981d0e..fdb34e78 100644 --- a/include/etl/message_router.h +++ b/include/etl/message_router.h @@ -52,7 +52,7 @@ SOFTWARE. #define ETL_MESSAGE_ROUTER_INCLUDED #include -#include +#include "private/new.h" #include "platform.h" #include "message.h" diff --git a/include/etl/multimap.h b/include/etl/multimap.h index 1cde7318..a7270419 100644 --- a/include/etl/multimap.h +++ b/include/etl/multimap.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" diff --git a/include/etl/multiset.h b/include/etl/multiset.h index dd950be1..7f4fb98f 100644 --- a/include/etl/multiset.h +++ b/include/etl/multiset.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" diff --git a/include/etl/optional.h b/include/etl/optional.h index 25b4af0a..c57710c3 100644 --- a/include/etl/optional.h +++ b/include/etl/optional.h @@ -31,7 +31,7 @@ SOFTWARE. #ifndef ETL_OPTIONAL_INCLUDED #define ETL_OPTIONAL_INCLUDED -#include +#include "private/new.h" #include "platform.h" #include "alignment.h" diff --git a/include/etl/packet.h b/include/etl/packet.h index fbaf046b..f728dffc 100644 --- a/include/etl/packet.h +++ b/include/etl/packet.h @@ -31,7 +31,7 @@ SOFTWARE. #ifndef ETL_PACKET_INCLUDED #define ETL_PACKET_INCLUDED -#include +#include "private/new.h" #include "platform.h" #include "static_assert.h" diff --git a/include/etl/pool.h b/include/etl/pool.h index bb17bccb..10da919e 100644 --- a/include/etl/pool.h +++ b/include/etl/pool.h @@ -33,7 +33,7 @@ SOFTWARE. #include "platform.h" -#include +#include "private/new.h" #include "algorithm.h" #include "iterator.h" diff --git a/include/etl/private/new.h b/include/etl/private/new.h new file mode 100644 index 00000000..45dac77b --- /dev/null +++ b/include/etl/private/new.h @@ -0,0 +1,48 @@ +///\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_NEW_INCLUDED +#define ETL_NEW_INCLUDED +///\ingroup private + +#include "../platform.h" + +#ifdef ETL_NO_NEW_HEADER_AVAILABLE +// Define placement new if no new header is available +inline void* operator new(size_t, void* const __p){ return __p; } +inline void* operator new[](size_t, void* const __p){ return __p; } + +inline void operator delete(void*, void* const){ } +inline void operator delete[](void*, void* const){ } +#else +#include +#endif + +#endif diff --git a/include/etl/queue.h b/include/etl/queue.h index 64f8eaff..92ccb594 100644 --- a/include/etl/queue.h +++ b/include/etl/queue.h @@ -34,7 +34,7 @@ SOFTWARE. #include #include -#include +#include "private/new.h" #include "platform.h" #include "container.h" diff --git a/include/etl/queue_mpmc_mutex.h b/include/etl/queue_mpmc_mutex.h index 0270e716..5dd658cb 100644 --- a/include/etl/queue_mpmc_mutex.h +++ b/include/etl/queue_mpmc_mutex.h @@ -34,7 +34,7 @@ SOFTWARE. #include #include -#include +#include "private/new.h" #include "platform.h" #include "mutex.h" diff --git a/include/etl/queue_spsc_atomic.h b/include/etl/queue_spsc_atomic.h index 1aee3f28..9f8d2546 100644 --- a/include/etl/queue_spsc_atomic.h +++ b/include/etl/queue_spsc_atomic.h @@ -34,7 +34,7 @@ SOFTWARE. #include #include -#include +#include "private/new.h" #include "platform.h" #include "alignment.h" diff --git a/include/etl/queue_spsc_isr.h b/include/etl/queue_spsc_isr.h index 0679d433..b423e06b 100644 --- a/include/etl/queue_spsc_isr.h +++ b/include/etl/queue_spsc_isr.h @@ -34,7 +34,7 @@ SOFTWARE. #include #include -#include +#include "private/new.h" #include "platform.h" #include "alignment.h" diff --git a/include/etl/queue_spsc_locked.h b/include/etl/queue_spsc_locked.h index 43b48138..cce172d6 100644 --- a/include/etl/queue_spsc_locked.h +++ b/include/etl/queue_spsc_locked.h @@ -34,7 +34,7 @@ SOFTWARE. #include #include -#include +#include "private/new.h" #include "platform.h" #include "alignment.h" diff --git a/include/etl/set.h b/include/etl/set.h index 63d3debc..2f826c49 100755 --- a/include/etl/set.h +++ b/include/etl/set.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" #include "container.h" diff --git a/include/etl/stack.h b/include/etl/stack.h index 8c57dbd5..2dd50c34 100644 --- a/include/etl/stack.h +++ b/include/etl/stack.h @@ -34,7 +34,7 @@ SOFTWARE. #include #include -#include +#include "private/new.h" #include "platform.h" #include "algorithm.h" diff --git a/include/etl/unordered_map.h b/include/etl/unordered_map.h index 3d72a0ea..0e7ef7f4 100644 --- a/include/etl/unordered_map.h +++ b/include/etl/unordered_map.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" #include "algorithm.h" diff --git a/include/etl/unordered_multimap.h b/include/etl/unordered_multimap.h index e029593e..9182fb00 100644 --- a/include/etl/unordered_multimap.h +++ b/include/etl/unordered_multimap.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" #include "algorithm.h" diff --git a/include/etl/unordered_multiset.h b/include/etl/unordered_multiset.h index df7e5671..34e0eee6 100644 --- a/include/etl/unordered_multiset.h +++ b/include/etl/unordered_multiset.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" diff --git a/include/etl/unordered_set.h b/include/etl/unordered_set.h index fd5b034e..9b3ae0d0 100644 --- a/include/etl/unordered_set.h +++ b/include/etl/unordered_set.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" #include "algorithm.h" diff --git a/include/etl/variant.h b/include/etl/variant.h index f0a20158..78ecaafe 100644 --- a/include/etl/variant.h +++ b/include/etl/variant.h @@ -33,7 +33,7 @@ SOFTWARE. #include -#include +#include "private/new.h" #include "platform.h" #include "utility.h" diff --git a/include/etl/vector.h b/include/etl/vector.h index 29f8fd5d..90e237b0 100644 --- a/include/etl/vector.h +++ b/include/etl/vector.h @@ -37,7 +37,7 @@ SOFTWARE. #include #include -#include +#include "private/new.h" #include "platform.h" #include "algorithm.h"