mirror of
https://github.com/ETLCPP/etl.git
synced 2026-10-28 18:07:10 +08:00
Merge branch 'development'
# Conflicts: # meson.build
This commit is contained in:
commit
9f2f769f1a
1
.gitignore
vendored
1
.gitignore
vendored
@ -321,3 +321,4 @@ test/vs2019/Debug-LLVM-NoSTL-Builtins/etl.exe
|
||||
test/vs2019/cmake-build
|
||||
test/vs2019/Debug MSVC - No STL - Built-ins
|
||||
test/vs2019/Test1
|
||||
test/vs2019/Test2
|
||||
|
||||
@ -500,7 +500,9 @@ namespace etl
|
||||
/// Default constructor.
|
||||
//*************************************************************************
|
||||
bip_buffer_spsc_atomic()
|
||||
: base_t(reinterpret_cast<T*>(&buffer[0]), RESERVED_SIZE)
|
||||
: buffer()
|
||||
, base_t(reinterpret_cast<T*>(&buffer[0]), RESERVED_SIZE)
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -80,12 +80,17 @@ namespace etl
|
||||
// For internal FSM use.
|
||||
typedef typename etl::larger_type<etl::message_id_t>::type fsm_internal_id_t;
|
||||
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,
|
||||
typename T1 = void, 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>
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_FSM_FORCE_CPP03) // For C++17 and above
|
||||
template <typename, typename, const etl::fsm_state_id_t, typename...>
|
||||
class fsm_state;
|
||||
#else
|
||||
template <typename, typename, const etl::fsm_state_id_t,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename>
|
||||
class fsm_state;
|
||||
#endif
|
||||
|
||||
//***************************************************************************
|
||||
/// Base exception class for FSM.
|
||||
@ -178,12 +183,18 @@ namespace etl
|
||||
/// Allows ifsm_state functions to be private.
|
||||
friend class etl::fsm;
|
||||
friend class etl::hfsm;
|
||||
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_FSM_FORCE_CPP03) // For C++17 and above
|
||||
template <typename, typename, const etl::fsm_state_id_t, typename...>
|
||||
friend class fsm_state;
|
||||
#else
|
||||
template <typename, typename, const etl::fsm_state_id_t,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename,
|
||||
typename, typename, typename, typename>
|
||||
friend class etl::fsm_state;
|
||||
#endif
|
||||
|
||||
//*******************************************
|
||||
/// Gets the id for this state.
|
||||
@ -480,6 +491,81 @@ namespace etl
|
||||
etl::fsm_state_id_t number_of_states; ///< The number of states.
|
||||
};
|
||||
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_FSM_FORCE_CPP03) // For C++17 and above
|
||||
|
||||
//***************************************************************************
|
||||
// The definition for all types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_, typename... TMessageTypes>
|
||||
class fsm_state : public ifsm_state
|
||||
{
|
||||
public:
|
||||
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
STATE_ID = STATE_ID_
|
||||
};
|
||||
|
||||
fsm_state()
|
||||
: ifsm_state(STATE_ID)
|
||||
{
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
~fsm_state()
|
||||
{
|
||||
}
|
||||
|
||||
inline TContext& get_fsm_context() const
|
||||
{
|
||||
return static_cast<TContext&>(ifsm_state::get_fsm_context());
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//********************************************
|
||||
struct result_t
|
||||
{
|
||||
bool was_handled;
|
||||
etl::fsm_state_id_t state_id;
|
||||
};
|
||||
|
||||
//********************************************
|
||||
etl::fsm_state_id_t process_event(const etl::imessage& message)
|
||||
{
|
||||
etl::fsm_state_id_t new_state_id;
|
||||
|
||||
const bool was_handled = (process_event_type<TMessageTypes>(message, new_state_id) || ...);
|
||||
|
||||
if (!was_handled)
|
||||
{
|
||||
new_state_id = (p_parent != nullptr) ? p_parent->process_event(message) : static_cast<TDerived*>(this)->on_event_unknown(message);
|
||||
}
|
||||
|
||||
return new_state_id;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage>
|
||||
bool process_event_type(const etl::imessage& msg, etl::fsm_state_id_t& state_id)
|
||||
{
|
||||
if (TMessage::ID == msg.get_message_id())
|
||||
{
|
||||
state_id = static_cast<TDerived*>(this)->on_event(static_cast<const TMessage&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#else // For C++03, C++11 & C++14
|
||||
|
||||
//***************************************************************************
|
||||
// The definition for all 16 message types.
|
||||
//***************************************************************************
|
||||
@ -1411,6 +1497,8 @@ namespace etl
|
||||
return p_parent ? p_parent->process_event(message) : static_cast<TDerived*>(this)->on_event_unknown(message);
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#include "private/minmax_pop.h"
|
||||
|
||||
@ -92,19 +92,24 @@ namespace etl
|
||||
// For internal FSM use.
|
||||
typedef typename etl::larger_type<etl::message_id_t>::type fsm_internal_id_t;
|
||||
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_FSM_FORCE_CPP03) // For C++17 and above
|
||||
template <typename, typename, const etl::fsm_state_id_t, typename...>
|
||||
class fsm_state;
|
||||
#else
|
||||
/*[[[cog
|
||||
import cog
|
||||
cog.outl("template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_,")
|
||||
cog.outl("template <typename, typename, const etl::fsm_state_id_t,")
|
||||
cog.out(" ")
|
||||
for n in range(1, int(Handlers)):
|
||||
cog.out("typename T%s = void, " % n)
|
||||
cog.out("typename, ")
|
||||
if n % 4 == 0:
|
||||
cog.outl("")
|
||||
cog.out(" ")
|
||||
cog.outl("typename T%s = void>" % int(Handlers))
|
||||
cog.outl("typename>")
|
||||
cog.outl("class fsm_state;")
|
||||
]]]*/
|
||||
/*[[[end]]]*/
|
||||
#endif
|
||||
|
||||
//***************************************************************************
|
||||
/// Base exception class for FSM.
|
||||
@ -197,6 +202,11 @@ namespace etl
|
||||
/// Allows ifsm_state functions to be private.
|
||||
friend class etl::fsm;
|
||||
friend class etl::hfsm;
|
||||
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_FSM_FORCE_CPP03) // For C++17 and above
|
||||
template <typename, typename, const etl::fsm_state_id_t, typename...>
|
||||
friend class fsm_state;
|
||||
#else
|
||||
/*[[[cog
|
||||
import cog
|
||||
cog.outl(" template <typename, typename, const etl::fsm_state_id_t,")
|
||||
@ -210,6 +220,7 @@ namespace etl
|
||||
]]]*/
|
||||
/*[[[end]]]*/
|
||||
friend class etl::fsm_state;
|
||||
#endif
|
||||
|
||||
//*******************************************
|
||||
/// Gets the id for this state.
|
||||
@ -506,6 +517,81 @@ namespace etl
|
||||
etl::fsm_state_id_t number_of_states; ///< The number of states.
|
||||
};
|
||||
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_FSM_FORCE_CPP03) // For C++17 and above
|
||||
|
||||
//***************************************************************************
|
||||
// The definition for all types.
|
||||
//***************************************************************************
|
||||
template <typename TContext, typename TDerived, const etl::fsm_state_id_t STATE_ID_, typename... TMessageTypes>
|
||||
class fsm_state : public ifsm_state
|
||||
{
|
||||
public:
|
||||
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
STATE_ID = STATE_ID_
|
||||
};
|
||||
|
||||
fsm_state()
|
||||
: ifsm_state(STATE_ID)
|
||||
{
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
~fsm_state()
|
||||
{
|
||||
}
|
||||
|
||||
inline TContext& get_fsm_context() const
|
||||
{
|
||||
return static_cast<TContext&>(ifsm_state::get_fsm_context());
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//********************************************
|
||||
struct result_t
|
||||
{
|
||||
bool was_handled;
|
||||
etl::fsm_state_id_t state_id;
|
||||
};
|
||||
|
||||
//********************************************
|
||||
etl::fsm_state_id_t process_event(const etl::imessage& message)
|
||||
{
|
||||
etl::fsm_state_id_t new_state_id;
|
||||
|
||||
const bool was_handled = (process_event_type<TMessageTypes>(message, new_state_id) || ...);
|
||||
|
||||
if (!was_handled)
|
||||
{
|
||||
new_state_id = (p_parent != nullptr) ? p_parent->process_event(message) : static_cast<TDerived*>(this)->on_event_unknown(message);
|
||||
}
|
||||
|
||||
return new_state_id;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage>
|
||||
bool process_event_type(const etl::imessage& msg, etl::fsm_state_id_t& state_id)
|
||||
{
|
||||
if (TMessage::ID == msg.get_message_id())
|
||||
{
|
||||
state_id = static_cast<TDerived*>(this)->on_event(static_cast<const TMessage&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#else // For C++03, C++11 & C++14
|
||||
|
||||
/*[[[cog
|
||||
import cog
|
||||
################################################
|
||||
@ -692,6 +778,8 @@ namespace etl
|
||||
cog.outl("};")
|
||||
]]]*/
|
||||
/*[[[end]]]*/
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#include "private/minmax_pop.h"
|
||||
|
||||
@ -396,11 +396,8 @@ namespace etl
|
||||
#endif
|
||||
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
template <typename... T>
|
||||
inline constexpr size_t largest_size_v = largest<T...>::size;
|
||||
|
||||
template <typename... T>
|
||||
inline constexpr size_t largest_alignment_v = largest<T...>::alignment;
|
||||
template <typename... T>
|
||||
inline constexpr size_t largest_size = largest<T...>::size;
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
@ -74,6 +74,297 @@ cog.outl("//********************************************************************
|
||||
|
||||
namespace etl
|
||||
{
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03)
|
||||
//***************************************************************************
|
||||
// The definition for all message types.
|
||||
//***************************************************************************
|
||||
template <typename... TMessageTypes>
|
||||
class message_packet
|
||||
{
|
||||
public:
|
||||
|
||||
//********************************************
|
||||
message_packet()
|
||||
: valid(false)
|
||||
{
|
||||
}
|
||||
|
||||
//********************************************
|
||||
explicit message_packet(const etl::imessage& msg)
|
||||
: valid(true)
|
||||
{
|
||||
add_new_message(msg);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
explicit message_packet(etl::imessage&& msg)
|
||||
: valid(true)
|
||||
{
|
||||
add_new_message(etl::move(msg));
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage, etl::enable_if_t<!etl::is_same_v<etl::remove_reference_t<TMessage>, etl::imessage> &&
|
||||
!etl::is_same_v<etl::remove_reference_t<TMessage>, etl::message_packet<TMessageTypes...>>, int> = 0>
|
||||
explicit message_packet(TMessage&& msg)
|
||||
: valid(true)
|
||||
{
|
||||
add_new_message<TMessage>(etl::forward<TMessage>(msg));
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet(const message_packet& other)
|
||||
: valid(other.is_valid())
|
||||
{
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(other.get());
|
||||
}
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet(message_packet&& other)
|
||||
: valid(other.is_valid())
|
||||
{
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(etl::move(other.get()));
|
||||
}
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet& operator =(const message_packet& rhs)
|
||||
{
|
||||
delete_current_message();
|
||||
valid = rhs.is_valid();
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(rhs.get());
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet& operator =(message_packet&& rhs)
|
||||
{
|
||||
delete_current_message();
|
||||
valid = rhs.is_valid();
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(etl::move(rhs.get()));
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
~message_packet()
|
||||
{
|
||||
delete_current_message();
|
||||
}
|
||||
|
||||
//********************************************
|
||||
etl::imessage& get() ETL_NOEXCEPT
|
||||
{
|
||||
return *static_cast<etl::imessage*>(data);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
const etl::imessage& get() const ETL_NOEXCEPT
|
||||
{
|
||||
return *static_cast<const etl::imessage*>(data);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
bool is_valid() const
|
||||
{
|
||||
return valid;
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
|
||||
{
|
||||
return (accepts_message<TMessageTypes::ID>(id) || ...);
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
static ETL_CONSTEXPR bool accepts(const etl::imessage& msg)
|
||||
{
|
||||
return accepts(msg.get_message_id());
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
template <etl::message_id_t Id>
|
||||
static ETL_CONSTEXPR bool accepts()
|
||||
{
|
||||
return (accepts_message<TMessageTypes::ID, Id>() || ...);
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
template <typename TMessage>
|
||||
static ETL_CONSTEXPR
|
||||
typename etl::enable_if<!etl::is_integral<TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
return accepts<TMessage::ID>();
|
||||
}
|
||||
|
||||
enum
|
||||
{
|
||||
SIZE = etl::largest<TMessageTypes...>::size,
|
||||
ALIGNMENT = etl::largest<TMessageTypes...>::alignment
|
||||
};
|
||||
|
||||
private:
|
||||
|
||||
//**********************************************
|
||||
template <etl::message_id_t Id1, etl::message_id_t Id2>
|
||||
static ETL_CONSTEXPR bool accepts_message()
|
||||
{
|
||||
return Id1 == Id2;
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
template <etl::message_id_t Id1>
|
||||
static ETL_CONSTEXPR bool accepts_message(etl::message_id_t id2)
|
||||
{
|
||||
return Id1 == id2;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
void delete_current_message()
|
||||
{
|
||||
if (valid)
|
||||
{
|
||||
etl::imessage* pmsg = static_cast<etl::imessage*>(data);
|
||||
|
||||
#if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES)
|
||||
pmsg->~imessage();
|
||||
#else
|
||||
if (!(delete_current_message_type<TMessageTypes>(pmsg->get_message_id()) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
void add_new_message(const etl::imessage& msg)
|
||||
{
|
||||
if (!(add_new_message_type<TMessageTypes>(msg) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
void add_new_message(etl::imessage&& msg)
|
||||
{
|
||||
if (!(add_new_message_type<TMessageTypes>(etl::move(msg)) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage, etl::enable_if_t<!etl::is_same_v<etl::remove_reference_t<TMessage>, etl::imessage>, int> = 0>
|
||||
void add_new_message(TMessage&& msg)
|
||||
{
|
||||
if (!(add_new_message_type<TMessageTypes, etl::remove_reference_t<TMessage>::ID>(etl::forward<TMessage>(msg)) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
}
|
||||
|
||||
typename etl::aligned_storage<SIZE, ALIGNMENT>::type data;
|
||||
bool valid;
|
||||
|
||||
private:
|
||||
|
||||
//********************************************
|
||||
template <typename TType>
|
||||
bool delete_current_message_type(etl::message_id_t Id)
|
||||
{
|
||||
if (TType::ID == Id)
|
||||
{
|
||||
static_cast<TType*>(data)->~TType();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType>
|
||||
bool add_new_message_type(const etl::imessage& msg)
|
||||
{
|
||||
if (TType::ID == msg.get_message_id())
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<const TType&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType, etl::message_id_t Id>
|
||||
bool add_new_message_type(const etl::imessage& msg)
|
||||
{
|
||||
if (TType::ID == Id)
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<const TType&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType>
|
||||
bool add_new_message_type(etl::imessage&& msg)
|
||||
{
|
||||
if (TType::ID == msg.get_message_id())
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<TType&&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType, etl::message_id_t Id>
|
||||
bool add_new_message_type(etl::imessage&& msg)
|
||||
{
|
||||
if (TType::ID == Id)
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<TType&&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
/*[[[cog
|
||||
import cog
|
||||
################################################
|
||||
@ -539,6 +830,7 @@ namespace etl
|
||||
cog.outl("};")
|
||||
]]]*/
|
||||
/*[[[end]]]*/
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -307,6 +307,109 @@ namespace etl
|
||||
destination.receive(message);
|
||||
}
|
||||
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_MESSAGE_ROUTER_FORCE_CPP03)
|
||||
//***************************************************************************
|
||||
// The definition for all message types.
|
||||
//***************************************************************************
|
||||
template <typename TDerived, typename... TMessageTypes>
|
||||
class message_router : public imessage_router
|
||||
{
|
||||
public:
|
||||
|
||||
typedef etl::message_packet<TMessageTypes...> message_packet;
|
||||
|
||||
//**********************************************
|
||||
message_router(etl::message_router_id_t id_)
|
||||
: imessage_router(id_)
|
||||
{
|
||||
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_router(etl::message_router_id_t id_, etl::imessage_router& successor_)
|
||||
: imessage_router(id_, successor_)
|
||||
{
|
||||
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
using etl::imessage_router::receive;
|
||||
|
||||
void receive(const etl::imessage& msg) ETL_OVERRIDE
|
||||
{
|
||||
const bool was_handled = (receive_message_type<TMessageTypes>(msg) || ...);
|
||||
|
||||
if (!was_handled)
|
||||
{
|
||||
if (has_successor())
|
||||
{
|
||||
get_successor().receive(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
static_cast<TDerived*>(this)->on_receive_unknown(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
using imessage_router::accepts;
|
||||
|
||||
bool accepts(etl::message_id_t id) const ETL_OVERRIDE
|
||||
{
|
||||
return (accepts_type<TMessageTypes>(id) || ...);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
ETL_DEPRECATED bool is_null_router() const ETL_OVERRIDE
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
bool is_producer() const ETL_OVERRIDE
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
bool is_consumer() const ETL_OVERRIDE
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage>
|
||||
bool receive_message_type(const etl::imessage& msg)
|
||||
{
|
||||
if (TMessage::ID == msg.get_message_id())
|
||||
{
|
||||
static_cast<TDerived*>(this)->on_receive(static_cast<const TMessage&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage>
|
||||
bool accepts_type(etl::message_id_t id) const
|
||||
{
|
||||
if (TMessage::ID == id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
#else
|
||||
/*[[[cog
|
||||
import cog
|
||||
################################################
|
||||
@ -536,6 +639,7 @@ namespace etl
|
||||
cog.outl("};")
|
||||
]]]*/
|
||||
/*[[[end]]]*/
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -347,6 +347,11 @@ namespace etl
|
||||
using largest_t = typename largest<T...>::type;
|
||||
#endif
|
||||
|
||||
#if ETL_CPP17_SUPPORTED
|
||||
template <typename... T>
|
||||
inline constexpr size_t largest_size = largest<T...>::size;
|
||||
#endif
|
||||
|
||||
#else
|
||||
//***************************************************************************
|
||||
/// Template to determine the largest type, size and alignment.
|
||||
|
||||
@ -62,6 +62,297 @@ SOFTWARE.
|
||||
|
||||
namespace etl
|
||||
{
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_MESSAGE_PACKET_FORCE_CPP03)
|
||||
//***************************************************************************
|
||||
// The definition for all message types.
|
||||
//***************************************************************************
|
||||
template <typename... TMessageTypes>
|
||||
class message_packet
|
||||
{
|
||||
public:
|
||||
|
||||
//********************************************
|
||||
message_packet()
|
||||
: valid(false)
|
||||
{
|
||||
}
|
||||
|
||||
//********************************************
|
||||
explicit message_packet(const etl::imessage& msg)
|
||||
: valid(true)
|
||||
{
|
||||
add_new_message(msg);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
explicit message_packet(etl::imessage&& msg)
|
||||
: valid(true)
|
||||
{
|
||||
add_new_message(etl::move(msg));
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage, etl::enable_if_t<!etl::is_same_v<etl::remove_reference_t<TMessage>, etl::imessage> &&
|
||||
!etl::is_same_v<etl::remove_reference_t<TMessage>, etl::message_packet<TMessageTypes...>>, int> = 0>
|
||||
explicit message_packet(TMessage&& msg)
|
||||
: valid(true)
|
||||
{
|
||||
add_new_message<TMessage>(etl::forward<TMessage>(msg));
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet(const message_packet& other)
|
||||
: valid(other.is_valid())
|
||||
{
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(other.get());
|
||||
}
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet(message_packet&& other)
|
||||
: valid(other.is_valid())
|
||||
{
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(etl::move(other.get()));
|
||||
}
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet& operator =(const message_packet& rhs)
|
||||
{
|
||||
delete_current_message();
|
||||
valid = rhs.is_valid();
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(rhs.get());
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_packet& operator =(message_packet&& rhs)
|
||||
{
|
||||
delete_current_message();
|
||||
valid = rhs.is_valid();
|
||||
if (valid)
|
||||
{
|
||||
add_new_message(etl::move(rhs.get()));
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
~message_packet()
|
||||
{
|
||||
delete_current_message();
|
||||
}
|
||||
|
||||
//********************************************
|
||||
etl::imessage& get() ETL_NOEXCEPT
|
||||
{
|
||||
return *static_cast<etl::imessage*>(data);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
const etl::imessage& get() const ETL_NOEXCEPT
|
||||
{
|
||||
return *static_cast<const etl::imessage*>(data);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
bool is_valid() const
|
||||
{
|
||||
return valid;
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
static ETL_CONSTEXPR bool accepts(etl::message_id_t id)
|
||||
{
|
||||
return (accepts_message<TMessageTypes::ID>(id) || ...);
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
static ETL_CONSTEXPR bool accepts(const etl::imessage& msg)
|
||||
{
|
||||
return accepts(msg.get_message_id());
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
template <etl::message_id_t Id>
|
||||
static ETL_CONSTEXPR bool accepts()
|
||||
{
|
||||
return (accepts_message<TMessageTypes::ID, Id>() || ...);
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
template <typename TMessage>
|
||||
static ETL_CONSTEXPR
|
||||
typename etl::enable_if<!etl::is_integral<TMessage>::value, bool>::type
|
||||
accepts()
|
||||
{
|
||||
return accepts<TMessage::ID>();
|
||||
}
|
||||
|
||||
enum
|
||||
{
|
||||
SIZE = etl::largest<TMessageTypes...>::size,
|
||||
ALIGNMENT = etl::largest<TMessageTypes...>::alignment
|
||||
};
|
||||
|
||||
private:
|
||||
|
||||
//**********************************************
|
||||
template <etl::message_id_t Id1, etl::message_id_t Id2>
|
||||
static ETL_CONSTEXPR bool accepts_message()
|
||||
{
|
||||
return Id1 == Id2;
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
template <etl::message_id_t Id1>
|
||||
static ETL_CONSTEXPR bool accepts_message(etl::message_id_t id2)
|
||||
{
|
||||
return Id1 == id2;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
void delete_current_message()
|
||||
{
|
||||
if (valid)
|
||||
{
|
||||
etl::imessage* pmsg = static_cast<etl::imessage*>(data);
|
||||
|
||||
#if defined(ETL_MESSAGES_ARE_VIRTUAL) || defined(ETL_POLYMORPHIC_MESSAGES)
|
||||
pmsg->~imessage();
|
||||
#else
|
||||
if (!(delete_current_message_type<TMessageTypes>(pmsg->get_message_id()) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
void add_new_message(const etl::imessage& msg)
|
||||
{
|
||||
if (!(add_new_message_type<TMessageTypes>(msg) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
void add_new_message(etl::imessage&& msg)
|
||||
{
|
||||
if (!(add_new_message_type<TMessageTypes>(etl::move(msg)) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage, etl::enable_if_t<!etl::is_same_v<etl::remove_reference_t<TMessage>, etl::imessage>, int> = 0>
|
||||
void add_new_message(TMessage&& msg)
|
||||
{
|
||||
if (!(add_new_message_type<TMessageTypes, etl::remove_reference_t<TMessage>::ID>(etl::forward<TMessage>(msg)) || ...))
|
||||
{
|
||||
ETL_ALWAYS_ASSERT(ETL_ERROR(unhandled_message_exception));
|
||||
}
|
||||
}
|
||||
|
||||
typename etl::aligned_storage<SIZE, ALIGNMENT>::type data;
|
||||
bool valid;
|
||||
|
||||
private:
|
||||
|
||||
//********************************************
|
||||
template <typename TType>
|
||||
bool delete_current_message_type(etl::message_id_t Id)
|
||||
{
|
||||
if (TType::ID == Id)
|
||||
{
|
||||
static_cast<TType*>(data)->~TType();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType>
|
||||
bool add_new_message_type(const etl::imessage& msg)
|
||||
{
|
||||
if (TType::ID == msg.get_message_id())
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<const TType&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType, etl::message_id_t Id>
|
||||
bool add_new_message_type(const etl::imessage& msg)
|
||||
{
|
||||
if (TType::ID == Id)
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<const TType&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType>
|
||||
bool add_new_message_type(etl::imessage&& msg)
|
||||
{
|
||||
if (TType::ID == msg.get_message_id())
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<TType&&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TType, etl::message_id_t Id>
|
||||
bool add_new_message_type(etl::imessage&& msg)
|
||||
{
|
||||
if (TType::ID == Id)
|
||||
{
|
||||
void* p = data;
|
||||
new (p) TType(static_cast<TType&&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
//***************************************************************************
|
||||
// The definition for all 16 message types.
|
||||
//***************************************************************************
|
||||
@ -3638,6 +3929,7 @@ namespace etl
|
||||
typename etl::aligned_storage<SIZE, ALIGNMENT>::type data;
|
||||
bool valid;
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -295,6 +295,109 @@ namespace etl
|
||||
destination.receive(message);
|
||||
}
|
||||
|
||||
#if ETL_CPP17_SUPPORTED && !defined(ETL_MESSAGE_ROUTER_FORCE_CPP03)
|
||||
//***************************************************************************
|
||||
// The definition for all message types.
|
||||
//***************************************************************************
|
||||
template <typename TDerived, typename... TMessageTypes>
|
||||
class message_router : public imessage_router
|
||||
{
|
||||
public:
|
||||
|
||||
typedef etl::message_packet<TMessageTypes...> message_packet;
|
||||
|
||||
//**********************************************
|
||||
message_router(etl::message_router_id_t id_)
|
||||
: imessage_router(id_)
|
||||
{
|
||||
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
message_router(etl::message_router_id_t id_, etl::imessage_router& successor_)
|
||||
: imessage_router(id_, successor_)
|
||||
{
|
||||
ETL_ASSERT(id_ <= etl::imessage_router::MAX_MESSAGE_ROUTER, ETL_ERROR(etl::message_router_illegal_id));
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
using etl::imessage_router::receive;
|
||||
|
||||
void receive(const etl::imessage& msg) ETL_OVERRIDE
|
||||
{
|
||||
const bool was_handled = (receive_message_type<TMessageTypes>(msg) || ...);
|
||||
|
||||
if (!was_handled)
|
||||
{
|
||||
if (has_successor())
|
||||
{
|
||||
get_successor().receive(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
static_cast<TDerived*>(this)->on_receive_unknown(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//**********************************************
|
||||
using imessage_router::accepts;
|
||||
|
||||
bool accepts(etl::message_id_t id) const ETL_OVERRIDE
|
||||
{
|
||||
return (accepts_type<TMessageTypes>(id) || ...);
|
||||
}
|
||||
|
||||
//********************************************
|
||||
ETL_DEPRECATED bool is_null_router() const ETL_OVERRIDE
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
bool is_producer() const ETL_OVERRIDE
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//********************************************
|
||||
bool is_consumer() const ETL_OVERRIDE
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage>
|
||||
bool receive_message_type(const etl::imessage& msg)
|
||||
{
|
||||
if (TMessage::ID == msg.get_message_id())
|
||||
{
|
||||
static_cast<TDerived*>(this)->on_receive(static_cast<const TMessage&>(msg));
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************
|
||||
template <typename TMessage>
|
||||
bool accepts_type(etl::message_id_t id) const
|
||||
{
|
||||
if (TMessage::ID == id)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
#else
|
||||
//***************************************************************************
|
||||
// The definition for all 16 message types.
|
||||
//***************************************************************************
|
||||
@ -1790,6 +1893,7 @@ namespace etl
|
||||
return true;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@ -38,7 +38,7 @@ SOFTWARE.
|
||||
///\ingroup utilities
|
||||
|
||||
#define ETL_VERSION_MAJOR 20
|
||||
#define ETL_VERSION_MINOR 15
|
||||
#define ETL_VERSION_MINOR 16
|
||||
#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)
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ETL Embedded Template Library",
|
||||
"version": "20.15.0",
|
||||
"version": "20.16.0",
|
||||
"author s": {
|
||||
"name": "John Wellbelove",
|
||||
"email": "john.wellbelove@etlcpp.com"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
name=Embedded Template Library ETL
|
||||
version=20.15.0
|
||||
version=20.16.0
|
||||
author= John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
maintainer=John Wellbelove <john.wellbelove@etlcpp.com>
|
||||
license=MIT
|
||||
|
||||
@ -112,6 +112,7 @@ etl_test_sources = files(
|
||||
'test/test_user_type.cpp',
|
||||
'test/test_utility.cpp',
|
||||
'test/test_variant_legacy.cpp',
|
||||
'test/test_variant_variadic.cpp'
|
||||
'test/test_variant_pool.cpp',
|
||||
'test/test_variant_variadic.cpp',
|
||||
'test/test_vector.cpp',
|
||||
|
||||
@ -1,3 +1,8 @@
|
||||
===============================================================================
|
||||
20.16.0
|
||||
Added C++17 variadic versions of etl::message_router ans etl::fsm
|
||||
Fixed meson.build
|
||||
|
||||
===============================================================================
|
||||
20.15.0
|
||||
Added a Bipartite buffer, by Benedek Kupper.
|
||||
|
||||
@ -95,6 +95,10 @@ SOFTWARE.
|
||||
#define ETL_CRC_FORCE_CPP03
|
||||
#define ETL_MEM_CAST_FORCE_CPP03
|
||||
#define ETL_OBSERVER_FORCE_CPP03
|
||||
#define ETL_MESSAGE_PACKET_FORCE_CPP03
|
||||
#define ETL_OBSERVER_FORCE_CPP03
|
||||
#define ETL_MESSAGE_ROUTER_FORCE_CPP03
|
||||
#define ETL_FSM_FORCE_CPP03
|
||||
#endif
|
||||
|
||||
#if defined(ETL_FORCE_TEST_CPP11)
|
||||
|
||||
@ -16,42 +16,90 @@ echo "-----------------------------------------------"
|
||||
echo "GCC - STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL - Builtins"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bgcc
|
||||
#if [ $? -eq 0 ]; then
|
||||
# echo "Passed"
|
||||
#else
|
||||
# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
# exit $?
|
||||
#fi
|
||||
|
||||
{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL - Builtins"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bclang
|
||||
#if [ $? -eq 0 ]; then
|
||||
# echo "Passed"
|
||||
#else
|
||||
# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
# exit $?
|
||||
#fi
|
||||
|
||||
###############################################################################
|
||||
cd ../c++11 || exit 1
|
||||
@ -64,42 +112,90 @@ echo "-----------------------------------------------"
|
||||
echo "GCC - STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL - Builtins"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bgcc
|
||||
#if [ $? -eq 0 ]; then
|
||||
# echo "Passed"
|
||||
#else
|
||||
# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
# exit $?
|
||||
#fi
|
||||
|
||||
{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL - Builtins"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bclang
|
||||
#if [ $? -eq 0 ]; then
|
||||
# echo "Passed"
|
||||
#else
|
||||
# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
# exit $?
|
||||
#fi
|
||||
|
||||
###############################################################################
|
||||
cd ../c++14 || exit 1
|
||||
@ -112,42 +208,90 @@ echo "-----------------------------------------------"
|
||||
echo "GCC - STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL - Builtins"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL - Builtins"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bclang
|
||||
#if [ $? -eq 0 ]; then
|
||||
# echo "Passed"
|
||||
#else
|
||||
# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
# exit $?
|
||||
#fi
|
||||
|
||||
###############################################################################
|
||||
cd ../c++17 || exit 1
|
||||
@ -160,42 +304,90 @@ echo "-----------------------------------------------"
|
||||
echo "GCC - STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "GCC - No STL - Builtins"; } | tee -a ../log.txt
|
||||
g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bgcc
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "GCC - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#g++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=gcc CXX=g++ cmake -E chdir bgcc cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bgcc || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bgcc
|
||||
#if [ $? -eq 0 ]; then
|
||||
# echo "Passed"
|
||||
#else
|
||||
# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
# exit $?
|
||||
#fi
|
||||
|
||||
{ echo ""; echo "Clang - STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
{ echo ""; echo "Clang - No STL - Builtins"; } | tee -a ../log.txt
|
||||
clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
cmake --build bclang
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
|
||||
##{ echo ""; echo "Clang - No STL - User defined traits"; } | tee -a ../log.txt
|
||||
#clang++ --version | head --lines=1 | tee -a ../log.txt
|
||||
#CC=clang CXX=clang++ cmake -E chdir bclang cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=ON ..
|
||||
#cmake --build bclang || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
#cmake --build bclang
|
||||
#if [ $? -eq 0 ]; then
|
||||
# echo "Passed"
|
||||
#else
|
||||
# echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
# exit $?
|
||||
#fi
|
||||
|
||||
{ echo ""
|
||||
echo "-----------------------------------------------"
|
||||
|
||||
@ -9,7 +9,13 @@ echo " GCC" | tee -a log.txt
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
gcc --version | grep gcc | tee -a log.txt
|
||||
CC=gcc CXX=g++ cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
make -j8 || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
make -j8
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
./etl_tests | tee log.txt
|
||||
echo ""
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
@ -17,7 +23,13 @@ echo " GCC - No STL" | tee -a log.txt
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
gcc --version | grep gcc | tee -a log.txt
|
||||
CC=gcc CXX=g++ cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
make -j8 || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
make -j8
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
./etl_tests | tee log.txt
|
||||
echo ""
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
@ -25,7 +37,13 @@ echo " GCC - No STL - Builtins" | tee -a log.txt
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
gcc --version | grep gcc | tee -a log.txt
|
||||
CC=gcc CXX=g++ cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
make -j8 || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
make -j8
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
./etl_tests | tee log.txt
|
||||
echo ""
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
@ -33,7 +51,13 @@ echo " Clang" | tee -a log.txt
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
clang --version | grep clang | tee -a log.txt
|
||||
CC=clang CXX=clang++ cmake --cmake-clean-cache -DNO_STL=OFF -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
make -j8 || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
make -j8
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
./etl_tests | tee log.txt
|
||||
echo ""
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
@ -41,7 +65,13 @@ echo " Clang - No STL" | tee -a log.txt
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
clang --version | grep clang | tee -a log.txt
|
||||
CC=clang CXX=clang++ cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=OFF -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
make -j8 || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
make -j8
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
./etl_tests | tee log.txt
|
||||
echo ""
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
@ -49,7 +79,13 @@ echo " Clang - No STL - Builtins" | tee -a log.txt
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
clang --version | grep clang | tee -a log.txt
|
||||
CC=clang CXX=clang++ cmake --cmake-clean-cache -DNO_STL=ON -DETL_USE_TYPE_TRAITS_BUILTINS=ON -DETL_USER_DEFINED_TYPE_TRAITS=OFF ..
|
||||
make -j8 || echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
make -j8
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Passed"
|
||||
else
|
||||
echo "****************\n**** Failed ****\n****************" | tee -a ../log.txt
|
||||
exit $?
|
||||
fi
|
||||
./etl_tests | tee log.txt
|
||||
echo ""
|
||||
echo "-----------------------------------------------" | tee -a log.txt
|
||||
|
||||
@ -197,9 +197,6 @@ namespace
|
||||
Packet packet2(message2);
|
||||
Packet packet3(message3);
|
||||
|
||||
// The next line should result in a compile error.
|
||||
//Packet packet4(message4);
|
||||
|
||||
CHECK_EQUAL(MESSAGE1, packet1.get().get_message_id());
|
||||
CHECK_EQUAL(MESSAGE2, packet2.get().get_message_id());
|
||||
CHECK_EQUAL(MESSAGE3, packet3.get().get_message_id());
|
||||
@ -251,9 +248,6 @@ namespace
|
||||
const Packet packet2(message2);
|
||||
const Packet packet3(message3);
|
||||
|
||||
// The next line should result in a compile error.
|
||||
//Packet packet4(message4);
|
||||
|
||||
CHECK_EQUAL(MESSAGE1, packet1.get().get_message_id());
|
||||
CHECK_EQUAL(MESSAGE2, packet2.get().get_message_id());
|
||||
CHECK_EQUAL(MESSAGE3, packet3.get().get_message_id());
|
||||
|
||||
@ -424,6 +424,12 @@
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Test1|Win32'">
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Test1|x64'">
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@ -1073,7 +1079,7 @@
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_NO_STL;ETL_USE_TYPE_TRAITS_BUILTINS;__clang__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../../unittest-cpp/;../../include;../../test</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>./;../../../unittest-cpp/;../../include;../../test</AdditionalIncludeDirectories>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>false</MultiProcessorCompilation>
|
||||
|
||||
@ -2048,6 +2048,108 @@
|
||||
<ClCompile Include="..\sanity-check\crc16_genibus.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc8_ebu.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_maxim.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_mcrf4xx.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_modbus.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_profibus.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_riello.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_t10dif.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_teledisk.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_tms37157.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_usb.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc8_icode.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc8_itu.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc8_maxim.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc8_rohc.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc8_wcdma.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_a.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc32_d.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc32_jamcrc.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc32_mpeg2.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_arc.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_aug_ccitt.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc32_q.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc32_xfer.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc64_ecma.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_buypass.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_ccitt.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_cdma2000.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_dds110.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_dectr.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_dectx.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_dnp.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_en13757.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_genibus.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\crc16_kermit.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
@ -2889,7 +2991,10 @@
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\sanity-check\bip_buffer_spsc_atomic.h.t.cpp">
|
||||
<Filter>Source Files\Sanity Checks</Filter>
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\test_bip_buffer_spsc_atomic.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -3035,4 +3140,4 @@
|
||||
<Filter>Resource Files</Filter>
|
||||
</Natvis>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user