0001 function Gd = sladjlist(G, uv)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033 gi = slgraphinfo(G);
0034
0035 if nargin < 2 || isempty(uv)
0036 uv = 'auto';
0037 end
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 switch uv
0048 case 'auto'
0049 if gi.valued
0050 sch = 3;
0051 else
0052 sch = 0;
0053 end
0054 case 'on'
0055 if gi.valued
0056 sch = 3;
0057 else
0058 sch = 1;
0059 end
0060 case 'off'
0061 if gi.valued
0062 sch = 2;
0063 else
0064 sch = 0;
0065 end
0066 otherwise
0067 error('sltoolbox:invalidarg', ...
0068 'Invalid using-value scheme: %s', uv);
0069 end
0070
0071
0072
0073 switch gi.type
0074 case 'ge'
0075 Gd = struct('n', gi.n);
0076 case 'bi'
0077 Gd = struct('n', gi.n, 'nt', gi.nt);
0078 end
0079
0080 switch gi.form
0081 case 'edgeset'
0082 Gd.targets = sledgeset2adjlist(G.n, G.edges, sch);
0083
0084 case 'adjlist'
0085 switch sch
0086 case {0, 3}
0087 Gd.targets = G.targets;
0088 case 1
0089 Gd.targets = cell(size(G.targets));
0090 nc = numel(G.targets);
0091 for i = 1 : nc
0092 ci = G.targets{i};
0093 if ~isempty(ci)
0094 cn = size(ci, 1);
0095 ci = [ci, ones(cn,1)];
0096 Gd.targets{i} = ci;
0097 end
0098 end
0099 case 2
0100 Gd.targets = cell(size(G.targets));
0101 nc = numel(G.targets);
0102 for i = 1 : nc
0103 ci = G.targets{i};
0104 if ~isempty(ci)
0105 Gd.targets{i} = ci(:, 1);
0106 end
0107 end
0108 end
0109
0110 case 'adjmat'
0111 if gi.valued
0112 [I, J, V] = find(G);
0113 edges = [I, J, V];
0114 clear I J V;
0115 else
0116 [I, J] = find(G);
0117 edges = [I, J];
0118 clear I J;
0119 end
0120 Gd.targets = sledgeset2adjlist(size(G,1), edges, sch);
0121 end
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132