#ifndef EIGEN_QTMALLOC_MODULE_H #define EIGEN_QTMALLOC_MODULE_H #include "Core" #include #if (!EIGEN_MALLOC_ALREADY_ALIGNED) inline void *qMalloc(size_t size) { return Eigen::ei_aligned_malloc(size); } inline void qFree(void *ptr) { Eigen::ei_aligned_free(ptr); } inline void *qRealloc(void *ptr, size_t size) { void* newPtr = Eigen::ei_aligned_malloc(size); memcpy(newPtr, ptr, size); Eigen::ei_aligned_free(ptr); return newPtr; } // needed to copy that too because it is implemented in the qt binary library, hence // wouldn't otherwise honor our qMalloc. QVectorData *QVectorData::malloc(int sizeofTypedData, int size, int sizeofT, QVectorData *init) { QVectorData* p = (QVectorData *)qMalloc(sizeofTypedData + (size - 1) * sizeofT); Q_CHECK_PTR(p); ::memcpy(p, init, sizeofTypedData + (qMin(size, init->alloc) - 1) * sizeofT); return p; } #endif #endif // EIGEN_QTMALLOC_MODULE_H