Mercurial > hg > ishara
comparison arrows/@aparallel/construct.m @ 0:672052bd81f8
Initial partial import.
author | samer |
---|---|
date | Wed, 19 Dec 2012 22:38:28 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:672052bd81f8 |
---|---|
1 function u=construct(s,sizes_in) | |
2 | |
3 nin1=nargin(s.a1); | |
4 nin2=nargin(s.a2); | |
5 | |
6 u1=[]; u2=[]; | |
7 try | |
8 u1=construct(s.a1,sizes_in(1:nin1)); | |
9 u2=construct(s.a2,sizes_in(nin1+(1:nin2))); | |
10 | |
11 u.sizes_out = [u1.sizes_out,u2.sizes_out]; | |
12 | |
13 nout1=length(u1.sizes_out); | |
14 nout2=length(u2.sizes_out); | |
15 | |
16 ix1 = 1:nin1; ix2 = nin1+(1:nin2); | |
17 ox1 = 1:nout1; ox2 = nout1+(1:nout2); | |
18 | |
19 nout = length(u.sizes_out); | |
20 if all([nin1,nin2,nout1,nout2]==[1,1,1,1]), | |
21 u.process = @proc11; | |
22 else | |
23 u.process = @proc; | |
24 end | |
25 catch ex | |
26 if ~isempty(u2), u2.dispose(); end | |
27 if ~isempty(u1), u1.dispose(); end | |
28 rethrow(ex); | |
29 end | |
30 | |
31 u.dispose = @dispose; | |
32 u.starting= @starting; | |
33 u.stopping= @starting; | |
34 u.dispose = @dispose; | |
35 u.get_state = @get_state; | |
36 u.set_state = @set_state; | |
37 u.viewables = [u1.viewables;u2.viewables]; | |
38 | |
39 function [y1,y2]=proc11(x1,x2) | |
40 y1=u1.process(x1); | |
41 y2=u2.process(x2); | |
42 end | |
43 | |
44 function varargout=proc(varargin) | |
45 varargout=cell(1,nout); | |
46 [varargout{ox1}]=u1.process(varargin{ix1}); | |
47 [varargout{ox2}]=u2.process(varargin{ix2}); | |
48 end | |
49 | |
50 function dispose, u1.dispose(); u2.dispose(); end | |
51 function starting, u1.starting(); u2.starting(); end | |
52 function stopping, u1.stopping(); u2.stopping(); end | |
53 | |
54 function s=get_state, s = {u1.get_state(),u2.get_state()}; end | |
55 function set_state(s), u1.set_state(s{1}); u2.set_state(s{2}); end | |
56 end | |
57 |