Changeset 7746
- Timestamp:
- 04/01/11 08:41:32 (14 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 2 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r7680 r7746 423 423 TriangleInterpEnum, 424 424 BilinearInterpEnum, 425 NearestInterpEnum 426 /*}}}*/ 425 NearestInterpEnum, 426 /*}}}*/ 427 /*Options{{{1*/ 428 OptionEnum, 429 OptionCellEnum, 430 OptionCharEnum, 431 OptionDoubleEnum, 432 OptionLogicalEnum, 433 OptionStructEnum 434 /*}}}*/ 427 435 }; 428 436 -
issm/trunk/src/c/EnumDefinitions/EnumToString.cpp
r7680 r7746 375 375 case BilinearInterpEnum : return "BilinearInterp"; 376 376 case NearestInterpEnum : return "NearestInterp"; 377 case OptionEnum : return "Option"; 378 case OptionCellEnum : return "OptionCell"; 379 case OptionCharEnum : return "OptionChar"; 380 case OptionDoubleEnum : return "OptionDouble"; 381 case OptionLogicalEnum : return "OptionLogical"; 382 case OptionStructEnum : return "OptionStruct"; 377 383 default : return "unknown"; 378 384 -
issm/trunk/src/c/EnumDefinitions/StringToEnum.cpp
r7680 r7746 373 373 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 374 374 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 375 else if (strcmp(name,"Option")==0) return OptionEnum; 376 else if (strcmp(name,"OptionCell")==0) return OptionCellEnum; 377 else if (strcmp(name,"OptionChar")==0) return OptionCharEnum; 378 else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum; 379 else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum; 380 else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum; 375 381 else _error_("Enum %s not found",name); 376 382 -
issm/trunk/src/c/io/OptionParse.cpp
r7740 r7746 18 18 Option* OptionParse(char* name, const mxArray* prhs[]){ 19 19 20 Option *o object= NULL;20 Option *option = NULL; 21 21 mxArray *lhs[1]; 22 22 23 23 /*parse the value according to the matlab data type */ 24 if (mxIsClass(prhs[0],"double")) o object=(Option*)OptionDoubleParse(name,prhs);25 else if(mxIsClass(prhs[0],"logical")) o object=(Option*)OptionLogicalParse(name,prhs);26 else if(mxIsClass(prhs[0],"char")) o object=(Option*)OptionCharParse(name,prhs);27 else if(mxIsClass(prhs[0],"struct")) o object=(Option*)OptionStructParse(name,prhs);28 else if(mxIsClass(prhs[0],"cell")) o object=(Option*)OptionCellParse(name,prhs);24 if (mxIsClass(prhs[0],"double")) option=(Option*)OptionDoubleParse(name,prhs); 25 else if(mxIsClass(prhs[0],"logical")) option=(Option*)OptionLogicalParse(name,prhs); 26 else if(mxIsClass(prhs[0],"char")) option=(Option*)OptionCharParse(name,prhs); 27 else if(mxIsClass(prhs[0],"struct")) option=(Option*)OptionStructParse(name,prhs); 28 else if(mxIsClass(prhs[0],"cell")) option=(Option*)OptionCellParse(name,prhs); 29 29 else { 30 30 _printf_(true," Converting value of option \"%s\" from unrecognized class \"%s\" to class \"%s\".\n",name,mxGetClassName(prhs[0]),"struct"); 31 31 if (!mexCallMATLAB(1,lhs,1,(mxArray**)prhs,"struct")) { 32 o object=(Option*)OptionStructParse(name,(const mxArray**)lhs);32 option=(Option*)OptionStructParse(name,(const mxArray**)lhs); 33 33 mxDestroyArray(lhs[0]); 34 34 } … … 36 36 } 37 37 38 return(o object);38 return(option); 39 39 }/*}}}*/ 40 40 /*FUNCTION OptionDoubleParse {{{1*/ … … 139 139 int i; 140 140 char namei[161]; 141 OptionStruct *ostruct = NULL;142 Option *oobject= NULL;141 OptionStruct *ostruct = NULL; 142 Option *option = NULL; 143 143 const mwSize *ipt = NULL; 144 144 const mxArray *structi; … … 147 147 /*check and parse the name */ 148 148 ostruct=new OptionStruct; 149 ostruct->name =(char *)xmalloc((strlen(name)+1)*sizeof(char));149 ostruct->name =(char*)xmalloc((strlen(name)+1)*sizeof(char)); 150 150 strcpy(ostruct->name,name); 151 151 … … 171 171 structi=mxGetFieldByNumber(prhs[0],sindex,i); 172 172 173 o object=(Option*)OptionParse(namei,&structi);174 ostruct->values[sindex]->AddObject((Object*)o object);175 o object=NULL;173 option=(Option*)OptionParse(namei,&structi); 174 ostruct->values[sindex]->AddObject((Object*)option); 175 option=NULL; 176 176 } 177 177 } … … 186 186 char namei[161]; 187 187 char cstr[81]; 188 OptionCell *ocell = NULL;189 Option *oobject= NULL;188 OptionCell *ocell = NULL; 189 Option *option = NULL; 190 190 const mwSize *ipt = NULL; 191 191 const mxArray *celli; … … 206 206 ipt =mxGetDimensions(prhs[0]); 207 207 ocell->size =(int *) xmalloc(ocell->ndims*sizeof(int)); 208 for (i=0; i<ocell->ndims; i++) 209 ocell->size[i]=(int)ipt[i]; 208 for (i=0; i<ocell->ndims; i++) ocell->size[i]=(int)ipt[i]; 210 209 ocell->values=new Options; 211 210 … … 218 217 celli=mxGetCell(prhs[0],cindex); 219 218 220 o object=(Option*)OptionParse(namei,&celli);221 ocell->values->AddObject((Object*)o object);222 o object=NULL;219 option=(Option*)OptionParse(namei,&celli); 220 ocell->values->AddObject((Object*)option); 221 option=NULL; 223 222 } 224 223 xfree((void**)&dims); -
issm/trunk/src/c/objects/Options/Option.h
r7737 r7746 36 36 int MarshallSize(){_error_("Not implemented yet");}; 37 37 void Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet");}; 38 int Enum(){ _error_("Not implemented yet");};38 int Enum(){return OptionEnum;}; 39 39 Object* copy(){_error_("Not implemented yet");}; 40 40 /*}}}*/ … … 45 45 virtual int NDims()=0; 46 46 virtual int* Size()=0; 47 // virtual Object* Get()=0; 48 // get by single index, multiple index, simple find, recursive find 47 virtual void Get(double* pvalue)=0; 48 virtual void Get(bool* pvalue)=0; 49 virtual void Get(char** pvalue)=0; 49 50 50 51 }; -
issm/trunk/src/c/objects/Options/OptionCell.h
r7739 r7746 33 33 int MarshallSize(){_error_("Not implemented yet");}; 34 34 void Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet");}; 35 int Enum(){ _error_("Not implemented yet");};35 int Enum(){return OptionCellEnum;}; 36 36 Object* copy(){_error_("Not implemented yet");}; 37 37 /*}}}*/ … … 42 42 int NDims(); 43 43 int* Size(); 44 // Object* Get(); 45 // get by single index, multiple index, simple find, recursive find 44 void Get(double* pvalue){_error_("An OptionCell object cannot return a double");}; 45 void Get(bool* pvalue){ _error_("An OptionCell object cannot return a bool");}; 46 void Get(char** pvalue){ _error_("An OptionCell object cannot return a string");}; 46 47 47 48 }; -
issm/trunk/src/c/objects/Options/OptionChar.cpp
r7739 r7746 127 127 } 128 128 /*}}}*/ 129 /*FUNCTION OptionChar::Get {{{1*/130 //void* OptionChar::Get(){129 /*FUNCTION OptionChar::Get(char** pvalue) {{{1*/ 130 void OptionChar::Get(char** pvalue){ 131 131 132 // ; 132 char* outstring=NULL; 133 int stringsize; 133 134 134 // return; 135 //} 135 stringsize=strlen(this->values)+1; 136 137 outstring=(char*)xmalloc(stringsize*sizeof(char)); 138 memcpy(outstring,this->values,stringsize*sizeof(char)); 139 140 *pvalue=outstring; 141 } 136 142 /*}}}*/ -
issm/trunk/src/c/objects/Options/OptionChar.h
r7739 r7746 33 33 int MarshallSize(){_error_("Not implemented yet");}; 34 34 void Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet");}; 35 int Enum(){ _error_("Not implemented yet");};35 int Enum(){return OptionCharEnum;}; 36 36 Object* copy(){_error_("Not implemented yet");}; 37 37 /*}}}*/ … … 42 42 int NDims(); 43 43 int* Size(); 44 // Object* Get(); 45 // get by single index, multiple index, simple find, recursive find 44 void Get(double* pvalue){_error_("An OptionChar object cannot return a double");}; 45 void Get(bool* pvalue){ _error_("An OptionChar object cannot return a bool");}; 46 void Get(char** pvalue); 46 47 47 48 }; -
issm/trunk/src/c/objects/Options/OptionDouble.cpp
r7739 r7746 119 119 } 120 120 /*}}}*/ 121 /*FUNCTION OptionDouble::Get {{{1*/122 //void* OptionDouble::Get(){121 /*FUNCTION OptionDouble::Get(double* pvalue) {{{1*/ 122 void OptionDouble::Get(double* pvalue){ 123 123 124 // ; 124 /*We should first check that the size is one*/ 125 if(this->NumEl()!=1){ 126 _error_("option \"%s\" has %i elements and cannot return a single double",this->name,this->NumEl()); 127 } 125 128 126 // return; 127 //} 129 /*Assign output pointer*/ 130 *pvalue=this->values[0]; 131 } 128 132 /*}}}*/ -
issm/trunk/src/c/objects/Options/OptionDouble.h
r7739 r7746 33 33 int MarshallSize(){_error_("Not implemented yet");}; 34 34 void Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet");}; 35 int Enum(){ _error_("Not implemented yet");};35 int Enum(){return OptionDoubleEnum;}; 36 36 Object* copy(){_error_("Not implemented yet");}; 37 37 /*}}}*/ … … 42 42 int NDims(); 43 43 int* Size(); 44 // Object* Get(); 45 // get by single index, multiple index, simple find, recursive find 44 void Get(double* pvalue); 45 void Get(bool* pvalue){ _error_("An OptionDouble object cannot return a bool");}; 46 void Get(char** pvalue){ _error_("An OptionDouble object cannot return a string");}; 46 47 47 48 }; -
issm/trunk/src/c/objects/Options/OptionLogical.cpp
r7739 r7746 119 119 } 120 120 /*}}}*/ 121 /*FUNCTION OptionLogical::Get {{{1*/122 //void* OptionLogical::Get(){121 /*FUNCTION OptionLogical::Get(bool* pvalue) {{{1*/ 122 void OptionLogical::Get(bool* pvalue){ 123 123 124 // ; 124 /*We should first check that the size is one*/ 125 if(this->NumEl()!=1){ 126 _error_("option \"%s\" has %i elements and cannot return a single bool",this->name,this->NumEl()); 127 } 125 128 126 // return; 127 //} 129 /*Assign output pointer*/ 130 *pvalue=this->values[0]; 131 } 128 132 /*}}}*/ -
issm/trunk/src/c/objects/Options/OptionLogical.h
r7739 r7746 33 33 int MarshallSize(){_error_("Not implemented yet");}; 34 34 void Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet");}; 35 int Enum(){ _error_("Not implemented yet");};35 int Enum(){return OptionLogicalEnum;}; 36 36 Object* copy(){_error_("Not implemented yet");}; 37 37 /*}}}*/ … … 42 42 int NDims(); 43 43 int* Size(); 44 // Object* Get(); 45 // get by single index, multiple index, simple find, recursive find 44 void Get(double* pvalue){_error_("An OptionLogical object cannot return a double");}; 45 void Get(bool* pvalue); 46 void Get(char** pvalue){ _error_("An OptionLogical object cannot return a string");}; 46 47 47 48 }; -
issm/trunk/src/c/objects/Options/OptionStruct.h
r7739 r7746 33 33 int MarshallSize(){_error_("Not implemented yet");}; 34 34 void Demarshall(char** pmarshalled_dataset){_error_("Not implemented yet");}; 35 int Enum(){ _error_("Not implemented yet");};35 int Enum(){return OptionStructEnum;}; 36 36 Object* copy(){_error_("Not implemented yet");}; 37 37 /*}}}*/ … … 42 42 int NDims(); 43 43 int* Size(); 44 // Object* Get(); 45 // get by single index, multiple index, simple find, recursive find 44 void Get(double* pvalue){_error_("An OptionCell object cannot return a double");}; 45 void Get(bool* pvalue){ _error_("An OptionCell object cannot return a bool");}; 46 void Get(char** pvalue){ _error_("An OptionCell object cannot return a string");}; 46 47 47 48 };
Note:
See TracChangeset
for help on using the changeset viewer.