__VariantFunctions__<std::function<void(void*)> >

This commit is contained in:
2020-11-06 16:06:25 +03:00
parent 0c6e6358b2
commit 3457d87299
2 changed files with 14 additions and 2 deletions

View File

@@ -751,8 +751,6 @@ REGISTER_VARIANT(PIPointd)
REGISTER_VARIANT(PIRectd)
REGISTER_VARIANT(PIMathVectord)
REGISTER_VARIANT(PIMathMatrixd)
typedef std::function<void(void*)> KeySlot;
REGISTER_VARIANT(KeySlot)
inline PIByteArray & operator <<(PIByteArray & s, const PIVariant & v) {
s << v._content << int(v._type);

View File

@@ -73,6 +73,20 @@ public:
//void fromData(void *& ptr, PIByteArray ba) final {ba >> *(T*)ptr;}
};
template<>
class __VariantFunctions__<std::function<void(void*)> >: public __VariantFunctionsBase__ {
public:
__VariantFunctionsBase__ * instance() final {static __VariantFunctions__<std::function<void(void*)> > ret; return &ret;}
PIString typeName() const final {static PIString ret("std::function<void(void*)>"); 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<void(void*)>(*(const std::function<void(void*)> *)value)); /*printf(" * new\n")*/;}
void newNullT(void *& ptr) final {ptr = (void*)(new std::function<void(void*)> ());/* printf(" * new null\n")*/;}
void assignT(void *& ptr, const void * value) final {*(std::function<void(void*)> *)ptr = *(const std::function<void(void*)> *)value; /*printf(" * =\n")*/;}
void deleteT(void *& ptr) final {delete (std::function<void(void*)> *)(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: