00001 #include "../bdm/stat/loggers_ui.h"
00002
00003 int mxReplaceFieldNM(mxArray *X,const char * fname,mxArray *X1)
00004 {
00005 mxArray *Old;
00006 int i;
00007
00008 if((i=mxGetFieldNumber(X,fname))==-1)
00009 {
00010 if((i=mxAddField(X,fname))==-1) return i;
00011
00012 }
00013
00014 Old=mxGetFieldByNumber(X,0,i);
00015 if(Old)mxDestroyArray(Old);
00016 mxSetFieldByNumber(X,0,i,X1);
00017 return i;
00018
00019 };
00020
00021 class mexlog : public memlog{
00022 public:
00024 mexlog(int maxlen): memlog(maxlen){};
00026 mxArray* toCell(){
00027 mxArray* tmp = mxCreateStructMatrix(1,1,0,NULL);
00028
00029
00030 for (int i=0; i<names.length();i++){
00031 mat& M=vectors(i);
00032 mxArray* fld=mxCreateDoubleMatrix(M.rows(), M.cols(), mxREAL);
00033 mat2mxArray(M,fld);
00034 mxReplaceFieldNM(tmp, names(i).c_str(), fld);
00035 }
00036 return tmp;
00037 }
00038 };
00039
00040 class UImexlog: public UIbuilder{
00041 public:
00042 UImexlog():UIbuilder("mexlog"){};
00043 bdmroot* build(Setting &S) const{
00044 return new mexlog(S["maxlen"]);
00045 };
00046 };
00047 UIREGISTER(UImexlog);