Changeset 22000 for issm/trunk-jpl/src/wrappers
- Timestamp:
- 08/24/17 14:29:30 (8 years ago)
- Location:
- issm/trunk-jpl/src/wrappers/matlab/io
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/wrappers/matlab/io/FetchMatlabData.cpp
r21881 r22000 1093 1093 return(ochar); 1094 1094 }/*}}}*/ 1095 GenericOption<Options**>* OptionStructParse( char* name, const mxArray* prhs[]){ /*{{{*/1096 1097 int i;1098 char namei[161];1099 Option* option = NULL;1100 GenericOption<Options**> *ostruct = NULL;1101 const mwSize *ipt = NULL;1102 const mxArray *structi;1103 mwIndex sindex;1104 1105 /*check and parse the name */1106 ostruct=new GenericOption<Options**>();1107 ostruct->name =xNew<char>(strlen(name)+1);1108 memcpy(ostruct->name,name,(strlen(name)+1)*sizeof(char));1109 1110 /*check and parse the value */1111 if (!mxIsClass(prhs[0],"struct")){1112 _error_("Value of option \"" << ostruct->name << "\" must be class \"struct\", not class \"" << mxGetClassName(prhs[0]) <<"\".");1113 }1114 ostruct->numel=mxGetNumberOfElements(prhs[0]);1115 ostruct->ndims=mxGetNumberOfDimensions(prhs[0]);1116 ipt =mxGetDimensions(prhs[0]);1117 ostruct->size =xNew<int>(ostruct->ndims);1118 for (i=0; i<ostruct->ndims; i++) ostruct->size[i]=(int)ipt[i];1119 if (ostruct->numel) ostruct->value=xNew<Options*>(ostruct->numel);1120 1121 /*loop through and process each element of the struct array */1122 for (sindex=0; sindex<ostruct->numel; sindex++) {1123 ostruct->value[sindex]=new Options;1124 1125 /*loop through and process each field for the element */1126 for (i=0; i<mxGetNumberOfFields(prhs[0]); i++) {1127 sprintf(namei,"%s.%s",name,mxGetFieldNameByNumber(prhs[0],i));1128 structi=mxGetFieldByNumber(prhs[0],sindex,i);1129 1130 option=(Option*)OptionParse(namei,&structi);1131 ostruct->value[sindex]->AddObject((Object*)option);1132 option=NULL;1133 }1134 }1135 1136 return(ostruct);1137 }/*}}}*/1138 GenericOption<Options*>* OptionCellParse( char* name, const mxArray* prhs[]){ /*{{{*/1139 1140 int i;1141 int *dims;1142 char namei[161];1143 char cstr[81];1144 GenericOption<Options*> *ocell = NULL;1145 Option *option = NULL;1146 const mwSize *ipt = NULL;1147 const mxArray *celli;1148 mwIndex cindex;1149 1150 /*check and parse the name */1151 ocell=new GenericOption<Options*>();1152 ocell->name =xNew<char>(strlen(name)+1);1153 memcpy(ocell->name,name,(strlen(name)+1)*sizeof(char));1154 1155 /*check and parse the value */1156 if (!mxIsClass(prhs[0],"cell")){1157 _error_("Value of option \"" << ocell->name << "\" must be class \"cell\", not class \"" << mxGetClassName(prhs[0]) <<"\".");1158 }1159 1160 ocell->numel=mxGetNumberOfElements(prhs[0]);1161 ocell->ndims=mxGetNumberOfDimensions(prhs[0]);1162 ipt =mxGetDimensions(prhs[0]);1163 ocell->size =xNew<int>(ocell->ndims);1164 for (i=0; i<ocell->ndims; i++) ocell->size[i]=(int)ipt[i];1165 ocell->value=new Options;1166 1167 /*loop through and process each element of the cell array */1168 dims=xNew<int>(ocell->ndims);1169 for (cindex=0; cindex<ocell->numel; cindex++) {1170 ColumnWiseDimsFromIndex(dims,(int)cindex,ocell->size,ocell->ndims);1171 StringFromDims(cstr,dims,ocell->ndims);1172 #ifdef _INTEL_WIN_1173 _snprintf(namei,161,"%s%s",name,cstr);1174 #else1175 snprintf(namei,161,"%s%s",name,cstr);1176 #endif1177 celli=mxGetCell(prhs[0],cindex);1178 1179 option=(Option*)OptionParse(namei,&celli);1180 ocell->value->AddObject((Object*)option);1181 option=NULL;1182 }1183 xDelete<int>(dims);1184 1185 return(ocell);1186 }/*}}}*/1187 1095 Option* OptionParse(char* name, const mxArray* prhs[]){ /*{{{*/ 1188 1096 … … 1199 1107 else if(mxIsClass(prhs[0],"char")) 1200 1108 option=(Option*)OptionCharParse(name,prhs); 1201 else if(mxIsClass(prhs[0],"struct"))1202 option=(Option*)OptionStructParse(name,prhs);1203 else if(mxIsClass(prhs[0],"cell"))1204 option=(Option*)OptionCellParse(name,prhs);1205 1109 else { 1206 _printf0_(" Converting value of option \"" << name << "\" from unrecognized class \"" << mxGetClassName(prhs[0]) << "\" to class \"" << "struct" << "\".\n"); 1207 if (!mexCallMATLAB(1,lhs,1,(mxArray**)prhs,"struct")) { 1208 option=(Option*)OptionStructParse(name,(const mxArray**)lhs); 1209 mxDestroyArray(lhs[0]); 1210 } 1211 else _error_("Second argument value of option \""<< name <<"\" is of unrecognized class \""<< mxGetClassName(prhs[0]) <<"\"."); 1110 _error_("Second argument value of option \""<< name <<"\" is of unrecognized class \""<< mxGetClassName(prhs[0]) <<"\"."); 1212 1111 } 1213 1112 -
issm/trunk-jpl/src/wrappers/matlab/io/matlabio.h
r21070 r22000 59 59 GenericOption<bool*>* OptionLogicalParse( char* name, const mxArray* prhs[]); 60 60 GenericOption<char*>* OptionCharParse( char* name, const mxArray* prhs[]); 61 GenericOption<Options**>* OptionStructParse( char* name, const mxArray* prhs[]);62 GenericOption<Options*>* OptionCellParse( char* name, const mxArray* prhs[]);63 61 64 62 mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
Note:
See TracChangeset
for help on using the changeset viewer.