QXRD  0.11.16
qcepdataarray.cpp
Go to the documentation of this file.
1 #include "qcepdataarray.h"
2 #include <QScriptEngine>
3 #include "qcepallocator.h"
4 
6  QcepDataObject(saver, name, 0, parent),
7  m_Dimensions(dims)
8 {
9  set_Type("Data Array");
10 
11  int prod = 1;
12  for (int i=0; i<m_Dimensions.count(); i++) {
13  prod *= m_Dimensions[i];
14  }
15 
16  m_Data.resize(prod);
17 
18  set_ByteSize(prod);
19 
20  QcepAllocator::allocate(get_ByteSize());
21 }
22 
24 {
25  QcepAllocator::deallocate(get_ByteSize());
26 }
27 
29 {
30  QString desc = "[";
31 
32  for (int i=0; i<m_Dimensions.count(); i++) {
33  if (i!=0) {
34  desc += ", ";
35  }
36 
37  desc += tr("%1").arg(m_Dimensions[i]);
38  }
39 
40  desc += "]";
41 
42  return desc;
43 }
44 
46 {
47  QcepDataArrayPtr res(new QcepDataArray(saver, name, dims, parent));
48 
49  return res;
50 }
51 
53 {
54  return m_Dimensions;
55 }
56 
57 QVector<double> QcepDataArray::vectorData()
58 {
59  return m_Data;
60 }
61 
62 QScriptValue QcepDataArray::toArrayScriptValue(QScriptEngine *engine, const QcepDataArrayPtr &data)
63 {
64  return engine->newQObject(data.data());
65 }
66 
67 void QcepDataArray::fromArrayScriptValue(const QScriptValue &obj, QcepDataArrayPtr &data)
68 {
69  QObject *qobj = obj.toQObject();
70 
71  if (qobj) {
72  QcepDataArray *qdobj = qobject_cast<QcepDataArray*>(qobj);
73 
74  if (qdobj) {
75  QcepDataObjectPtr p = qdobj->sharedFromThis();
76 
77  if (p) {
78  QcepDataArrayPtr cs = qSharedPointerDynamicCast<QcepDataArray>(p);
79 
80  if (cs) {
81  data = cs;
82  }
83  }
84  }
85  }
86 }
QSharedPointer< QcepDataArray > QcepDataArrayPtr
static void deallocate(int sz, int width, int height)
QVector< int > m_Dimensions
Definition: qcepdataarray.h:35
QVector< double > m_Data
Definition: qcepdataarray.h:36
virtual QString description() const
static void fromArrayScriptValue(const QScriptValue &obj, QcepDataArrayPtr &data)
QVector< int > dimensions()
static void allocate(int sz, int width, int height)
static QScriptValue toArrayScriptValue(QScriptEngine *engine, const QcepDataArrayPtr &data)
QSharedPointer< QcepDataObject > QcepDataObjectPtr
static QcepDataArrayPtr newDataArray(QcepSettingsSaverWPtr saver, QString name, QVector< int > dims, QcepObject *parent)
QString name
Definition: qcepobject.h:49
QcepDataArray(QcepSettingsSaverWPtr saver, QString name, QVector< int > dims, QcepObject *parent)
QWeakPointer< QcepSettingsSaver > QcepSettingsSaverWPtr
virtual ~QcepDataArray()
QcepSettingsSaverWPtr saver()
QVector< double > vectorData()