diff --git a/deploy/packaging/debian/kernel.noarch b/deploy/packaging/debian/kernel.noarch index 2a377ec5bd..7238981dce 100644 --- a/deploy/packaging/debian/kernel.noarch +++ b/deploy/packaging/debian/kernel.noarch @@ -231,7 +231,6 @@ ./usr/local/mdsplus/tdi/treeshr/TreeOpenEdit.fun ./usr/local/mdsplus/tdi/treeshr/TreeOpenNew.fun ./usr/local/mdsplus/tdi/treeshr/TreePut.fun -./usr/local/mdsplus/tdi/treeshr/TreePutDeserialized.fun ./usr/local/mdsplus/tdi/treeshr/TreePutRecord.fun ./usr/local/mdsplus/tdi/treeshr/TreeQuit.fun ./usr/local/mdsplus/tdi/treeshr/TreeSetCurrentShot.fun diff --git a/deploy/packaging/debian/matlab.noarch b/deploy/packaging/debian/matlab.noarch index 530d9820f0..997eda5fa2 100644 --- a/deploy/packaging/debian/matlab.noarch +++ b/deploy/packaging/debian/matlab.noarch @@ -16,10 +16,8 @@ ./usr/local/mdsplus/matlab/private/javaConnect.m ./usr/local/mdsplus/matlab/private/javaExecute.m ./usr/local/mdsplus/matlab/private/javaFromMatlab.m -./usr/local/mdsplus/matlab/private/javaFromMatlabCell.m ./usr/local/mdsplus/matlab/private/javaFromMatlabStruct.m ./usr/local/mdsplus/matlab/private/javaToMatlab.m -./usr/local/mdsplus/matlab/private/javaToMatlabCell.m ./usr/local/mdsplus/matlab/private/javaToMatlabStruct.m ./usr/local/mdsplus/matlab/private/pythonActivate.m ./usr/local/mdsplus/matlab/private/pythonConnect.m diff --git a/deploy/packaging/redhat/kernel.noarch b/deploy/packaging/redhat/kernel.noarch index 066cf33ec0..f601a3b3c6 100644 --- a/deploy/packaging/redhat/kernel.noarch +++ b/deploy/packaging/redhat/kernel.noarch @@ -263,7 +263,6 @@ ./usr/local/mdsplus/tdi/treeshr/TreeOpenEdit.fun ./usr/local/mdsplus/tdi/treeshr/TreeOpenNew.fun ./usr/local/mdsplus/tdi/treeshr/TreePut.fun -./usr/local/mdsplus/tdi/treeshr/TreePutDeserialized.fun ./usr/local/mdsplus/tdi/treeshr/TreePutRecord.fun ./usr/local/mdsplus/tdi/treeshr/TreeQuit.fun ./usr/local/mdsplus/tdi/treeshr/TreeSetCurrentShot.fun diff --git a/deploy/packaging/redhat/matlab.noarch b/deploy/packaging/redhat/matlab.noarch index 776deed597..a674d12481 100644 --- a/deploy/packaging/redhat/matlab.noarch +++ b/deploy/packaging/redhat/matlab.noarch @@ -18,10 +18,8 @@ ./usr/local/mdsplus/matlab/private/javaConnect.m ./usr/local/mdsplus/matlab/private/javaExecute.m ./usr/local/mdsplus/matlab/private/javaFromMatlab.m -./usr/local/mdsplus/matlab/private/javaFromMatlabCell.m ./usr/local/mdsplus/matlab/private/javaFromMatlabStruct.m ./usr/local/mdsplus/matlab/private/javaToMatlab.m -./usr/local/mdsplus/matlab/private/javaToMatlabCell.m ./usr/local/mdsplus/matlab/private/javaToMatlabStruct.m ./usr/local/mdsplus/matlab/private/pythonActivate.m ./usr/local/mdsplus/matlab/private/pythonConnect.m diff --git a/include/mdsobjects.h b/include/mdsobjects.h index df3f279c0f..f44af2f12f 100644 --- a/include/mdsobjects.h +++ b/include/mdsobjects.h @@ -4507,7 +4507,6 @@ namespace MDSplus Data *get(const char *expr, Data **args, int nArgs); Data *get(const char *expr) { return get(expr, 0, 0); } void put(const char *path, char *expr, Data **args, int nArgs); - void put(const char *path, Data *data); PutMany *putMany() { return new PutMany(this); } GetMany *getMany() { return new GetMany(this); } // Get TreeNode instance for (a subset of) TreeNode functionality in thin diff --git a/java/mdsobjects/src/main/java/MDSplus/Apd.java b/java/mdsobjects/src/main/java/MDSplus/Apd.java index a1786a3d66..65463243c5 100644 --- a/java/mdsobjects/src/main/java/MDSplus/Apd.java +++ b/java/mdsobjects/src/main/java/MDSplus/Apd.java @@ -65,12 +65,10 @@ public Data getDescAt(int idx) { return descs[idx]; } - - public int[] getShape() - { - return new int[]{nDescs}; - } - + public int[] getShape() + { + return new int[]{descs.length}; + } protected void resizeDescs(int newDim) { if (descs == null) diff --git a/java/mdsobjects/src/main/java/MDSplus/Connection.java b/java/mdsobjects/src/main/java/MDSplus/Connection.java index 6b97a83790..19d7d10e21 100644 --- a/java/mdsobjects/src/main/java/MDSplus/Connection.java +++ b/java/mdsobjects/src/main/java/MDSplus/Connection.java @@ -96,36 +96,17 @@ public Data get(java.lang.String expr, Data args[]) throws MdsException { if (!checkArgs(args)) throw new MdsException( - "Invalid arguments: only scalars and arrays arguments can be passed to Connection.get()"); - java.lang.String expandedExpr; - if(expr.equals("$")) - { - expandedExpr = "serializeout(`("+expr+"))"; - } - else - { - expandedExpr = "serializeout(`(data(("+expr+"))))"; - } - Data serData = get(sockId, expandedExpr, args); - return Data.deserialize(serData.getByteArray()); - + "Invalid arguments: only scalars and arrays arguments can be passed to COnnection.get()"); + return get(sockId, expr, args); } public Data get(java.lang.String expr) throws MdsException { - java.lang.String expandedExpr = "serializeout(`(data(("+expr+"))))"; - Data serData = get(sockId, expandedExpr, new Data[0]); - if(serData instanceof Array) - return Data.deserialize(serData.getByteArray()); - else //error code - return serData; + return get(expr, new Data[0]); } - public void put(java.lang.String path, java.lang.String expr, Data inArgs[]) throws MdsException + public void put(java.lang.String path, java.lang.String expr, Data args[]) throws MdsException { - Data args[] = new Data[inArgs.length]; - for(int i = 0; i < inArgs.length; i++) - args[i] = new Uint8Array(inArgs[i].serialize()); if (!checkArgs(args)) throw new MdsException( "Invalid arguments: only scalars and arrays arguments can be passed to COnnection.put()"); @@ -164,19 +145,7 @@ public PutMany putMany() { return new PutManyInConnection(); } - public static void main(java.lang.String args[]) - { - try { - - MDSplus.Connection c = new MDSplus.Connection("localhost:8001"); - c.openTree("test", -1); - System.out.println(c.get("anyapd")); - }catch(Exception exc) - { - System.out.println(exc); - } - } - + ////////// GetMany class GetManyInConnection extends List implements GetMany { @@ -319,7 +288,5 @@ public void checkStatus(java.lang.String path) throws MdsException throw new MdsException(retMsg.getString()); } } - - } diff --git a/java/mdsobjects/src/main/java/MDSplus/Data.java b/java/mdsobjects/src/main/java/MDSplus/Data.java index 1292811f15..9a8ab19b85 100644 --- a/java/mdsobjects/src/main/java/MDSplus/Data.java +++ b/java/mdsobjects/src/main/java/MDSplus/Data.java @@ -453,12 +453,10 @@ public java.lang.String[] getStringArray() throws MdsException return data.getStringArray(); } - public int getSize() throws MdsException + public int getSize() { - final Data data = executeWithContext("SIZE($1)", this); - if (!(data instanceof Int32)) - throw new MdsException("Cannot get data size"); - return data.getInt(); + final Data data = data(); + return data.getSize(); } public int getSizeInBytes() diff --git a/java/mdsobjects/src/main/java/MDSplus/List.java b/java/mdsobjects/src/main/java/MDSplus/List.java index 69f5e9fa4e..437191383e 100644 --- a/java/mdsobjects/src/main/java/MDSplus/List.java +++ b/java/mdsobjects/src/main/java/MDSplus/List.java @@ -10,7 +10,6 @@ public List() public List(Data[] descs) { super(descs, null, null, null, null); - dtype = DTYPE_LIST; } public List(Data[] descs, Data help, Data units, Data error, Data validation) diff --git a/javamds/mdsobjects.c b/javamds/mdsobjects.c index aae102f168..61a2390af8 100644 --- a/javamds/mdsobjects.c +++ b/javamds/mdsobjects.c @@ -3936,12 +3936,12 @@ JNIEXPORT void JNICALL Java_MDSplus_Connection_put( else strcpy(path, inPath); - putExpr = malloc(strlen("TreePutDeserialized(") + strlen(expr) + strlen(path) + 5 + + putExpr = malloc(strlen("TreePut(") + strlen(expr) + strlen(path) + 5 + nArgs * 2 + 2); if (nArgs > 0) - sprintf(putExpr, "TreePutDeserialized(\'%s\',\'%s\',", path, expr); + sprintf(putExpr, "TreePut(\'%s\',\'%s\',", path, expr); else - sprintf(putExpr, "TreePutDeserialized(\'%s\',\'%s\'", path, expr); + sprintf(putExpr, "TreePut(\'%s\',\'%s\'", path, expr); for (varIdx = 0; varIdx < nArgs; varIdx++) { if (varIdx < nArgs - 1) diff --git a/matlab/mdsput.m b/matlab/mdsput.m index 31cb3d7ce8..5d03c05d55 100755 --- a/matlab/mdsput.m +++ b/matlab/mdsput.m @@ -1,51 +1,5 @@ function [ status ] = mdsput( node, expression, varargin) % MDSPUT put data into MDSplus tree node -% This routine uses the java or python interface -info = mdsInfo(); -n = nargin - 2; -if info.usePython - args = cell(n, 1); -else - if info.isConnected - extra = 0; - else - extra = 1; - end - args = javaArray('MDSplus.Data', max(1, n + extra)); -end -for k = 1 : n - argin = varargin(k); - if iscell(argin{1}) - argout = mdsFromMatlab(argin{1}); - else - argout = mdsFromMatlab(cell2mat(argin)); - end - if info.usePython - args{k} = argout; - else - args(k) = argout; - end -end +% This routine invokes treeput(node, expression, ...) +status = mdsvalue(sprintf('treeput($, $%s)', repmat(', $', 1, nargin - 2)), node, expression, varargin{:}); -try - if info.isConnected - if n > 0 - if info.usePython - info.connection.put(node, expression, args{:}); - else - info.connection.put(node, expression, args); - end - else - info.connection.put(node, expression); - end - else - [mdsres, mdsok] = mdsvalue(sprintf('treeput($, $%s)', repmat(', $', 1, nargin - 2)), node, expression, varargin{:}); - if mdsok==0 || ~isnumeric(mdsres) || rem(mdsres,2)==0 - throw(MException('MDSplus:treeput', 'treeput error %d: %s', mdsok, string(mdsres))); - end - end - status = 1; -catch err - status = 0; - error(err.message); -end diff --git a/matlab/private/javaFromMatlab.m b/matlab/private/javaFromMatlab.m index 6cd58c642d..510428e09d 100644 --- a/matlab/private/javaFromMatlab.m +++ b/matlab/private/javaFromMatlab.m @@ -21,8 +21,7 @@ case 'uint8' javaclass = 'MDSplus.Uint8'; case 'cell' - result = javaFromMatlabCell(value); - return + javaclass = 'MDSplus.String'; case 'struct' result = javaFromMatlabStruct(value); return @@ -32,10 +31,11 @@ result = javaObject('MDSplus.String', value); return otherwise - throw(MException('MDSplus:javaFromMatlab', 'Unsupported type')) + result = value; + return end sz = size(value); -if isscalar(value) +if isequal(sz, [1, 1]) result = javaObject(javaclass, value); else result = javaObject(strcat(javaclass, 'Array'), reshape(value, [], 1), sz); diff --git a/matlab/private/javaFromMatlabCell.m b/matlab/private/javaFromMatlabCell.m deleted file mode 100644 index b486acd2dd..0000000000 --- a/matlab/private/javaFromMatlabCell.m +++ /dev/null @@ -1,33 +0,0 @@ -function result = javaFromMatlabCell(value) - if ~iscell(value) - throw(MException('MDSplus:javaFromMatlabCell', 'only cell allowed')); - end - result = MDSplus.Apd(); - if isscalar(value) - result.setDescAt(0, javaFromMatlab(value{:})); - elseif isvector(value) - numItems = length(value); - for itemIdx = 1:numItems - if isrow(value) - result.setDescAt(itemIdx - 1, javaFromMatlab(value{itemIdx})); - else - result.setDescAt(itemIdx - 1, javaFromMatlab({value{itemIdx}})); - end - end - elseif ismatrix(value) - elemSize = size(value); - for rowIdx = 1:elemSize(1) - result.setDescAt(rowIdx - 1, javaFromMatlab(value(rowIdx,:))); - end - else - elemSize = size(value); - n = ndims(value); - idx = cell(1,n); - idx(:) = {':'}; - for currDim = 1:elemSize(end) - idx{end} = currDim; - result.setDescAt(currDim - 1, javaFromMatlab(value(idx{:}))); - end - end - -end \ No newline at end of file diff --git a/matlab/private/javaFromMatlabStruct.m b/matlab/private/javaFromMatlabStruct.m index e1ba6dbcf3..12ab9a93c8 100644 --- a/matlab/private/javaFromMatlabStruct.m +++ b/matlab/private/javaFromMatlabStruct.m @@ -1,5 +1,5 @@ function result = javaFromMatlabStruct(value) - if ~isstruct(value) + if ~strcmp(class(value), 'struct') throw(MException('MDSplus:javaFromMatlabStruct', 'only struct allowed')); end @@ -9,36 +9,16 @@ for fieldIdx = 1:length(fields) fieldName = fields{fieldIdx}; fieldValue = value.(fieldName); + javaFromMatlab(fieldValue); result.setItem(MDSplus.String(fieldName), javaFromMatlab(fieldValue)); end - elseif isvector(value) - result = MDSplus.List(); + else + result = MDSplus.Apd(); numItems = length(value); for itemIdx = 1:numItems - if isrow(value) - result.append(javaFromMatlabStruct(value(itemIdx))); - else - temp = MDSplus.List(); - temp.append(javaFromMatlabStruct(value(itemIdx))); - result.append(temp); - end - end - elseif ismatrix(value) - result = MDSplus.List(); - elemSize = size(value); - for rowIdx = 1:elemSize(1) - result.append(javaFromMatlabStruct(value(rowIdx,:))); - end - else - result = MDSplus.List(); - elemSize = size(value); - n = ndims(value); - idx = cell(1,n); - idx(:) = {':'}; - for currDim = 1:elemSize(end) - idx{end} = currDim; - result.append(javaFromMatlab(value(idx{:}))); + result.setDescAt(itemIdx - 1, javaFromMatlab(value(itemIdx))); end + end end \ No newline at end of file diff --git a/matlab/private/javaToMatlab.m b/matlab/private/javaToMatlab.m index a55cbd78eb..8915ca5a5a 100644 --- a/matlab/private/javaToMatlab.m +++ b/matlab/private/javaToMatlab.m @@ -31,13 +31,11 @@ case 'MDSplus.Float32Array' result = reshape(mdsthing.getFloatArray, shape); case 'MDSplus.StringArray' - result = reshape(string(mdsthing.getStringArray), shape); + result = reshape(cellstr(string(mdsthing.getStringArray)), shape); case 'MDSplus.Dictionary' result = javaToMatlabStruct(mdsthing); - case 'MDSplus.List' - result = javaToMatlabStruct(mdsthing); case 'MDSplus.Apd' - result = javaToMatlabCell(mdsthing); + result = javaToMatlabStruct(mdsthing); otherwise throw(MException('MDSplus:mdsToMatlab', 'class %s not supported by mdsToMatlab function\n', class(mdsthing))); end diff --git a/matlab/private/javaToMatlabCell.m b/matlab/private/javaToMatlabCell.m deleted file mode 100755 index 39e110dec0..0000000000 --- a/matlab/private/javaToMatlabCell.m +++ /dev/null @@ -1,32 +0,0 @@ -function result = javaToMatlabCell(value) - if ~isa(value, 'MDSplus.Apd') - throw(MException('MDSplus:javaToMatlabCell', 'only MDSplus.Apd allowed')); - end - fields = value.getDescs(); - numItems = length(fields); - itemClasses = arrayfun(@class, fields, 'UniformOutput', false); - result = {}; - for itemIdx = 1:numItems - currElem = javaToMatlab(fields(itemIdx)); - if all(string(itemClasses)=='MDSplus.Apd') && numItems ~= 1 - - % build the index - if isscalar(currElem) || isvector(currElem) - numDims = 2; - else - numDims = ndims(currElem) + 1; - end - idx = cell(1, numDims); - idx(:) = {':'}; - if isscalar(currElem) || isvector(currElem) - idx{1} = itemIdx; - else - idx{end} = itemIdx; - end - - result(idx{:}) = currElem; - else - result(:, itemIdx) = {currElem}; - end - end -end \ No newline at end of file diff --git a/matlab/private/javaToMatlabStruct.m b/matlab/private/javaToMatlabStruct.m index 5e8665676f..a09ad98dfb 100644 --- a/matlab/private/javaToMatlabStruct.m +++ b/matlab/private/javaToMatlabStruct.m @@ -1,45 +1,21 @@ function result = javaToMatlabStruct(value) - if ~isa(value, 'MDSplus.Dictionary') && ~isa(value, 'MDSplus.List') - throw(MException('MDSplus:javaToMatlabStruct', 'only MDSplus.Dictionary and MDSplus.List allowed')); - end - fields = value.getDescs(); - if value.getSize() == 0 - result = struct(); - end - if isa(value, 'MDSplus.Dictionary') % structure - numItems = length(fields)/2; - for itemIdx = 1:numItems - fieldName = javaToMatlab(fields(itemIdx * 2 - 1)); - fieldValue = javaToMatlab(fields(itemIdx * 2)); - result.(fieldName) = fieldValue; - end - else - numItems = length(fields); - itemClasses = arrayfun(@class, fields, 'UniformOutput', false); - for itemIdx =1:numItems - if all(string(itemClasses)=='MDSplus.Dictionary') % list of dict mapped to struct array - result(itemIdx) = javaToMatlabStruct(fields(itemIdx)); - elseif all(string(itemClasses)=='MDSplus.List') % struct matrix - currElem = javaToMatlab(fields(itemIdx)); - - % build the index - if isscalar(currElem) || isvector(currElem) - numDims = 2; - else - numDims = ndims(currElem) + 1; - end - idx = cell(1, numDims); - idx(:) = {':'}; - if isscalar(currElem) || isvector(currElem) - idx{1} = itemIdx; - else - idx{end} = itemIdx; - end - - result(idx{:}) = currElem; - else - throw(MException('MDSplus:javaToMatlabStruct', 'incompatible types')); - end - end - end + if ~strcmp(class(value), 'MDSplus.Dictionary') && ~strcmp(class(value), 'MDSplus.Apd') + throw(MException('MDSplus:javaToMatlabStruct', 'only MDSplus.Dictionary or MDSplus.Apd allowed')); + end + fields = value.getDescs(); + if strcmp(class(value), 'MDSplus.Dictionary') + numItems = length(fields)/2; + for itemIdx = 1:numItems + fieldName = javaToMatlab(fields(itemIdx * 2 - 1)); + fieldValue = javaToMatlab(fields(itemIdx * 2)); + result.(fieldName) = fieldValue; + end + else + numItems = length(fields); + for itemIdx = 1:numItems + result(itemIdx) = javaToMatlab(fields(itemIdx)); + end + + end + end \ No newline at end of file diff --git a/mdsobjects/cpp/mdsipobjects.cpp b/mdsobjects/cpp/mdsipobjects.cpp index 2089737399..f8d21c899d 100644 --- a/mdsobjects/cpp/mdsipobjects.cpp +++ b/mdsobjects/cpp/mdsipobjects.cpp @@ -395,12 +395,8 @@ Data *Connection::get(const char *expr, Data **args, int nArgs) } lockLocal(); - std::string expExpr("serializeout(`(data("); - expExpr +=expr; - expExpr += ")))"; status = SendArg(sockId, 0, DTYPE_CSTRING_IP, nArgs + 1, - expExpr.size(), 0, 0, (char *)expExpr.c_str()); -// std::string(expr).size(), 0, 0, (char *)expr); + std::string(expr).size(), 0, 0, (char *)expr); if (STATUS_NOT_OK) { unlockLocal(); @@ -523,22 +519,10 @@ Data *Connection::get(const char *expr, Data **args, int nArgs) if (mem) FreeMessage(mem); - - - if(nDims == 0) //Error code returned - return resData; - - Data *deserData = deserialize(resData); //Otherwise deserialze it - deleteData(resData); - - return deserData; -} -void Connection::put(const char *inPath, Data *data) -{ - put(inPath, (char *)"$", &data, 1); + return resData; } -void Connection::put(const char *inPath, char *expr, Data **inArgs, int nArgs) +void Connection::put(const char *inPath, char *expr, Data **args, int nArgs) { char clazz, dtype, nDims; short length; @@ -548,24 +532,23 @@ void Connection::put(const char *inPath, char *expr, Data **inArgs, int nArgs) int sockId = getSockId(); - -//Serialize Arguments - Data **args = new Data*[nArgs]; + // Check whether arguments are compatible (Scalars or Arrays) for (std::size_t argIdx = 0; argIdx < (std::size_t)nArgs; ++argIdx) { - int currSerSize; - char *currSer = inArgs[argIdx]->serialize(&currSerSize); - args[argIdx] = new Uint8Array((unsigned char *)currSer, currSerSize); - delete []currSer; + args[argIdx]->getInfo(&clazz, &dtype, &length, &nDims, &dims, &ptr); + if (!ptr) + throw MdsException("Invalid argument passed to Connection::put(). Can " + "only be Scalar or Array"); + if (nDims > 0) + delete[] dims; } - // Double backslashes!! std::string path(inPath); if (path.at(0) == '\\') path.insert(path.begin(), '\\'); - std::string putExpr("TreePutDeserialized(\'"); + std::string putExpr("TreePut(\'"); putExpr += path + "\',\'" + expr + "\'"; for (int varIdx = 0; varIdx < nArgs; ++varIdx) putExpr += ",$"; @@ -605,14 +588,6 @@ void Connection::put(const char *inPath, char *expr, Data **inArgs, int nArgs) status = *(reinterpret_cast(ptr)); if (mem) FreeMessage(mem); - -//Delete serialize args - for (std::size_t argIdx = 0; argIdx < (std::size_t)nArgs; ++argIdx) - { - deleteData(args[argIdx]); - } - delete [] args; - if (STATUS_NOT_OK) throw MdsException(status); } diff --git a/python/MDSplus/connection.py b/python/MDSplus/connection.py index 5a5b6227ed..8599ccf9cd 100644 --- a/python/MDSplus/connection.py +++ b/python/MDSplus/connection.py @@ -205,16 +205,12 @@ def get(self, exp, *args, **kwargs): args = kwargs['arglist'] timeout = kwargs.get('timeout', -1) num = len(args)+1 - exp = 'serializeout(`(data('+exp+')))' exp = _ver.tobytes(exp) _exc.checkStatus(_SendArg(self.conid, 0, 14, num, len(exp), 0, 0, ctypes.c_char_p(exp))) for i, arg in enumerate(args): self._send_arg(arg, i+1, num) - retSerialized = self._get_answer(timeout) - if isinstance(retSerialized, _sca.Scalar): - return retSerialized - return retSerialized.deserialize() + return self._get_answer(timeout) class Connection(object): @@ -264,7 +260,7 @@ def reconnect(self): def closeAllTrees(self): """Close all open MDSplus trees - @rtcype: number of closed trees + @rtype: number of closed trees """ self.get("_i=0;WHILE(IAND(TreeClose(),1)) _i++;_i") @@ -285,7 +281,7 @@ def getMany(self): def openTree(self, tree, shot): """Open an MDSplus tree on a remote server @param tree: Name of tree - @type tree: strd= + @type tree: str @param shot: shot number @type shot: int @rtype: None @@ -302,10 +298,8 @@ def put(self, node, exp, *args): @type args: Data @rtype: None """ - pexp = 'TreePutDeserialized($,$%s)' % (',$'*len(args),) + pexp = 'TreePut($,$%s)' % (',$'*len(args),) pargs = [node, exp] + list(args) - for i in range(2, len(pargs)): - pargs[i] = _arr.Uint8Array(pargs[i].serialize()) _exc.checkStatus(self.get(pexp, arglist=pargs)) def putMany(self, value=None): diff --git a/tdi/treeshr/TreePutDeserialized.fun b/tdi/treeshr/TreePutDeserialized.fun deleted file mode 100644 index 98f7d198e0..0000000000 --- a/tdi/treeshr/TreePutDeserialized.fun +++ /dev/null @@ -1,26 +0,0 @@ -public fun TreePutDeserialized(in _nodename, in _expression, optional in _a, optional in _b, - optional in _c, optional in _d, optional in _e, optional in _f, optional in _g, optional in _h, - optional in _i, optional in _j, optional in _k, optional in _l, optional in _m, optional in _n, - optional in _o, optional in _p, optional in _q, optional in _r, optional in _s, optional in _t, - optional in _u, optional in _v, optional in _w, optional in _x, optional in _y, optional in _z) -{ - write(*, 'TREE PUT DESRIALIZED'); - _list = List(*,_expression); - for (_narg=1;_narg <= 26; _narg++) - { - _argnam = "_"//char(96+_narg); /* char(97 is 'a') */ - _argcheck = "present("//_argnam//")"; - if (execute(_argcheck)) - _list = List(_list,SerializeIn(execute(_argnam))); - else - break; - } - _treeput_ans = *; - write(*, _list); - _status = TdiShr->TdiIntrinsic(val(BUILTIN_OPCODE("COMPILE")),val(_narg),ref(_list),xd(_treeput_ans)); - - write(*, 'STATUS ', _status); - if (_status & 1) - _status = TreeShr->TreePutRecord(val(getnci(_nodename,"nid_number")),xd(_treeput_ans),val(0)); - return(_status); -} diff --git a/tdishr/TdiEvaluate.c b/tdishr/TdiEvaluate.c index ca1b0842f1..69032c2b1c 100644 --- a/tdishr/TdiEvaluate.c +++ b/tdishr/TdiEvaluate.c @@ -209,7 +209,7 @@ EXPORT int Tdi1Evaluate(opcode_t opcode __attribute__((unused)), break; case CLASS_APD: if (list[0]->dtype == DTYPE_DICTIONARY || list[0]->dtype == DTYPE_TUPLE || - list[0]->dtype == DTYPE_LIST || list[0]->dtype == DTYPE_OPAQUE || list[0]->dtype == DTYPE_DSC) + list[0]->dtype == DTYPE_LIST || list[0]->dtype == DTYPE_OPAQUE) { status = SsINTERNAL; } diff --git a/tdishr/TdiGetData.c b/tdishr/TdiGetData.c index 25886543db..8b71f3b215 100644 --- a/tdishr/TdiGetData.c +++ b/tdishr/TdiGetData.c @@ -224,7 +224,7 @@ static int _get_data(const dtype_t omits[], mdsdsc_t *their_ptr, { return TdiRECURSIVE; } - while (pin && (dtype = pin->dtype) == DTYPE_DSC && pin->class != CLASS_APD) //Added check to avoid navigating into APDs + while (pin && (dtype = pin->dtype) == DTYPE_DSC) { pin = (mdsdsc_r_t *)pin->pointer; TDI_GETDATA_REC++; diff --git a/tditest/testing/test-tab.ans b/tditest/testing/test-tab.ans index d31a34c2b3..a6cff6123d 100644 --- a/tditest/testing/test-tab.ans +++ b/tditest/testing/test-tab.ans @@ -9,18 +9,17 @@ TR %TDI Error in EXECUTE("TR") tree -tree_from_tag( treefindtagend( treeputrecord( -treeabspath( treefindtagwild( treequit( -treeaddnode( treeflushoff( treesetcurrentshot( -treeaddtag( treeflushreset( treesetdbiitm( -treeclose( treegetcurrentshot( treesetdefault( -treecreatepulsefile( treegetrecord( treesetnciitm( -treedeletepulsefile( treegetsource( treesetsource( -treedirname( treeopen( treeturnoff( -treefilename( treeopenedit( treeturnon( -treefindnodetags( treeopennew( treewrite( -treefindnodetagsjeff( treeput( -treefindnodewild( treeputdeserialized( +tree_from_tag( treefindnodewild( treeput( +treeabspath( treefindtagend( treeputrecord( +treeaddnode( treefindtagwild( treequit( +treeaddtag( treeflushoff( treesetcurrentshot( +treeclose( treeflushreset( treesetdbiitm( +treecreatepulsefile( treegetcurrentshot( treesetdefault( +treedeletepulsefile( treegetrecord( treesetnciitm( +treedirname( treegetsource( treesetsource( +treefilename( treeopen( treeturnoff( +treefindnodetags( treeopenedit( treeturnon( +treefindnodetagsjeff( treeopennew( treewrite( tree %TREE-W-NOT_OPEN, Tree not currently open %TDI Error compiling region marked by ^