Changeset 22000


Ignore:
Timestamp:
08/24/17 14:29:30 (8 years ago)
Author:
Mathieu Morlighem
Message:

CHG: simplifying options: do not allow for cells and structs

Location:
issm/trunk-jpl
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/m4/analyses.m4

    r21982 r22000  
    868868
    869869dnl }}}
    870 dnl with-Meshdeformation{{{
    871 
    872 AC_ARG_WITH([Meshdeformation],
    873 
    874         AS_HELP_STRING([--with-Meshdeformation = YES], [compile with Meshdeformation capabilities (default is yes)]),
    875 
    876         [MESHDEFORMATION=$withval],[MESHDEFORMATION=yes])
    877 
    878 AC_MSG_CHECKING(for Meshdeformation capability compilation)
    879 
    880 
    881 HAVE_MESHDEFORMATION=no
    882 
    883 if test "x$MESHDEFORMATION" = "xyes"; then
    884 
    885         HAVE_MESHDEFORMATION=yes
    886 
    887         AC_DEFINE([_HAVE_MESHDEFORMATION_],[1],[with Meshdeformation capability])
    888 
    889 fi
    890 
    891 AM_CONDITIONAL([MESHDEFORMATION], [test x$HAVE_MESHDEFORMATION = xyes])
    892 
    893 AC_MSG_RESULT($HAVE_MESHDEFORMATION)
    894 
    895 dnl }}}
    896870dnl with-Levelset{{{
    897871
  • issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp

    r21931 r22000  
    110110                case EsaAnalysisEnum : return new EsaAnalysis();
    111111                #endif
     112                #ifdef _HAVE_LOVE_
     113                case LoveAnalysisEnum : return new LoveAnalysis();
     114                #endif
    112115                #ifdef _HAVE_LEVELSET_
    113116                case LevelsetAnalysisEnum : return new LevelsetAnalysis();
  • issm/trunk-jpl/src/c/classes/Options/GenericOption.h

    r20827 r22000  
    102102};
    103103
    104 #if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)  //We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization.
     104#if defined(_HAVE_ADOLC_) && !defined(_WRAPPERS_)
     105/*We hook off this specific specialization when not running ADOLC, otherwise we get a redeclaration with the next specialization*/
    105106template <> inline void GenericOption<IssmPDouble*>::Get(IssmPDouble** pvalue){ /*{{{*/
    106107
  • issm/trunk-jpl/src/c/classes/Options/Options.cpp

    r18521 r22000  
    7979                        _printf_("The dynamic_cast from Object* to Option* is failing.\n");
    8080                        _printf_("\n");
    81                         _printf_("A quick qorkaround consists of using a C-like cast\n");
     81                        _printf_("A quick workaround consists of using a C-like cast\n");
    8282                        _printf_("\n");
    8383                        _printf_("Open Options.cpp and change the dynamic_cast in Options::GetOption by a C-like cast\n");
     
    9494                        }
    9595                        else{
    96                                 /*If the object is a Cell, recursive call to its options*/
    97                                 if(option->ObjectEnum()==OptionCellEnum){
    98                                         GenericOption<Options*>* celloption=(GenericOption<Options*>*)option;
    99                                         return celloption->value->GetOption(name);
    100                                 }
    101                                 /*If the object is a Struct loop over its size and recursive call*/
    102                                 else if(option->ObjectEnum()==OptionStructEnum){
    103                                         for(int i=0;i<option->NumEl();i++){
    104                                                 GenericOption<Options**>* structoption=(GenericOption<Options**>*)option;
    105                                                 _assert_(structoption->value[i]);
    106                                                 return structoption->value[i]->GetOption(name);
    107                                         }
    108                                 }
    109                                 /*Else: not supported*/
    110                                 else{
    111                                         _error_("Cannot recover field \"" << name << "\" for an option of type " << EnumToStringx(option->ObjectEnum()));
    112                                 }
     96                                _error_("Cannot recover field \"" << name << "\" for an option of type " << EnumToStringx(option->ObjectEnum()));
    11397                        }
    11498                }
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r21977 r22000  
    953953        OptionEnum,
    954954        GenericOptionEnum,
    955         OptionCellEnum,
    956         OptionStructEnum,
    957955        /*}}}*/
    958956        /*Solutions and Analyses{{{ */
     
    10071005        LoveSolutionEnum,
    10081006        LoveAnalysisEnum,
    1009         MeshdeformationAnalysisEnum,
    10101007        LevelsetAnalysisEnum,
    10111008        ExtrapolationAnalysisEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r21977 r22000  
    920920                case OptionEnum : return "Option";
    921921                case GenericOptionEnum : return "GenericOption";
    922                 case OptionCellEnum : return "OptionCell";
    923                 case OptionStructEnum : return "OptionStruct";
    924922                case AdjointBalancethicknessAnalysisEnum : return "AdjointBalancethicknessAnalysis";
    925923                case AdjointBalancethickness2AnalysisEnum : return "AdjointBalancethickness2Analysis";
     
    972970                case LoveSolutionEnum : return "LoveSolution";
    973971                case LoveAnalysisEnum : return "LoveAnalysis";
    974                 case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis";
    975972                case LevelsetAnalysisEnum : return "LevelsetAnalysis";
    976973                case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r21977 r22000  
    941941              else if (strcmp(name,"Option")==0) return OptionEnum;
    942942              else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
    943               else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
    944               else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
    945943              else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
    946944              else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
     
    993991              else if (strcmp(name,"LoveSolution")==0) return LoveSolutionEnum;
    994992              else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum;
    995               else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
    996993              else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
    997994              else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
    998995              else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
    999996              else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
     997              else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
     998              else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
     999              else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
    1004               else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
    1005               else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum;
    1006               else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
     1003              if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
    10071004              else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
    10081005              else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
  • issm/trunk-jpl/src/wrappers/matlab/io/FetchMatlabData.cpp

    r21881 r22000  
    10931093        return(ochar);
    10941094}/*}}}*/
    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                 #else
    1175                         snprintf(namei,161,"%s%s",name,cstr);
    1176                 #endif
    1177                 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 }/*}}}*/
    11871095Option* OptionParse(char* name, const mxArray* prhs[]){ /*{{{*/
    11881096
     
    11991107        else if(mxIsClass(prhs[0],"char"))
    12001108         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);
    12051109        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]) <<"\".");
    12121111        }
    12131112
  • issm/trunk-jpl/src/wrappers/matlab/io/matlabio.h

    r21070 r22000  
    5959GenericOption<bool*>*     OptionLogicalParse( char* name, const mxArray* prhs[]);
    6060GenericOption<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[]);
    6361
    6462mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
Note: See TracChangeset for help on using the changeset viewer.