root/library/bdm/mex/mex_merger.h @ 1097

Revision 1097, 1.3 kB (checked in by smidl, 14 years ago)

forgotten file

Line 
1#include <mex/mex_parser.h>
2#include <mex/mex_pdf.h>
3
4class mexMerger: public MergerBase {
5protected:
6        mxArray *data;
7    shared_ptr<epdf> merg;
8public:
9    mexMerger() {};
10    void from_setting(const Setting &S)  {
11        Setting &So=S["object"];
12        data = (mxArray*)long(So);
13               
14                // copy sources
15                mxArray *sA;
16                mexCallMATLAB(1, &sA, 1, &data,  "get_sources");
17               
18                UImxArray src(sA);
19                UI::get(sources, src);
20    }
21   
22    void set_sources(const Array<shared_ptr<epdf> > &Src){
23                sources=Src;
24               
25                mxArray *in[2];
26                in[0] = data;
27                UImxArray S;
28                UI::save(Src, S);
29                in[1] = UImxArray::create_mxArray(S);
30               
31                mxArray *tmp;
32                mexCallMATLAB(1, &tmp, 2, in, "set_sources");
33                data = tmp;
34        }
35    void validate() {
36        mxArray *tmp;
37        mexCallMATLAB(1, &tmp, 1, &data,  "validate");
38        // new object is in tmp
39        data = tmp;
40
41                mxArray *tmp2;
42                mexCallMATLAB(1, &tmp2, 1,(mxArray **) &data,  "get_merger");
43                UImxArray mg(tmp2);
44                merg=UI::build<epdf>(mg);
45               
46                MergerBase::validate();         
47    }
48    void merge() {
49        mxArray *tmp;
50        mexCallMATLAB(1, &tmp, 0, &tmp, "merge");
51        data = tmp;
52    }
53    const epdf& merger() {
54        mxArray *tmp;
55        mexCallMATLAB(1, &tmp, 1,(mxArray **) &data,  "get_merger");
56                UImxArray mg(tmp);
57        merg=UI::build<epdf>(mg);
58        return *(merg.get());
59    }
60};
61UIREGISTER(mexMerger);
Note: See TracBrowser for help on using the browser.