Mercurial > hg > ltpda
diff m-toolbox/classes/+utils/@xml/attachNumberToDom.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/+utils/@xml/attachNumberToDom.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,92 @@ + +function attachNumberToDom(number, dom, parent) + + % Store the original shape + parent.setAttribute('shape', sprintf('%dx%d', size(number))); + parent.setAttribute('type', class(number)); + + if isempty(number) + + %%%%% Nothing to do + % For example: <parent shape="8x0"/> + + elseif numel(number) == 1 + + %%%%% Single number + % For example: <parent shape="1x1">1</parent> + % <parent shape="1x1">1+3i</parent> + if isreal(number) + numberStr = sprintf('%.17g', number); + else + numberStr = ['[', num2str(number, 20), ']']; + end + content = dom.createTextNode(numberStr); + parent.appendChild(content); + + elseif isvector(number) && ... + isreal(number) && ... + numel(number) <= utils.xml.MAX_DOUBLE_IN_ROW + + %%%%% Real vector which is not longer than 50000 values + % For example: <parent shape="1x10">1 2 3 4 5 6 7 8 9 0</parent> + content = dom.createTextNode(strtrim(utils.xml.num2str(number))); + parent.appendChild(content); + + elseif isvector(number) && ... + ~isreal(number) && ... + numel(number) <= utils.xml.MAX_IMAG_IN_ROW + + %%%%% imaginary vector which is not longer than 1000 values + % For example: <parent shape="1x10">[1+1i 2+1i 3 4-4i ...]</parent> + content = dom.createTextNode(strtrim(utils.xml.mat2str(number))); + parent.appendChild(content); + + elseif (size(number,1) > 1) && ... + (size(number,2) > 1) && ... + isreal(number) && numel(number) <= utils.xml.MAX_NUM_IN_MATRIX + + %%%%% Real matrix which have not more than 2500 values + % For example: <parent shape="2x3">[1 2 3; 4 5 6]</parent> + content = dom.createTextNode(strtrim(utils.xml.mat2str(number))); + parent.appendChild(content); + + elseif isvector(number) + + %%%%% General vector + % For example: <parent> + % <realData type="vector"> + % <vector> 1 2 3 4 5 6 7 8 9 10 ...</vector> + % <vector>11 12 13 14 15 16 17 18 19 20 ...</vector> + % </realData> + % <imagData type="vector"> + % <vector> 1 2 3 4 5 6 7 8 9 10 ...</vector> + % <vector>11 12 13 14 15 16 17 18 19 20 ...</vector> + % </imagData> + % </parent> + utils.xml.attachVectorToDom(number, dom, parent); + + elseif (size(number,1) > 1) && (size(number,2) > 1) + + %%%%% General matrix + % For example: <parent> + % <realData type="matrix"> + % <matrix> 1 2 3 4 5 6 7 8 9 10 ...</matrix> + % <matrix>11 12 13 14 15 16 17 18 19 20 ...</matrix> + % ... + % </realData> + % <imagData type="matrix"> + % <matrix> 1 2 3 4 5 6 7 8 9 10 ...</matrix> + % <matrix>11 12 13 14 15 16 17 18 19 20 ...</matrix> + % ... + % </imagData> + % </parent> + utils.xml.attachMatrixToDom(number, dom, parent); + + else + + error('### Should not happen. Size of the input object %dx%d', size(number)) + + end + +end +