diff --git a/include/mdsobjects.h b/include/mdsobjects.h index 42f98325f5..341d97bc5f 100644 --- a/include/mdsobjects.h +++ b/include/mdsobjects.h @@ -2970,6 +2970,43 @@ namespace MDSplus void *operator new(size_t sz); void operator delete(void *p); + //From Data + virtual char getByte(); + virtual short getShort(); + virtual int getInt(); + virtual int64_t getLong(); + virtual unsigned char getByteUnsigned(); + virtual unsigned short getShortUnsigned(); + virtual unsigned int getIntUnsigned(); + virtual uint64_t getLongUnsigned(); + virtual float getFloat(); + virtual double getDouble(); + virtual std::complex getComplex(); + virtual char *getByteArray(int *numElements); + virtual std::vector getByteArray(); + virtual short *getShortArray(int *numElements); + virtual std::vector getShortArray(); + virtual int *getIntArray(int *numElements); + virtual std::vector getIntArray(); + virtual int64_t *getLongArray(int *numElements); + virtual std::vector getLongArray(); + virtual float *getFloatArray(int *numElements); + virtual std::vector getFloatArray(); + virtual unsigned char *getByteUnsignedArray(int *numElements); + virtual std::vector getByteUnsignedArray(); + virtual unsigned short *getShortUnsignedArray(int *numElements); + virtual std::vector getShortUnsignedArray(); + virtual unsigned int *getIntUnsignedArray(int *numElements); + virtual std::vector getIntUnsignedArray(); + virtual uint64_t *getLongUnsignedArray(int *numElements); + virtual std::vector getLongUnsignedArray(); + virtual double *getDoubleArray(int *numElements); + virtual std::vector getDoubleArray(); + virtual std::complex *getComplexArray(int *numElements + __attribute__((unused))); + virtual std::vector > getComplexArray(); + virtual char **getStringArray(int *numElements); + /// Get the associated tree instance virtual Tree *getTree() { return tree; } diff --git a/mdsobjects/cpp/mdstreeobjects.cpp b/mdsobjects/cpp/mdstreeobjects.cpp index 25c9ba6ce8..979a2f844d 100644 --- a/mdsobjects/cpp/mdstreeobjects.cpp +++ b/mdsobjects/cpp/mdstreeobjects.cpp @@ -704,6 +704,249 @@ Data *TreeNode::data() return outD; } +char TreeNode::getByte() +{ + Data *d = data(); + char res = d->getByte(); + MDSplus::deleteData(d); + return res; +} +short TreeNode::getShort() +{ + Data *d = data(); + short res = d->getShort(); + MDSplus::deleteData(d); + return res; +} +int TreeNode::getInt() +{ + Data *d = data(); + int res = d->getInt(); + MDSplus::deleteData(d); + return res; +} +int64_t TreeNode::getLong() +{ + Data *d = data(); + long res = d->getLong(); + MDSplus::deleteData(d); + return res; +} +unsigned char TreeNode::getByteUnsigned() +{ + Data *d = data(); + unsigned char res = d->getByteUnsigned(); + MDSplus::deleteData(d); + return res; +} +unsigned short TreeNode::getShortUnsigned() +{ + Data *d = data(); + unsigned short res = d->getShortUnsigned(); + MDSplus::deleteData(d); + return res; +} +unsigned int TreeNode::getIntUnsigned() +{ + Data *d = data(); + unsigned int res = d->getIntUnsigned(); + MDSplus::deleteData(d); + return res; +} +uint64_t TreeNode::getLongUnsigned() +{ + Data *d = data(); + uint64_t res = d->getLongUnsigned(); + MDSplus::deleteData(d); + return res; +} +float TreeNode::getFloat() +{ + Data *d = data(); + float res = d->getFloat(); + MDSplus::deleteData(d); + return res; +} +double TreeNode::getDouble() +{ + Data *d = data(); + double res = d->getDouble(); + MDSplus::deleteData(d); + return res; +} +std::complex TreeNode::getComplex() +{ + Data *d = data(); + std::complex res = d->getComplex(); + MDSplus::deleteData(d); + return res; +} +char *TreeNode::getByteArray(int *numElements) +{ + Data *d = data(); + char * res = d->getByteArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getByteArray() +{ + Data *d = data(); + std::vector res = d->getByteArray(); + MDSplus::deleteData(d); + return res; +} +short *TreeNode::getShortArray(int *numElements) +{ + Data *d = data(); + short * res = d->getShortArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getShortArray() +{ + Data *d = data(); + std::vector res = d->getShortArray(); + MDSplus::deleteData(d); + return res; +} +int *TreeNode::getIntArray(int *numElements) +{ + Data *d = data(); + int * res = d->getIntArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getIntArray() +{ + Data *d = data(); + std::vector res = d->getIntArray(); + MDSplus::deleteData(d); + return res; +} +int64_t *TreeNode::getLongArray(int *numElements) +{ + Data *d = data(); + int64_t * res = d->getLongArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getLongArray() +{ + Data *d = data(); + std::vector res = d->getLongArray(); + MDSplus::deleteData(d); + return res; +} +float *TreeNode::getFloatArray(int *numElements) +{ + Data *d = data(); + float * res = d->getFloatArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getFloatArray() +{ + Data *d = data(); + std::vector res = d->getFloatArray(); + MDSplus::deleteData(d); + return res; +} +unsigned char *TreeNode::getByteUnsignedArray(int *numElements) +{ + Data *d = data(); + unsigned char * res = d->getByteUnsignedArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getByteUnsignedArray() +{ + Data *d = data(); + std::vector res = d->getByteUnsignedArray(); + MDSplus::deleteData(d); + return res; +} +unsigned short *TreeNode::getShortUnsignedArray(int *numElements) +{ + Data *d = data(); + unsigned short * res = d->getShortUnsignedArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getShortUnsignedArray() +{ + Data *d = data(); + std::vector res = d->getShortUnsignedArray(); + MDSplus::deleteData(d); + return res; +} +unsigned int *TreeNode::getIntUnsignedArray(int *numElements) +{ + Data *d = data(); + unsigned int * res = d->getIntUnsignedArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getIntUnsignedArray() +{ + Data *d = data(); + std::vector res = d->getIntUnsignedArray(); + MDSplus::deleteData(d); + return res; +} +uint64_t *TreeNode::getLongUnsignedArray(int *numElements) +{ + Data *d = data(); + uint64_t * res = d->getLongUnsignedArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getLongUnsignedArray() +{ + Data *d = data(); + std::vector res = d->getLongUnsignedArray(); + MDSplus::deleteData(d); + return res; +} +double *TreeNode::getDoubleArray(int *numElements) +{ + Data *d = data(); + double * res = d->getDoubleArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector TreeNode::getDoubleArray() +{ + Data *d = data(); + std::vector res = d->getDoubleArray(); + MDSplus::deleteData(d); + return res; +} +std::complex *TreeNode::getComplexArray(int *numElements) +{ + Data *d = data(); + std::complex *res = d->getComplexArray(numElements); + MDSplus::deleteData(d); + return res; +} +std::vector > TreeNode::getComplexArray() +{ + Data *d = data(); + std::vector > res = d->getComplexArray(); + MDSplus::deleteData(d); + return res; +} +char **TreeNode::getStringArray(int *numElements) +{ + Data *d = data(); + char ** res = d->getStringArray(numElements); + MDSplus::deleteData(d); + return res; +} + + + + + template static T getNci(void *ctx, int nid, short int code) {