From 3457d87299f88d182ce22a9269139fcb74da8807 Mon Sep 17 00:00:00 2001 From: andrey Date: Fri, 6 Nov 2020 16:06:25 +0300 Subject: [PATCH] __VariantFunctions__ > --- libs/main/core/pivariant.h | 2 -- libs/main/core/pivariantsimple.h | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libs/main/core/pivariant.h b/libs/main/core/pivariant.h index b3bf5183..8f222b63 100644 --- a/libs/main/core/pivariant.h +++ b/libs/main/core/pivariant.h @@ -751,8 +751,6 @@ REGISTER_VARIANT(PIPointd) REGISTER_VARIANT(PIRectd) REGISTER_VARIANT(PIMathVectord) REGISTER_VARIANT(PIMathMatrixd) -typedef std::function KeySlot; -REGISTER_VARIANT(KeySlot) inline PIByteArray & operator <<(PIByteArray & s, const PIVariant & v) { s << v._content << int(v._type); diff --git a/libs/main/core/pivariantsimple.h b/libs/main/core/pivariantsimple.h index d5b27e5f..002b982a 100644 --- a/libs/main/core/pivariantsimple.h +++ b/libs/main/core/pivariantsimple.h @@ -73,6 +73,20 @@ public: //void fromData(void *& ptr, PIByteArray ba) final {ba >> *(T*)ptr;} }; +template<> +class __VariantFunctions__ >: public __VariantFunctionsBase__ { +public: + __VariantFunctionsBase__ * instance() final {static __VariantFunctions__ > ret; return &ret;} + PIString typeName() const final {static PIString ret("std::function"); return ret;} + uint hash() const final {static uint ret = typeName().hash(); return ret;} + void newT(void *& ptr, const void * value) final {ptr = (void*)(new std::function(*(const std::function *)value)); /*printf(" * new\n")*/;} + void newNullT(void *& ptr) final {ptr = (void*)(new std::function ());/* printf(" * new null\n")*/;} + void assignT(void *& ptr, const void * value) final {*(std::function *)ptr = *(const std::function *)value; /*printf(" * =\n")*/;} + void deleteT(void *& ptr) final {delete (std::function *)(ptr); /*printf(" * del\n")*/;} + //PIByteArray toData(const void * ptr) const final {PIByteArray ret; ret << (*(const T* &)ptr); return ret;} + //void fromData(void *& ptr, PIByteArray ba) final {ba >> *(T*)ptr;} +}; + class PIVariantSimple { public: