PIVariantSimple freertos fix

This commit is contained in:
2020-11-06 15:39:14 +03:00
parent 2898c56476
commit 9497b1bbb7

View File

@@ -27,7 +27,9 @@
#include "pistring.h" #include "pistring.h"
#include <typeinfo> #include <typeinfo>
#ifdef PIP_FREERTOS
#include "pivariant.h"
#endif
class __VariantFunctionsBase__ { class __VariantFunctionsBase__ {
public: public:
@@ -57,7 +59,11 @@ template<typename T>
class __VariantFunctions__/*<T, typename std::enable_if< std::is_assignable<T&, const T&>::value>::type>*/: public __VariantFunctionsBase__ { class __VariantFunctions__/*<T, typename std::enable_if< std::is_assignable<T&, const T&>::value>::type>*/: public __VariantFunctionsBase__ {
public: public:
__VariantFunctionsBase__ * instance() final {static __VariantFunctions__<T> ret; return &ret;} __VariantFunctionsBase__ * instance() final {static __VariantFunctions__<T> ret; return &ret;}
#ifdef PIP_FREERTOS
PIString typeName() const final {static PIString ret(PIVariant(T()).typeName()); return ret;}
#else
PIString typeName() const final {static PIString ret(typeid(T).name()); return ret;} PIString typeName() const final {static PIString ret(typeid(T).name()); return ret;}
#endif
uint hash() const final {static uint ret = typeName().hash(); return ret;} uint hash() const final {static uint ret = typeName().hash(); return ret;}
void newT(void *& ptr, const void * value) final {ptr = (void*)(new T(*(const T*)value)); /*printf(" * new\n")*/;} void newT(void *& ptr, const void * value) final {ptr = (void*)(new T(*(const T*)value)); /*printf(" * new\n")*/;}
void newNullT(void *& ptr) final {ptr = (void*)(new T());/* printf(" * new null\n")*/;} void newNullT(void *& ptr) final {ptr = (void*)(new T());/* printf(" * new null\n")*/;}