Line | |
---|
1 | function tree = delete(tree,uid)
|
---|
2 | % XMLTREE/DELETE Delete (delete a subtree given its UID)
|
---|
3 | %
|
---|
4 | % tree - XMLTree object
|
---|
5 | % uid - array of UID's of subtrees to be deleted
|
---|
6 | %__________________________________________________________________________
|
---|
7 | %
|
---|
8 | % Delete a subtree given its UID
|
---|
9 | % The tree parameter must be in input AND in output
|
---|
10 | %__________________________________________________________________________
|
---|
11 | % Copyright (C) 2002-2011 http://www.artefact.tk/
|
---|
12 |
|
---|
13 | % Guillaume Flandin
|
---|
14 | % $Id: delete.m 4460 2011-09-05 14:52:16Z guillaume $
|
---|
15 |
|
---|
16 | %error(nargchk(2,2,nargin));
|
---|
17 |
|
---|
18 | uid = uid(:);
|
---|
19 | for i=1:length(uid)
|
---|
20 | if uid(i)==1
|
---|
21 | warning('[XMLTree] Cannot delete root element.');
|
---|
22 | else
|
---|
23 | p = tree.tree{uid(i)}.parent;
|
---|
24 | tree = sub_delete(tree,uid(i));
|
---|
25 | tree.tree{p}.contents(find(tree.tree{p}.contents==uid(i))) = [];
|
---|
26 | end
|
---|
27 | end
|
---|
28 |
|
---|
29 | %==========================================================================
|
---|
30 | function tree = sub_delete(tree,uid)
|
---|
31 | if isfield(tree.tree{uid},'contents')
|
---|
32 | for i=1:length(tree.tree{uid}.contents)
|
---|
33 | tree = sub_delete(tree,tree.tree{uid}.contents(i));
|
---|
34 | end
|
---|
35 | end
|
---|
36 | tree.tree{uid} = struct('type','deleted');
|
---|
Note: See
TracBrowser
for help on using the repository browser.