Changeset 12330 for issm/trunk/src/c/objects/Params/DoubleVecParam.cpp
- Timestamp:
- 06/01/12 17:26:03 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk/src/c/objects/Params/DoubleVecParam.cpp ¶
r11995 r12330 75 75 } 76 76 /*}}}*/ 77 #ifdef _SERIAL_78 /*FUNCTION DoubleVecParam::Marshall{{{1*/79 void DoubleVecParam::Marshall(char** pmarshalled_dataset){80 81 char* marshalled_dataset=NULL;82 int enum_value=0;83 84 /*recover marshalled_dataset: */85 marshalled_dataset=*pmarshalled_dataset;86 87 /*get enum value of DoubleVecParam: */88 enum_value=DoubleVecParamEnum;89 90 /*marshall enum: */91 memcpy(marshalled_dataset,&enum_value,sizeof(enum_value));marshalled_dataset+=sizeof(enum_value);92 93 /*marshall DoubleVecParam data: */94 memcpy(marshalled_dataset,&enum_type,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);95 memcpy(marshalled_dataset,&M,sizeof(M));marshalled_dataset+=sizeof(M);96 memcpy(marshalled_dataset,values,M*sizeof(double));marshalled_dataset+=M*sizeof(double);97 98 *pmarshalled_dataset=marshalled_dataset;99 }100 /*}}}*/101 /*FUNCTION DoubleVecParam::MarshallSize{{{1*/102 int DoubleVecParam::MarshallSize(){103 104 return sizeof(M)105 +M*sizeof(double)106 +sizeof(enum_type)+107 +sizeof(int); //sizeof(int) for enum value108 }109 /*}}}*/110 /*FUNCTION DoubleVecParam::Demarshall{{{1*/111 void DoubleVecParam::Demarshall(char** pmarshalled_dataset){112 113 char* marshalled_dataset=NULL;114 int i;115 116 /*recover marshalled_dataset: */117 marshalled_dataset=*pmarshalled_dataset;118 119 /*this time, no need to get enum type, the pointer directly points to the beginning of the120 *object data (thanks to DataSet::Demarshall):*/121 memcpy(&enum_type,marshalled_dataset,sizeof(enum_type));marshalled_dataset+=sizeof(enum_type);122 123 /*data: */124 memcpy(&M,marshalled_dataset,sizeof(M));marshalled_dataset+=sizeof(M);125 values=(double*)xmalloc(M*sizeof(double));126 memcpy(values,marshalled_dataset,M*sizeof(double));marshalled_dataset+=M*sizeof(double);127 128 /*return: */129 *pmarshalled_dataset=marshalled_dataset;130 return;131 }132 /*}}}*/133 #endif134 77 /*FUNCTION DoubleVecParam::ObjectEnum{{{1*/ 135 78 int DoubleVecParam::ObjectEnum(void){ … … 181 124 /*FUNCTION DoubleVecParam::GetParameterValue(int** pintarray,int* pM){{{1*/ 182 125 void DoubleVecParam::GetParameterValue(int** pintarray,int* pM){ 183 #if defined(_HAVE_MATLAB_) && defined(_SERIAL_)184 int* output=NULL;185 int i;186 187 /*Cast values into integers*/188 output=(int*)xmalloc(M*sizeof(int));189 for(i=0;i<M;i++) output[i]=(int)values[i];190 191 /*Assign output pointers:*/192 if(pM) *pM=M;193 *pintarray=output;194 #else195 126 _error_("DoubleVec param of enum %i (%s) cannot return an array of int",enum_type,EnumToStringx(enum_type)); 196 #endif197 127 } 198 128 /*}}}*/ … … 201 131 EnumToStringx(pname,this->enum_type); 202 132 } 203 /*}}}*/204 /*FUNCTION DoubleVecParam::SetMatlabField{{{1*/205 #if defined(_HAVE_MATLAB_) && defined(_SERIAL_)206 void DoubleVecParam::SetMatlabField(mxArray* dataref){207 208 char* name=NULL;209 double* doublevec=NULL;210 mxArray* pfield=NULL;211 212 this->GetParameterValue(&doublevec,NULL);213 this->GetParameterName(&name);214 215 pfield=mxCreateDoubleMatrix(0,0,mxREAL);216 mxSetM(pfield,M);217 mxSetN(pfield,1);218 mxSetPr(pfield,doublevec);219 220 mxSetField( dataref, 0, name, pfield);221 }222 #endif223 133 /*}}}*/ 224 134 /*FUNCTION DoubleVecParam::SetValue{{{1*/
Note:
See TracChangeset
for help on using the changeset viewer.