Changeset 20636
- Timestamp:
- 05/23/16 10:29:41 (9 years ago)
- Location:
- issm/trunk-jpl/src/c/classes/Params
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Params/Param.h
r20635 r20636 26 26 /*Virtual functions:*/ 27 27 virtual void Echo()=0; 28 virtual int ObjectEnum()=0; 28 29 virtual Param* copy()=0; 30 virtual void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction)=0; 29 31 virtual int InstanceEnum()=0; 30 32 virtual void GetParameterValue(bool* pbool)=0; -
issm/trunk-jpl/src/c/classes/Params/Parameters.cpp
r20635 r20636 32 32 #include "./StringArrayParam.h" 33 33 #include "./StringParam.h" 34 #include "./DoubleMatArrayParam.h" 35 #include "./TransientParam.h" 34 36 35 37 #include "../../shared/shared.h" … … 79 81 /*}}}*/ 80 82 void Parameters::Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction){/*{{{*/ 81 _error_("not implemented yet"); 83 84 int obj_enum=-1; 85 int num_params=0; 86 87 MARSHALLING_ENUM(ParametersEnum); 88 89 if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){ 90 91 /*Marshall num_params first*/ 92 for(int i=0;i<NUMPARAMS;i++){ 93 if(this->params[i]) num_params++; 94 } 95 MARSHALLING(num_params); 96 97 /*Marshall Parameters one by one now*/ 98 for(int i=0;i<NUMPARAMS;i++){ 99 if(this->params[i]){ 100 obj_enum = this->params[i]->ObjectEnum(); 101 MARSHALLING(obj_enum); 102 this->params[i]->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 103 } 104 } 105 } 106 else{ 107 108 /*Get number of params marshalled*/ 109 MARSHALLING(num_params); 110 111 /*Recover parameters one by one*/ 112 for(int i=0;i<num_params;i++){ 113 114 /*Recover enum of object first: */ 115 MARSHALLING(obj_enum); 116 117 if(obj_enum==DoubleParamEnum){ 118 DoubleParam* doubleparam=NULL; 119 doubleparam=new DoubleParam(); 120 doubleparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 121 this->AddObject(doubleparam); 122 } 123 else if(obj_enum==IntParamEnum){ 124 IntParam* intparam=NULL; 125 intparam=new IntParam(); 126 intparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 127 this->AddObject(intparam); 128 } 129 else if(obj_enum==IntMatParamEnum){ 130 IntMatParam* intmparam=NULL; 131 intmparam=new IntMatParam(); 132 intmparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 133 this->AddObject(intmparam); 134 } 135 else if(obj_enum==IntVecParamEnum){ 136 IntVecParam* intvparam=NULL; 137 intvparam=new IntVecParam(); 138 intvparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 139 this->AddObject(intvparam); 140 } 141 else if(obj_enum==BoolParamEnum){ 142 BoolParam* boolparam=NULL; 143 boolparam=new BoolParam(); 144 boolparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 145 this->AddObject(boolparam); 146 } 147 else if(obj_enum==DataSetParamEnum){ 148 DataSetParam* dsparam=NULL; 149 dsparam=new DataSetParam(); 150 dsparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 151 this->AddObject(dsparam); 152 } 153 else if(obj_enum==DoubleMatArrayParamEnum){ 154 DoubleMatArrayParam* dmaparam=NULL; 155 dmaparam=new DoubleMatArrayParam(); 156 dmaparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 157 this->AddObject(dmaparam); 158 } 159 else if(obj_enum==DoubleMatParamEnum){ 160 DoubleMatParam* dmparam=NULL; 161 dmparam=new DoubleMatParam(); 162 dmparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 163 this->AddObject(dmparam); 164 } 165 else if(obj_enum==DoubleVecParamEnum){ 166 DoubleVecParam* dvparam=NULL; 167 dvparam=new DoubleVecParam(); 168 dvparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 169 this->AddObject(dvparam); 170 } 171 else if(obj_enum==FileParamEnum){ 172 FileParam* fileparam=NULL; 173 fileparam=new FileParam(); 174 fileparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 175 delete fileparam; 176 /* No need to add this object, the pointer is not valid 177 The FemModel should reset all FileParams in the restart function */ 178 } 179 else if(obj_enum==StringParamEnum){ 180 StringParam* sparam=NULL; 181 sparam=new StringParam(); 182 sparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 183 this->AddObject(sparam); 184 } 185 else if(obj_enum==StringArrayParamEnum){ 186 StringArrayParam* saparam=NULL; 187 saparam=new StringArrayParam(); 188 saparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 189 this->AddObject(saparam); 190 } 191 else if(obj_enum==TransientParamEnum){ 192 TransientParam* transparam=NULL; 193 transparam=new TransientParam(); 194 transparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction); 195 this->AddObject(transparam); 196 } 197 else if(obj_enum==GenericParamEnum){ 198 /*Skip for now (we don't want to Marhsall Comms*/ 199 } 200 } 201 } 82 202 } 83 203 /*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.